本文探讨什么是「软件架构」,并对其下个定义!
决策or组成?
如果你去google一下「什么是软件架构」,你会看到各种各样的定义!不过大致可分为「决策」论和「组成」论!
其中一个比较著名的「决策」论的定义是Booch,Rumbaugh和Jacobson于1999年提出的:
架构就是一系列重要的决策,这些决策涉及软件系统的组织、组成系统的结构化元素及其接口的选择、元素之间协作时特定的行为、结构化元素和行为元素形成更大子系统的组合方式以及引导这一组织(也就是这些元素及其接口)、他们之间的协作以及组合(架构风格)。
而「组成」论中最受推崇的是SEI(Software Engineering Institute)的Len Bass等人提出的定义:
The software architecture of a program or computing system is the structure or structures of the system,which comprise software elements,the externally visible properties of those elements,and the relationships among them.
Fielding博士在他的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中对软件架构的定义是这样的:
A software architecture is an abstraction of the run-time elements of a software system during some phase of its operation. A system may be composed of many levels of abstraction and