第4章软件总体设计概要课件.ppt

上传人:牧羊曲112 文档编号:1820295 上传时间:2022-12-20 格式:PPT 页数:119 大小:1.57MB
返回 下载 相关 举报
第4章软件总体设计概要课件.ppt_第1页
第1页 / 共119页
第4章软件总体设计概要课件.ppt_第2页
第2页 / 共119页
第4章软件总体设计概要课件.ppt_第3页
第3页 / 共119页
第4章软件总体设计概要课件.ppt_第4页
第4页 / 共119页
第4章软件总体设计概要课件.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《第4章软件总体设计概要课件.ppt》由会员分享,可在线阅读,更多相关《第4章软件总体设计概要课件.ppt(119页珍藏版)》请在三一办公上搜索。

1、1,第四章 软件总体设计,2022年12月20日,第四章 软件总体设计,2,【本章引言】,总体设计过程通常由两个阶段组成:系统设计和结构设计。其中系统设计的任务是确定系统的具体实现方案,结构设计则是确定软件的模块结构。这两个阶段是紧密联系在一起的,它们执行的效果将直接影响到总体设计好坏,乃至整个软件工程的合理与否。前一个阶段是后一个阶段的基础,后一个阶段是前一个阶段的发展方向。因此,我们在总体设计的整个过程中必须围绕系统设计和结构设计这两个阶段展开每一项工作。,2022年12月20日,第四章 软件总体设计,3,第四章 软件总体设计,【本章重点】软件设计的概念与原则 ;掌握总体设计的步骤和方法

2、;【教学目标】掌握软件设计的概念与原则 ;掌握总体设计的步骤和方法 ;了解总体设计的文档与评审。,2022年12月20日,第四章 软件总体设计,4,第四章 软件总体设计,4.1 总体设计概述 4.2 总体设计的图形描述工具 4.3 模块化设计 4.4 面向数据流的设计方法 4.5 小结 4.6 习题,2022年12月20日,第四章 软件总体设计,5,软件设计阶段的任务与目标,软件编码前,必须先进行软件设计。软件设计是软件开发的关键步骤,直接影响软件的质量。在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件“做什么”的问题,并已在软件需求说明书和数据要求说明书中详尽和充分

3、地阐明了这些需求以后,下一步就要着手实现软件的需求,即软件设计阶段要解决“怎么做”的问题。,2022年12月20日,第四章 软件总体设计,6,软件设计在开发阶段中的重要性,软件设计阶段要解决“如何做”的问题。这显然是整个软件开发过程的核心问题,所有的开发工作都将根据设计的方案进行。系统的总体结构在该阶段决定,因此软件的总体设计决定了系统的质量。软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构成的开发阶段。开发阶段的信息流如图所示。在设计步骤中,根据软件的功能和性能需求等,采用某种设计方法进行数据设计、系统结构设计和过程设计。,2022年12月20日,第四章 软件总体设计,7,2022

4、年12月20日,第四章 软件总体设计,8,数据设计侧重于软件数据结构的定义系统结构设计定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份之间的关系过程设计则是把结构成份转换成软件的过程性描述,在编码步骤中,根据这种过程性描述,生成源程序代码,然后通过测试,最终得到完整有效的软件。,2022年12月20日,第四章 软件总体设计,9,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构,2022年12月20日,第四章 软件总体设计,10,软件设计阶段的任务,一、软件设计的任务将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结

5、构设计,包括数据结构和程序结构,最后得到软件设计说明书。,从工程管理的角度来看,软件设计分两步完成;分为总体设计(概要设计)和详细设计两个阶段。其工作流程如图所示。 首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。,2022年12月20日,第四章 软件总体设计,11,把分析模型转变成软件,2022年12月20日,第四章 软件总体设计,12,2022年12月20日,第四章 软件总体设计,13,概要设计的基本目的就是回答“概括地说,系统应该如何实现”划分组成系统的物理元素-程序、文件、数据库和文档等,另一方

