版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程软件工程第8章进行体系结构设计第8章进行体系结构设计主要内容软件体系结构数据设计体系结构风格和模式体系结构设计评估可选的体系结构设计映射数据流到软件体系结构小结主要内容软件体系结构进行体系结构设计体系结构设计描述了建立计算机系统所需的数据结构和程序构件。它需要考虑系统采取的体系结构风格,系统组成构件的结构、性质,以及所有体系结构构件之间的相互关系。进行体系结构设计体系结构设计描述了建立计算机系统所需的数据结进行体系结构设计尽管软件工程师能够设计数据和体系结构,但是在建造大型复杂系统的时候,数据和体系结构的设计往往由专家来完成。数据库或者数据仓库设计者为系统创建数据体系结构。”系统体系结构设计师“为系统工程和软件需求分析中导出的需求选择合适的体系结构风格。进行体系结构设计尽管软件工程师能够设计数据和体系结构,但是在进行体系结构设计人们不能在没有图纸的情况下建房子,同样也不能通过勾画出房子的管道布局而开始绘制房屋的蓝图。在开始考虑细节之前,需要关注整体视图——房子本身。这就是体系结构设计需要做的事情——它为你提供整体的视图并保证得到正确的理解。进行体系结构设计人们不能在没有图纸的情况下建房子,同样也不进行体系结构设计体系结构设计始于数据设计,然后导出系统体系结构的一个或者多个表示。对可选的体系结构风格或模式进行分析,以导出最适合于客户需求和质量属性的结构。一旦选定,使用体系结构设计方法对体系结构进行精化。在体系结构设计过程中,将创建一个包括数据架构和程序结构的体系结构模型。此外,还需描述构件的性质以及交互关系。进行体系结构设计体系结构设计始于数据设计,然后导出系统体系结进行体系结构设计设计通常被描述为一个多步过程,其主要任务是从需求信息中综合出数据的表示、程序结构、接口特征和过程细节。设计是由信息驱动的。软件设计方法都是通过仔细考虑分析模型的三个域而得到的。因此,信息、功能和行为三个域是创建软件设计的指南。体系结构设计是构建软件的初始蓝图。进行体系结构设计设计通常被描述为一个多步过程,其主要任务是从软件体系结构从第一个程序被划分成模块开始,软件系统就有了体系结构。同时,程序员已经开始负责模块间的交互和模块装配的全局属性。从历史的观点看,体系结构隐含了很多内容——实现的偶然事件或先前遗留系统。好的软件开发人员经常采用一个或者多个体系结构模式作为系统组织策略,但是他们只是非正式地使用这些模式,并且在最终系统中没有将这些模式清楚地体现出来。软件体系结构从第一个程序被划分成模块开始,软件系统就有了体系什么是体系结构一个程序和计算系统软件体系结构是指系统的一个或者多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。体系结构并非可运行软件。它是一种表达,使软件工程师能够:(1)分析设计在满足规定需求方面的有效性;(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案;(3)降低与软件构造相关联的风险。什么是体系结构一个程序和计算系统软件体系结构是指系统的一个或什么是体系结构在体系结构设计的环境中,软件构件可以简单到程序模块或者面向对象的类,也可以扩充到包含数据库和能够完成客户与服务器网络配置的“中间件”。本教材中,软件体系结构的设计考虑了设计金字塔中的两个层次——数据设计和体系结构设计。数据设计使我们表示出传统系统中体系结构的数据构件和面向对象系统中类的定义,体系结构设计则主要关注软件构件的结构、属性和交互作用。什么是体系结构在体系结构设计的环境中,软件构件可以简单到程序为什么体系结构如此重要[BAS03]给出了软件体系结构之所以重要的三个关键原因:软件体系结构的表示有助于对计算机系统开发感兴趣的各方开展交流。体系结构突出了早期设计决策,这些决策对随后的所有软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有重要作用。体系结构“构建了一个相对小的,易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”。体系结构设计模型和包含在其中的体系结构模式都是可以传递的,即体系结构的风格和模式可以被应用于其他系统的设计中,并且表示了一组使软件工程师能以可预见的方式描述体系结构的抽象。为什么体系结构如此重要[BAS03]给出了软件体系结构之所以数据设计数据设计是把在分析模型中定义的数据对象转化成软件构件级的数据结构,并且在必要时转化为应用程序级的数据库体系结构。在某些情况下,必须为一个新系统专门设计和建立数据库。数据设计数据设计是把在分析模型中定义的数据对象转化成软件构件体系结构级的数据设计当今,大大小小的业务均充斥着数据,甚至一个中型规模企业拥有为多个应用系统提供服务的几十个数据库。问题在于如何从这样庞大的数据环境中提取有用的信息,特别当需要的信息是功能交叉时。IT界开发出了数据挖掘技术,也称为数据库中的知识发现,该技术遍历现有的数据库以试图抽取出合适的业务级信息。另一种可选的解决方案称为数据仓库,它是一个独立的数据环境,但包含了某业务使用的所有数据。体系结构级的数据设计当今,大大小小的业务均充斥着数据,甚至一构件级的数据设计构件级的数据设计关注于那些被一个或者多个软件构件直接访问的数据结构的表示。[WAS80]提出了以下数据规格说明原则:1.应用于功能和行为的系统分析原则也可应用于数据。同样应该开发和评审数据流和数据内容的表示,标识数据对象,还应该考虑其他可选的数据组织结构,评估数据模型对软件设计的影响。2.标识所有数据结构及其完成的操作。设计一个高效的数据结构,必须考虑其上的操作。把属性和操作封装在一个类中满足这个原则。构件级的数据设计构件级的数据设计关注于那些被一个或者多个软件构件级的数据设计3.应该建立定义数据对象内容的机制,并且用于定义数据及其操作。类图定义包含在类中的数据项和应用到这些数据项上的方法。4.低层的数据设计决策应该延迟到设计过程的后期。数据设计可以采用逐步求精的过程,所有的数据组织可以在需求分析阶段定义,在数据设计工作中精化,在构件级设计阶段刻画细节。构件级的数据设计3.应该建立定义数据对象内容的机制,并且用于构件级的数据设计5.只有那些直接使用数据结构内部数据的模块才能够看到该数据结构的表示。信息隐蔽概念以及相关的耦合概念为软件设计质量的评估提供了依据。6.应该开发一个由有用的数据结构及其操作组成的库。类库即可实现这个目标。7.软件设计和程序设计语言应该支持抽象数据类型的规格说明和实现。如果没有办法对所选用于实现的编程语言中的结构进行直接说明,那么复杂数据结构的实现将变得非常困难。构件级的数据设计5.只有那些直接使用数据结构内部数据的模块才体系结构风格和模式建筑师使用体系结构(建筑风格)作为描述机制,将该房子和其他风格的房子区分开来。但更重要的是,体系结构风格也是建筑的样板。必须进一步规定房子的细节,具体说明它的最终尺寸,进一步给出定制的特征,确定建筑材料等。实际上是建筑风格指导了建筑师的工作。体系结构风格和模式建筑师使用体系结构(建筑风格)作为描述机制体系结构风格和模式为计算机系统建造的软件也展示了众多体系结构风格中的一种。每种风格描述一种系统类别,包括:(1)一组构件完成系统需要的某种功能;(2)一组连接器,它们能使构件间实现“通信、合作和协调”;(3)约束,定义构件如何集成为一个系统;(4)语义模型,它能使设计者通过分析系统的构成成分的性质来理解系统的整体性质。体系结构风格和模式为计算机系统建造的软件也展示了众多体系结构体系结构风格和模式一种体系结构风格就是一种在整个系统设计上面的变换。它的目的就是为系统的所有构件建立一个结构。在对已有体系结构进行再工程时,强制采用一种体系结构风格会导致软件结构的根本性改变,包括对构件功能的再分配。体系结构风格和模式一种体系结构风格就是一种在整个系统设计上面体系结构风格和模式体系结构模式也对体系结构的设计施加一种变换。然而,体系结构模式与体系结构风格在许多基本方面存在不同:(1)体系结构模式涉及的范围要小一些,它更多集中在体系结构的某一局部而不是体系结构的整体;(2)模式在体系结构上施加规则,描述了软件是如何在基础设施层次上处理某些功能性方面的问题;(3)体系结构模式倾向于在系统结构的环境中处理特定的行为问题。模式可以与体系结构风格结合起来,用于建立整个系统结构的外形。体系结构风格和模式体系结构模式也对体系结构的设计施加一种变换体系结构风格的简单分类以数据为中心的体系结构。数据存储驻留在这种体系结构的中心,其他构件会经常访问数据存储,并对存储中的数据进行更新、增加、删除或者修改。图8-1描述了一个典型的以数据为中心的体系结构风格。在某些情况下存储库是被动的,即客户软件独立于数据的任何变化或其他客户软件的动作而访问数据。该方法的一个变种是将中心存储库变换成“黑板”,当用户感兴趣的数据发生变化时,它将通知客户软件。体系结构风格的简单分类以数据为中心的体系结构。数据存储驻留在体系结构风格的简单分类图8-1以数据为中心的体系结构体系结构风格的简单分类图8-1以数据为中心的体系结构体系结构风格的简单分类以数据为中心的体系结构提升了可集成性,即现有的构件可以被修改而且新的客户构件可以加入到系统结构之中,而无需考虑其他的客户。另外,数据可以在客户间通过“黑板”机制传送,客户构件独立地执行过程。体系结构风格的简单分类以数据为中心的体系结构提升了可集成性,体系结构风格的简单分类数据流体系结构。当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。管道和过滤器结构(如图8-2)拥有一组被称为过滤器的构件,这些构件通过管道连接,管道将数据从一个构件传送到下一个构件。每个过滤器独立于其上游和下游的构件而工作,过滤器的设计要针对某种形式的数据输入,并且产生某种特定形式的数据输出。然而,过滤器没有必要了解与之相邻的过滤器的工作。如果数据流退化成单线的变换,则称为批序列。这种结构接收一批数据,然后应用一系列连续的构件(过滤器)变换它。体系结构风格的简单分类数据流体系结构。当输入数据经过一系列的体系结构风格的简单分类图8-2数据流体系结构体系结构风格的简单分类图8-2数据流体系结构体系结构风格的简单分类调用和返回体系结构。该体系结构风格能够让软件设计师设计出一个相对易于修改和扩展的程序结构。存在两种子风格:主程序/子程序体系结构。这种传统的程序结构将功能分解为一个控制层次,其中“主”程序调用一组程序构件,这些程序构件又去调用别的程序构件。图8-3描述了该种系统结构。远程过程调用体系结构。主程序/子程序体系结构的构件分布在网络的多个计算机上。面向对象体系结构。系统的构件封装了数据和必须应用到该数据上的操作,构件间通过信息传递进行通信与合作。体系结构风格的简单分类调用和返回体系结构。该体系结构风格能够体系结构风格的简单分类图8-3主程序/子程序体系结构体系结构风格的简单分类图8-3主程序/子程序体系结构体系结构风格的简单分类层次体系结构。层次体系结构的基本结构如图8-4所示。其中定义了一系列不同的层次,每个层次各自完成操作,这些操作不断接近机器的指令集。在最外层,构件完成用户界面的操作;在最内层,构件完成与操作系统的连接;中间层提供各种实用程序服务和应用软件功能。这些体系结构风格仅仅是软件设计师可用风格中的一小部分。一旦需求工程提示了待构建系统的特征和约束,就可以选择最适合这些特征和约束的体系结构风格或者风格的组合。在很多情况下,会有多种风格是适合的,需要对可选的体系结构风格进行设计和评估。体系结构风格的简单分类层次体系结构。层次体系结构的基本结构如体系结构风格的简单分类图8-4层次体系结构体系结构风格的简单分类图8-4层次体系结构体系结构模式如果建筑工人决定建构一个“殖民式中厅”,那么只能应用一种体系结构风格。风格的细节内容是可以酌情变动的,但是一旦确定了房子的整体体系结构,这个风格就会影响设计。体系结构的模式有所不同。例如,房子采用一种Kitchen模式,这种Kitchen模式规定了厨房基本用具的放置、水池、橱柜等要求,如果可能的话,也规定了房间中与完成做饭流程相关的这些厨具的布置规则。另外,该模式还可能指明柜台面、灯、墙上的插座、中心岛、地板等要求。显然对厨房有不止一种的设计,但是每种设计都应该在Kitchen模式提供的解决方案环境下来构思完成。体系结构模式如果建筑工人决定建构一个“殖民式中厅”,那么只能体系结构模式软件的体系结构模式定义了处理系统某些行为特征的方法。[BOS00]定义了一系列的体系结构模式域:并发性:很多应用系统必须以一种模拟并行的方式来操作多个任务。在一个应用系统中有很多不同的方法处理并发性,而且每种方法都可以由不同的体系结构模式来呈现。例如,一种方法是使用“操作系统进程管理”模式,该模式提供了一些内置的操作系统特征,这些特征允许构件并发执行。这个模式同时还结合了操作系统中那些管理进程通信、调度的功能以及其他完成并发所需要的功能。还有一种方法是在应用层上定义一个任务调度器。“任务调度器”模式包括一组含有tick()操作的活动对象。调度器定期唤醒每个对象的tick()操作,该操作在控制权返回调度器之前完成它负责的功能,接着调度器唤醒下一个并发对象的tick()操作。体系结构模式软件的体系结构模式定义了处理系统某些行为特征的方体系结构模式持久性:如果数据从创建它的进程执行以来一直存在,则该数据是持久性存在的数据。持久数据被存储在数据库中或者文件里,并且可以在稍后的时间里被其他进程读取和修改。在面向对象的环境中,持久对象的概念对持久性概念做了一些扩展,所有对象属性的值、对象的状态以及其他的附加信息都被存储起来,以备今后的存取和使用。一般说来,可以采用两种体系结构模式获得持久性:一个是数据库管理系统模式,该模式将DBMS的存储和存取能力用于应用系统的体系结构中;另一个是应用级的持久模式,此种模式在应用体系结构中建立了持久性特征。体系结构模式持久性:如果数据从创建它的进程执行以来一直存在,体系结构模式分布性:分布性问题强调系统或系统中构件在一个分布的环境中相互通信的方式。分布性问题有两个元素:(1)实体间连接方式;(2)实体间通信的特性。解决分布性问题最普遍的体系结构模式是代理模式。代理在客户端构件和服务器构件之间充当“中间人”。客户端向代理发出一条信息(包含所有使通信有效的信息),代理完成(与服务器的)连接。在选择一种体系结构模式之前,必须评估其对于应用和整个体系结构风格的适应性,即它的可维护性、可靠性、安全性和性能。体系结构模式分布性:分布性问题强调系统或系统中构件在一个分布组织和求精设计过程经常给软件工程师留下一系列可供选择的体系结构,建立一组用于评估所导出的体系结构设计的设计标准是非常重要的。[BAS98]提出的下面问题有助于对导出的体系结构风格提供深层次的考察。组织和求精设计过程经常给软件工程师留下一系列可供选择的体系结组织和求精控制:在体系结构中如何管理控制?是否存在一个不同的控制层次?如果是,构件在控制层次中担当什么角色?构件如何在系统中传递控制?构件间如何共享控制?控制拓扑结构(即控制呈现的几何形状)是什么样?控制是否同步或构件是否异步操作?组织和求精控制:在体系结构中如何管理控制?是否存在一个不同的组织和求精数据:构件间如何进行数据通信?数据流是否是连接的,或数据对象是否是零散地传递给系统?数据传递的模式是什么(即,数据是从一个构件传递到另一个构件,还是系统中构件可以全局共享数据)?是否存在数据构件(如黑板或中心存储库)?如果存在,它们的角色是什么?功能构件如何和数据构件交互?数据构件是被动的还是主动的(即数据构件是否主动地和系统中其他构件交互)?数据和控制如何在系统中交互?组织和求精数据:构件间如何进行数据通信?数据流是否是连接的,体系结构设计在体系结构设计开始的时候,软件必须放在所处环境进行开发,即,设计应该定义与软件交互的外部实体(其他系统、设备、人)和交互的特性。一般在分析模型阶段可以获得这些信息,而所有其他的信息都是在需求工程阶段获得的。一旦建立了软件的环境模型,并且描述出所有的外部软件接口,那么设计师就可以通过定义和求精实现体系结构的构件来描述系统的结构。这个过程不停地迭代,直到获得一个完善的体系结构。体系结构设计在体系结构设计开始的时候,软件必须放在所处环境进系统的环境表示系统环境图通过描述系统的出入信息流、用户界面和相关的支持处理等来实现对环境的建模。在体系结构设计层,软件架构师用体系结构环境图对软件与外部实体交互方式进行建模。图8-5给出了体系结构环境图的通用结构。系统的环境表示系统环境图通过描述系统的出入信息流、用户界面和系统的环境表示图8-5体系结构环境图系统的环境表示图8-5体系结构环境图系统的环境表示与目标系统交互的系统可以表示为:上级系统:这些系统把目标系统作为某些高层处理方案的一部分。下级系统:这些系统被目标系统使用,并为了完成目标系统的功能提供必要的数据和处理。同级系统:这些系统在对等的基础上相互作用。参与者:是指那些通过产生和消耗必不可少的处理所需的信息,实现与目标系统交互的实体(人、设备)。每个外部实体都通过某一接口(带阴影的小矩形)与目标系统进行通信。系统的环境表示与目标系统交互的系统可以表示为:SAFEHOME实例[32]9-69-6SAFEHOME实例[32]9-69-6SAFEHOME实例[33]图8-6SafeHome安全功能的体系结构环境图SAFEHOME实例[33]图8-6SafeHome安全功定义原始模型原始模型是一个类或者一个模式,描述了一个目标系统体系结构设计的核心抽象。一般来讲,只需要设计相对较小的原始模型集合,即使系统相对比较复杂。目标系统的体系结构由这些原始模型组成,这些原始模型表示体系结构中稳定的元素,但是这些元素基于系统行为可用多种方式加以说明。定义原始模型原始模型是一个类或者一个模式,描述了一个目标系统SAFEHOME实例[34]SAFEHOME实例[34]SAFEHOME实例[35]图8-7SafeHome安全功能原始模型的UML关系图SAFEHOME实例[35]图8-7SafeHome安全功将体系结构精化为构件当软件体系结构精化为构件时,系统的结构开始显现。但是,如何选择这些构件呢?体系结构设计师先从分析模型中所描述的类开始。这些分析类表示那些软件体系结构中必定涉及的应用(业务)领域内的实体。因此,应用领域是导出和精化构件的一个源泉。另一源泉是基础设施域。体系结构必须容纳很多基础设施构件使应用构件能够运作,但是这些基础设施构件与应用领域没有业务联系,例如,内存管理构件、通信构件、数据库构件和任务管理构件往往归并到软件体系结构中。将体系结构精化为构件当软件体系结构精化为构件时,系统的结构开将体系结构精化为构件体系结构环境图中描述的接口隐含着一个或者多个特定的构件,这些构件处理穿过接口的数据。在某些情况下,需要设计一个完整的包含众多构件的子系统体系结构。将体系结构精化为构件体系结构环境图中描述的接口隐含着一个或者SAFEHOME实例[36]SAFEHOME实例[36]SAFEHOME实例[37]图8-8带有高层构件的SafeHome整体体系结构SAFEHOME实例[37]图8-8带有高层构件的Safe描述系统实例至此所建立起来的体系结构设计依然处于比较高的层次。系统的环境已经表示出来了,预示问题域中重要抽象的原始模型也被定义出来,系统的整个结构已经显现出来,并且主要的软件构件也都定义出来了,然而,更进一步的精化仍然是必要的。为了完成体系结构设计,要开发一个体系结构的实际实例,用意是将体系结构应用到一个特定的问题上,目的是证明结构和构件都是合理的。描述系统实例至此所建立起来的体系结构设计依然处于比较高的层次SAFEHOME实例[38]SAFEHOME实例[38]评估可选的体系结构设计设计会导致多种可供选择的候选体系结构,其中每一种候选体系结构都需要评估,以确定哪种体系结构最适合要解决的问题。评估可选的体系结构设计设计会导致多种可供选择的候选体系结构,体系结构权衡分析方法SEI开发了一种体系结构权衡分析方法,该方法建立了一个迭代的软件体系结构评估过程。1、收集场景。2、诱导需求、约束和环境描述。3、描述那些已经被选用于解决场景和需求的体系结构风格/模式。4、通过孤立地考虑每个属性来评估质量属性。5、针对特定的体系结构风格,弄清质量属性对各种体系结构属性的敏感性。6、使用在第5步中进行的敏感性分析鉴定候选体系结构。这6个步骤描述了第一次ATAM迭代。基于第5步和第6步的结果,某些候选体系结构可能被删除,剩余的一个或多个体系结构可能被修改和进一步细化,然后,ATAM步骤被再次应用。体系结构权衡分析方法SEI开发了一种体系结构权衡分析方法,该体系结构复杂性对体系结构的整体复杂性进行评估,一种很有用的技术是考虑体系结构中构件间的依赖关系,这些依赖关系是由系统中的信息/控制流驱动的。[ZHA98]建议了三种类型的依赖:共享依赖表示在使用相同资源的消费者间或为相同消费者生产的生产者之间的依赖关系。流依赖表示资源的生产者和消费者间的依赖关系。约束依赖表示在一组活动间相关控制流上的约束。体系结构复杂性对体系结构的整体复杂性进行评估,一种很有用的技体系结构描述语言体系结构描述语言ADL为描述软件体系结构提供一套语义和语法。[HOF01]建议ADL应该使得设计者具有分解体系结构构件、将单独构件组合成大的体系结构块,以及描述构件之间的接口的能力。一旦体系结构设计使用的描述的、基于语言的技术被建立起来,那么很有可能随着设计的进化而建立起体系结构的有效评估方法。体系结构描述语言体系结构描述语言ADL为描述软件体系结构提供映射数据流到软件体系结构体系结构风格描述了本质上不同的体系结构,因此,并不存在一种能够实现从分析模型到各种体系风格转换的全面映射。为了描述体系结构映射的方法,考虑“调用和返回”体系结构的映射技术——这种体系结构是非常常见的结构。这种映射技术使得设计者能够从分析模型的数据流图中导出相当复杂的“调用和返回”体系结构,这种技术也称为结构化设计。结构化设计经常被刻画为面向数据流的设计方法,它提供了方便的从数据流图到软件体系结构的变换。信息流的类型决定了映射方法。映射数据流到软件体系结构体系结构风格描述了本质上不同的体系结DFD的两种类型为了实现从DFD到体系结构的映射(需求模型设计模型),需要仔细区分DFD中数据流的性质,并分别学习相应的映射方法。DFD的两种类型为了实现从DFD到体系结构的映射(需求模型变换型结构(变换流)变换型结构(变换流)变换型结构(变换流)变换型结构(变换流)事务型结构(事务流)事务型结构(事务流)事务型结构(事务流)事务型结构(事务流)变换映射变换映射是一组设计步骤,可以将具有变换流特征的DFD映射为某个特定的体系结构风格。变换映射变换映射是一组设计步骤,可以将具有变换流特征的DFD步骤1:评审基本系统模型基本系统模型或者环境图把安全功能描述为一个单一的变换,描述了流入和流出安全功能的数据的生产者和消费者。图8-11刻画了一个0层模型,图8-12描述了初步精化后的安全功能数据流。步骤1:评审基本系统模型基本系统模型或者环境图把安全功能描述SAFEHOME实例[39]图8-11SafeHome的环境级DFDSAFEHOME实例[39]图8-11SafeHome的环SAFEHOME实例[40]图8-12SafeHome安全功能的第一层DFDSAFEHOME实例[40]图8-12SafeHome安全步骤2:评审和精化软件的数据流图对从分析模型获得的信息进行精化,以获得更多的细节。例如,检查第2层监控传感器的DFD(如图8-13),并导出第3层数据流图(如图8-14)。在第3层,数据流图中的每个变换都展示了高内聚性,即变换所包含的过程完成单一的、清楚的功能,该功能可被实现为SafeHome软件中的一个构件。图8-14中的DFD包含了设计监控传感器子系统体系结构所需的细节信息,不需要再进一步精化。步骤2:评审和精化软件的数据流图对从分析模型获得的信息进行精SAFEHOME实例[41]图8-13精化“监控传感器”变换的第2层DFDSAFEHOME实例[41]图8-13精化“监控传感器”变SAFEHOME实例[42]图8-14具有流边界的监控传感器的第3层DFDSAFEHOME实例[42]图8-14具有流边界的监控传感步骤3:确定DFD是否含有变换流或事务流特征通过评估DFD(图8-14),可以看出,数据通过一条输入路径进入软件,沿三条输出路径流出,没有明显的事务中心。信息流将呈现出一个从头到尾的变换特征。步骤3:确定DFD是否含有变换流或事务流特征通过评估DFD(步骤4:通过确定输入和输出流的边界,分离出变换中心输入流被描述为信息从外部形式变换为内部形式的路径,而输出流是信息从内部形式变换为外部形式的路径。不同的设计人员在选择流边界时可能不尽相同。事实上,不同的流边界选择会导致不同的设计方案。尽管在选择流边界时要加以注意,但沿流路径若有一个泡泡的差异对最终程序结构的影响并不会太大。步骤4:通过确定输入和输出流的边界,分离出变换中心输入流被描步骤5:完成“第一级分解”使用这个映射导出的程序体系结构导致了自顶向下的控制分布。分解的作用是得到一个程序结构,其中顶层模块做决策;低层模块完成大多数输入、计算和输出工作;中层模块既完成一部分控制,又完成适量的工作。当遇到变换流时,DFD将被映射成一个能为信息的输入、变换和输出处理提供控制的特定结构。图8-15给出了对监控传感器子系统进行第一级分解的结果,主控制器(图中称为监控传感器输入控制器)位于程序结构的顶端,负责协调从属控制功能。步骤5:完成“第一级分解”使用这个映射导出的程序体系结构导致SAFEHOME实例[43]图8-15监控传感器的第一级分解SAFEHOME实例[43]图8-15监控传感器的第一级分步骤5:完成“第一级分解”输入信息处理控制器负责协调所有输入数据的接收。变换流控制器负责管理内部形式的数据上的所有操作。输出流信息处理控制器负责管理输出信息的产生。虽然图8-15蕴涵了三叉结构,但是,大型系统的复杂数据流图可能会要求为上述每个类属控制功能提供两个或多个模块。第一层模块的数量应限定在既能完成控制功能又能维持良好的独立特征所要求的最少模块数。步骤5:完成“第一级分解”输入信息处理控制器负责协调所有输入步骤6:完成“第二级分解”第二级分解是将DFD中的每个变换映射到程序结构中的相应模块。从变换中心的边界开始,沿输入路径和输出路径向外,将变换依次映射到软件结构的从属层。图8-16描述了第二级分解的一般方法。步骤6:完成“第二级分解”第二级分解是将DFD中的每个变换映SAFEHOME实例[44]图8-16监控传感器的第二级分解SAFEHOME实例[44]图8-16监控传感器的第二级分步骤6:完成“第二级分解”虽然图8-16描述了DFD变换和软件模块间的一对一映射,但其他的映射方式也经常采用。两个甚至三个变换可以合并在一起表示为一个构件,或者一个单独的变换也可以扩展成两个或者多个构件。现实考虑和设计质量的权衡决定着第二级分解的输出结果。评审和精化可能会导致这个结构的改变,但这个结构仍然应作为第一次迭代设计。步骤6:完成“第二级分解”虽然图8-16描述了DFD变换和软步骤6:完成“第二级分解”对于输入流的第二级分解遵循同样的方式,从输入流一侧的变换中心边界开始向外移动。变换中心映射略有不同,DFD变换部分的每个代表数据转换或计算的变换都被映射为变换控制器的从属模块。图8-17给出了一个完整的第一次迭代的体系结构。按以上方法映射出来的构件描述了软件体系结构的一个初始设计。虽然构件的名字已经可以体现其功能,但我们仍然需要为每个构件提供简要的处理叙述。步骤6:完成“第二级分解”对于输入流的第二级分解遵循同样的方SAFEHOME实例[45]图8-17监控传感器第一次迭代后的结构SAFEHOME实例[45]图8-17监控传感器第一次迭代步骤7:使用提高软件质量的设计启发式方法,精化第一次迭代得到的体系结构应用功能独立性概念,能够精化第一次迭代得到的体系结构。对构件进行外爆或内爆,可以得到合理的分解、好的内聚性、低的耦合性,最重要的是获得易于实现、可系统性测试和易于维护的程序结构。求精是在前述的分析和评估方法以及现实考虑和常识等指导之下进行的。例如,有时输入数据流的控制器完全没有必要,有时需要在一个从属于变换控制器的构件中完成输入处理,有时全局数据的存在使得高耦合性不可能避免,有时不能达到优化结构特征,软件需求加人工判断是最终依据。步骤7:使用提高软件质量的设计启发式方法,精化第一次迭代得到SAFEHOME实例[46]图8-18监控传感器精化后的程序结构SAFEHOME实例[46]图8-18监控传感器精化后的程事务映射在许多软件应用中,单独的数据项会触发多条信息流中的一条,这些数据流将实现该数据项隐含的功能。这个数据项被称为事务。考虑SafeHome安全功能的用户交互子系统。该子系统的第1层数据流如图8-12所示。对此图数据流进行精化,得到第2层数据流图,如图8-19所示。数据对象“用户命令”流入系统,沿三条动作路径之一产生其他信息流,单个数据项“命令类型”引发数据流从中心向外扇出,因此,整个数据流的特征是面向事务的。值得注意的是,沿着三个动作路径中的两条路径上的信息流可以满足额外的输入流。每个动作路径都流入单个变换“显示消息和状态”。事务映射的设计步骤与变换映射的步骤相类似,甚至在某些情况下是相同的。主要区别在于DFD到软件体系结构的映射。事务映射在许多软件应用中,单独的数据项会触发多条信息流中的一SAFEHOME实例[47]图8-19用户交互子系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 9 What's your hobby 说课稿(说课稿)-2024-2025学年湘少版(三起)英语五年级上册
- Unit 3 What Would you like(说课稿)-2024-2025学年人教PEP版英语五年级上册
- 2023九年级数学上册 第六章 反比例函数1 反比例函数说课稿 (新版)北师大版
- 10《爬山虎的脚》说课稿-2024-2025学年语文四年级上册统编版
- 2023三年级英语下册 Unit 2 Animals at the Zoo Lesson 8 Tigers and Bears说课稿 冀教版(三起)
- 2025民间个人借款合同书范文
- 2024-2025学年高一历史第13周 6.2卓尔不群的雅典说课稿
- 2025常年法律顾问合同
- 19《一只窝囊的大老虎》第二课时(说课稿)-2024-2025学年统编版语文四年级上册001
- 2025独家经销合同范本
- GMS要素-持续改进(CI)-上汽通用五菱-课件
- 《插画设计》课程标准
- 九九乘法口诀表(超清晰打印版)
- 高考作文答题卡(作文)
- 在乡村治理中深化推广运用清单制、积分制、一张图工作方案
- GB/T 3921-2008纺织品色牢度试验耐皂洗色牢度
- 营养学基础知识-课件
- 梅毒的诊断与治疗课件
- 工程伦理第二讲工程中的风险、安全与责任课件
- 高中数学《椭圆》方程典型例题20例(含标准答案)
- 中山大学孙逸仙纪念医院医用耗材试用登记表【模板】
评论
0/150
提交评论