正交软件体系结构
正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。从以上定义,我们可以看出,正交软件体系结构是一种以垂直线索构件族为基础的层次化结构,其基本思想是把应用系统的结构按功能的正交相关性,垂直分割为若干个线索(子系统),线索又分为几个层次,每个线索由多个具有不同层次功能和不同抽象级别的构件构成。各线索的相同层次的构件具有相同的抽象级别。因此,我们可以归纳正交软件体系结构的主要特征如下:
(1)正交软件体系结构由完成不同功能的n(n > 1)个线索(子系统)组成;
(2)系统具有m(m > 1)个不同抽象级别的层;
(3)线索之间是相互独立的(正交的);
(4)系统有一个公共驱动层(一般为最高层,下图的第一层)和公共数据结构(一般为最低层,下图第五层)。
对于大型的和复杂的软件系统,其子线索(一级子线索)还可以划分为更低一级的子线索(二级子线索),形成多级正交结构。正交软件体系结构的框架如图1所示。
图1是一个三级线索、五层结构的正交软件体系结构框架图,在该图中,ABDFK组成了一条线索,ACEJK也是一条线索。因为B、C处于同一层次中,所以不允许进行互相调用;H、J处于同一层次中,也不允许进行互相调用。一般来讲,第五层是一个物理数据库连接构件或设备构件,供整个系统公用。
在软件进化过程中,系统需求会不断发生变化。在正交软件体系结构中,因线索的正交性,每一个需求变动仅影响某一条线索,而不会涉及到其他线索。这样,就把软件需求的变动局部化了,产生的影响也被限制在一定范围内,因此实现容易。
正交软件体系结构具有以下优点:
(1)结构清晰,易于理解。正交软件体系结构的形式有利于理解。由于线索功能相互独立,不进行互相调用,结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。
(2)易修改,可维护性强。由于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。因此,当软件需求发生变化时,可以将新需求分解为独立的子需求,然后以线索和其中的构件为主要对象分别对各个子需求进行处理,这样软件修改就很容易实现。系统功能的增加或减少,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。
(3)可移植性强,重用粒度大。因为正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。
正交软件体系结构设计过程
正交软件体系结构设计过程分为2 个阶段:原型阶段和演化阶段。开发原型的主要目的是为了确认需求,设计体系结构基线。软件开发小组需要建立一系列原型,与用户一起讨论和评审。原型有助于需求的清晰化,同时也有助于进一步分析系统的可行性,更清楚地认识系统,完善对系统的理解。
原型开发的第1 个迭代周期的目标并不明确具体。为了提高开发效率,缩短开发周期,可将开发人员分为2 组,一组负责界面原型;一组负责业务模型。界面原型是界面层次的水平模型, 没有真正地实现系统功能。业务模型可用UML(统一建模语言)图表述,最终生成系统的SRS(软件需求说明书)。原型开发的第2 个迭代周期的任务是设计和建立正交软件体系结构。本次迭代大致分为6 个阶段[5]:
(1)标识构件:为系统生成逻辑结构,比如生成类图、包、构件等。
(2)提出软件体系结构模型:选择合适的软件体系结构风格是必要的,在此基础上,开发人员通过软件体系结构模型,熟悉了软件体系结构属性等方面的要求,虽然这个模型可能存在错误,但它为整个系统的演化确立了目标。
(3)把已标识的构件映射到软件体系结构中:把第(1)阶段标识的构件映射到体系结构中。
(4)分析构件,建立连接件:为了把已标识的构件集成到体系结构中,必须分析所有构件的关系,可结合UML 图表述,比如活动图、时序图等。
(5)生成软件体系结构。关键构件决定软件体系结构,主要是在第(4)阶段的基础上做精化。
(6)正交化。通过以上几个阶段产生的软件体系结构不一定满足正交性(同一层次的构件之间可能存在相互调)。通过从左至右、自顶向下地增加、删除、拆分合并构件,把不满足正交性的线索和构件正交化。
正交软件体系结构的演化控制
正交软件体系结构的重用粒度大。在演化控制和新系统开发过程中,逐渐建立线索库和构件库,如果有新需求,可以重用库中的线索和构件,以提高开发效率。因此,对新需求可以通过在原软件体系结构基础之上新
增、修改、删除线索来完成。对线索中的构件进行修改和添加时按照从左到右、自顶向下的原则,先修改高级构件,然后根据需要修改被其调用的构件。基于正交软件体系结构开发的软件,必须按照正交的演化步骤修改。其实演化过程也是正交软件体系结构的验证和完善过程。
(1)变动需求归类。将变动对应到相应的线索和构件上,对于新需求需要建立的新的线索和构件,都先作好标记。
(2)制定演进计划。在对原有模型改动前,需要制定一个周密的演进计划,作为后续开发工作的指南。
(3)增加、删除和修改构件。在第(1)步的基础上,开发人员依据演进计划对线索和构件进行增删改。
(4)更新构件关系。参照正交化简易算法对构件关系做必要调整,使线索和构件满足正交性。
(5)产生演化后的新软件体系结构。在原有系统上的修改必须映射到原有体系结构上,作为后续开发的基础。
(6)对以上修改作阶段性技术评审。
(7)迭代演进。迭代地进行第(3)步~第(6)步,直到新体系结构足够详细。
参考:
http://se.csai.cn/NewTech/No046.htm 张友生
http://read.chaoxing.com/ebook/read_11401987.html 张友生 p72
http://ishare.iask.sina.com.cn/f/8438626.html 基于正交软件体系结构的CRM 系统 汪保杰,王如龙 (湖南大学软件学院,长沙 410082)