软件工程 概要设计全解ppt课件.ppt

上传人:牧羊曲112 文档编号:1444589 上传时间:2022-11-25 格式:PPT 页数:108 大小:4.94MB
返回 下载 相关 举报
软件工程 概要设计全解ppt课件.ppt_第1页
第1页 / 共108页
软件工程 概要设计全解ppt课件.ppt_第2页
第2页 / 共108页
软件工程 概要设计全解ppt课件.ppt_第3页
第3页 / 共108页
软件工程 概要设计全解ppt课件.ppt_第4页
第4页 / 共108页
软件工程 概要设计全解ppt课件.ppt_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《软件工程 概要设计全解ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件工程 概要设计全解ppt课件.ppt(108页珍藏版)》请在三一办公上搜索。

1、,系统设计,4.1 概述4.2 任务,4.3 设计原理,4.4 模块独立性4.5 图形工具,4.6 面向数据流的设计方法4.7 数据库设计4.8 小结,4.1 概述,软件设计分为两个阶段:,总体设计(又称概要设计),通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。,详细设计,详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。,4.1 概述,软件分析映射软件设计,4.1 概述,4.2 任务,1. 制定规范,确定设计的目标和优先顺序选定设计方法,规定设计文档的编制标准,文档体系、详细程度、图形画法、纸张样式,编码

2、形式,接口约定、命名规则,4.2 任务,2. 系统的结构设计,划分层次结构确定模块功能,确定模块调用关系确定模块的接口,评估模块划分的质量、导出模块结构规则,4.2 任务,3. 数据结构设计,确定输入、输出文件的结构数据库设计,4. 可靠性设计(质量设计)5. 书写文档,概要设计说明书、 数据库设计说明书、 用户手册、 初步的测试计划,4.2 任务,6. 评审,可追溯性,确认该设计是否复盖了所有已确定的软件需求,软件每一成份是否可追溯到某一项需求,接口,确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内,风险,确认该设计在现有技术

3、条件下和预算范围内是否能按时实现,4.2 任务,实用性,确认该设计对于需求的解决方案是否实用,技术清晰度,确认该设计是否以一种易于翻译成代码的形式表达,可维护性,确认该设计是否考虑了方便未来的维护,质量,确认该设计是否表现出良好的质量特征,4.2 任务,各种选择方案,看是否考虑过其它方案,比较各种选择方案的标准是什么,限制,评估对该软件的限制是否现实,是否与需求一致,其它具体问题,对于文档、可测试性、设计过程等进行评估,4.3 设计原理,模块化抽象,逐步求精信息隐藏,4.3.1 模块化,什么是模块?,模块是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识

4、符来代表它。,过程、函数、子程序和宏等,都可作为模块。面向对象范型中的对象是模块,对象内的方法也是模块。模块是构成程序的基本构件。,4.3.1 模块化,什么是模块化?,就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。,图: 模块化和软件成本,4.3.1 模块化,五条标准,模块可分解性,把问题分解为子问题,模块可组装性,可复用,模块可理解性,无需参考其他模块,易于构造和修改,模块连续性,微小修改只导致对个别模块,模块保护性,异常影响局限在模块内部,人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在

5、实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节。,4.3.2,抽象,4.3.3 逐步求精,求精实际上是细化过程。,我们从在高抽象级别定义的功能陈述(或信息描述)开始。也就是说,该陈述仅仅概念性地描述了功能或信息,但是并没有提供功能的内部工作情况或信息的内部结构。,求精要求设计者细化原始陈述,随着每个后续求精(细化)步骤的完成而提供越来越多的细节。,4.3.4 信息隐藏,设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些

