软件设计ZhouSu第7章节体系结构的设计与实现

上传人:E**** 文档编号:91205508 上传时间:2019-06-26 格式:PPT 页数:117 大小:2.82MB
返回 下载 相关 举报
软件设计ZhouSu第7章节体系结构的设计与实现_第1页
第1页 / 共117页
软件设计ZhouSu第7章节体系结构的设计与实现_第2页
第2页 / 共117页
软件设计ZhouSu第7章节体系结构的设计与实现_第3页
第3页 / 共117页
软件设计ZhouSu第7章节体系结构的设计与实现_第4页
第4页 / 共117页
软件设计ZhouSu第7章节体系结构的设计与实现_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《软件设计ZhouSu第7章节体系结构的设计与实现》由会员分享,可在线阅读,更多相关《软件设计ZhouSu第7章节体系结构的设计与实现(117页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构与设计,浙江大学城市学院 周苏 教授 QQ:81505050,第7章 体系结构的设计与实现,第7章 体系结构的设计与实现,系统环境的表示 体系结构设计决策 定义原型 将体系结构精化为构件 利用UML进行面向对象设计 设计模式 实现问题 开源开发,一般来说,体系结构设计需要4个步骤来完成。首先,系统必须表示在相应的环境中,也就是说,设计人员应该定义与软件交互的外部实体及其交互性质。第二步,一旦环境得到说明,设计人员应该确定一系列的顶层抽象,称之为原型,该原型可以表示系统行为或者功能的关键元素。第三步,定义完抽象后,设计开始向实现移动。在支持构件的体系结构环境中识别和描述这些构件。最后

2、,开发体系结构的特定实例,在真实世界中验证设计。,第7章 体系结构的设计与实现,体系结构设计关心的是如何组织一个系统和设计系统的整体结构。体系结构设计过程的输出是体系结构模型,它描述系统是如何由一组相互交互的组件组成的。在敏捷过程中,人们普遍接受这样一种观念,即开发过程的早期应当涉及建立整体的系统体系结构。体系结构的增量式开发并不总是成功的。虽然以重构组件来响应变更相对容易,但是重构一个系统体系结构可能是非常昂贵的。,第7章 体系结构的设计与实现,实际开发过程中,在需求工程和体系结构设计之间有很大的重叠。体系结构分解对于结构和组织描述是必要的。因此,作为需求工程过程的一部分,会提供一个抽象的系

3、统体系结构,把许多系统功能和特征集合关联到一些大规模组件或者子系统上,这样就能够使用这种分解来与信息持有者讨论需求和系统特征。,第7章 体系结构的设计与实现,软件设计和实现活动总是交叉进行的。软件设计是创造性活动,可以基于客户的需求识别系统组件及其关系。实现是将设计转变为程序的过程。有时有一个独立的设计阶段来完成设计建模和文档化,有时设计在程序员的脑中完成或者粗略地在白板或草稿纸上绘制草图。,第7章 体系结构的设计与实现,7.1 系统环境的表示,在体系结构设计开始的时候,应该把待开发的软件放在所处的环境中进行考虑,也就是说,设计应该定义与软件交互的外部实体(其他系统、设备、人)和交互的特性。这

4、些信息一般可以从需求模型中获得。一旦建立了软件的环境模型,并且描述出所有的外部软件接口,就可以确定体系结构原型集。,7.1 系统环境的表示,原型(类似于类)是表示系统行为元素的一种抽象。这个原型集提供了一个抽象集,如果要对系统结构化,就必须对这些原型进行结构化建模,但原型本身并不提供足够的实施细节。因此,设计人员通过定义和细化实施每个原型的软件构件来指定系统的结构。这个过程不停地迭代,直到获得一个完善的体系结构。 在体系结构设计层,体系结构设计师用体系结构环境图(Architectural Context Diagram,ACD)对软件与其外围实体的交互方式进行建模。图7-1给出了体系结构环境

5、图的一般结构。,图7-1 体系结构环境图,7.1 系统环境的表示,如图所示,与目标系统(为该系统所开发的体系结构设计)交互的系统可以表示为: 上级系统这些系统把目标系统作为某些高层处理方案的一部分。 下级系统这些系统被目标系统使用,并为完成目标系统的功能提供必要的数据和处理。 同级系统这些系统在对等的基础上相互作用(即信息或者由同级系统和目标系统产生,或者被目标系统和同级系统使用)。 参与者通过产生和消耗必要处理所需的信息,实现与目标系统交互的实体(人、设备)。,7.1 系统环境的表示,每个外部实体都通过某一接口(带阴影的小矩形)与目标系统进行通信。 为了说明ACD的使用,我们来考虑SafeH

6、ome产品的住宅安全功能。整个SafeHome产品的控制器和基于因特网的系统对于安全功能来说都处于上一级,图7-2中它们处在上方。,图7-2 SafeHome安全功能的体系结构环境图,7.1 系统环境的表示,监视功能是一个同级系统,并且在以后的产品版本中还要使用住宅安全功能(或被住宅安全功能使用)。户主和控制面板都是参与者,它们既是安全软件所用信息的生产者,又是安全软件所供信息的使用者。最后,传感器为安全软件所使用,并且在图中显示为下一级。作为体系结构设计的一部分,必须说明图7-2中每个接口的细节。目标系统所有的流入和流出数据必须在这个阶段标识出来。,7.2 体系结构设计决策,可以在两个抽象层

7、次上设计软件体系结构,即小规模体系结构和大规模体系结构: 1)小规模体系结构与单个程序的体系结构相关。在这个层次上主要关注将单个程序分解成许多组成部分的方法。 2)大规模体系结构与复杂企业系统的体系结构相关,包括其他的系统、程序和程序组件。这些企业系统分布在不同的计算机上,这些计算机可能由不同的企业拥有和管理。,7.2 体系结构设计决策,体系结构设计是一个充满创造性的过程,设计一个系统组成来满足功能性和非功能性系统需求,所以工程中的活动很大程度上依赖于所要开发的系统类型、系统架构师的背景和经验以及系统的特殊需求。因此,把体系结构设计看做一系列将要做的决策要比把它视为一连串的活动更有效。,7.2

