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
editAspect-Oriented and Object-Oriented Software Development: A book on the effective use of AspectJ
Design Structure
editRecall Baldwin and Clark, and the DSM work before then. Define what a module is, and what an interface is.
Abstraction
editSome 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
editDefinition of crosscutting, tangling, and scattering.
Non-Hierarchial Constructs
editAspectJ 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
editPrinciple 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.