Design
Develop blueprints for implementation Role of Design Develop blueprints for implementation Q: What does this mean?
Design Model Hierarchy
Difference Between Analysis and Design Models
Example
Design as Use Case Realization Collaboration within design model describes how a use case is realized Should maintain traceability to use case realization in analysis model Provides physical realization of the use case and handles non-functional requirements
Design Subsystems Subsystems organizes system into manageable pieces Subsystems can be very large and hierarchical But, a subsystem should be cohesive, and they should be loosely coupled Top level subsystems normally have direct trace to analysis packages Can represent reused software products or legacy systems by wrapping them - means of integration
Architectural View of Design Model Decomposition of design model into subsystems, their interfaces, and dependency between them - subsystems and their interfaces make up fundamental structure of software system Key design classes - those trace to architecturally significant analysis classes, those general and central (e.g. abstract classes), those having many relationships Designs that realize key use cases
Deployment Model Object model describing physical distribution of system in terms of how functionality distributed among computational nodes Each node a computational resource, e.g. processor Nodes have relationship representing means of communication Has major impact on design and implementation Q. Why?
Architectural Design Purpose is to outline the design and deployment models and their architecture by identifying: Nodes and their network configurations Subsystems and their interfaces Architecturally significant classes Generic design mechanisms handling common requirements, e.g. performance, persistency, distribution Many possibilities to consider, need to weight what’s more important
I/O of Architectural Design
Identifying Nodes and Network Configurations Network configuration often have major impact on system architecture, including active classes required and distribution of functionality among network nodes Which nodes involved and what’s their processing power and memory size? What types of connections between the nodes, and what protocols Bandwidth, availability, quality? Need for redundant capacity, fault tolerance, process migration, backup, etc.?
Example
Identifying Subsystems and Interfaces
Middleware Layer
Identifying Subsystem Interfaces From subsystem dependencies Inherit from analysis packages analysis class interfaces that are referenced from another package
Identifying Active Classes Performance, throughput, availability factors System distribution onto nodes System startup and termination, liveness, deadlock avoidance, starvation avoidance, reconfiguration of nodes, and capacity of connections Q: what kind of objects most likely to be active objects?
Identifying Generic Design Mechanisms Persistency Transparent object distribution Security features Error detection and recovery Transaction management Concurrency control, etc.
Example: Generic Collaboration Used in Several Use Case Realizations
Mapping to Invoice Buyer Use Case
Design Use Case Purpose: Identify design classes and/or subsystems whose instances are needed to perform the use case flow of events Distributed the behavior of the use case to interacting design objects and/or subsystems Define requirements on the operations of design classes and/or subsystems and their interfaces Capture implementation requirements for the use case
Identifying Participating Design Classes Identify design classes that trace to those participating classes in the analysis model Identify design classes that implement non-functional requirements From analysis model Discovered in the design process Identify missing classes
Pay Invoice Use Case Realization
Describe Object Interactions When use sequence diagrams If there are multiple flows, use one sequence diagram for each flow Should be based on object interaction defined in analysis model (traceability) Each design class identified in the realization of the use case should have at least one object in the sequence diagram Focus on sequence of interaction or message exchange Should handle all relationships of the use case
Example
Identifying Participating Subsystems and Interfaces
Design a Class Its operations Attributes Relationship it participates in Methods (that realize the operations) Its imposed states Its dependency to any generic design mechanisms Requirements relevant to its implementation Correct realization of any interface it is required to provide