8、 体系结构设计决策,在体系结构设计过程中,系统架构师必须做出很多结构上的决定,这些决定将极大地影响系统本身及其开发过程。根据其知识和经验,他们必须回答以下一些关于系统的根本性问题: 1)对于所要设计的系统,是否存在一个可以当做模板的一般性应用体系结构? 2)系统将如何分配到多个核或处理器上? 3)哪些体系结构模式和风格可能会用到? 4)系统结构分析采用哪种基本方法? 5)如何将系统中的结构组件分解为子组件?,7.2 体系结构设计决策,6)应该使用什么样的策略来控制系统中组件的操作? 7)什么样的体系结构组织方式对于交付非功能性的系统需求是最好的? 8)如何评估体系结构设计? 9)如何对系统体系

9、结构文档化?,7.2 体系结构设计决策,尽管每个软件系统都是独特的,但是同一个应用领域内的系统通常具有相似的体系结构,这种体系结构能反映基本的领域概念。例如,应用产品线是围绕一个核心体系结构建立的一些应用,核心体系结构会有一些变量,可以调整这些变量来满足专门用户的需求。在设计系统体系结构时,我们必须找出本系统和更广泛的一些应用类之间的共同之处,然后确定从这些应用体系结构中能够复用多少。,7.2 体系结构设计决策,由于非功能性需求和软件体系结构的密切关系,我们为系统所选择的特殊的体系结构风格和结构应当依赖于非功能性系统需求: (1)性能。针对这一关键性需求,体系结构的设计要定位在少数几个组件的一

10、些关键操作上,把这些组件都部署到同一台计算机而不是分配到网络中。这可能意味着系统要使用较大粒度的组件而不是小粒度的组件,以此来减少组件之间的通信次数。我们可能还会考虑运行时系统组织方式,允许系统在不同的处理器上被复制和执行。,7.2 体系结构设计决策,(2)信息安全性。针对这一关键性需求,体系结构的设计要采用分层结构,把重要资源放在内层,并且在每层中采用更加严格的信息安全有效性验证。 (3)系统安全性。针对这一关键性需求,系统体系结构的设计要将与安全相关的操作集中在一个或少数几个组件中。这样做会降低成本和减少安全有效性验证方面的问题,而且有可能为之提供相应的保护系统,使保护系统能够安全地关闭系

11、统以防失败。 (4)可用性。针对这一关键性需求,系统体系结构设计要采用冗余组件以便能在无需系统停止运行的情况下更新和替换组件。 (5)可维护性。针对这一关键性需求,系统体系结构设计要使用小粒度的自包含组件以便于更换。数据的生产者和数据的消费者应该分开,尽量避免它们之间的数据共享。,7.2 体系结构设计决策,显然,这些体系结构之间有潜在的冲突。举例来说,性能的改进需要使用大粒度组件,而改善可维护性需要使用小粒度组件。如果这两个指标都是系统的关键性需求,就需要采取一个折中方案。有时可以通过针对不同部分而采用不同的体系结构模式或风格来实现。 对体系结构设计的评估是困难的,这是因为,对体系结构的真正的

