User:Mshonle/SEAdvancedModularity

The BeOS was written in 1991. Windows XP's NT kernel in 1988. MacOS X's OPENSTEP kernel in 1994. Solaris in 1997. Linux in 1991.

Advanced Modularity

edit

Aspect-Oriented and Object-Oriented Software Development: A book on the effective use of AspectJ

Design Structure

edit

Recall Baldwin and Clark, and the DSM work before then. Define what a module is, and what an interface is.

Abstraction

edit

Some examples of poor abstractions: such as a "base class" that has two different modes such that derived classes are treated differently.

Inheritence is sometimes used as a layering mechanism, to hide concerns at the base classes.

Reasoning about programs: what private and anonymous inner classes have in common.

Crosscutting Concerns

edit

Definition of crosscutting, tangling, and scattering.

Non-Hierarchial Constructs

edit

AspectJ and multiple-inheritence-like interface introductions.

The Eclipse IAdaptor model allows for some nodes in an inheritence hierachy to have properties, but avoids that property from being

System Level Abstractions

edit

Principle of Locality (i.e. VM and good replacement algorithms) crosscut our compilers and hardware systems. It's improved programmer productivity, and is largely invisible.

Garbage collection is similar, though it "pokes out" a little more than VM does. You still might have to know about the mark and sweep process, and for canoncialized pairings, you need to know what a weak reference is. In other cases, you need to know what a soft reference is.