8 Steps of System Design
- Design Goal
- Subsystem Decomposition
- Hardware/Software Mapping
- Persistent Data Management
- Global Resource Handling
- Software Control
- Boundary Conditions
Closed Architecture (Opaque Layering)
Layer can only call operations from layer below. Buschmann: 'direct addressing' - low coupling: more portable
Application Programmer's Interface (API) specifies the subsystem interface
What is not explicitly shown in Communication Diagrams?
Labels + Roles + Multiplicities (Difference between Communication and Class Diagrams)
Open Architecture (Transparent Layering)
Layer can call any operation. Buschmann: 'indirect addressing' - high coupling: higher performance
Which architectural style should be used when considering systems with high coupling?
Model View Controller
Problem Solving Heuristics
Understanding the problem + Devising a plan + Executing plan + Examining solution
Process Flow MVC
- View sends update to Controller
- Controller updates Model
- Model updates View
Subsystem that contains boundary objects (displaying information to user)
Dependency and relation among classes. More interaction within their subsystem (high cohesion) = the better.
Subsystem between views and models (responsible for interacting with user & change mangement)
Connection between two processing steps
Client (Input + Front End Processing) + Server (Data Management)
'Layer A calls layer B'
Model View Controller decouples data access and data presentation.
T.H.E. System (Dijkstra)
Selected Layer has no knowledge of higher layers ('directed addressing')
'Layer A depends on layer B'
Usage/Compile Time Dependency
Application consists of three hierarchically ordered layers.
Identify functional and non-functional Design Goals. Stakeholders might have different needs than developers (trade-off)
Class Diagram + Messages (sequential/conditional/concurrent)
Reduce the complexity of system while allowing change (high cohesion + low coupling)
Dependency among subsystems. Low coupling (subsystem interactions) desirable. Calling class should not know anything about internal variables (Principle of information hiding)
Closed Architecture + 3 Layers on 3 separate hardware nodes (web browser + web server + database)
Group of externally visible operations provided by a subsystem
Subsystem that contains entity objects (responsible for application domain knowledge)