6、面要设计软件的结构,即确定系统中每个程序由哪些模块组成,以及这些模块相互间的关系,总体设计过程,2022年12月20日,第四章 软件总体设计,14,在详细设计过程中,需要完成的工作是:1.确定软件各个组成部分内的算法以及各部分的内部数据组织2.选定某种过程的表达形式来描述各种算法。3.进行详细设计的评审,详细设计,2022年12月20日,第四章 软件总体设计,15,总体设计,复审,修 改,详细设计,模块描述,复审,修 改,软件设计工作流程,设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。,2022年12月20日,第四章 软件总体设计

7、,16,1、划分模块,确定软件结构 开发方法不同,确定软件结构的方法也不同。例如SD法,是从分层的DFD图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。 一般包括确定系统的软件结构,分解模块 ,确定系统的模块层次关系。,2、确定系统的数据结构 要确定数据的类型,组织、存取方式,相关程度及处理方式等。,3、设计用户界面,软件设计阶段的任务可分为三部分:,2022年12月20日,第四章 软件总体设计,17,二、软件设计的目标在设计阶段应达到的目标是:提高可靠性;提高可维护性;提高可理解性;提高效率。,2022年12月20日,第四章 软件总体设计,18,常用的设计方法有:SD法、Ja

8、ckson法、HIPO法、Parnas法、Warnier法等。,衡量该目标的准则:1、软件实体有明显的层次结构,利于软件元素间控制2、软件实体应该是模块化的,模块具有独立功能3、软件实体与环境的界面清晰4、设计规格说明清晰、简洁、完整和无二义性,2022年12月20日,第四章 软件总体设计,19,4.1 总体设计概述,4.1.1 总体设计的任务确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择

9、分解功能与划分模块的设计原则,2022年12月20日,第四章 软件总体设计,20,4.1 总体设计概述,4.1.2 总体设计的步骤1设计系统方案2选取合理的方案 3推荐最佳方案 4功能分解5软件结构设计6数据库设计、文件结构的设计7制定测试计划8书写文档9审查和复审,2022年12月20日,第四章 软件总体设计,21,软件结构,软件结构是软件模块之间关系的表示,它决定了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,但都可以归结为一种层次关系。 软件结构图是总体设计阶段的主要描述工具,它描述了构成系统的基本元素模块及模块之间的调用关系,模块之间的数据传递关系。,2022年12月20

10、日,第四章 软件总体设计,22,2022年12月20日,第四章 软件总体设计,23,软件结构的基本概念,模块(Module)模块是程序对象有名字的集合。例如,过程、函数、子程序、宏等,是构成软件系统结构的基本元素。,软件结构图,2022年12月20日,第四章 软件总体设计,24,体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。杨叔子院子曾这样指点其弟子: 文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那“几笔”不是别的,而是拓扑学中的特征不变量,这是事物最本质的东西

11、。体系结构是软件系统中最本质的东西:软件系统的体系结构分为集中式的层次结构、客户机/服务器等。,2022年12月20日,第四章 软件总体设计,25,一、层次结构,2022年12月20日,第四章 软件总体设计,26,2022年12月20日,第四章 软件总体设计,27,二、 客户服务器模型(Client/Server Architectural Model),C/S结构是一种分布式模型,采用发请求、得结果的模式:客户机 向服务器发出请求(数据请求、网页请求、文件传输请求等)。服务器 响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。,C/S结构的应用都由三个相对独立

12、的逻辑部分组成。,2022年12月20日,第四章 软件总体设计,28,两层客户服务器模型 (Two Tier Client/Server Architectural Model),C/S的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同的软硬平台。,2022年12月20日,第四章 软件总体设计,29,例:电影图片库的系统的体系结构s,2022年12月20日,第四章 软件总体设计,30,完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端上呢? 三种情况:,两层C/S架构将数据表示和处理逻

13、辑分开 ,但应用逻辑和两端之一是紧耦合的,不适宜多用户、多数据库、非安全的网络环境。,2022年12月20日,第四章 软件总体设计,31,2.三层/多层应用模型(Three/Multi Tier Model),第一级是数据库管理结点(database management node)。第二级或中间级是“商业逻辑结点” (business logic node),是指具体应用中实施的 程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。,服务器,客户机,2022年12月20日,第四章 软件总体设计,32,在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见的事务服务

