软件架构怎么写( 六 )


是一般而言,软件系统的架构(ArchitECture)有两个要素: ·它是一个软件系统从整体到部分的最高层次的划分 。一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息 。
详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(TASk-flow) 。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求 。
·建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定 。在建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改 。
显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察 。历史 早在1960年代,诸如E·W·戴克斯特拉就已经涉及软件架构这个概念了 。
自1990年代以来,部分由于在 Rational Software Corporation 和MiCROSoft内部的相关活动,软件架构这个概念开始越来越流行起来 。卡内基梅隆大学和加州大学埃尔文分校在这个领域作了很多研究 。
卡内基·梅隆大学的Mary Shaw和David Garlan于1996年写了一本叫做 Software Architecture perspective on an emerging DIscipline的书,提出了软件架构中的很多概念,例如软件组件、连接器、风格等等 。加州大学埃尔文分校的软件研究院所做的工作则主要集中于架构风格、架构描述语言以及动态架构 。
计算机软件的历史开始于五十年代,历史非常短暂,而相比之下建筑工程则从石器时代就开始了,人类在几千年的建筑设计实践中积累了大量的经验和教训 。建筑设计基本上包含两点,一是建筑风格,二是建筑模式 。
独特的建筑风格和恰当选择的建筑模式,可以使一个独一无二 。下面的照片显示了中美洲古代玛雅建筑,Chichen-Itza大金字塔,九个巨大的石级堆垒而上,九十一级台阶(象征着四季的天数)夺路而出,塔顶的神殿耸入云天 。
所有的数字都如日历般严谨,风格雄浑 。难以想象这是石器时代的建筑物 。
图1、位于墨西哥Chichen-Itza(在玛雅语中chi意为嘴chen意为井)的古玛雅建筑 。(摄影:作者) 软件与人类的关系是架构师必须面对的核心问题,也是自从软件进入历史舞台之后就出现的问题 。
与此类似地,自从有了建筑以来,建筑与人类的关系就一直是建筑设计师必须面对的核心问题 。英国首相丘吉尔说,我们构造建筑物,然后建筑物构造我们(We shape our buildings, and afterwaRDS our buildings shape us) 。
英国下议院的会议厅较狭窄,无法使所有的下议院议员面向同一个方向入座,而必须分成两侧入座 。丘吉尔认为,议员们入座的时候自然会选择与自己政见相同的人同时入 。
7. 编写软件架构文档说明,第 1 部分: 什么是软件架构,为什么为软件 引言 软件架构是一门学科,开始于 20 世纪 70 年代 。
面对不断增加的复杂性和开发复杂实时系统的压力,作为主流系统工程和软件开发的基本构造,软件架构应运而生 。与任何其他久经考验的学科一样,软件架构在诞生之初也面临许多挑战 。
软件架构表示系统的结构和行为方面 。在早期为软件架构编写文档说明时,所使用的文本和图解表达常常不足或者不够精确 。
所需的是某种一致并得到充分理解的伪(或元)语言,以便将对软件架构进行表示和编写文档说明的不同方式统一起来 。在学术研究的推动下,在用于开发有效软件架构文档说明的最佳实践和指导原则方面,工程和计算机科学领域已取得了长足的发展 。