基于体系结构的软件开发.ppt

上传人:laozhun 文档编号:2971701 上传时间:2023-03-06 格式:PPT 页数:107 大小:651KB
返回 下载 相关 举报
基于体系结构的软件开发.ppt_第1页
第1页 / 共107页
基于体系结构的软件开发.ppt_第2页
第2页 / 共107页
基于体系结构的软件开发.ppt_第3页
第3页 / 共107页
基于体系结构的软件开发.ppt_第4页
第4页 / 共107页
基于体系结构的软件开发.ppt_第5页
第5页 / 共107页
点击查看更多>>
资源描述

《基于体系结构的软件开发.ppt》由会员分享,可在线阅读,更多相关《基于体系结构的软件开发.ppt(107页珍藏版)》请在三一办公上搜索。

1、1,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,好的解决方案、设计经验,可以一次又一次的使用。设计模式是面向对象的软件设计的经验总结,是被系统地命名、解释和评价的一个重要的可重现的面向对象的设计方案。利用设计模式可以方便地重用成功的设计和结构。,2,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,类比:建筑设计方案,3,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,模式是指从某个具体的形式中得到的一种抽象,在特殊的非任意性的环境中,该形式不断地重复出现。一个软件体系结构的模式描述了一个出现在特定设计语境中的特殊的再现设计问题,并为它的解决方

2、案提供了一个经过充分验证的通用图示。解决方案图示通过描述其组成构件及其责任和相互关系以及它们的协作方式来具体指定。,4,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC的背景,软件系统的重要功能之一是从数据存储检索数据,并将其显示给用户。在用户更改数据之后,系统再将更新内容存储到数据存储中。如果将数据存储和界面显示代码放在一起,则可以减少编码量并提高应用程序性能。但这样做也存在很多问题。,5,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC(model view controller)的背景,用户界面逻辑的更改往往比业务逻辑频繁,尤其是在基于 Web

3、 的应用程序中。基于 Web 的瘦客户端应用程序的优点之一是可以随时更改用户界面,而不必重新分发应用程序。如果将显示代码和业务逻辑组合在一起并放在单个对象中,则每次更改用户界面时,都必须修改包含业务逻辑的对象。,6,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC的背景,在很多情况下,应用程序需要以不同的方式显示同一数据。例如,表格显示,趋势图显示,柱状图显示,饼图显示。界面开发与业务逻辑开发所需要的技能不同,在这两方面都精通比较困难。与业务逻辑相比,用户界面代码对设备的依赖性往往更大。例如,要将应用程序从基于浏览器的应用程序迁移到个人数字助理(PDA)或支持 Web 的

4、手机上,则必须替换很多用户界面代码,而业务逻辑可能不受影响。,7,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC的背景,如何让 Web 应用程序的用户界面和功能实现模块化,以便可以轻松地单独修改各个部分?,?,8,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC解决方案,MVC模式将建模、显示和操作分为三个独立的类:模型。模型用于管理应用程序域的行为和数据,并响应为获取其状态信息(通常来自视图)而发出的请求,还会响应更改状态的指令(通常来自控制器)。视图。视图用于管理信息的显示。控制器。控制器用于解释用户的鼠标和键盘输入,以通知模型和/或视图进行相

5、应的更改。,9,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC解决方案,10,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC的处理过程,控制器接收用户的请求,并决定应该调用哪个模型来进行处理;模型用业务逻辑来处理用户的请求并返回数据;控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。,11,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,被动的MVC模型,当控制器以独占方式操作模型时,则为被动模型。控制器将修改模型,然后通知视图:模型已经更改,应该进行刷新。此情况下的模型完全独立于视图和控制器,这意味着模型无法报告其