14、器有Microsoft Transaction Server,消息服务器有Microsoft Message Queue。,2022年12月20日,第四章 软件总体设计,33,三、分布式对象结构(Distributed Objects Architecture),在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。,采用分布式对象结构 : “对象(Object)”提供服务的系统组件(System Component)。 每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。 提供服务的对象就是服务器,而提出服务请求的对象就是客户。,2022年12月

15、20日,第四章 软件总体设计,34,软件总线(Software Bus)的中间件(Middleware) 即对象请求代理(Object Request Broker,ORB) 分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。,2022年12月20日,第四章 软件总体设计,35,4.2 总体设计的图形工具,4.2.1 层次图,2022年12月20日,第四章 软件总体设计,36,4.2 总体设计的图形工具,4.2.2 HIPO图,2022年12月20日,第四章 软件总体设计,37,大学教务管理系统H图,2022年12月20日,第四章 软件总体设计,38,

16、IPO图的一个例子,2022年12月20日,第四章 软件总体设计,39,4.2 总体设计的图形工具,4.2.3 结构图,2022年12月20日,第四章 软件总体设计,40,软件结构图(SC图),结构图(Structure Chart,SC图)是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。模块(Module):用矩形框表示,框中写有模块的名字,说明模块的功能。模块是程序对象有名字的集合。例如:过程、函数、子程序、宏等。,数据:调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。,调用:从一个模块指向另一个模块的箭头表示前一模块对后一模块的

17、调用,一般是上层调用下层。,2022年12月20日,第四章 软件总体设计,41,模块调用图,2022年12月20日,第四章 软件总体设计,42,2022年12月20日,第四章 软件总体设计,43,2022年12月20日,第四章 软件总体设计,44,例:画出打印报告的软件结构图。,调用次序为上层调用下层; 同层按照数据传递关系确定;一般从左到右执行。 执行过程即按照数据流向进行。,报 告,计 算,获得编辑,确认数据,读入,编辑,打印报告头,打印报告尾,打印,输入EOF,输入,已编辑,已编辑,已编辑,已确认,已确认数据,已确认数据,计算结果,结果,日期,总结果,行,行,行,打印报告,予以确认,20

18、22年12月20日,第四章 软件总体设计,45,结构图的例子产生最佳解的一般结构,2022年12月20日,第四章 软件总体设计,46,4.3 模块化设计,4.3.1 模块化与局部化1模块化 模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名、而且可通过名字来访问,例如,过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,进而满足问题的要求。,2022年12月20日,第四章 软件总体设计,47,“模块”,又称“构件”,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:功能 即

19、指该模块实现什么功能,做什么事情逻辑 即描述模块内部怎么做。状态 即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。,2022年12月20日,第四章 软件总体设计,48,模块化 模块化就是将系统划分为若干个模块,每个模块完成一个子功能。模块化的目的是将系统“分而治之”,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而

20、也有助于提高软件的可靠性。,2022年12月20日,第四章 软件总体设计,49,模块化降低软件复杂度的简单证明,令:C(X)表示问题 X 的复杂度函数; E(X)解决问题 X 所需工作量的复杂度函数;若:有问题 P1,P2 ;C(P1) C(P2); 显然:E(P1) E(P2)由经验:C(P1+P2) C(P1)+ C(P2)于是:E(P1+P2) E(P1)+ E(P2)将问题(P1+P2)划分为两个问题P1和P2后,其工作量和复杂度都降低。,2022年12月20日,第四章 软件总体设计,50,并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最佳模块数

21、M。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。,2022年12月20日,第四章 软件总体设计,51,4.3 模块化设计,4.3.1 模块化与局部化 2局部化 局部化的概念和信息隐蔽概念密切相关。所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。显然,局部化有助于实现信息隐蔽。,2022年12月20日,第四章 软件总体设计,52,4.3 模块化设计,4.3.2 模块化独立性 模块的独立性可以用两个定性的标准来度量:耦合和内聚。耦合是模块之间互相连接的紧密程度的度量,内聚是一个模块内部各个元素彼此结合的紧密程度的度量。,202

