Definition: Software Architecture
the set of significant decisions about the organisation of a software system
the selection of the structural elements and the interfaces by which the system is composed
their behaviour as specified in the collaborations among those elements
the composition of these structural and behavioural elements into progressively larger subsystems
the architectural style that guides this organisation
软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。
没盖过房子,我想,大家都看过盖房子吧,特别是楼房。首先,选一片地方,然后打地基,搭建楼房的架子,再慢慢刷墙,贴瓷砖等等。这个过程跟软件架构师是一样的,先做出一个软件的框架来,然后不断完善软件代码。
Significant Non-Functional Requirements
Capturing Architectural Requirements
Usability
o e.g. aesthetics and consistency in the UI.
Reliability
o e.g. availability (the amount of system "up time"), accuracy of system calculations, and the system's ability to recover from failure.
Performance
o e.g. throughput, response time, recovery time, start-up time, and shutdown time.
Supportability
o e.g. testability, adaptability, maintainability, compatibility, configurability, installability, scalability, and localizability.
Common Steps in Architectural Analysis
Steps (occurs in early elaboration):
1. Identify/analyse architectural factors: requirements with impact on the architecture (esp. non-functional)
o overlaps with requirements analysis
o some identified/recorded during inception, now investigated in more detail
2. For the architectural factors, analyse alternatives and create solutions: architectural decisions
o e.g. remove requirement; custom solution; stop project; hire expert
Logical Architecture:
The large-scale organisation of the software classes into packages, subsystems and layers.
Logical: not concerned with networking, physical computers, or operating system processes (cf. deployment architecture)
Layer:
Coarse-grained grouping of classes, packages, or subsystems that has cohesive responsibility for a major aspect of the system
Strict:
Layer only calls upon the services of the layer directly below it
o e.g. a network protocol stack
Relaxed:
A layer calls upon the services in several lower layers
o e.g. information systems