12、检验是要看当它正在使用的时候能在多大程度上满足功能性和非功能性需求。然而,在某些情况下,可以通过将自己的设计和参考体系结构或一般体系结构模式进行比较来评估。,7.3 定义原型,在设计过程中,方块图是描述系统体系结构很合适的方法,它给出了系统结构的一个高层次描述,来自不同工程学科的、参与到此系统开发过程中的人员都能够看懂这种描述,它是一种支持设计过程中的人与人之间沟通的很好的方式。在许多项目中,方块图通常是仅存的体系结构文档。可是,如果完全地记录系统体系结构,那么最好用一种带有清晰语义的符号系统来描述体系结构。,7.3 定义原型,原型(archetype)是体系结构设计的抽象构造块,是表示核心抽

13、象的类或模式,该抽象对于目标系统体系结构的设计非常关键。一般来讲,即使设计相对复杂的系统也只需要相对较小的原型集合。目标系统的体系结构由这些原型组成,这些原型表示体系结构中稳定的元素,但可以基于系统行为以多种不同的方式对这些元素实例化。,7.3 定义原型,很多情况下,可以通过检验作为需求模型一部分的分析类来获得原型。我们继续来讨论SafeHome住宅安全功能,可能会定义下面的原型: 结点。表示住宅安全功能的输入和输出元素的内聚集合,例如,结点可能由如下元素构成: 各种传感器; 多种警报(输出)指示器。 探测器。对所有为目标系统提供信息的传感设备的抽象。 指示器。表示所有指示警报条件发生的报警机

14、械装置(例如,警报汽笛、闪灯、响铃)的抽象。 控制器。对允许结点发出警报或者撤销警报的机械装置的抽象。如果控制器安装在网络上,那么它们应该具有相互通信的能力。,7.3 定义原型,图7-3显示了使用UML符号对每一个原型的描述结果。回想那些构成体系结构基础的原型,它们是抽象的,随着体系结构设计的进行,这些抽象必须被进一步求精。例如,探测器可以被精化为传感器的类层次。,图7-3 SafeHome安全功能原型的UML关系,7.4 将体系结构精化为构件,在将软件体系结构精化为构件时,系统的结构就开始显现了。但是,如何选择这些构件呢?为了回答这个问题,先从需求模型所描述的类开始。这些分析类表示软件体系结

15、构中必需处理的应用(业务)领域的实体。因此,应用领域是构件导出和精化的一个源泉。另一个源泉是基础设施域。体系结构必须提供很多基础设施构件,使应用构件能够运作,但是这些基础设施构件与应用领域没有业务联系。例如,内存管理构件、通信构件、数据库构件和任务管理构件经常集成到软件体系结构中。,7.4 将体系结构精化为构件,体系结构环境图(图7-1)描述的接口隐含着一个或多个特定的构件,这些构件处理经过接口的数据。在某些情况下(如图形用户界面)需要设计具有许多构件、完整的子系统体系结构。,7.4 将体系结构精化为构件,在SafeHome住宅安全功能的例子中,可以定义完成下列功能的顶层构件集合: 外部通信管

16、理协调安全功能与外部实体(如基于因特网的系统与外部报警通知)的通信; 控制面板处理管理所有的控制面板功能; 探测器管理协调对系统所有探测器的访问; 警报处理审核所有报警条件并执行相应动作。,7.4 将体系结构精化为构件,每一个顶层构件都必须经过反复的迭代精化,然后在总的SafeHome体系结构中进行定位。每个构件都需要定义设计类(包含相应的属性和操作)。然而,重要的是需要注意到,在进行构件级设计之前,不要说明所有属性和操作的设计细节。,7.4 将体系结构精化为构件,图7-4描述了整体体系结构(由UML构件图表示)。当事务从处理SafeHome的GUI(图形用户界面)和因特网接口的构件进入时,它们就被外部通信管理获取。该信息由用于选择合适产品功能(安全功能)的SafeHome执行者构件来管理。控制面板处理构件通过与户主交互作用来实现安全功能的安装或解除。探测器管理构件定时查询传感器以检测报警条件,一旦检测到警报,警报处理构件将产生相应的输出。,图7-4 带有顶层构件的SafeHome整体体系结构,7.4 将体系结构精化为构件,至此,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号