6、状态更改。例如,HTTP 协议,浏览器没有从服务器获取异步更新的简单方法。浏览器显示视图并对用户输入作出响应,但是它不会检测服务器上的数据更改。仅当用户显式请求刷新时,才会询问服务器是否发生了更改。,12,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,主动的MVC模型,当模型更改状态而不涉及控制器时,则为主动模型。当其他资源正在更改数据并且更改必须反映在视图中时,可能会发生这种情况。例如,股票报价机的显示。当从外部源接收股票数据,并希望当股票数据更改时更新视图。因为在这些更改发生时,只有模型检测对其内部状态的更改,所以模型必须通知视图刷新显示。使用 MVC 模式的一个目的是使

7、模型独立于视图。如果模型必须将更改通知视图,则会重新带来不希望的依赖性。,13,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,使用观察者的MVC主动模型,各个视图实现 Observer 接口,并向模型注册。模型将跟踪由所有观察器组成的列表。当模型发生改变时,模型将会遍历所有已注册的观察器,并将更改通知它们。此方法通常称为发布-订阅。,14,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC模式的优点,支持多个视图。因为视图与模型分离,而且模型与视图之间没有直接依赖性,所以用户界面可以同时显示同一数据的多个视图。适应更改。用户界面要求的更改往往比业务规则快。

8、用户可能更喜欢新设备(如手机或 PDA)采用另一颜色、字体、屏幕布局和支持级别。因为模型不依赖于视图,所以将新类型的视图添加到系统中通常不会影响模型。因此,更改的作用范围仅限于视图。,15,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式概述,MVC模式的缺点,复杂性。MVC 模式引入了新的间接级别,因此稍微增加了解决方案的复杂性。还增加了用户界面代码的事件驱动特性,调试用户界面代码会变得更加困难。频繁更新的成本。将模型与视图分离并不意味着模型的开发人员可以忽略视图的特性。例如,如果模型发生频繁更改,则它可能向视图发出大量更新请求。一些视图(如图形显示)的显示可能需要一定时间。因此,

9、模型可以将多个更新作为单个通知发送到视图。,16,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式的基本成分,模式名称:通常用来描述一个设计问题、它的解法和后果,由一到两个词组成。问题:告诉我们什么时候要使用设计模式、解释问题及其背景。解决方案:描述设计的基本要素,它们的关系、各自的任务以及相互之间的合作。后果:描述应用设计模式后的结果和权衡。比较与其他设计方法的异同,得到应用设计模式的代价和优点。,17,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式的描述(1),如果要理解和讨论模式,就必须以适当形式描述模式。好的描述有助于我们立即抓住模式的本质,即模式关心的问题是什么

10、,以及提出的解决方案是什么?,18,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式的描述(1),(1)模式名称和分类:模式名称和一个简短的摘要。(2)目的:即设计模式的用处、基本原理和目的、它针对的是什么特殊的设计问题。(3)别名:同一个模式可能会有不同的命名。(4)动机:描述一个设计问题的方案,以及模式中类和对象的结构如何解决这个问题。,Erich Gamma博士等人采用下面的固定模式来描述:,19,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式的描述(2),(5)应用:在什么情况下可以应用本设计模式。(6)结构:用对象模型技术对本模式进行表示。(7)成分:组成本设计

11、模式的类和对象及它们的职责。(8)合作:成分间如何合作实现他们的任务。(9)后果:该模式如何支持它的对象;如何在使用本模式时进行权衡。,20,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式的描述(2),(10)实现:在实现本模式的过程中,要注意哪些缺陷、线索或者技术;是否与编程语言有关。(11)例程代码:说明如何用C+或其他语言来实现该模块的代码段。(12)已知的应用:现实系统中使用该模式的实例。(13)相关模式:与本模式相关的其他模式,它们之间的区别,以及本模式是否要和其他模式共同使用。,21,第七章 基于体系结构的软件开发,7.1 设计模式,模式和软件体系结构,模式作为体系结构

