1 / 30

Modularity vs. Virtual Separation of Concerns

Modularity vs. Virtual Separation of Concerns. Christian Kästner. Annotation. Composition. Modularity for FOSD. OPEN PROBLEMS AHEAD. Cohesion. Interfaces Information Hiding Separate Compilation. Separation of Concerns. AHEAD, AspectJ. Modularity. goto #ifdef.

ronny
Download Presentation

Modularity vs. Virtual Separation of Concerns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modularity vs. Virtual Separation of Concerns Christian Kästner

  2. Annotation Composition

  3. Modularity for FOSD

  4. OPEN PROBLEMS AHEAD

  5. Cohesion Interfaces Information Hiding Separate Compilation Separation of Concerns AHEAD, AspectJ Modularity goto #ifdef

  6. Modular Reasoning (monotone; open world)

  7. Variability? Optional Features Alternative Features

  8. Database Problem Space Transact. Index Write Index Transactions Write Solution Space

  9. Modularity + Crosscutting = Complex Interfaces

  10. Modularity Costs Design effort Architectural overhead What to hide? commit on decision fix interfaces Evolution

  11. Feature Interactions Optional Feature Problem

  12. Call Waiting Call Forwarding Feature Interaction

  13. Glue Code Module LifterDerivative Index Write (read-only) (Write Support for Index) Optional Feature Problem

  14. Database Index Write RW-Index Index Write

  15. Write Scale

  16. Expression Problem + - * eval print simplify

  17. + - * open world? eval print simplify

  18. memory mgmt. insert statistics transactions fsync logging

  19. Scale? Feature Interactions Optional Feature Problem Modular Reasoning (Monotone) Modular Reasoning?

  20. Virtual Separation of Concerns

  21. #ifdef SESSION … #endif

  22. View on a Feature: closedworldassumption On-demand remodularization Effective views Version editor Emergent interfaces

  23. Index Write class Write { … } class Index { get() = … #if WRITE put(v) = … #endif }

  24. interface Index config: WRITE provides: get put if WRITE requires: tree.get tree.set if WRITE Index module Index { get() = … #if WRITE put(v) = … #endif } Modularity with Variability

  25. + - * #if PLUS class Plus { #if MINUS class Min{ #if POWER class Pow{ #if EVAL inteval() #endif #if EVAL inteval() #endif #if EVAL inteval() #endif eval #if PRINT void prt() #endif #if PRINT void prt() #endif #if PRINT void prt() #endif print #if SIMPL Expr s() #endif #if SIMPL Expr s() #endif #if SIMPL Expr s() #endif simplify } #endif } #endif } #endif

  26. It doesn’t have to be #ifdef language support for variability variability-aware error checking (closed world)

  27. Index Modular Reasoning (Monotone) module Index { get() = … #if WRITE put(v) = … #endif } closedworldacceptable?

  28. Modularity for FOSD Is it possible? Does it scale? Does it make sense? Are there alternatives?

More Related