软件体系结构(Software Architecture)
软件体系结构(Software Architecture)包括构成系统的设计元素的描述、 设计元素
之间的交互、 设计元素的组合模式以及在这些模式中的约束。
定义
软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括构件、构件性质和构件之间的关系。
通过使用软件体系结构,可以有效地分析用户需求,方便系统的修改,以及减小程序构造风险。
随着软件规模不断地增大和复杂程度日益增高,系统框架架构的设计变得越来越关键。软件框架设计的核心问题是能否复用已经成型的体系结构方案。由此,产生了软件体系结构风格的概念。** 软件体系结构风格是** 软件结构风格是描述某一特定应用领域中系统组织方式的惯用模式
(idiomatic paradigm)
。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件组合起来的。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一租个完整的系统。按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
软件体系结构风格(Architectural Styles)是描述特定系统组织方式的惯用范例,强调了软件系统中通用的组织结构。
风格这个词是个模糊的概念,不同的人有不同的理解,这有时候就让人很困惑。这时候为了明确这个概念,通过数学集合的方式来定义风格,如此一来,我们更能认清风格的内部结构及本质。
为了帮助理解体系结构风格,这里我们举一个现实生活中简单的例子。
小明和小红是同班同学,他们在考试时有不同的表现,小明一般先做解答题,然后做选择题。小红则先做选择题,随后做解答题。这就成了两个人的做题风格的一部分。同样的构件(解答题,选择题),次序结构的不同,导致了两人不同的风格。
事实上,不同的风格有不同的适用场景。假设人的习惯是先解决简单的问题,再解决复杂的问题。那么(1)选择题难、解答题简单时,可以采取先解答题后选择题的做题风格;(2)选择题简单、解答题难时,可以采取先选择题后解答题的做题风格。
同样,针对某种软件应用场景,应该选择与其相适应的构件,以及合理安排构件间的关系。在后面的具体体系结构风格中,可以重点查看构件、连接件、结构安排的不同(这些区分了不同的风格,适用于不同的场景)
作用
对于一些高质量的软件,一般要选择合适的体系结构风格,以便重用现有的设计方案和实现方案,加快开发的进度。
目的
软件体系结构风格为大粒度的软件重用提供了可能
。
构件定义
构件是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存储。构件有两种:复合构件和原子构件,复合构件由其他复合构件和原子构件通过连接而成;原子构件是不可再分的构件,底层由实现该构件的类组成,这种构件的划分提供了体系结构的分层表示能力,有助于简化体系结构的设计。
接件定义
连接件表示了构件之间的交互,简单的连接件如管道(pipe)、过程调用(proceduce call)、事件广播(event broadcast)等,更为复杂的交互如客户-服务器(client-server)通信协议,数据库和应用之间的SQL连接等。
四要素
- 提供一个词汇表;
- 定义一套配置规则;
- 定义一套语义解释规则;
- 定义对基于这种风格的系统所进行的分析。