본 포스트는 개인 스터디 용으로 작성된 Ian Sommerville의 Software Engineering, 8/E의 요약본입니다.
1. Software architecture
- Architectural design is the process for identifying the sub-system and the framework for sub-system control & communication
- Software architecture is the output of architectural design.

2. Architectural design
- represents the link between specification and design processes : early stage of the system design process.

3. Architecture and system characteristics
- Performance : large components rather than fine-grain components
- Security : critical assets in the inner layers
- Safety : localise safety-critical features
- Availability : mechanism for fault tolerance
- Maintainability : fine-grain, replacable components

4. Architectural conflicts
- maintainability vs performace
- availability vs security
- safety vs performance

5. System structuring
- concerned with system decomposition
- The architectural design is expressed as a block diagram
- (if more detailed) show data flowing and interface of sub-systems

6. Architectural styles(Architectural models)
- Main objective of using generic architectural model or style is reuse.
comment:
Sommervile seems to use both terms('style' and 'model') with the same meaning.
- can include models like :
   1) Static structural model : shows sub-systems or components that are developed as a seperate unit
   2) Dynamic process model : shows how the system is composited as processes in run-time
   3) Interface model : defines services provided by sub-systems that are revealed via public interfaces
   4) Relationships model : shows the relationship(e.g. data flow) among sub-systems
    5) Destribution model : shows how sub-systems are distributed
- system orgranization model : reflect base strategy for defining system structure. but sub-system model includes more details.
   1) Repository model : based on public database
   2) Client/Server model : distributed architecture(effective for network based system)
   3) Abstract machine(layered) model : ease for incremental development.

7. Modular decomposition
- Another structural level where sub-systems are decomposing into modules
- Two modular decomposition model types
    1) Object models : when implemented, objects are created from object classes and some control model is used to operate these.
    2) Data-flow(pipeline) models : functional transformation process their imputs to produce outputs
sub-systems and modules are different on dependency among each element. Sub-system is independent with other sub-systems, but module is not.
8. Control styles
- are concerned with the control flow between sub-systems and distincted from the decomposition model
- Control style types
    1) Centralised control : One sub-system has overall responsibility for control. It starts and stops other sub-systems.
    2) Event-based control : Broadcast models / Interrupt-driven models

9. Reference architecture
- Architectural models tend to be specific to some application domain
- two types of domain-specific model
    1) Generic models : bottom-up models
   2) Reference models : top-down models which are derived froms as study of the application domain rather than existing systems.
Posted by 어쨌건간에