22、2年12月20日,第四章 软件总体设计,53,4.3 模块化设计,4.3.2 模块化独立性1耦合非直接耦合 数据耦合 标记耦合 控制耦合 公共耦合 内容耦合,2022年12月20日,第四章 软件总体设计,54,耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:, 方式 块间联系方式有“直接引用”或“用过程语句调用” 作用 块间传送的共用信息(参数)类型,可为“数据型”、“控制型”或“混合型”(数据/控制型) 数量 块间传送的共用信息的数量,2022年12月20日,第四章 软件总体设计,55,模块分解的一

23、个目标是使块间联系尽可能小,达到这个目标可通过以下措施。每个模块用过程语句(或函数方式等)调用其他模块。模块间传送的参数为数据型。模块间公用的信息(如参数等)尽量少。,2022年12月20日,第四章 软件总体设计,56,耦合性的几种类型,内容耦合,公共耦合,控制耦合,复合耦合,数据耦合,高,耦合性,低,1、内容耦合(content coupling)一个模块直接访问另一模块的内部数据一个模块不通过正常入口转到另一模块的内部一个模块有多个入口两个模块有部分代码重迭,2022年12月20日,第四章 软件总体设计,57,2、公共耦合(Common Coupling) 若干模块访问一个公共的数据环境,

24、公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区等。显然,公共数据区的变化,将影响所有公共耦合模块,严重影响模块的可靠性和可适应性,降低软件的可读性。,2022年12月20日,第四章 软件总体设计,58,3、控制耦合(Control Coupling) 一个模块传递给另一模块的信息是用于控制该模块内部逻辑的控制信号。显然,对被控制模块的任何修改,都会影响控制模块。,2022年12月20日,第四章 软件总体设计,59,public int y;Public A(string x) if (x=”true”) y=1;Else y=0;,Public void B ( )if (y=1)F

25、(); / F()是系统自定义的函数ElseG( ); / G( )是系统自定义的函数,2022年12月20日,第四章 软件总体设计,60,4、复合耦合(Stamp Coupling) 一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数据单项的记录。,5、数据耦合(Data Coupling) 一个模块传送给另一个模块的参数是一个单个的数据项,2022年12月20日,第四章 软件总体设计,61,总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。,2022年12月20日,第四章 软件总体

26、设计,62,4.3 模块化设计,4.3.2 模块化独立性2内聚偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚,2022年12月20日,第四章 软件总体设计,63,块内联系的类型分为七类:,内聚性表示一个模块内部各种数据和各种处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。,2022年12月20日,第四章 软件总体设计,64,模块T中的三条语句毫无关系,A、B、C、D都不在文件CARD FILE 中。模块P、Q、R分别与三条语句有关。,1、偶然型(Coincidental Cohesion)又称为巧合型,为了节约

27、空间,将毫无关系(或者联系不多)的各成分放在一个模块中。这样的模块显然不易理解,不易修改。,2022年12月20日,第四章 软件总体设计,65,2、逻辑型(Logical Cohesion)将几个逻辑上相似的功能放在一个模块中,调用时由调用模块传递的参数确定执行的功能。由于要进行控制参数的传递,必然要影响模块的内聚性。,2022年12月20日,第四章 软件总体设计,66,3、瞬时型(Temporal Cohesion)将需要同时执行的成分放在一个模块中,因为模块中的各功能与时间有关,因此又称为时间内聚或经典内聚。例如,初始化模块,中止模块等这类模块内部结构较简单,一般较少判定,因此比逻辑内聚强

28、,但是由于将多个功能放在一起,给修改和维护造成困难。,2022年12月20日,第四章 软件总体设计,67,4、过程型(Procedural Cohesion)如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块 为过程内聚模块。通常通过程序流程图来确定,例如把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,2022年12月20日,第四章 软件总体设计,68,5、通信型(Communicational Cohesion)模块中的成分引用共同的输入数据,或者产生相同的输出数据,则称为是通信内聚模块通信型模块比瞬时型模块的内聚性强,因为模块中包含了许多

29、独立的功能,但却引用相同数据,2022年12月20日,第四章 软件总体设计,69,2022年12月20日,第四章 软件总体设计,70,6、顺序型(Sequential Cohesion)模块中某个成分的输出是另一成分的输入。由于这类模块无论数据还是执行顺序,模块中的一部分依赖于另外一部分。,顺序型模块,编辑功能的输入是读入功能的输出,打印功能的输入是累加功能的输出。,2022年12月20日,第四章 软件总体设计,71,7、功能型(Sequential Cohesion)一个模块包括而且仅包括完成某一具体功能所必须的所有成分。或者说,模块的所有成分都是为完成该功能而协同工作、紧密联系、不可分割的