12、构造块对软件体系结构而言,模式的一个重要目标就是用已定义属性进行特定的软件体系结构的构造。,模式,22,第七章 基于体系结构的软件开发,7.1 设计模式,模式和软件体系结构,构造异构体系结构单个模式不能完成一个完整的软件体系结构的详细构造,它仅仅帮助设计师设计应用程序的某一方面。为了有效使用模式,需要将它们组织成模式系统。模式系统统一描述模式,对它们分类,更重要的是,说明它们之间如何交互。,模式1,模式2,23,第七章 基于体系结构的软件开发,7.1 设计模式,模式和软件体系结构,模式和方法好的模式描述也包含它的实现指南,可将其看成是一种微方法,用来创建解决一个问题的方案。通过提供方法的步骤来

13、解决软件开发中的具体再现问题,这些微方法补充了通用的但与问题无关的分析和设计方法。,24,第七章 基于体系结构的软件开发,7.1 设计模式,模式和软件体系结构,实现模式 目前的许多软件模式具有独特的面向对象风格。因此,人们往往认为,能够有效实现模式的唯一方式是使用面向对象编程语言,其实不然。在设计层次,大多数模式只需要适当的编程语言的抽象机制,如模块或数据抽象。因此,可以用几乎所有的编程范例,并在所有的编程语言中来实现模式。,25,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式方法分类,Coad的面向对象模式 代码模式 框架应用模式 形式合约,26,第七章 基于体系结构的软件开发,

14、7.1 设计模式,设计模式方法分类,1、Coad的面向对象模式 1992年,美国面向对象技术大师Peter Coad从MVC的角度对面向对象系统进行了讨论,设计模式由最底层的构成部分(类和对象)及其关系来区分。他使用了一种通用的方式来描述一种设计模式:(1)模式所能解决问题的简要介绍与讨论;(2)模式的非形式文本描述以及图形表示;(3)模式的使用方针:在何时使用以及能够与哪些模式结合使用。,27,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式方法分类,1、Coad的面向对象模式将Coad的模式划分为以下三类:(1)基本的继承和交互模式:主要包括OOPL所提供的基本建模功能,继承模式

15、声明了一个类能够在其子类中被修改或被补充,交互模式描述了在有多个类的情况下消息的传递。(2)面向对象软件系统的结构化模式:描述了在适当情况下,一组类如何支持面向对象软件系统结构的建模。(3)与MVC框架相关的模式。,28,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式方法分类,2、代码模式代码模式的抽象方式与OOPL中的代码规范很相似,该类模式有助于解决某种面向对象程序设计语言中的特定问题。主要目标在于:(1)指明结合基本语言概念的可用方式;(2)构成源码结构与命名规范的基础;(3)避免面向对象程序设计语言(尤其是C+语言)的缺陷。,29,第七章 基于体系结构的软件开发,7.1 设

16、计模式,设计模式方法分类,2、代码模式 代码模式与具体的程序设计语言或者类库有关,它们主要从语法的角度对软件系统的结构方面提供一些基本的规范。这些模式对于类的设计不适用,同时也不支持程序员开发和应用框架,命名规范是类库中的名字标准化的基本方法,以免在使用类库时产生混淆。,30,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式方法分类,3、框架应用模式(“菜谱”)框架是从特定域中提取出来的一组组件及其相互关系的可重用的体系结构。它定义了整体结构、类和对象的分割,各部分的主要责任,类和对象如何协作,以及控制流程。框架记录了其应用领域共同的设计决策,因而框架更强调设计复用。程序员将框架作为

17、应用程序开发的基础,特定的框架适用于特定的需求。,31,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式方法分类,4、形式合约 形式合约(formal contracts)也是一种描述框架设计的方法,强调组成框架的对象间的交互关系。有人认为它是面向交互的设计,对其他方法的发展有启迪作用。形式化方法由于其过于抽象,而有很大的局限性,仅仅在小规模程序中使用。,32,第七章 基于体系结构的软件开发,7.1 设计模式,设计模式目录的内容,Gamma和他的同事已发布了可用于OO系统的23个设计模式,用一种类似分类目录的形式将设计模式记载下来。我们称这些设计模式为设计模式目录。根据模式的目标,可

