软件架构之架构定义

软件架构

软件架构定义

【Lane 90】软件体系结构是对软件系统大规模结构和性能的研究。系统的体系结构的重要方面包括系统模块之间的功能划分,模块之间的通信方式,和共享信息的表示。

【Garlan 92】随着软件系统规模扩大与复杂度增加,设计问题远不是算法和数据结构的计算:设计和量化系统结构。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。这就是软件架构的设计。

【Dewayne Perry&A1exander Wolf】由一组元素(elements)构成,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工转换,数据构件是被加工转换的信息,连接构件把架构的不同部分连接起来。程序调用,共享数据,消息等均为连接元素的例子。软件架构的形式是由专有属性(properties)和关系组成。属性用于限制软件架构元素的选择,关系用于限制软件架构元素组合的结构。这一定义侧重于从架构风格、模式和规则角度考虑软件架构。

【Clements 94-2】软件架构定义为软件系统的组织结构,包括构件,连接器,约束,准则。构件可以为代码块,如模块,数据库管理系统。连接器是系统构件交互的抽象,如程序调用,管道,远程调用。一个架构有多个约束和准则,包括构件选择约束和选择特定的构件准则。

【Moriconi 94]】软件架构代表以下概念:1构件:独立存在的对象,如模块、进程,程序或变量;2.接口;构件和环境之间交互的逻辑点的对象;3连接器:与接口,构件或两者同时关联的对象;4配置:组成一个架构的集合;5映射:变量、抽象公式和具象架构之间的关系;6架构风格:设计元素的集合,形式化约束的集合,连接器的语义解释。构件、接口和连接器为一级对象,抽象架构对象可以分解,聚集,转换具象架构。构件的语义不考虑为架构一部分,但连接器的语义是架构一部分。

【Kruchten 94】 软件架构处理设计与软件高层次结构的实现。满足功能和性能需求的一系列架构元素的集合。软件架构能抽象、分解、组合,风格。

【Garlan 94】任何大型软件系统设计的一个重要方面是它的总体结构,即代表了它的高层次的计算元素的组织和这些元素之间的相互作用。从广义上讲,我们称之为软件架构设计。

【BHayes-Roth 95】复杂的软件系统架构是其风格和方法的设计与构造。

【Lawson 95】:一个系统的架构通常是在“需求,设计,实施”的顺序语境中定义,表示设计阶段的高层次,“…设计问题中涉及整体系统功能相关的组件。”并指定一个高层次的抽象,标准化和规范化,旨在改进系统设计并使得复杂的系统更加易于处理。描述一个系统架构必须解决以下问题:结合系统架构进行相应的开发过程的关系:做重要的决策(在相应的抽象层次上),有待解决的问题,足够的性能。信息模型的关系和所使用的工具,相应的适用工程知识和设计原理,一组建设性的概念体系结构元素,以及它们的符号,可以用来在适当的抽象层次建立系统描述。从这个角度来看,我们将架构定义为一个系统设计模型,以构件、交互、静态和动态的配置的形式捕捉系统的结构和行为。

在第一次软件架构国际研讨会上,Mary Shaw将软件架构观点分为四种模型:

  1. 结构模型:认为软件架构包括构件,构件之间的关系和其他方面(配置,风格,约束,分析,属性准则,需求等)。这一定义在这方面的工作是由体系结构描述语言(ADL)的发展为例,有助于对建筑的构件和连接的描述。语言通常是图形,并以“箱和线”形式的语法来表示构件及其关系。

  2. 框架模型:与结构模型类似,但更侧重于整个系统的内在结构,聚焦于组合形式。该模型应用于特定领域或问题,如特定领域或架构,COBRA或基于COBRA的架构模型等。

  3. 动态模型:强调系统的行为。“动态”一般指整个系统配置的更改,设置或禁用启用的通信或交互路径,或参与计算过程中的动态,如更改数据值等。
  4. 处理模型:专注于架构的建设,以及所涉及的步骤或过程。该观点认为,架构是遵循进程脚本的结果。过程编程派生出的架构证明了这种观点。
    这些观点不排除彼此,也并不冲突。相反,它们代表了软件架构研究界的一个光谱,强调重点应该放在架构上–它的组成部分、整个实体、它曾经构造的方式等。总之,这些观点形成了软件架构的共识。

获得大部分认同的是Bass,Clements 和 Kazman对软件架构的定义。他们认为,软件架构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,“软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。
第一,架构体现了元素之间相互联系的信息。架构省略了某些特定元素。因此,架构首先是一个系统的抽象,它能够控制元素的细节,并不影响它们与其他元素的使用、关联或交互。在几乎所有现代系统中,元素相互作用是通过接口将元素划分为公共和私有部分。架构关注的是公有部分,而不包括私有部分的元素细节。第二,这个定义清楚的表明了系统可以包括一个以上的结构。这是一个静态结构,侧重于系统功能的划分。第三,该定义暗示了每个系统都会有一个架构,因为每个系统都是由构件和其相互关系组成。第四,每个元素的行为也是架构的一部分。因为行为可以从另一个元素的角度观察。这种行为允许元素之间相互作用,这也是架构的一部分。第五,该定义并不关心架构的好坏。这意味着架构允许或阻止系统满足行为、性能和生命周期的需求。因此也提出了架构评估的重要性。

你可能感兴趣的:(软件工程)