CPSC 3720 - DAY 10 FEBRUARY 6, 2017 ================================================================================ SYSTEM DESIGN ------------- .Transformation of our analysis model into our system model. .During System Design .Define our design goals .Decompose the system into smaller subsystems. .Select strategies .Hardware/Software .Persistant Data .Global Control Flow .Boundry conditions .Output .Model of subsystem decomposition .System Design is seperate from object Design, but they still occur during the design phase. .System Design focuses on the overall system architecture. .Object design focuses more on the classes in the system .Not Algorithmic .Trade-offs among conflicting design goals .Can't anticipate all design issues .Solution domain is still unclear .There are still standard activities .Heuristics fill in the gaps where algorithms are not possible .Identify Design Goals .Prioritize qualities of system to optimize .Different from prioritizing features/requirements .Design Subsystem Decomposition .Break apart the system into smaller parts. .Based on use case and analysis models. .Can start with standard architectural styles .Refine Decomposition .Subsystem decompostion may not meet all design goals. .Example: Architect designing a house. .Constraints .Example 2 bed/1 study/ kitchen, etc. .Initial design, but changes made later SYSTEM DESIGN RESULTS --------------------- .Design goals .Prioritized qualities of systems to optimize .Software Architecture .System decompositon .Subsystem responsibilities, dependencies .Subsystem mapping to hardware Policy decisions .Control flow .Access control .Data storage .Boundry Use Cases .Startup, shutdown, exception handling .Design Goals .Derived from non-functional requirements .Simple statements that reflect overall prioritization .Guide decisions made by developers when tradeoffs are needed .Accuracy vs Speed .Usability vs. Customization .Flexibility vs. Stability .Accessibility vs Security SUBSYSTEMS ---------- .Replaceable part of the system .Well-definied interfaces .Encapsulates the state and behavior of its classes .Reduces the complexity of the solution domain .By decomposing into relatively independent subsystems .Increase modularity .Allows for re-use .Allows for concurrent developement COMPONENTS ---------- .Logical Component .Subsystem with no run-time equivalent .Ex individual components composed into a runt time logic layer .Physical Component .Subsystem with a run-time equivalent .Ex. Database Server SUBSYSTEMS IN CODE ------------------ .Some languages have a structure for subsystems .Java has packages ..Net has DLLs .Others don't: C, C++ .Developer conventions are used .Grouping classes into a directory .Each directory contains a subsystem HOW TO DECOMPOSE THE SYSTEM --------------------------- .First, identify objects .Look at use cases to identify entity objects. .Entity objects represent persistent information tracked by the system .Heuristics: .Terms that developers or users need to clarify in order to understand the use case. .Recurring nouns in the use case .Real world entities that the system tracks (Resource, Field Officer, Dispatcher) .Real world activities that the system needs to track