18、以将它们分成创建性模式、结构性模式和行为性模式。创建性模式处理的是对象的创建过程,结构性模式处理的是对象/类的组合,行为性模式处理类和对象间的交互方式和任务分布。根据它们主要的应用对象,又可以分为主要应用于类的和主要应用于对象的。,33,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关概念,基于体系结构的软件设计(architecture-based software design,ABSD)方法为软件系统的概念体系结构提供构造方法,概念体系结构描述了系统的主要设计元素及其关系。概念体系结构代表了在开发过程中作出的第一个选择,相应地,它是达到系统质量和业务目标的关键,为达到

19、预定功能提供了基础。,34,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关概念,ABSD方法有三个基础:(1)功能分解:在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;(2)通过选择体系结构风格来实现质量和业务需求。(3)软件模板的使用:利用一些软件系统的结构。,35,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关概念,软件模板是一个特殊类型的软件元素,包括描述所有这种类型的元素在共享服务和底层构造的基础上如何进行交互。软件模板还包括属于这种类型的所有元素的功能,这些功能的例子有:每个元素必须记录某些重大事件,每个元素必须为运行期间的外

20、部诊断提供测试点等。,36,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关术语,设计元素ABSD方法的目的是组织最早的设计策略,不包括形成实际的软件构件和类。但要作出有关功能划分和达到不同质量属性机制的决策。ABSD方法是一个递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。,37,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关术语,ABSD方法中所使用的设计元素。,38,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关术语,2.视角和视图考虑体系结构时,需要从不同的视角(perspective)来描述

21、系统。如逻辑视图进程视图(并发视图)实现视图、配置视图(物理结构、只能用在多处理器的系统中)。,39,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关术语,3.用例和质量场景用例除了使功能需求具体化,还必须使质量需求具体化。在使用用例捕获功能需求的同时,我们通过定义特定场景来捕获质量需求,并称这些场景为质量场景。在一般的软件开发过程中,我们使用质量场景捕获变更、性能、可靠性和交互性,分别称为变更场景、性能场景、可靠性场景和交互性场景。,40,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,有关术语,41,第七章 基于体系结构的软件开发,7.2 基于体系结构的

22、设计方法,有关术语,3.质量场景变更场景性能场景可靠性场景交互性场景,预期性能场景:估计每年用户增加10%的影响非预期性能场景:估计每年用户增加100%的影响,42,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法与生命周期,ABSD方法在生命周期中的位置,43,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法与生命周期,ABSD方法的输入由下列部分组成:抽象功能需求:包括变化的需求和通用的需求。用例(实际功能需求)。抽象的质量和商业需求。质量因素(实际质量和商业需求)。体系结构选项。约束。,44,第七章 基于体系结构的软件开发,7.2

23、基于体系结构的设计方法,ABSD方法的步骤,1、ABSD方法定义的设计元素,45,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,2、设计元素的产生顺序,对ABSD方法的设计元素树可以进行广度遍历,也可以进行深度遍历。对一个特定开发来说,决定遍历设计元素树的考虑如下:领域知识新技术的融合体系结构设计团队的个人经验 右图描述了设计元素A分解为两个小的设计元素B和C。,46,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,3、设计元素的活动,分解一个设计元素的步骤,47,第七章 基于体系结构的软件开发,7.2 基于体系结构的设

24、计方法,ABSD方法的步骤,定义逻辑视图,48,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,某系统的逻辑视图,2,1,49,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(1)功能分解 一个设计元素有一组功能,这些功能必须分组。分解的目的是使每个组在体系结构内代表独立的元素。分解可以进一步细化。功能的分组可选择几个标准:1)功能聚合。2)数据或计算行为的类似模式。3)类似的抽象级别。4)功能的局部性。,50,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(2)选择体系结构风格每个