6、信息的模块来说,是不能访问的。,模块内部的数据与过程,应该对不需要了解这些数据与过程的模块隐藏起来。只有那些为了完成软件的总体功能而必需在模块间交换的信息,才允许在模块间进行传递。,4.4 模块独立性,模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是否合理的标准。模块的独立性可以由两个定性标准度量:,耦合,用于衡量不同模块彼此间互相依赖(连接)的紧密程度;,内聚,用于衡量一个模块内部各个元素间彼此结合的紧密程度。,4.4.1 耦合,耦合是对一个软件结构内不同模块之间互联程度的度量。,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。在软件设计中应该

7、追求模块间尽可能松散耦合的系统。,4.4.1 耦合,耦合的七种类型,1. 非直接耦合2. 数据耦合3. 特征耦合4. 控制耦合5. 外部耦合6. 公共耦合7. 内容耦合,4.4.1 耦合,1、非直接耦合(Nondirect Coupling),如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。,4.4.1 耦合,2、数据耦合 (Data Coupling),如果一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的,则称这种耦合为数据耦合。,4.4.1 耦

8、合,3、标记耦合 (Stamp Coupling),如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。,4.4.1 耦合,4、控制耦合 (Control Coupling),如果一个模块通过,传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。,4.4.1 耦合,5、外部耦合(External Coupling),一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。,6、公共耦合(Common Coupling),若一组模块都访问同一个公共数据环境,则它们之间的耦

9、合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。,4.4.1 耦合,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。,4.4.1 耦合,7、内容耦合 (Content Coupling),如果发生下列情形,两个模块之间就发生了内容耦合:,一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一模块内部;,两个模块有一部分程序代码重迭(只可能出现在汇编语言中);,一个模块有多个入口。,4.4.1 耦合,耦合性,应采取下述设计原则:,尽量使用数据耦合,少用控制耦合,限

10、制公共环境耦合的范围,完全不用内容耦合。,4.4.2 内聚七种内聚:1. 偶然内聚2. 逻辑内聚3. 时间内聚4. 过程内聚5. 通信内聚,6. 顺序内聚7. 功能内聚,信息内聚,4.4.2 内聚,1、偶然内聚(Coincidental Cohesion),又称巧合内聚,当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块。它是内聚程度最低的模块。,4.4.2 内聚,2、逻辑内聚,(Logical Cohesion),这种模块把逻辑相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。,例如一个模块读取各种不同类型外设的输入

11、。,4.4.2 内聚,3、时间内聚(Classical Cohesion),时间内聚又称为经典内聚,或瞬时内聚(TemporalCohesion) 。,这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。,问题:一般在某个系统中什么模块会是时间内聚的?,答案:程序的初始化模块和终止模块。,4.4.2 内聚,4、过程内聚(Procedural Cohesion),如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。,使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中