30、。,例如仅完成以下功能的模块为功能模块: 求平方根 求解一元二次方程 计算利息 判素数,2022年12月20日,第四章 软件总体设计,72,1计算雇员年龄并给出生日的模块2 按给出的生日计算雇员年龄、退休时间的模块。如果利用所计算的年龄来确定雇员将要退休的时间,是什么内聚;如果分别计算年龄和退休时间,但使用相同生日数据,是什么内聚3 打印季度开支报告、月份开支报告和日开支报告。具体打印哪一个,将由传入的控制标志决定。如何提高内聚性?,功能内聚,顺序内聚,通信内聚,逻辑内聚,2022年12月20日,第四章 软件总体设计,73,4.3 模块化设计,4.3.2 模块化独立性3设计准则模块规模应该适中

31、 改进软件结构提高模块独立性 深度、宽度、扇入和扇出都应适当 模块的作用范围应该在控制范围之内 降低模块接口的复杂程度 设计单入口单出口的模块,避免“病态连接”模块功能应该可以预测,2022年12月20日,第四章 软件总体设计,74,1)模块的大小要适中 模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规定其语句行数在50100左右,保持在一页纸之内,最多不超过500行。,2022年12月20日,第四章 软件总体设计,75,消除重复功能,(a),(b),(c),(d),Q,重复部分,2)改进软件结构,消除重复功能 若两模块含有重复的部分,应设法将重复的

32、功能消去。 如下图所示,Q1和Q2两个模块具有类似的功能,图(b)、(c)、(d)方案就是可能的解决方案。,2022年12月20日,第四章 软件总体设计,76,逻辑内聚,2022年12月20日,第四章 软件总体设计,77,消除重复功能,改善软件结构 完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完全合并的方法。 局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。,2022年12月20日,第四章 软件总体设计,78,有关指标:深度:表示软件结构中从顶层模块到最底层模块的层数。宽度:表示控制的总分布。扇出数:指一个模块直接控制下属的

33、模块个数。扇入数:指一个模块的直接上属模块个数。,3)深入、宽度、扇入、扇出,2022年12月20日,第四章 软件总体设计,79,3.2.1软件结构的基本概念,软件结构示意图,一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。,2022年12月20日,第四章 软件总体设计,80,深度、宽度、扇入和扇出都应适当,2022年12月20日,第四章 软件总体设计,81,模块的扇入扇出数不宜太多一个模块调用其他模块的个数,称为该模块的扇出。模块的扇出不宜过大,一般认为不要超出个。 一个模块被其他模块调用的个数,称为该模块的扇入。扇入越大,

34、除服务性模块外,模块的扇入扇出数不宜太多,否则块间联系增加。,2022年12月20日,第四章 软件总体设计,82,控制范围 结构方面的特点,包括模块及其 所有下属模块。作用范围 判断所涉及到的模块,是从功能 特点考虑的。SD方法认为:当作用范围为控制范围的子集时,才能获得较低的块间联系。 如图(b)中的设计,判定的作用范围恰好在判定所在模块的下一层。,4)模块的作用范围与控制范围,2022年12月20日,第四章 软件总体设计,83,图(b)中模块TOP 的控制范围是:模块 TOP、X、T、B、A、B1、B2;模块B 的控制范围与作用范围相同,均为:模块B、A、B1、B2,图(a)中模块A的控制

35、范围: A、B、C、D、G、E、F如果模块F的判定涉及到模块B、E、F则F的的作用范围:B、E、F,(a),(b),2022年12月20日,第四章 软件总体设计,84,答案,显然,图(a)不满足作用范围应与控制范围的原则,模块F的作用范围不在控制范围之内。图(b)中模块TOP和图(c)中模块B虽然满足上述原则,但其作用范围所涉及到的模块不是直接的。图(d)的模块设计最合理。,应用范围与作用范围举例,比较(a)、(b)、(c)、(d)4种设计方案的优劣,2022年12月20日,第四章 软件总体设计,85,5)降低接口复杂度,例如:求一元二次方程的跟的模块,模块名为Quad_Root,这里有2种接