25、设计元素有一个主要的体系结构风格或模式,这是设计元素如何完成它的功能的基础。主要风格并不是唯一风格,为了达到特定目的,可以进行修改。体系结构风格的选择建立在设计元素的体系结构驱动基础上。在软件设计过程中,并不总是有现成的体系结构风格可供选择为主要的体系结构风格。,51,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(2)选择体系结构风格一旦选定了一个主要的体系结构风格,该风格必须适应基于属于这个设计元素的质量需求,体系结构选择必须满足质量需求。为设计元素选择体系结构风格是一个重要的选择,这种选择在很大程度上依赖于软件设计师的个人设计经验。,52,第七章 基

26、于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(3)为风格分配功能选择体系结构风格时产生了一组构件类型,我们必须决定这些类型的数量和每个类型的功能,这就是分配的目的。在功能分解时产生的功能组,应该分配给选择体系结构风格时产生的构件类型,这包括决定将存在多少个每个构件类型的实例,每个实例将完成什么功能。这样分配后产生的构件将作为设计元素分解的子设计元素。每个设计元素的概念接口也必须得到标识,这个接口包含了设计元素所需的信息和在已经定义了的体系结构风格内的每个构件类型所需要的数据和控制流。,53,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方

27、法的步骤,(4)细化模板被分解的设计元素有一组属于它的模板。在ABSD方法的初期,系统没有模板。当模板细化了以后,就要把功能增加上去。这些功能必须由实际构件在设计过程中加以实现。最后,需要检查模板的功能,以判断是否需要增加附加功能到系统任何地方的设计元素中。也就是说,要识别在该级别上已经存在的任何横向服务。模板包括好的设计元素和那些应该共享的功能。每种类型的功能可以根据需要附加支持功能,这种附加功能一旦得到识别,就要进行分配。,54,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(5)功能校验用例用来验证,他们通过有目的的结构能够达到。子设计元素的附加功能

28、可以通过用例的使用得到判断。也可以使用变化因素,因为执行一个变化的难点取决于功能的分解。从这种类型的校验出发,设计就是显示需求(通过用例)和支持修改(通过变化因素)。,55,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(6)创建并发视图检查并发视图的目的是判断哪些活动是可以并发执行的。这些活动必须得到识别,产生进程同步和资源竞争。对并发视图的检查是通过虚拟进程来实现的。虚拟进程是通过程序、动态模块或一些其他的控制流执行的一条单独路径。,56,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(6)创建并发视图,57,第七

29、章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(7)创建配置视图如果在一个系统中,使用了多个处理器,则需要对不同的处理器配置设计元素,这种配置通过配置视图来进行检查。例如,我们检查网络对虚拟线程的影响,一个虚拟线程可以通过网络从一个处理器传递到另一个处理器。我们使用物理线程来描述在某个特定处理器中的线程。也就是说,一个虚拟线程是由若干个物理线程串联而成的。通过这种视图,我们可以发现一个单一的处理器上的同步的物理线程和把一个虚拟线程从一个处理器传递到其他处理器上的需求。,58,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(

30、7)创建配置视图,59,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(8)验证质量场景一旦创建了三个视图,就要把质量场景应用到所创建的子设计元素上。对每个质量场景,都要考虑是否仍然满足需求,每个质量场景包括了一个质量属性刺激和所期望的响应。考虑到目前为止所作出的设计决策,看其是否能够达到质量属性的要求。如果不能达到,则需重新考虑设计决策,或者设计师必须接受创建质量场景失败的现实。,60,第七章 基于体系结构的软件开发,7.2 基于体系结构的设计方法,ABSD方法的步骤,(9)验证约束最后一步就是要验证所有的约束没有互相矛盾的地方,对每一个约束,都需提问“

