Advanced Software Development Karl Lieberherr CSG 260 Fall Semester
Advanced? Advanced means to me –Thinking in families of software products –Good separation of concerns, shyness between concerns –Write code that writes code (active code generators: TPP: Tip 29) –Put Abstractions in Code, Details in Metadata (TPP: Tip 38) Information about TPP: CSG 260 Resources
Domain Specific Language (DSL) A domain-specific language is a specialized, problem-oriented language. Need several DSLs to specify a complete application. –General modeling DSLs (e.g., synchronization) –Application oriented DSL (e.g. authorization policy) From: GP 5.5
DSLs Fixed, Separate DSLs –SQL, TEX Embedded DSLs –Embedded in a general purpose language, e.g. embedded SQL Modularly composable DSLs (component) –Encapsulated DSLs (e.g., embedded SQL) –Aspectual DSLs (e.g., synchronization)
Aspectual DSLs An aspectual DSL specification influences the semantics of other DSL specifications. Implementation of modularly composable DSLs requires a common language implementation providing the necessary infrastructure for the language plug-ins (we will use AspectJ).
Advantages Of modularly composable over monolithic DSLs –Reusability –Scalability –Fast feature turnover Have to survive based on their merits
Generative Domain Model Problem Space Domain-specific Concepts and Features Configuration Knowledge Illegal feature combination Defaults Construction rules Optimizations Solution Space
AOP: separating concerns What are the important concerns we need to separate? What composition mechanisms? How to capture the concerns?
Aspect-Oriented Decomposition Approaches Subject-oriented Programming –A subject is a partial or complete object model. –Composition rules Correspondence rules Combination rules
Aspect-Oriented Decomposition Approaches Composition Filters –Message filters Input (for incoming messages) Output (for outgoing messages)
Aspect-Oriented Decomposition Approaches Demeter/Adaptive Programming –Originally: Better separation between behavior and structure. –Then: better separation between synchronization and the behavior –Then: better separation between data transfer concern and the behavior