36、口方式a. Quad_Root(Tbl,X)b. Quad_Root(A,B,C,Root1,Root2),2022年12月20日,第四章 软件总体设计,86,一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。,6) 功能可预测的模块,但避免过分受限制的模块,2022年12月20日,第四章 软件总体设计,87,2022年12月20日,第四章 软件总体设计,88,4.3 模块化设计,4.3.3 抽象与信息隐蔽1抽象 抽象是人类认识

37、问题和解决问题的基本工具和方法。在解决复杂的具体问题时,人们往往先忽略其细节和非本质的方面,而集中注意力去分析问题的本质和主要方面,搞清所要解决的问题的本质。同时人们在总结认识和实验规律时,也往往突出各类问题的共性,找出各种客观事物、状态和过程间的联系和相似性,加以概括和提取,即抽象。,2022年12月20日,第四章 软件总体设计,89,4.3 模块化设计,4.3.3 抽象与信息隐蔽2信息隐蔽 信息隐蔽原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使得包含在模块中的信息(过程和数据)对于其他不需要这些信息的模块来说,是不能访问的,或者

38、说是“不可见”的。,2022年12月20日,第四章 软件总体设计,90,例如:定义栈(stack)操作模块Makenull(置空栈);Push(进栈);Pop(出栈);Gettop(取栈顶) Empty(判栈空)其操作均被封装,无需了解模块内部的实现过程。,2022年12月20日,第四章 软件总体设计,91,4.4 面向数据流的设计方法,4.4.1 基本概念1变换流 信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫作变换流。,2022年12月20日,第四章 软件总体设

39、计,92,4.4 面向数据流的设计方法,4.4.1 基本概念1变换流,2022年12月20日,第四章 软件总体设计,93,4.4 面向数据流的设计方法,4.4.1 基本概念2事务流 数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个工作序列中选出一个来执行。这类系统的特征是具有在多种事务中选择执行某类事务的能力。事务型结构由至少一条接受路径、一个事务中心,与若干条动作路径组成。这类数据流应该划为一类特殊的数据流,称为事务流。,2022年12月20日,第四章 软件总体设计,94,4.4 面向数据流的设计方法,4.4.1 基本概念2事务流,2022年12月20日,第四章 软件总体设计

40、,95,设计过程变换型系统结构图通过变换分析技术,将中心变换型的DFD图转换而得的SC图,称为变换型系统结构图。相应于取得数据、变换数据、给出数据,系统的结构图由输入、中心变换和输出等三部分组成。,2022年12月20日,第四章 软件总体设计,96,2022年12月20日,第四章 软件总体设计,97,例:仪表板的功能:通过模数转换器实现传感器和微处理器接口在发光二极管面板上显示数据指示每小时英里数,行驶的里程,每加仑行驶的英里数指示加速或减速超速警告:如果超过55英里/小时,则发出超速警告铃声,2022年12月20日,第四章 软件总体设计,98,数字仪表板系统的数据流图,2022年12月20日

41、,第四章 软件总体设计,99,具有边界的数据流图,2022年12月20日,第四章 软件总体设计,100,第一级分解的方法,2022年12月20日,第四章 软件总体设计,101,数字仪表板系统的第一级分解,2022年12月20日,第四章 软件总体设计,102,第二级分解的方法,2022年12月20日,第四章 软件总体设计,103,图4.19 未经精化的输入结构,2022年12月20日,第四章 软件总体设计,104,未经精化的变换结构,2022年12月20日,第四章 软件总体设计,105,未经精化的输出结构,2022年12月20日,第四章 软件总体设计,106,精化后的数字仪表板系统的软件结构,2

42、022年12月20日,第四章 软件总体设计,107,事务型系统结构图通过事务分析技术,将事务处理型的DFD图转换为的SC图,称为事务型的系统结构图。其中,事务中心模块按所接受的事务的类型,选择某一个事务处理模块执行。各个事务处理模块是并列的,依赖于一定的选择条件,分别完成不同的事务处理工作。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。某些事务处理模块可能共享一些操作模块,而某些操作模块又可以共享一些细节模块。,2022年12月20日,第四章 软件总体设计,108,数据流沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,202