31、该约束是否有可能实现?”。一个否定的回答就意味着对应的质量场景也不能满足。这时,需要把问题记录进文档,对导致约束的决策进行重新验证。,61,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,概述,以演化和增量方法为基础的迭代开发过程已经成为面向对象开发过程的标准。在软件开发的初始阶段,选择合理的软件体系结构是非常重要的,但设计好系统的最终结构又是不可能的,也是不现实的。因为需求还在不断地发生变化。随着需求的不断变化,对问题的进一步理解,以及对实现系统的技术方式的进一步理解,体系结构本身也是可以演化的。,62,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,设计和演化过

32、程,基于体系结构的软件开发过程可以分为独立的两个阶段:实验原型阶段:这一阶段的重点是获得对问题域的理解。为此,需要构建一系列原型,与实际的最终用户一起进行讨论和评审,决定是否可以实现最终系统,如果可以,则进入第二个阶段。(2)演化开发阶段:重点是放在最终产品的开发上,也就是要将重点转移到构件的精确化上。这时,原型既被当作系统的规格说明,又可当作系统的演示版本。,63,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,设计和演化过程,虽然实验原型的结果可以决定是否开始实现最终系统,但在实验原型阶段之后,并不是所有的功能需求都已经足够准确。在每个阶段,都必须以一系列的开发周期为单位安排

33、和组织工作。每一个开发周期都要有不同的着重点,要有分析、设计和实现的过程,这个过程取决于当前对系统的理解和前一个开发周期的结果。,64,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,实验原型阶段,第一个开发周期没有具体的、明确的目标。此时,为了提高开发效率,缩短开发周期,所有开发人员可以分成两个小组,一个小组创建图形用户界面,另一个小组创建一个问题域模型。在第一个周期结束时,形成了两个版本,一个是图形用户界面的初始设计,另一个是问题域模型。,第一个开发周期,65,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(1)标识构件(2)提出软件体系结构模型(3)把已标识

34、的构件映射到软件体系结构中(4)分析构件之间的相互作用(5)产生软件体系结构(6)软件体系结构正交化,实验原型阶段,第二个开发周期:任务是设计一个正交软件体系结构。此周期又可细分为以下六个小的阶段。,66,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(1)标识构件第一步,生成类图 第二步,对类进行分组 第三步,把类打包成构件,第二个开发周期,实验原型阶段,67,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(2)提出软件体系结构模型 在建立体系结构的初期,选择一个合适的体系结构风格是首要的。在这个风格基础上,开发人员通过体系结构模型,可以获得关于体系结构属性的

35、理解。,实验原型阶段,第二个开发周期,68,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(3)把已标识的构件映射到软件体系结构中 把在第(1)阶段已标识的构件映射到体系结构中,将产生一个中间结构,这个中间结构只包含那些能明确适合体系结构模型的构件。,实验原型阶段,第二个开发周期,69,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(4)分析构件之间的相互作用 为了把所有已标识的构件集成到体系结构中,必须认真分析这些构件的相互作用和关系。我们可以使用UML的顺序图来完成这个任务。,实验原型阶段,第二个开发周期,70,第七章 基于体系结构的软件开发,7.3 体系结

36、构的设计与演化,(5)产生软件体系结构一旦决定了关键的构件之间的关系和相互作用,就可以在第(3)阶段得到的中间结构的基础上进行精化。可以利用顺序图标识中间结构中的构件和剩下的构件之间的依赖关系,分析第(2)阶段模型的不一致性(例如丢失连接等)。,实验原型阶段,第二个开发周期,71,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(6)软件体系结构正交化在(1)-(5)阶段产生的软件体系结构不一定满足正交性(例如:同一层次的构件之间可能存在相互调用)。整个正交化过程以原体系结构的线索和构件为单位,自顶向下、由左到右进行。通过对构件的新增、修改或删除,调整构件之间的相互作用,把那些不

37、满足正交性的线索进行正交化。,实验原型阶段,第二个开发周期,72,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(6)软件体系结构正交化正交软件体系结构的特征:正交软件体系结构由完成不同功能的n(n 1)个线索(子系统)组成;系统具有m(m 1)个不同抽象级别的层;线索之间是相互独立的(正交的);系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。,实验原型阶段,第二个开发周期,73,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,(6)软件体系结构正交化 正交软件体系结构的框架:,实验原型阶段,第二个开发周期,74,第七章 基于体系结构的软件开发

