Separation of Concerns (Cont.) “clean”separation can help: -Reduce complexity,improve comprehensibility Simplify evolution of SW Local,easy changes Smaller impact of change Facilitate reuse developers aren't burdened by extraneous parts Simplify component integration Object Oriented Analysis and Design 6
Object Oriented Analysis and Design 6 Separation of Concerns (Cont.) “clean” separation can help: § Reduce complexity, improve comprehensibility § Simplify evolution of SW § Local, easy changes § Smaller impact of change § Facilitate reuse § developers aren’t burdened by extraneous parts § Simplify component integration
Dijkstra:Separate Program in Layers... E.W.Dijkstra (1968-2002): ◆ "...Correct arrangement of the structure of software systems before simple programming...' ◆Layered Structure Programs are grouped into layers Programs in one layer can only communicate with programs in adjoining layers Conceptual integrity ■ Each layer has its own goal With easier development and -↓ maintenance Object Oriented Analysis and Design 7
Object Oriented Analysis and Design 7 Dijkstra: Separate Program in Layers... w E. W. Dijkstra (1968-2002): w ‘’...Correct arrangement of the structure of software systems before simple programming...‘’ w Layered Structure § Programs are grouped into layers § Programs in one layer can only communicate with programs in adjoining layers w Conceptual integrity § Each layer has its own goal § With easier development and maintenance
Parnas Design Principles for Decomposition Information hiding modules (1972) Identify design decisions that are likely to change Isolate these in separate modules (separation of concerns) Different design decisions might require different decompositions. D.Parnas,"On the Criteria to Be Used in Decomposing Systems into Modules.",Comm. ACM15,12(December1972),1053-1058 1972. Object Oriented Analysis and Design 8
Object Oriented Analysis and Design 8 Parnas - Design Principles for Decomposition w Information hiding modules (1972) § Identify design decisions that are likely to change § Isolate these in separate modules (separation of concerns) w Different design decisions might require different decompositions. § D. Parnas, "On the Criteria to Be Used in Decomposing Systems into Modules.“ , Comm. ACM 15, 12 (December 1972), 1053-1058. 1972
Separation of Concerns applied Separate software development into phases each dealing with specific activities (e.g. requirements,analysis,design, implementation) ◆ Separation of different artifacts:class, subsystems,attributes. ◆ Separation of different design views (static. dynamic,implementation, ◆ Separation of different roles Object Oriented Analysis and Design 9
Object Oriented Analysis and Design 9 Separation of Concerns applied w Separate software development into phases each dealing with specific activities (e.g. requirements, analysis, design, implementation) w Separation of different artifacts: class, subsystems, attributes. w Separation of different design views (static, dynamic, implementation, ...) w Separation of different roles w
Benefits of Separation of Concerns Supports high cohesion among components ◆ Supports low coupling among components Increases modularity Object Oriented Analysis and Design 10
Object Oriented Analysis and Design 10 Benefits of Separation of Concerns w Supports high cohesion among components w Supports low coupling among components w Increases modularity