Iowa State University IT

What is Nu?

Nu (pronounced new) is a novel intermediate language design that aims to preserve in the object code the design modularity provided in source code by emerging modularization mechanisms, for improved scalability of software development processes.

Motivation

Example

Emerging modularization mechanisms such as mix-ins, open classes, hyper-slices, composition filters, aspects, etc provide software engineers with new possibilities for keeping conceptual concerns separate at the source code level. For a number of reasons, for example to generate object code that is compliant with existing virtual machines (VM), to lower the barrier to entry, implementation techniques for these modularization mechanisms sacrifice this separation of concerns in transforming source to object code. To illustrate, let us consider the figure above. In the figure, C1 to Cn and C'1 to C'n are the base and the crosscutting concerns respectively. The figure shows that the concerns are separate in the domain, requirement, design and implementation phases. During compilation, to realize the crosscutting behavior, C1-Cn are now modified by inserting calls to and fragments from C'1-C'n. The implementations of the crosscutting concerns are scattered and tangled with the base code.

The aim of the Nu project is to show that, first, it is feasible to realize a programming model that preserves design modularity in object code, and second that preserving design modularity has the potential to improve the scalability of software development processes such as incremental compilation, debugging, etc.

Recent Publications/Presentations