38、,7.3 体系结构的设计与演化,演化开发阶段,一旦确定了软件的正交体系结构,就可以开始正式的构件开发工作。由于体系结构的正交性,可以将开发人员分成若干个小组进行并行开发。在开发及运行阶段,需求都有可能发生变化。在这种情况下,就必须使用系统演化步骤去修改应用,以满足新的需求。主要包括以下八个步骤:,75,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,演化开发阶段,(1)需求变更归类。首先必须对用户的需求变更进行归类,使变更的需求与已有构件和线索对应。对找不到对应构件和线索的变更,也要做好标记,在后续工作中,将创建新的构件或线索,以满足新的需求。(2)制订体系结构演化计划:在改变原

39、有结构之前,开发组织必须制订一个周密的体系结构演化计划,作为后续演化开发工作的指南。(3)修改、增加或删除构件。(4)更新构件的相互作用。,76,第七章 基于体系结构的软件开发,7.3 体系结构的设计与演化,演化开发阶段,(5)产生演化后的体系结构。在原来系统上所做的所有修改必须集成到原来的体系结构中。(6)迭代:如果在第(5)步得到的体系结构还不够详细,不能实现变更的需求,可以将(3)-(5)步再迭代一次。(7)对以上步骤进行确认,进行阶段性技术评审。(8)对所做的标记进行处理。重新开发新线索中的所有构件,对已有构件按照标记的要求进行修改、删除或更换。,77,第七章 基于体系结构的软件开发,

40、7.4 基于体系结构的软件开发模型,ABSDM,基于体系结构的软件开发模型(ABSDM)将软件开发过程划分为体系结构需求、设计、文档化、复审、实现、演化等六个子过程。,78,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型,体系结构需求,体系结构的需求过程:需求获取;标识构件;需求评审。,79,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型,体系结构设计,体系结构的设计过程:提出软件体系结构模型;将已标识的构件映射到软件体系结构中;分析构件之间的相互作用;产生软件体系结构;设计评审。,80,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型

41、,体系结构文档化,在系统演化的每一个阶段,文档是系统设计与开发人员的通讯媒介,是为验证体系结构设计和提炼或修改这些设计(必要时)所执行预先分析的基础。体系结构文档化过程的主要输出结果是体系结构需求规格说明和测试体系结构需求的质量设计说明书这两个文档。生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约。,81,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型,体系结构复审,体系结构设计、文档化和复审是一个迭代过程。复审的目的是标识潜在的风险,及早发现体系结构设计中的缺陷和错误,包括体系结构能否满足需求、质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否

42、合理、文档表达是否明确、构件的设计是否满足功能与性能的要求等等。,82,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型,体系结构实现,即按照体系结构所描述的结构性设计策略,分割成规定的构件,对构件进行分析设计、实现、组装(按规定方式互相交互),并进行测试。,体系结构实现过程,83,第七章 基于体系结构的软件开发,7.4 基于体系结构的软件开发模型,体系结构演化,体系结构演化过程,84,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本概念,软件过程 软件过程(Software Process)是人们建立、维护和进化软件产品整个过程中所有技术活动和管理活动的

43、集合。随着软件系统越来越大,越来越复杂,软件设计的核心已经转移到一个新的计算模式,而远非传统的“程序=算法+数据结构”这个新的模式就是系统总体结构的设计和规范。,85,7.5 应用开发实例,SIMIS,86,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本概念,软件过程技术的研究方向(1)软件过程分析和建模:对于保证过程定义的质量、建立全面和灵活的过程体系具有重要作用。主要使用过程建模语言(process modeling language,PML),最基本的功能是描述和定义过程,建立过程模型。(2)软件过程支持:主要研究和开发支持软件过程活动的CASE工具,来支持、管理并

