System design
- transformation of an analysis model into a system design model
- developers
- define the design goals of the project and decompose the system into smaller subsystems that can be realized by individual teams
- select strategies for building the system, such as the hardware/software strategy, the persistent data management strategy, the global control flow, the access control policy, and the handling of boundary conditions
- must make trade-offs among many design goals that often conflict with each other
- cannot anticipate all design issues that they will face because they do not yet have a clear picture of the solution domain
- is not algorithmic
- the whole is divided into simpler components and interfaces, while considering nonfunctional and functional requirements
scope
-
bridge the gap between a problem and an existing system in a manageable way
-
by using Divide & Conquer:
- Identify design goals
- Model the new system design as a set of subsystems
3.8. Address the major design goals
concepts
-
subsystem
- replaceable part of the system with well-defined interfaces that encapsulates the state and behavior of its contained components
- typically corresponds to the amount of work that a single developer or a single development team can tackle
- by decomposing the system into relatively independent subsystems, concurrent teams can work on individual subsystems with minimal communication overhead
-
service
- set of related operations that share a common purpose
- during system design, we define the subsystems in terms of the services they provide
- during object design, we define the subsystem interface in terms of the operations it provides
-
coupling
measures
- the dependencies between two subsystems
-
cohesion
measures
- the dependencies among classes within a subsystem
minimize coupling and maximize cohesion
- layering
- allows a system to be organized as a hierarchy of subsystems, each providing higher level services to the subsystem above it by using lower-level services from the subsystems below it
- partitioning
- organizes subsystems as peers that mutually provide different services to each other


From Analysis to Design