Architectural Design, Modelling, and Styles Flashcards
What is system / software architecture?
System / Software Architecture (SA):
- Defines how the system is organized
- Breaks the entire system into a set of
communicating modules
- Creative process
Key is to satisfy extra functional requirements!
What is the Architecture in the small vs Architecture in the large?
Architecture in the small:
- At the “single system” level
- Defines how a large system is broken
down into subsystems
Architecture in the large:
- At the “system of systems” level
- Defines how a system of systems is
broken down into individual systems
What is the goal and the output of the Architectural design process?
Goal: design the overall structure of the software system
* how to break the system to be developed into modules?
* how to organize these modules?
* how should they interact?
* Output: architectural model
* describes how the system is organized as a set of
communicating components
What are the Functional architecture basics?
Software system:
- Performs a userlevel task
- Decomposed into
subsystems
Subsystem:
- Performs a logical
subtask of the system
- Decomposed into
components
Component:
- Performs a logical subtask of
a subsystem
- Decomposed into files
see slide 7 for visual
What is the usage of the architectural models?
1) Encourage discussions about the system design:
High-level architectural view of a system
-> intuitive / all stakeholders can relate to them
-> useful for communication.
=> Informally modeled using block diagrams
(= boxes and arrows)
2) Document the implemented architecture:
Complete system model, detailed architecture description
-> low-level but more abstract than the program
-> helps making informed decisions / system analyses
=> Block diagrams too informal and abstract
-> need more rigorous descriptions
-> using description languages
What is the problem with lightweight models?
Lightweight models:
- Not very specific
- Arrows can mean multiple things
- Blocks can be quite vague
- For example, where are blocks located
with respect to processes?
What is the multifaceted nature of software architecture?
System architecture needs to express:
- The decomposition into subsystems
- Process interactions
- The distribution of subsystems across
networked devices
Why is specifying all system characteristics in one architectural model is impractical?
Too many perspectives
for one diagram:
- If we attempt to model
everything in one
diagram, it becomes a
mess!
What is an interface?
Interface:
* collection of business methods
* visible externally (can be called)
Tradeoffs of block vs formal achitectural models?
Criterion Block Formal
Understandable Yes No
by laypeople
Cost to produce Cheap Costly
Rigorous enough for
formal documentation No Yes
Why do we need an architecture?
Communication:
- Aid for system-level design
System analysis:
- If not discussed, implicit architecture may
be suboptimal, causing big problems later
Large-scale reuse:
- Systems with similar requirements can
reuse architectural components (e.g.,
subsystems, components)
What are the SE processes?
Waterfall (plan driven process) -> software design process
Agile -> accepted to design the overall architecture in an
early stage
o incremental development of architecture is not usually
successful
o refactoring components = easy
o refactoring architecture -> adapting all components = expensive
What is Architectural design?
more a collection of decisions than a process
(sequence of activities)
* decisions -> how to organize the system
o depend on the functional and non-functional requirements
An appropriate architecture is the key to satisfy
nonfunctional requirements
o components implement functional requirements
obut architectureaffects performance,
maintainability, robustness …
How to maximize non-functional system charactristics with architectural design?
Criterion Maximized by
Performance Creating a small number of large
subsystems
Security Hiding critical assets behind
layered subsystems
Safety Minimizing subsystems with
access to critical operations
Availability Injecting redundant
subsystems that are hot-
swappable (updates,
emergencies)
Maintainability Creating a large number of
small, independent
subsystems
How to balance tradeoffs in architectural design?
Criterion Maximized by
Performance Creating a small number
of large subsystems
Maintainability Creating a large
number of small,
independent
subsystems
Performance and maintainability are in conflict with one another!