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
軟件架構(gòu)是一個(gè)系統(tǒng)的草圖萤彩。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件国拇。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通訊民褂。在實(shí)現(xiàn)階段躁绸,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類或者對(duì)象眶痰。在面向?qū)ο箢I(lǐng)域中厕诡,組件之間的連接通常用接口來(lái)實(shí)現(xiàn)额湘。
??????? 沒(méi)蓋過(guò)房子描馅,我想把夸,大家都看過(guò)蓋房子吧,特別是樓房铭污。首先恋日,選一片地方,然后打地基嘹狞,搭建樓房的架子岂膳,再慢慢刷墻,貼瓷磚等等磅网。這個(gè)過(guò)程跟軟件架構(gòu)師是一樣的谈截,先做出一個(gè)軟件的框架來(lái),然后不斷完善軟件代碼涧偷。
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