软件体系结构认识

 

     随着软件系统规模和复杂性的不断增大,为保证软件质量,提高软件可靠性、可重用性和可维护性,软件设计的核心已从“算法+ 数据结构= 程序”的传统计算模式转向对系统的总体结构即软件体系结构(Software ArchitectureSA) 的设计和规范。这类方法主要着眼于软件系统的全局组织形式,在更高层次上把握系统各组件之间的内在联系。并从全局的、整体的角度去理解和分析整个系统的行为和特性,有助于解决当前开发复杂的大型软件所存在的困难。

    软件体系结构的概念最初在1968 年被提出的,它要求人们应更加关注软件是如何分解与组合的,而不仅限于编程,这样将更有利于软件的开发与维护。目前软件体系结构已发展为软件工程领域的一个独立的分支,是软件工程的一个新的研究方向。

软件体系结构到现在还没有一个标准的定义,这里有一个相对被广泛接受的定义,(D. Garlan &M. Shaw ,1993) 软件体系结构是软件设计过程中的一个层次,在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述方面的一些问题。包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的功能分配,物理分布,设计元素的复合,设计方案的选择、评估和实现等。

SA概念的提出最初是为了解决从软件需求向软件实现的平坦过渡问题,但是现在已经逐渐扩展到软件开发的整个生命周期,包括有需求阶段的软件体系结构 、设计阶段的软件体系结构、实现阶段的软件体系结构、部署阶段的软件体系结构,后开发阶段的软件体系结构。

面向对象的需求分析与设计方法根据领域知识建立了问题域模型。主要是按照UML (统一建模语言) 建立若干视图: Use Case 视图, 逻辑视图, 组件视图, 配置视图。这种方法在建立领域模型, 在实现分析, 设计到编码的转换过程中实现了平滑过度, 并且在代码级重用等方面跨进了一大步,而基于软件体系结构的设计是要在更宏观的层次上对组件进行选取, 对组件互相联系的拓扑图进行优化, 以及预测和安排软件系统的可修改性, 然后在此指导之下完成组件结构设计和算法设计。

    SA的一些重要概念主要包括构件、连接件、风格、系统、属性。下面是对这些概念的一些说明。

     (1) 构件。构件是一个数据单元或一个计算单元,是语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统;它由构件接口和构件实现模块组成,构件接口是构件与外部接触点的集合。构件是具有一定的功能,能够独立工作或能同其它构件装配起来协调工作的程序体,构件的使用同它的开发、生产无关。构件是对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。整个构件隐藏了具体的实现,只用接口提供服务。

    (2) 连接件。连接件是构件与构件进行交互的媒介,是体系结构中重要的组成部分,实现构件间的运算,它通过对构件间的交互规则的建模来实现构件间的连接,与构件不同,它不需要编译。连接件在系统中不一定有具体的实现单元,连接件有接口、类型、语义、约束等方面的特性

    (3) 风格。体系结构风格是描述特定系统组织方式的惯用范例,强调组织模式和惯用范例。组织模式即静态的范例,惯用范例则是反映众多系统共有的结构和语义。风格强了软件系统中通用的组织结构,比如客户机- 服务器等,独立于实际问题。一个体系结构风格根据结构组织模式定义了一个系统族,或者说定义了构件和连接件类型的符号集,以及规定它们怎么组合起来的约束集合。

    (4) 系统。系统是构件和连接件的组织图。构件和连接件可以表示拥有内部体系结构的子系统,这些子系统称为陈述。当一个系统或一部分系统有陈述时,必须对内部接口和外部接口之间的映射做出一定的解释。

    (5) 属性。属性指的是体系结构描述的结构之外的附加信息。如果能把属性和体系结构描述中的任何一种元素(构件、连接件、系统以及接口)联系起来,都是有益的。

    随着软件系统的复杂度和规模的增加,整个系统结构的说明和设计显得更为重要. 软件体系结构在较高层次将系统定义为一组相互交互的构件和连接,包括系统各构件的组织,全局控制结构,通讯的协议,设计元素的功能,物理分布等. 在目前通用的软件开发方法中(OMT ,Booch ,Fusion ,UML ) ,其描述通常是用非形式化的图和文本,难以被开发人员理解,更不能用来分析其一致性和完整性等特性. 针对这些问题,体系结构的形式化描述语言诞生:ADL 用来表示和分析体系结构的设计,同时提供了显示、分析、模拟软件体系结构的相应工具. 主要的体系结构描述语言有Aesop ,Meta2H ,C2 ,Rapide ,SADL ,Unicon Wright ,尽管它们都描述软件体系结构,却有不同的特点,Aesop 支持体系结构风格的应用,Meta2H 为设计者提供了关于实时电子控制软件系统的设计指导,C2 支持基于消息传递风格的用户界面系统的描述,Rapide支持体系结构设计的模拟并提供了分析模拟结果的工具,SADL提供了关于体系结构加细的形式化基础,Uni2con 支持异构的构件和连接类型并提供了关于体系结构的高层编译器,Wright 支持体系结构构件之间交互的说明和分析. 这些ADL 强调了体系结构不同的侧面,对体系结构的研究起到了重要作用,但也有负面的影响。 每一种ADL 都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的ADL ,若设计特定领域的软件体系结构(DSSA) ,又需要从头开始描述,因此,现在有了一种基于UML的软件体系结构描述,可以作为各种ADL UML 中进行描述的共同基础,若要描述某一ADL ,只需描述与其相关的约束,也为描述DSSA奠定了基础。

    通过上面的一些描述,我相信什么是软件体系结构已经很清楚了,软件体系结构正在快速发展,它已经在软件开发的整个过程当中都有了一些不错的成果,大胆的想象一下,软件体系结构将是一场正在酝酿中的革命,银弹将要诞生。

 

你可能感兴趣的:(技术)