Architecture and Design Flashcards
What is software architecture?
Definds how the system is organized
Breaks the entire system into a set of communicating modules.
What is the small level or architecture?
At the “signle” system level
defines how a large system is broken down into subsystems.
What is the large level of architecture?
at the “collection of systems” level.
Defines how a system is broken down into individual systems.
Why do we need an architecture?
Stakeholder communication:
- Aid for system-level design
System analysis:
- If not discussed, implicit architecture may be suboptimal.
Large-scale resuse:
- systems with similar requirements can resuse architecture components.
Can we specify all system characteristics in one architecture model?
This is impractical, because too many perspective will cause the diagram to become a mess.
Instead, we need multiple views.
What are the 4 view models of software architecture?
Logical view:
Process view:
Development view:
Physical view:
What is logical view?
Shows the key abstractions in the system as objects or object classes.
What is process view?
Shows how, at run-time, the system is composed of interactive processes.
What is developmet view?
Shows how the software is decomposed for development.
What is physical view?
Shows the system hardware and how software components are distributed across the processors in the system.
What are the purposes of architecture models?
Aiding discussion of system-level design
Documenting system architecture
How to maximize performance?
Maximized b creating a small number of large subsystems.
How to maximize security?
Maximized by layering systems with critical assets protected in the innermost layer
How to maximize safety?
Maximized by placing safety-related operations in a small number of subsystems.
How to maximize availability>
Maximized through redundant subsystems to allow hot-swapping for updates.
How to maximize maintainability?
Maximized by creating a large number of small, independent subsystems.
What is an architectural pattern
- Abstract descriptions of tried-and-tested solutions to common application problems.
- Should describe when it’s a good idea to use and when it should be avoided.
Tradeoffs of lightweight vs. formal architectural models
Lightweight (block):
Valuable discussion aid
Easy to produce
Lacks the rigour needed for formal docs
Heavyweight (formal):
Valuable for documentation purposes
Expensive to produce
Difficult for people to understand