对于体系结构软件系统结构五种主要风格类型分析

更新时间:2023-12-26 点赞:4694 浏览:10365 作者:用户投稿原创标记本站原创

摘要: 本文简述了软件体系结构的定义,探讨了Mary shaw和Diad Garlan所提出的五种风格,即数据流风格、调用/返同风格、独立组件风格、独立组件风格、虚拟机风格、仓库风格软件体系结构。
关键词: 软件体系结构定义风格类型

一、什么是软件体系结构

在所有对于软件体系结构的定义中,我认为最有代表性的就是Hayes Roth所提出的:“认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。”这样的定义,我认为从根本上描述了软件体系结构所要做的事情,是一个很概括的规范化公式。与此同时,在定义各式各样的“构件”的时候,人们似乎一直在默认Dewayne Perry和A1ex Wo1f的定义,也就是:“软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。”这一定义将处理构件、数据构件和连接构件区分了开来,明确了这三者在软件体系结构中的组件性质,将这三者视为软件体系结构的标准组成及探讨对象。
在此基础上,反复提到的则是Mary Shaw和Did Garlan所提出的:“软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。”这样的定义,我认为进一步地提出了软件体系结构的地位和所研究内容的具体情况,它提出了一个对于“控制”和“协议”的具体化要求,在以上定义的基础上强调了软件体系结构对于构架的调配和规划功能,细分了软件体系结构的内容。
除去Kruchten对于软件体系结构“四个角度”,即概念角度、模块角度、运行角度、代码角度的定义,以及Barry Boehm和他的学生提出的关于强调“互联及约束的集合”的概念之外,还有其他的定义方式。如Bass,Ctements和Kazman在1997年的《使用软件体系结构》书中提出的:“关于一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。”其强调了“软件外部的可见特性”,是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。这一定义的特点在于把软件体系结构提升,或者也可以说是限制在了软件的“表征特性”上,这使得软件体系结构有了更紧缩、健康的概念。
我在思考对于软件体系结构的定义的时候,并没有一个标准的答案,因为我在拜读其他名家的定义的时候发现,它们有着很多相似之处,也各自有着突出的特点与不足,这使得我无论是出于尊敬还是出于对自己认识层次的保留,都不愿意给出一个自己所谓的“定义”,但是可以说的是,所谓软件体系结构,是一种思想方式,也是一种分析方式和控制方式,这种方式的对象,是软件(广义)的——主要是创建过程中的—结构和统一规范的建议,其表现形式是构件化的描述体系。这样的一种理解方式,也就是我上面所提及的在前辈们定义的软件体系结构中的三个要素:(1)构件性——软件体系结构由三个构件组成:处理构件、数据构件和连接构件;(2)控制性——软件体系结构的作用是在“控制”和“协议”层次上;(3)表征性——软件体系结构的对象,是“软件外部的可见特性”。

二、常见软件体系结构风格

所谓软件体系结构风格是指:“描述某一特定应用领域中系统组织方式的惯用模式。”它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件体系结构风格是指:“定义了用于描述系统的术语表和一组指导构件系统的规则。”对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。只要系统是采用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构。
软件体系结构风格有很多种,现在我主要分析的是Mary Shaw和Did Garlan所提出的五种源于:论文的格式要求{#GetFullDomain}
主要风格类型,也就是:(1)数据流风格,包括批处理序列,管道/过滤器形式等;(2)调用/返回风格,包括主程序/子程序,面向对象风格,分层结构等;(3)独立组件风格,包括进程通讯,事件系统等;(4)虚拟机风格,包括解释器,基于规则的系统等;(5)仓库风格,包括中心数据库系统,黑板系统等。
这五种风格各有各的特点,也有共同之处,下面我将逐一分析这些风格。

1.数据流风格

这是一种最常见、结构最为简单的软件体系结构。在这样的结构体系下,所有的数据按照流的形式在执行过程中前进,不存在结构的反复和重构。在流动过程中,数据经过序列间的数据处理组件进行处理,然后将处理结果向后传送,最后进行输出,这也就是说,最简单和直接的数据流风格是单向的,没有返回的流水线系统。但是在实际应用中,并不一定限制数据处理组件的顺序,其运算的先后顺序不影响最终系统结构的正确性。这种风格很容易用管道/过滤器的形式(见下图)来解释。



上图所表示的就是一个管道/过滤器的形式,我在随处可见的理论图的原型基础上只保留了其中必要的过滤器块,而用三种不同形式的数据流表示了数据的行进过程,这三种情况分别是单向流水、非顺序流水和回流。其中:
表示了一种正向的流水方式,也就是最常见的、最直观的数据流方式,在这种方式中,正向数据管道引导数据的正向流动,在此时,我们可以将整个的上方三个过滤器所组成的正向通道作为一个完整的“管道”,这是一种广义的管道。此时,数据从左方,也就是管道的入口处进入,再经过过滤器的处理,最终由“管道”的结尾处流出。
表示了一种打乱(更改)了顺序的管道方式,交换了其中两个过滤器的顺序,这样的结构在实际中是允许的,并且不影响管道/过滤器输出的正确性。其前提条件是,每个过滤器必须是独立的实体,它不能与其他的过滤器共享数据,而且一个过滤器不知道它上游和下游的标志。同样,也可以把这样的结构视为广义的“管道”。
表示了一种回流方式,即某些数据可能经由一些管道回流,以通过过滤器的结果数据形式,重新通过过滤器,这种情况下的回流发生在上述广义“管道”内部,而不是像上述两种情况。在上述两种情况之中,也可以存在这种回流方式,只不过回流的情况是返回源头,重新参加数据的流动过程,略有不同。
此种风格的优点:(1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;(2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;(3)支持软件重用。主要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;(4)系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉;(5)允许对一些如吞吐量、死锁等属性的分析;(6)支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其他任务并行执行。
相关文章
推荐阅读

 发表评论

共有3000条评论 快来参与吧~