43、2年12月20日,第四章 软件总体设计,109,2022年12月20日,第四章 软件总体设计,110, 确定主加工及逻辑输入/输出 主加工 描述了系统的主要功能、特征。其特点是:输入/输出数据流较多,往往主加工不止一个。 逻辑输入/输出 是指输入/输出主加工的数据流。 输入流 是把物理输入转换为逻辑输入的数据流。 输出流 是将逻辑输出转换为物理输出的数据流。,F, 进行一级分解,设计上层模块 为每个输入设计一个输入模块,为每个输出设计一个输出模块,同时为每个主加工设计一个处理模块。,M,CI,CT,CO,C,C,D,D,CI,CT,CO,变换分析技术,变换分析技术,2022年12月20日,第四

44、章 软件总体设计,111, 进行二级分解,设计中下层模块 这一步的工作是自顶向下,逐步细化,为第一层的每一个输入模块、输出模块、处理模块设计它们的从属模块,设计下层模块的顺序一般从设计输入模块的下层开始。,M,CI,CT,CO,处理C,取B,转换B,转换D,送E, 进一步细化,取A,转换A,转换E,送F,变换分析技术,F,2022年12月20日,第四章 软件总体设计,112,2022年12月20日,第四章 软件总体设计,113,事务分析技术, 确定流界;首先从数据流图中找出事务流、事务处理中心和事务路径。事务中心前是接受事务,事务中心后是事务路径。,对 应 模 块 图,事务控制,接受事务,发送

45、事务,P1,P2,P3,进行一级分析,设计上层模块;事务分析的任务是从数据流图中导出具有接受分支和发送分支的软件结构。对事务中心应设计“事务控制”模块;对事务流应设计“接受事务”模块;对事务路径,应设计“发送控制”模块。,进行二级分解,设计中下层模块;对于接受分支,可用类似于转换处理型数据流图中对输入数据流的方法设计中下层。对于发送分支,在发送控制模块下为每条事务路径设计一个事务处理模块,这一层称为事务层。在事务层模块下,沿各事务路径进行进一步细化。,事务分析技术,2022年12月20日,第四章 软件总体设计,114,2022年12月20日,第四章 软件总体设计,115,4.4 面向数据流的设

46、计方法,4.4.1 基本概念3设计方法第1步 复查基本系统模型。第2步 复查并精化数据流图。第3步 确定数据流图具有变换特性还是事务特性。第4步 确定输入流和输出流的边界,从而孤立出变换中心。,2022年12月20日,第四章 软件总体设计,116,4.4 面向数据流的设计方法,图9-6 测试问题3的控制流图,4.4.1 基本概念3设计方法第5步 完成“第一级分解”。第6步 完成“第二级分解”。第7步 使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。,2022年12月20日,第四章 软件总体设计,117,4.4 面向数据流的设计方法,4.4.3 事务分析事务分析的设计步骤和变换分析

47、的设计步骤大部分相同或类似,主要差别仅在于由数据流图到软件结构的映射方法不同。由事务流映射成的软件结构包括一个接收分支和一个发送分支。映射出接收分支结构的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界开始,把沿着接收流通路的处理映射成模块。发送分支的结构包含一个调度模块,它控制下层的所有活动模块;然后把数据流图中的每个活动流通路映射成与它的流特征相对应的结构。,2022年12月20日,第四章 软件总体设计,118,4.5 小结,总体设计阶段的任务是要确定系统的总体结构,给出系统中各个组成模块的功能和模块间的接口关系。层次图和结构图是描绘软件结构的常用工具。在进行软件结构设计时应该遵循一些基本原理,其中最主要的原理是模块独立原理。结构化设计方法是一种面向数据流的设计方法。它根据问题域的数据流定义一组不同的“映射”,利用这些映射把数据流图变换成软件结构。,2022年12月20日,第四章 软件总体设计,119,4.6 习题,总体设计由哪些阶段组成?如何理解模块的独立性?用什么指标来衡量模块的独立性?总体设计有哪些图形工具?软件设计有哪些准则?简述变换分析的基本步骤。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号