12、的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,问题:请大家举个生活中 必须遵照特定次序 的例子?,答案:排队买饭( 队列,要求先进先出) 。,4.4.2 内聚5、通信内聚 (Communication Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。,A,打印,报告1,打印报告2,打印,B,存入,打印,C,修改,删除,打印,报告2其他定义:如果一个模块的所有成分都操作同一数据集或生成同一数据集 。,4.4.2 内聚,4.4.2 内聚6、顺序内聚 (Sequence Cohesion)这种模块要求各个成分

13、顺序执行,并且通常上一个输出是下一个输入。,读入,编辑,A,数据,累加,打印,B,结果,4.4.2 内聚,信息内聚 (Informational Cohesion),模块多个功能在同一数据结构上操作,每一项功能有一个唯一的入口点。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此它是一个信息内聚的模块。,4.4.2 内聚,7、功能内聚 (Functional Cohesion),一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。,4.4.2 内聚,内聚度,设计内聚原则:,

14、设计时应力争做到高内聚,并且能够辨认出低内聚的模块,并采取措施进行修改,以提高模块的内聚程度、降低模块间的耦合程度,从而获得较高的模块独立性。,4.5 图形工具,层次图,HIPO图结构图,4.5.1 层次图,也称H图,是在总体设计阶段最常使用的图形工具之一,它常用于描绘软件的层次结构。层次图中的每个方框代表一个模块,方框间的连线表示模块间的调用关系。,4.5.2 HIPO图,由H图和IPO图两部分组成,4.5.3 结构图,4.5.3 结构图,结构图中的每个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块间的调用关系。,在结构图中通常还用带注释的箭头表示模块调用过

15、程中模块之间传递的信息。,注释箭头尾部是空心圆表示传递的是数据。,注释箭头尾部是实心圆则表示传递的是控制信息。,4.5.3 结构图,大学职业介绍系统,4.5.3 结构图,模块,模块用矩形框表示,并用模块的名字标记它。,4.5.3 结构图,模块的调用关系和接口,模块之间用单向箭头联结,箭头从调用模块指向被调用模块,表示调用模块调用了被调用模块。,4.5.3 结构图,条件调用,循环调用,4.5.3 结构图,4.6 面向数据流的设计方法,目标是给出设计软件结构的一个系统化的途径。,面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。,通常所说的结构化设计方法,也就

16、是基于数据流的设计方法。,4.6.1 概念,面向数据流的设计方法把数据流映射成软件结构,数据流的类型决定了映射的方法。数据流有两种类型:,变换流,事务流,图:变换流,54,图:事务流,图:混合型,整体?中间?,2022/11/25,目标系统的DFD,SC 图 - Structured Chart,该图常用来表示系统的软件结构。利用它可以清楚地表达软件结构中模块间的层次调用关系和模块之间的联系。,SD,目标系统的SC,2022/11/25,A,SC 图中的主要内容,1、模块-在SC图中用矩形框表示,并用名字来标记它,- 模块调用关系,2、模块的调用关系和接口,B,被调用模块,调用模块,A(查询学

17、生),B(查找学生记录),数据信号,控制信号,学号,查找成功信号,- 模块间接口的表示,2022/11/25,SC 图的一般格式,2022/11/25,1、在系统结构图中的模块,一、典型的系统结构形式,原子模块: 在系统结构图中通常是指不能再分割的底层模块,完全因子分解系统,如果一个软件系统,它的全部实际加工 (即数据计算或处理)都是由底层的原子模块来 完成,而其它所有非原子模块仅仅执行控制或 协调功能。,2022/11/25,传入模块,从下属模块取得数据,进行某些处理,再将其结果 传给上级模块。在此,将它传送的数据流称为逻辑输入 数据流。,在系统结构图中有四种类型的模块:,逻辑输入数据流,2

18、022/11/25,传出模块,从上级模块获得数据,进行某些处理,再将其结果 传给下属模块。在此,将它传送的数据流称为逻辑输出 数据流。,逻辑输出数据流,2022/11/25,变换模块,也叫加工模块。它是从上级模块获得数据,进行 特定的处理,将其转换为其他形式,再传回上级模块 它所加工的数据流叫做变换数据流。,C,B,变换数据流,2022/11/25,协调模块,对所有下属模块进行协调和管理的模块。在一个 好的系统结构图中,协调模块应在较高层出现。,Y,X,Y,X,2022/11/25,2、典型的系统结构形式之一(变换型系统结构图),i,a,e,o,变换数据,传入部分,变换中心,传出部分,- 具有

19、变换型数据流图,2022/11/25,主模块,C变换成D,取得C,给出D,取得B,B变换成C,D变换成E,给出E,取得A,A变换成B,A,A,B,B,B,C,C,D,C,D,E,D,协调模块,变换模块,传出模块,- 具有变换型系统结构图,传入模块,2022/11/25,3、典型的系统结构形式之二(事务型系统结构图),“事务”,由它接受一项事务,根据事务处理的特点和性质 选择分配一个适当的处理单元,然后给出结果。,2022/11/25,输入,- 事务型 数据流图,1,A,B,C,3,D,E,F,G,H,2,4,5,6,7,中心变换,输出,逻辑输入,物理输入,逻辑输出,物理输出,2022/11/2

20、5,- 事务型 数据流图(DFD),- 事务型 系统结构图(SC),2022/11/25,2022/11/25,-简化的事务型系统结构图,2022/11/25,二、从 DFD 图导出 SC图的步骤,开 始,事务分析,变换分析,完善SC 图,2022/11/25,1、变换分析,-是将具有变换型的DFD图导出SC图,变换分析,2022/11/25,(1)在 DFD 图上标出逻辑输入、逻辑输出和变换中心的分界,变换中心,c,e 逻辑输入,w,u 逻辑输出,- 具有变换型数据流图,2022/11/25,(2) 完成第第一级分解,Mc,MA,MT,ME,C,e,C,e,U,w,U,w,变换中心,顶层,第

21、一层,第一级分解后的 SC 图,2022/11/25,第一级分解后的 SC 图(另一种画法),2022/11/25,(3) 完成第第二级分解,MA,变换中心,对逻辑输入的分解,C,E,B,A,D,逻辑输入模块的调用与执行过程,2022/11/25,2022/11/25,ME,变换中心,对输出的分解,W,U,V,MT,Q,P,R,e,C,p,r,U,w,对变换中心加工的分解,p,r,w,u,2022/11/25,(4) 获得完整的 SC 图,2022/11/25,运用变换分析方法建立系统的SC时需注意以下几点:,模块设计的次序时,应遵循对一个模块的全部直接下属模块都设计完成后,再转向另一个模块的

22、下层模块的设计。,在设计下层模块时,应考虑模块的耦合和内聚问题,以提高设计初始SC图的质量。,注意“黑盒”技术的使用。,2022/11/25,主模块,A,B,C,A1,A2,A3,A11,A12,A13,2022/11/25,低,高,强,弱,内聚性,模块独立性,低,高,弱,强,耦合性,模块独立性,具有高内聚低耦合的模块才是模块独立性比较强的模块。,2022/11/25,具有高内聚低耦合的模块才是模块独立性比较强的模块。,模块A,模块D,模块C,模块B,非直接耦合,通过参数传递数据(数据耦合),通过参数表传递数据结构(标记耦合),具有松散型 的耦合类型,2022/11/25,请将上列给出的具有变

23、换型的DFD图导出它的SC图,练习,2022/11/25,2、事务分析,-是将具有事务型的DFD图导出SC图,事务中心,事务源,2022/11/25,主模块,给出H,取得A,L,M,N,A,G,H,B,E,C,F,D,2022/11/25,发送部分,请将下列给出的采购子系统 DFD 图转换成SC图,练习,2.1,2.2,2.3,书库保管员,加工名称:2.1 按书号汇总缺书2.2 按出版社汇总缺书2.3 修改教材库存和待 购量,文件名称:F1 教材存量表F2 缺书登记表F5 待购教材表F6 教材一览表F7 进书登记表,2022/11/25,发送部分,采 购,按书号汇总,缺书登记表,统计缺书,登记

24、进书,按出版社汇总,打印缺书单,修改教材存量表,修改教材待购量,统计命令,登记命令,待购教材表,暂缺书单,暂缺书单,进书通知,进书通知,- 采购子系统的 SC 图 -,缺书登记表=班号+姓名+书号+数量,2022/11/25,三、软件模块结构的改进,一、模块功能的完善化,2022/11/25,二、消除重复功能,改善软件结构。,完全相似,局部相似,消除重复功能,改善软件结构,完全相似:在结构上完全相似,可能只是在数据类,型上不一致。此时可以采取完全合并的方法。局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可以与它的上级模块合并。,2022/11/25,X,Y,R1,R2,

25、X,Y,R,R,相似模块的各种合并方案的示意图,2022/11/25,三、模块的作用范围应在控制范围之内。,作用范围:是模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。,控制范围:包括模块本身及其所有的从属模块(即供它调用的模块)。,如果一个判定的作用范围包含在这个判定所在模块的控制范围之内,则这种结构是简单的,否则,它的结构是不简单的。,2022/11/25,模块的控制范围:包括模块本身及其所有的从 属模块(即供它调用的模块)。,2022/11/25,一个模块的作用范围,是指受这个模块中的判定所影响的模块 。,关于模块的作用范围/控制范围的关

26、系示意图,G,D,B,C,控制耦合,2022/11/25,Top,C,D,E,B2,B,D,G,C,理想的情况,应该使判定的作用范围和判定所在模块的控制范围尽可能地吻合(即应使模块的作用范围尽可能地在控制范围之内)。,符合作用范围/控制范围的理想判定位置,D,C,G,B,A,对于一个理想 SC图中的模块设计, 所有受到一个判定影响的模块应该都从属该判定所在的模块,最好位于作出判定的那个模块本身及它的直接下属模块。,2022/11/25,计算实发工资,取得工资数据,计时工人实发工资,计薪工人实发工资,编外人员实发工资,计时制工资额,税收扣款,薪金制工资额,常规扣款,编外人员 工资,编外人员税款,

27、编外人员扣款,2022/11/25,四、尽可能地减少高扇出结构,随着深度增大扇入。,2022/11/25,P,Q,一个 设计得好的软件模块结构,通常上层扇出比较高,中间层扇出较少,底层扇入到有高扇入的公用模块中。,2022/11/25,五、模块的大小要适中。,模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规定其语句行数在50100左右,保持在一页纸之内,最多不超过500行。,体积大的模块往往是由于分解不充分,因此可以对功能进一步分解,生成一些下级模块或同级模块。反之,对于体积过小的模块也可以考虑是否可能与调用它的上级模块合并。,2022/11/25,

28、六、应设计出功能可预测的模块,但要避免过分受限制的模块。,A,例如,A为不及格成绩处理模块,对于数组长度的使用限制,在成绩处理中,由于要处理各班级人数不等,所以数组长度的定义应该随着学生人数的不同而确定。,一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果将不可预测。,避免或减少使用病态联接,直接病态联接,即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部。,公共数据域病态联接,模块A和模块B通过公共数据域,直接传送或接

29、受数据,而不是通过它们的上级模块。这种方式将使得模块间的耦合程度剧增。它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块。,通信模块联接,即模块A和模块B通过通信模块TABLEIT传送数据。从表面看,这不是病态联接,因为模块和模块B都未涉及通信模块TABLEIT 的内部。然而,它们之间的通信(即数据传送)没有通过它们的上级模块。从这个意义上讲,这种联接是病态的。,2022/11/25,请将下列给出的 DFD 图转换成SC图,2022/11/25,发送部分,请完成下列描述的DFD图,导出它的SC图,练习,美国某大学共有200名教师,校方与工会刚刚签定一 项协议按照协议,所有年工资=$26

30、,000的教师工资将保 持不变,年工资$26,000的教师将增加工资, 所增加的 工资数按下述方法计算: 给每个由此教师所赡养的人(包括教师本人) 每年补 助$100,此外,教师满一年工龄的再多补助$50,但是增 加后的年工资总额不能多于$26,000。 教师的工资档案储存在行政办公室的磁带上, 档案 中有目前的年工资、赡养人数、雇用日期等信息。,2022/11/25,发送部分,请将上列给出的 DFD图导出它的SC图,作业,4.7 数据库设计,E-R映射关系数据库,为每个实体类型建立一张表;为每个表选择一个主键;,对1:1关系,把对方的主键作为自己的属性;对1:N关系,把1的主键作为N的外键,为每个M:N关系建立一张新表,字段由双方主键和关系本身的属性组成;定义完整性约束;,评价并改进模式的质量;选择字段数据类型和值域;,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号