44、规范化软件过程。主要包括软件过程流程工具、过程文档工具、评审工具和人员管理工具。(3)软件过程评估和改进:CMM、CMMI。,87,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本概念,Petri网最早由原西德的C.A.Petri博士于1962年提出,是一种用于系统描述和分析的数学工具。被广泛地应用于许多研究领域,如协议工程、柔性制造系统、业务处理等。,88,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本概念,使用Petri网来描述业务过程的主要原因(1)形式化的语义:Petri网具有严密的数学基础,为形式化描述和语法建立奠定了基础。每个Petri网都

45、有形式化的语义定义,一个Petri网模型加上相应的语义就能够描述一个业务过程。(2)直观的图形表示:Petri网是一种图形化的描述语言,比较容易理解。(3)丰富的分析技术:如系统活性、有界性、安全性计算。(4)基于状态的表示方式:软件工程领域的图形表示方法一般是基于事件的表示。Petri网基于状态的描述能清晰地区分一个任务是处于授权状态,还是处于执行状态。,89,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,通常在Petri 网的图形表示中,用圆圈()表示位置,矩形()表示变迁,箭头(-)表示弧,小黑点()表示标记。位置用于描述可能的系统局部状态(条件或状况)

46、;变迁用于描述改变系统状态的事件;弧使用两种方法规定局部状态和事件之间的关系:它们引述事件能够发生的局部状态;由事件所引发的局部状态的转换。标记包含在位置中,它们在位置中的动态变化表示系统的不同状态。,90,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,如果一个位置描述一个条件,当一个标记在这个位置中时,条件为真;否则,为假。一个Petri网模型的动态行为是由其实施规则规定的。如果一个变迁的所有输入位置至少包含一个标记,那么这个变迁可能实施。,91,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,在软件过程的定义中,主要有顺序、

47、与汇合、或汇合、与分支、或分支和迭代等六种基本结构。,92,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,顺序:过程1、过程2 和过程3顺序执行。,93,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,与汇合:表示该连接件左边的所有事件都完成后,右边的事件才可以发生。,94,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,或汇合:表示该连接件左边的任一事件完成后,右边的事件就可以发生。,95,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,与分支:表示该连接件左边的

48、过程完成后,右边的过程均满足启动条件,即表示并行过程。,96,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,或分支:表示该连接件左边的过程完成后,右边的过程只有一个过程可以启动,在图中,过程2 或过程3 在过程1 之后发生,即表示在过程2,3 之中选择一个进行.位置p2 表示t2 和t3 的前条件,但是,t1 完成后t2 和t3 只有一个可以进行.即过程2 和过程3 竞争运行。此时要求在t1 的定义中要给出选择的标准。,97,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基本结构的表示,迭代:表示该连接件右边的过程完成后,又回到其左边的过程,

49、其相应的Petri 网表示如图所示.在图中,过程3 在过程2 之后发生,但当过程3 完成后,又回到过程2,从而形成一个迭代过程。,98,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基于体系结构的软件过程Petri网,本节提出了一个基于体系结构的软件过程Petri 网模型,该模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化和退役等七个子过程,其软件过程Petri网如图所示。,99,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基于体系结构的软件过程Petri网,体系结构需求子网:需求是指用户对目标软件系统在功能、行为、性能、

50、设计约束等方面的期望,需求过程主要是获取用户需求,标识系统中所要用到的构件.体系结构需求过程子网如图所示。,100,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基于体系结构的软件过程Petri网,体系结构设计子网:体系结构设计是一个迭代过程,如果要开发的系统能够从已有的系统中导出大部分,则可以使用已有系统的设计过程。软件体系结构设计过程子网如图所示。,101,第七章 基于体系结构的软件开发,7.6 基于体系结构的软件过程,基于体系结构的软件过程Petri网,体系结构实现子网:实现就是要用实体来显示出一个软件体系结构,即要符合体系结构所描述的结构性设计决策,分割成规定的构件,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号