第5章 软件体系结构设计ppt课件.ppt
第五章 软件体系结构设计,5.1 软件体系结构,在软件编码之前,进行软件的分析和设计,已成为软件行业的标准做法。 软件体系结构仅关注大型设计,为开发团队的设计者提供指导。软件体系结构的设计过程是一个具有多个步骤的过程,其主要任务是从信息需求中综合出数据结构、程序结构、接口特征和过程细节。,软件体系结构的三要素 程序构件(模块)的层次结构 构件之间交互的方式 数据的结构软件设计的一个目标是建立软件的体系结构表示。将这个表示当作一个框架,从事更详细的设计活动。,在软件体系结构设计中应保持的性质,结构 体系结构设计定义系统的构件、构件打包的方式和相互交互的方式附属的功能 体系结构设计描述设计出的体系结构如何实现功能、性能、可靠性、安全性、适应性,以及其它的系统需求。可复用 体系结构设计应描述为一种可复用的模式,能复用已有构造块,并可供以后类似系统族的设计使用。,5.1 软件体系结构,5.1.1 软件体系结构的概念体系结构:是高层的建模,它描述事物最重要的性质。M.Shaw:软件体系结构定义为程序/系统各构件的结构以及它们之间的内部关系和指导它们的设计并随时间而演变的原理和方针。,5.1 软件体系结构,M.Shaw的具体观点如下:第一,从结构模式观点上看,软件体系结构包括软件构件、构件之间的联系和系统构造、方式、约束、语义、分析、属性、基本原理和系统需求。,5.1 软件体系结构,第二,框架模式观点虽然与结构观点有相似点,但前者更加强调系统的整体连贯性,主要针对特定领域和问题,而不仅仅是研究系统的组成。第三,动态模型包括系统的总体配置的变化、建立/禁止预定义的通讯、互连通道和计算进程等。第四,进程模式观点强调软件体系结构中的构造过程中的步骤和进程,在这一观点下软件体系结构是一个进程描述的结果。,5.1 软件体系结构,软件体系结构是一个软件系统的基本组织,它体现在构件、构件间的相互关系以及构件与环境的关系中;它还包括指导系统设计和进化的原则。 软件体系结构并非是可执行的软件,它是一种设计表示,通过该表示使得软件体系结构师能够分析其所完成的设计是否满足软件需求,以减少软件构造过程中存在的风险。,5.1.2 为什么软件体系结构重要1)软件体系结构可以用于各风险承担者之间的沟通;2)软件体系结构设计突出了早期设计的选择,这些选择对随后的设计和实现工作乃至最终项目的成功影响深远;3)软件体系结构建立了一个相对较小、但易于理解和掌握的模型,该模型描述了系统如何构成,以及这些构件如何一起工作;4)软件体系结构设计结论是软件测试的基础与前提,在软件体系结构上考虑测试,其目的是找出体系结构设计的错误和缺陷,产生指导代码测试的测试计划和测试用例;5)软件体系结构对新的团队成员的培训是必不可少的,这可让新成员快速跟上开发进度;此外,软件体系结构的培训还对客户、管理者、测试者和操作员有用。,5.2数据体系结构设计,在软件应用中,数据体系结构对软件体系结构的设计有深远的影响,其具体表现在:1)在软件体系结构设计层,数据的结构设计是软件体系结构设计的一个重要方面;2)在构件设计层,数据结构及其操纵它们的相关算法的设计对创建高质量的应用是至关重要的;3)在应用层,数据模型到数据库的映射,是实现应用系统业务目标的关键;4)在业务层,存在于数据库或数据仓库中的数据是进行数据挖掘和知识发现的基础,该内容对业务系统的成功具有举足轻重的影响。,5.2数据体系结构设计,数据体系结构设计出现在高抽象层,构建表示数据或信息的模型。这一数据模型被逐步求精为特定的实现表示,该表示可以被应用系统处理。构件级的数据设计关注于被一个或多个软件构件直接访问的数据结构表示,在实际应用中,数据设计在分析模型的创建期间就已经开始。,5.3 软件体系结构风格,软件体系结构风格(style)又称软件体系结构习惯模式(idiomatic paradigm)。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束:词汇表中包含一些构件和连接器类型,而这组约束指出系统是如何将这些构件和连接器组合起来的。Define classes of software systems based on the form of the solution and which can be applied across problem domain.,5.3 软件体系结构风格,常见的软件体系结构风格涉及:设计词汇表是什么?或者构件和连接器的类型是什么?可容许的结构模式是什么?基本的计算模型是什么?风格的基本不变性是什么?其使用的常见例子是什么?使用此风格的优缺点是什么?其常见特例是什么?,5.3 软件体系结构风格,体系结构风格的四要素内容词汇表;配置规则;语义解释原则对基于这种风格的系统所进行的分析。,5.3 软件体系结构风格,对体系结构风格有三种不同的观点。第一种观点,体系结构风格是一种语言。第二种观点,体系结构风格是一种类型系统。第三种观点,体系结构风格是一种理论。,有原则地使用软件体系结构风格具有如下意义:它促进了设计的复用,使得一些经过实践证实的解决方案能够可靠地解决新问题。它能够带来显著的代码复用,使得体系结构风格中的不变部分可共享同一个解决方案。便于设计者之间的交流与理解。通过对标准风格的使用支持了互操作性,以便于相关工具的集成。在限定了设计空间的情况下,能够对相关风格作出分析。能够对特定的风格提供可视化支持。,与此同时,人们目前尚不能准确回答的问题是:系统设计的哪个要点可以用风格来描述;能否用系统的特性来比较不同的风格,如何确定用不同的风格设计系统之间的互操作;能否开发出通用的工具来扩展风格;如何为一个给定的问题选择恰当的体系结构风格,或者如何通过组合现有的若干风格来产生一个新的风格。,1. 管道与过滤器(Pipes and Filters),基本结构与词汇表在此软件体系结构中,每一模块都有一组输入和输出。每一模块从其输入端接收输入输入数据流,在经过其内部处理后,按标准的顺序,将结果数据流送到输出端,以达到传递一组完整计算结果的目的。在此,我们将处理模块称为过滤器,而各个模块之间的连接器称为管道。词汇表是构件=过滤器;连接器=管道,管道和过滤器体系架构模式把系统任务分成为几个独立的处理步骤。这些步骤采用通过系统的数据流连接。一个步骤的输出是下一个步骤的输入。每个处理步骤由一个过滤器组件实现,它处理或者转化数据,并且系统的输入可以是多种数据源.,这种结构有若干不变特征:1. 过滤器一定是独立的实体,即各个过滤器之间不能共享状态。2. 过滤器与其连接的上下游过滤器相互独立,即不知道,更不能假定,分别与其输入和输出相连接的其他过滤器的信息。它们的规格说明中只能涉及限制哪些数据可以出现在它的输入管道中和保证它将输出何种类型的计算结果,但它们不能识别在与它们相连的管道的另一边究竟是谁。如图5.1所示。,种类本类型的规格说明都包括管线、受约束的管道和有名管道三类。管线限制过滤器的拓扑结构只能是线性序列。受约束的管道限制在其上流通的数据量。有名管道要求在两个过滤器之间流通的数据经过严格地定义。,5.3 软件体系结构风格,优点它允许设计者将一个系统的整体输入/输出行为理解为各个独立过滤器行为的一个简单的合成。该体系结构支持重用。维护系统和增强功能容易。缺点容易导致批处理方式。在维护或者响应两个分离但相关的数据流时容易受阻。增加了分析与编码的工作量,增加了复杂性,降低了性能。,UNIX的command shell是这种结构,2数据抽象和面向对象组织(Data Abstraction and Object- Oriented Organization),(1)基本结构与词汇表在该结构中,数据表示和与之相连的最基本操作都被封装在一个抽象数据类型或者对象中。词汇表是构件=对象;连接器=方法调用(2)特征其特征包括两个方面是:对象负责维持其本身的完整性;信息隐藏。,(3)优点封装性。信息隐藏。抽象性。类特性。继承性等。(4)缺点由于对象之间的交互是通过明确的对象函数调用进行的,所以当一个对象需要实现一个特定功能的时候,必须知道哪一个对象提供这种服务,这就降低了系统的灵活性。管道和过滤器模型不需要明确指明数据的来源和去向。,3基于事件的隐式调用(Event-based Implicit Invocation)(1)基本结构与词汇表 该结构中的模块既提供一组过程,也提供一组事件。系统由可以发布事件的构件组成,另一些构件为注册接收这些发布的事件,这些构件将自己的过程同一事件相关。词汇表是构件=模块;连接器=事件与过程隐式调用(2)特征软件体系结构中的构件可以声明或者广播一个或者多个事件,而不是直接调用过程。系统中的其它成分可以通过将一个过程连接到一个事件来表达自己对该事件的兴趣。当该事件激发时会隐含地调用其它模块。,(3)优点支持软件复用。容易使系统升级。(4)缺点软件构件放弃了对计算的控制,而完全由系统完成。此外,在数据传输上关系复杂,系统总体功能和性能与资源管理成为一个关键性问题。,4分层系统(Layers),(1)基本结构与词汇表 该结构采用层次化的组织方法,每一层向其上层提供服务,并利用下层服务。下层信息可以被全部隐藏起来,只有外部层次和一部分精心选择的功能可以被外部所见。词汇表是构件=虚拟机;连接器=层次间协议,内核,基本工具,有用的系统,用户,软部件:实现在层次结构中的虚拟机,连接件:层次与层次之间交互的协议,层次化组织原则:每一层向其上层提供服务,并利用下层的服务。,5.3 软件体系结构风格,(2)特征层次结构虚拟机与层次间的协议。 (3)优点首先支持抽象程度递增的系统设计,使得设计者可以把一个复杂系统按递增的步骤分解开来。其次,功能的改变只会影响相邻的上下层。最后,这种结构可以支持重用。(4)缺点层次划分不容易,很难找到一个合适的正确的层次抽象方法。,5仓库系统及知识库(Repositories),(1)基本结构与词汇表 在该结构中,有两种不同的软件构件:一种表示当前状态的中心数据结构,另一种是一组相互独立的处理中心数据的构件。不同的仓库系统与外部构件有不同的交互方式。控制方式的选择决定了仓库系统的类型。仓库系统可以分为两类:数据库和黑板系统(Blackboard)。黑板系统有知识源、黑板数据结构和控制三个部分组成。词汇表是构件=中心数据仓库和在仓库上操作的独立构件的集合;连接器=通知路径,软件部件,表示当前状态的中心数据结构一组相互独立的处理中心数据的部件,部件交互方式,根据输入数据流的事务处理类型决定执行哪个处理过程,根据中心数据结构的当前状态触发进行执行,传统的数据库系统,黑板系统,黑板(共享数据),知识源,知识源,知识源,知识源,直接存取:知识源不断改变黑板的状态。,按照与应用程序相关的层次组织的问题求解数据,独立、分离的与应用程序相关的知识及其处理单元,黑板状态驱动控制:使用特定的知识。,5.3 软件体系结构风格,(2)特征存在一个共享中心数据区,为相关软件提供数据访问和存储服务。,6过程控制,(1)词汇表控制连续过程的软件体系结构要建立在过程控制模上,在该模型上:(1)计算元素是从控制策略中分离出来的令人感兴趣的过程。这些内容涉及:过程定义,即包括操纵某些过程变量的机构;控制算法,即决定如何操纵过程变量,涉及过程变量怎样反映真实状态的模型;过程变量包括输入变量、控制变量和操纵变量及其相关知识;设置点或控制变量的参考值;传感器;(2)控制循环模式是建立控制算法使用的关系。该模式收集有关过程的实际状态和要求达到这些状态的信息,调节过程变量以驱动实际状态向要求达到的状态前进。词汇表过程单元|控制单元。过程单元于控制单元之间的交互主要有两个:控制单元子进程单元提供连续指令,以改变操纵变量。,5.3 软件体系结构风格,(2)基本结构过程控制的基本结构是一种特定的数据流体系结构,与一般数据流体系结构是线性形式的形式不同,控制循环体系结构是一个带有环形反馈的数据流体系结构,其模式如图5.6所示:,7软件体系结构风格的实例研究,例1. 公共对象请求代理体系结构(CORBA)是由对象管理组织OMG制定的一个工业标准,其主要目标是提供一种机制使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。下面对CORBA结构风格的分析。,设计词汇表设计词汇表=构件=客户机系统/服务器系统/其它构件;连接件=请求/服务。其中客户机系统包括客户机应用程序、客户桩、上下文对象和接口仓库等构件,以及桩类型激发API和动态激发API等连接件。服务器系统包括服务器应用程序方法库,服务器框架和ORB等构件,以及对象适配器等连接器。CORBA 的体系结构模式(如图5.7所示),(3)基本计算模型特点在此体系结构中,客户机应用程序用桩类型激发API或者动态激发API向服务器发送请求。在服务器端接受方法调用请求,不进行参数引导,设置需要的上下文状态,激发服务器框架中的方法调度器,引导输出参数,并完成激发。服务器应用程序使用服务器端的服务部分,它包含了某个对象的一个或者多个实现,用于满足客户机对指定对象上的某个操作的请求。,(4)不变性很明显,客户机系统是独立于服务器系统,同理服务器系统也独立于客户机系统。(5)使用例子各种基于CORBA的应用系统,如基于CORBA的人力资源管理系统等。(6)优缺点优点:支持异构环境中的应用软件开发;支持分布对象和分布处理;因为具备了标准,故相对稳定,可支持软件重用;高度支持C/S互操作性。缺点:未能真正解决分布计算中固有的复杂性,具体为:存在迟滞和死锁问题;缺乏实时特性;缺乏性能优化;缺乏保护机制;缺乏支持大量数据传送的机制。,5.3 软件体系结构风格,例2. 基于Web的分布式体系结构风格分析如下:(1)设计词汇表设计词汇表=构件=表示层构件/功能层构件/数据库服务层构件,连接件=请求/应答协议其中表示层构件=客户机+浏览器;功能层构件=Web服务器+转换服务器;数据库服务层构件=数据库服务器。(2)基于Web的分布式体系结构模式(如图5.8所示),5.3 软件体系结构风格,基本计算模型特点 WWW浏览器客户通过Web服务器对数据库的访问,在Web服务器中专门设计了一个中间应用程序作为Web服务器访问数据库服务器的客户代理。这个中间程序实际上起着HTML文件访问与数据库访问两种不同应用的转换,所以也可以看成是一种应用网关,或者称应用程序网关程序。应用网关与Web服务器之间的通信接口称为公共网关接口CGI,它规定了一组标准参数格式和通信协议。应用网关程序可以用C,C+和SQL等语言编写,它与Web服务器的通信接口上遵循CGI标准,在与数据库通信接口上用SQL标准。这种应用网关程序常以CGI为文件次级名,并简称为CGI程序。,不变性表示层构件、功能层构件与数据库服务层构件之间相互独立。使用例子各种基于Web的分布式应用系统。如基于Web的信息查询系统等。优缺点优点:有开放的而非专用的标准;较低的应用开发及管理成本;对信息及应用系统的访问自由;较低的培训成本;重用和互操作支持。缺点:同例1。,例3. 领域专家系统体系结构从本质上看领域专家系统可以归类为管道-过滤器体系结构。领域专家系统体系结构的风格分析如下:(1)设计词汇表设计词汇表=构件=特定过滤器;连接件=特定管道,特定过滤器=推理机/知识库/解释器/事实库/相关工具;特定管道=知识流管道;相关工具=知识编辑器/人机界面/动态数据库/其它工具。(2)基本计算模型的特点(如图5.9所示),(3)不变性 过滤器是独立实体,它们不同其它过滤器共享状态;过滤器不知道其上下游过滤器的身份。(4)使用例子各种基于ES的应用系统。如基于STD智能检测的实时在线监测与故障诊断ES。(5)优缺点理解上简单,支持重用,易于维护,允许进行特定分析,天然支持并发。主要缺点是易于导致批处理结构。,良好的体系结构可以为软件开发和维护带来好处:1) 识别相似系统的通用结构模式,有助于理解系统高层之间的联系,使得新系统可以作为以前系统的变种来构造;2) 合适的体系结构是系统成功的关键,而不合适的体系结构可能带来灾难性的后果;3) 对软件体系结构的理解,可以帮助开发人员在不同的设计方案中做出理性的选择;4) 体系结构对于分析和描述复杂系统的高层属性通常是十分必要的;5) 各种体系结构风格的提炼、描述和普遍采用,便于软件开发人员在系统设计中互相交流;6) 在软件开发文档中清晰地记录系统体系结构,不仅可以显著地节省软件理解的工作量,而且便于在软件维护的全过程中保持系统的总体结构和特性不变。,基于体系结构的软件开发模式,提炼特定应用领域的稳定需求和易变需求,建立可复用的领域模型。,在特定领域模型的基础上提炼特定应用领域的软件体系结构。,进行体系结构设计,分配系统功能到相应的构建和连接件上,存放设计模式、对象或其它可重用的设计构件。,设计构件和连接件,复用/存储,5.4 软件体系结构中的技术,这些技术包括:软件分析和设计策略、划分策略、依赖性管理、体系结构模式使用以及系统构件集成策略。恰当地运用这些技术,能降低软件体系结构的复杂度,减少开发体系结构所花的时间,并减少软件体系结构师和体系结构团队的工作量。,5.4 软件体系结构中的技术,1共性和可变性分析共性和可变性分析的本质是,找出事务的共性和相异性,并且分别利用这些相同和相异的部分。这种办法被Coplien等人称为范围、共性和可变性(SCV)分析。其主要步骤如下:1)开始是找到要分析的实体集合。2)第二步通过限制每个变化量来区别这些变化。3)然后软件体系结构师在软件体系结构开发过程中使用共性。4)最后,由于设计中的变化是不可避免的,所以软件体系结构师应该找出一种将软件体系结构设计变化的影响减至最小的办法。,2可变设计,处理变化情况的基本思想是列举出体系结构中可能需要适应的变化的种类。然后用评价这些变化,是采用当前的体系结构,还是采用提议的体系结构。,为此,为了能更容易地处理这些变化,体系结构师可提出以下问题帮助进行判断:变化是局部的还是分散在多个分布的子系统中?哪些接口或消息需要修改以适应变化?数据库设计需要更新吗?可变的范围是什么?估计多少类或源代码文件将需要修改?,3程序生成技术,程序生成技术使得软件产品的开发自动化。 这一技术能大大提高开发者的生成能力,但软件体系结构师必须保证这一技术只用于其适用的领域。,4构造一个框架系统,这一技术在整个系统中给出了一条可操作的线索。这一线索可以完成软件体系结构的许多方面的最初验证。通常,当框架开发完成时,体系结构只需要一些方面到位。通常,这一框架可以作为要构造系统的第一次迭代的基础。 这种办法有许多主要优点:在开发过程的更早时候就促进集成,集成活动是一种主要的开发风险与迭代开发方法相吻合促进基础设施的早期开发引导端对端的自动测试,5原型构造,当一个大系统的某些方面不清楚时,构造原型常常能成为一种理解具体体系结构相关方面的一种有效技术。,6接口开发按合同设计,对接口进行编码的一种有用技术称为“按合同设计”。B.Meyer发明了这种技术,这一技术用来为软件构件来定义接口规格说明。Eiffel 程序设计语言对按合同设计提供了一流的支持。其益处包括:系统设计员能更好地理解面向对象的概念获得更好质量的系统技术是找到软件错误、进行测试以及提供质量保障的一种框架是文档化软件构件、特别是接口的一种技术一种处理异常的技术,7体系结构描述语言,体系结构描述语言(ADL)是一种能用来代表体系结构并能对体系结构进行推理的形式语言。这些语言分析和比较了软件体系结构的前景。一个人们关注的焦点是,怎样把体系结构描述语言用于构件接口的规格说明。尽管这些技术展示了应用前景,但目前这些技术还处于探索阶段。,8体系结构评价,软件体系结构师和体系结构团队的一个基本任务是评价软件体系结构。团队成员应不断地分析体系结构,看它是否达到风险承担者的目标。这意味着,评价该体系结构是否具有理想的特性(如可维护性和可测试性)。大多数体系结构评价是特定的,评价过程是边开发边评价。,5.4.2 软件分治策略,“分治法”是软件设计中的一种基本技术。分治法的目标是把一个大系统分解成多个可控制的子系统,或者分成一组子系统并找出其中相关的软件构件。在划分一个系统时,系统中的元素应按“高内聚、低耦合”的原则来分组,且其分组结果应该最小化。在把系统分成由不同开发团队开发的子系统时,这点特别关键。,具体策略如下:策略1功能分解策略2独立配置数据策略3独立出特有的硬件构件策略4独立出时间至上的构件策略5将人机接口与实现模型分离策略6从实现技术中分离出领域实现模型策略7从监控中分离主要功能策略8分离错误恢复处理策略9使用外部接口适配构件,5.4.3 软件可变性和依赖性管理,前面章节描述了一系列为创建基于独立软件功能元素的不同技术。然而,每一个增加的独立元素会带来不同个体之间的依赖关系。,5.4.4 集成策略,有两种主要的集成策略:其一是纯数据集成,这意味着系统没有一个构件被另一个构件直接使用的情况;其二是可执行集成,即一个独立的可执行构件用来完成某个系统功能。可执行构件由控制构件控制,控制构件需要一个执行基础,这一执行基础允许控制构件启动可执行构件并与之交换数据。在此的执行基础可以是任何东西:从操作系统过程执行工具到网络协议。,5.5 将需求映射到软件体系结构 :以结构化方法为例,5.5.1变换流具有较明显的输入、变换(或主加工)和输出的数据流图称为变换型数据流图。在变换型数据流图中,主加工是系统的中心,在图5.18中,“计算汇费”是主加工。,某个加工将它的输入分离成一串发散的数据流,形成许多活动路径,并根据输入的值选择其中一条路径,具有这样特征的数据流图是事务型数据流图。事务型数据流图完成下述任务: (1)接收输入数据(输入数据又称为事务); (2)分析每个事务以确定它的类型; (3)根据事务类型选取一条活动通路。这类系统的特征,是具有在多种事务中执行某类事务的能力。当外部信息沿着接受路径进入系统后,经过事务中心获得某一个特定值,就能据此启动某一条动作路径的操作。在数据处理系统中,事务型结构是经常遇到的。,5.5.2事务流,在一个大型系统的数据流图中,变换型和事务型两类结构往往同时存在。,上图说明了使用面向数据流方法的设计过程。 (1)复审并精化数据流图。(2)鉴别数据流图是属于变换型还是事务型。(3)按照结构化设计的方法,把数据流图转换为初始的软件结构图。(4)按照启发式规则的指导,改进初始的软件结构图,优化设计,获得最终软件结构图。 (5)写出详细的接口描述和全局数据结构。(6)复查优化后的设计。,5.6 面向数据流方法设计过程,5.6.1 变换映射,例 我们已经开始进入“智能”产品时代。在这类产品中把软件做在只读存储器中,成为设备的一部分,从而使设备具有某些“智能”。因此,这类产品的设计都包含软件开发的任务。作为面向数据流的设计方法中变换分析的例子,考虑汽车数字仪表板的设计。假设的仪表板将完成下述功能:(1) 通过模数转换实现传感器和微处理机接口;(2) 在发光二极管面板上显示数据;(3) 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4) 指示加速或减速;(5) 超速警告:如果车速超过55英里/小时,则发出超速警告铃声。,(1) 复审并精化数据流图。假设精化后的数字仪表板系统的数据流图如图所示。,(2)鉴别数据流图是属于变换型还是事务型。从上图看出,数据沿着两条输入通路进入系统,然后沿着5条通路离开,没有明显的事务中心。因此,可以认为这个信息流具有变换流的总特征。 (3)按照结构化设计的方法,把数据流图转换为初始的软件结构图。对于变换型的数据流图,可以用以下的映射方法。(3.1)确定逻辑输入和逻辑输出的边界,从而孤立出变换中心。对于汽车数字仪表板的例子,设计人员确定流的边界如图5.23所示。,(3.2)设计软件结构的顶层和第一层,(3.3)分解上层模块结构,设计中、下层模块。设计中、下层模块的任务,就是把数据流图中的每个处理映射成软件结构中一个适当的模块。映射的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中输入控制模块的下属模块;然后沿输出通路向外移动,把输出通路中每个处理映射成输出控制模块的下属模块;最后,把变换中心内的每个处理映射成受变换控制模块控制的一个模块。为变换模块设计下属模块没有一定的规律可循,这时需要具体研究数据流中相应加工的分解情况。,(4)按照启发式规则的指导,改进初始的软件结构图,优化设计,获得最终软件结构图。1) 输入部分的求精每个物理输入要专门设置一个模块。可以把联系较紧密的一些小模块合并在一起。因为,过多的小模块既增加了模块数量,又提高了块间联系。合并后的模块也要起一个合适的名字,表明它的功能。,2) 输出部分的求精输出部分的求精要注意把有相同或类似的物理输出的模块合并在一起,以减小块间的联系。其他规则同输入部分。3) 变换部分的求精变换部分的求精根据启发式规则对模块进行合并和分解。,虽然在大多数实际系统中,使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的事务中心时,需用事务映射方法进行设计。事务分析的设计步骤和变换分析的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。,5.6.2 事务映射,例 在汽车的数字仪表板上有一些选择功能,驾驶员可以按动功能选择按钮进行选择。在面板上设置的按钮是:(1)点火,启动汽车。同时还提供一排数字按钮,驾驶员可以设置一个数字密码,只有密码正确汽车才能安全启动;(2)雷达探测。它可以给出障碍物的距离,如果太近了,就发出警告;(3)显示发动机工作状态。如油压、油温、水箱温度等;(4)显示行程,计算信息;(5)清除上一键。,(1)复审并精化数据流图。,(2)鉴别数据流图是属于变换型还是事务型。(3)按照结构化设计的方法,把数据流图转换为初始的软件结构图。对于变换型的数据流图,可以用以下的映射方法。(3.1)确定事务中心,找出输入通路和每条活动路径。,(3.2)设计顶层和第一层模块,由事务流映射成的软件结构包括一个接收分支和一个发送分支。映射出接收分支结构的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界开始,把沿着接收流通路的处理映射成模块。 发送分支的结构包含一个调度模块,它控制下层的所有活动模块,对应于事务中心。然后,为数据流图中的每个活动流通路设计相应的控制模块。,用上面的方法,我们可以得到数字仪表板功能按钮系统的上层模块 .,(3.3)设计中下层模块,中下层模块主要是为数据流图中的每个活动路径设计相应的模块。每条活动路径可以看作是下一级的数据流图,可按前面介绍的方法,把它映射成与其流特征相对应的结构。 本例中输入部分比较简单,不需要再分解。我们以2号按钮雷达检查的活动路径为例细化。它可以看成一个变换流,可用变换流的映射方法设计软件模块.,(4)求精,求精的过程与前面讨论的相同。 对于一个大系统,常常把变换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。 一般说来,如果数据流不具有显著的事务特点,最好使用变换分析;反之,如果具有明显的事务中心,则应该采用事务分析技术。,5.6.3 体系结构设计求精,在成功进行变换映射和事务映射之后,相关的设计结论应该作为软件体系结构设计文档的一部分,增加到体系结构设计文档中,并在下一阶段工作开展之前,进行必要的审查。因此,在体系结构开发出来并求精之后,我们还要完成如下任务:,5.6 面向数据流方法设计过程,1)为每一个构件/模块开发处理叙述;2)为每个构件/模块提供接口描述;3)定义局部数据结构和全局数据结构;4)标识出各种设计限制和约束;5)如果必要的话,完成进一步精化;6)进行设计评审。,