软件工程第4章软件设计.ppt
《软件工程第4章软件设计.ppt》由会员分享,可在线阅读,更多相关《软件工程第4章软件设计.ppt(174页珍藏版)》请在三一办公上搜索。
1、第四章,软 件 设 计,软件设计概论,软件设计实际上是一个两部分的迭代过程。总体设计(或系统设计):告诉用户系统具体将要做什么。一旦用户同意了这个总体设计,我们会将这个总体设计转换为更加详细的文档。技术设计:让系统建设者了解要解决用户的问题所需要的硬件和软件。确定设计的过程是一个迭代的过程,这是因为设计者对于需求的理解、提出解决办法、测试办法的可行性和为程序员提供设计文档始终处于一个反复的过程中。,软件设计概论,一个优秀的总体设计应该包含以下特征:它是由用户语言书写的不包括用户不熟悉的专业词汇它描述系统功能独立于实现过程与需求分析文档相关联技术设计主要描述系统的硬件配置、软件需要、人机界面、输
2、入和输出,和网络体系结构等。也就是说,技术设计是系统说明的一个技术层面上的描述,它至少应该包括以下方面:主要的硬件组成的描述和它们的功能软件组成的层次和功能数据结构和数据流,软件设计的重要性,第四章 软件设计,4.1 软件设计的目标和任务 软件需求:解决“做什么”软件设计:解决“怎么做”1 软件设计的任务 问题结构(软件需求)软件结构 从软件需求规格说明书出发,形成软件的具体设计方案。,映射,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描 述,象,数 据 设 计,体系结构设计,接口设计,过程设计,分析模型,设计模型,将分析模型转换为
3、软件设计,上图中通过数据、功能和行为模型展示的软件需求被传送给设计阶段,选择其中的设计方法,设计阶段产生出:数据设计:将分析时创建的信息域模型变换成实现软件所需的数据结构。体系结构设计:定义程序的主要结构元素之间的关系。接口设计:描述了软件内部、软件和协作系统之间的以及软件同人之间如何通信。过程设计:将程序体系结构元素变换为对软件构件的过程描述。,2.软件的总体结构主要回答的问题,软件的组成部分软件的层次关系模块的内部处理逻辑模块之间的界面,3.软件设计的问题,工具 如何描述软件的总体结构方法 用什么方法由问题结构导出软件结构评估准则 什么样的软件结构是“最优的”,5.软件设计分为两个阶段,(
4、1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计 确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,4.软件设计方法,结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD),6 概要设计的任务与步骤,概要设计的过程:(1)设想可能的方案(2)选取合理的方案(3)推荐最佳方案(4)功能分解(5)设计软件结构(6)数据库设计(7)制定测试计划(8)编写文档(9)审查与复审,4.2 软件设计基础,1.软件结构 2.软件过程 3.模块化 4.抽象 5.信息隐蔽 6.信息局部化,软件设计的基本概念,模块(m
5、odule)与构件(component)模块:定义输入、输出和特性的程序实体构件:可重复使用的软件组件抽象(abstract)与细化(refinement)抽象:分层次考虑和处理问题(数据和过程)细化:从高到低的逐步分解过程信息隐藏对其它模块隐藏模块内部的数据和过程软件复用Design with reuse,design for reuse,4.2.1 软件体系结构,软件体系结构包括:(1)过程构件(模块)的层次结构(2)构件间交互的方式(3)构件的数据结构,控制结构(程序结构),深度,宽度,扇出,扇入,(模块的 层数),(同一层最大模块数),(一个模块 直接调用 的模块数),(调用一个给定模
6、 块的模块个数),例子:扇出,例子:扇出,控制结构的层次规则:,只有一个顶层(0层)模块 0层外任一模块都会在它的上下 邻层存在一模块与它有关 同层模块间不发生联系,4.2.2 软件过程,软件过程用以描述各模块的处理细节(算法的详细描述),包括对下层模块控制的操作细节。,4.2.3 模块化(Modularity),模块化是好的软件设计的一个基本准则 高层模块 从整体上把握 问题,隐蔽细节 复杂问题 较小问题 分解 可减小解题所需的总的工作,分解,例:将问题(P1+P2)分解为P1,P2设函数C(x)定义问题 x 的复杂程度函数E(x)确定解决问题 x 需要的工作量对问题P1和P2,如:C(P1
7、)C(P2)显然:E(P1)E(P2)有规律:C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)各个击破理论,文件管理网络管理设备管理高速缓冲存储器,对虚拟文件的字节流,虚拟文件可为任何设备和实体,抽象,4.2.4 抽象(Abstraction),抽象:解决问题时只考虑与问题有关的方面,不考虑与问题无关的方面。即抽出事物的本质特性而不考虑细节。原则应用举例Unix、Windows NT一体化的I/O系统设计,4.2.5信息隐蔽(Information Hiding),信息隐蔽的含义:有效的模块化可以通过定义一组独立模块来实现,这些模块相互之间只交流软件功能必需的信息。
8、换句话说:模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。,软件质量因素:,可维护性 可靠性 可理解性 效率信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。,4.2.6 信息局部化,把关系密切的软件元素物理地放得彼此靠近。优点:可维护性好 可靠性好 可理解性好,4.3 模块的独立性,4.3.1 模块独立性的概念模块独立的含义:模块完成独立的功能符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小,4.3.2 模块独立性的度量,模块独立性取决于模块的内部和外部特征。SD方法提出的定性的度量标准:模块之间的耦合性 模块自身的内
9、聚性,1.模块独立性的度量之一:,耦合性是模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。耦合性越高,模块独立性越弱,无耦合没有依赖关系,松散耦合有少量依赖关系,紧密耦合有很多依赖关系,1.模块独立性的度量之一(续),耦合强度依赖的因素:,一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度,模块间耦合的类型:,低 非直接耦合耦 数据耦合合 标志耦合性 控制耦合 外部耦合 公共耦合 高 内容耦合,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),(1)非直接耦合,两
10、个模块没有直接关系(模快1和模快2),模块独立性最强。,模块1,模块2,模块3,模块4,(2)数据耦合,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据。属松散耦合。,数据耦合举例,开发票,计算水费,单价数量,金额,数据耦合举例,计算水电费,计算水费,计算电费,用水量,用电量,水费,电费,(3)标记耦合(特征耦合),如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费
11、”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,(4)控制耦合,一模块通过开关量、标志、名字等控制信息,明显地控制另一模块的功能。,控制耦合举例,A,计算平均分或最高分,B,求平均/最高(控制信息),成绩,控制耦合举例,读入分数,返回结果,计算平均分,计算最高分,平均/最高?,调用逻辑性模块 B时,须先传递控制信号(平均分/最高分),以选择所需的操作。控制模块必须知道被控模块的内部逻辑,增强了相互依赖.,B,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模
12、块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调 用模块中进行(2)被调用模块分解成若干单一功 能模块,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,控制耦合举例,A,发奖牌,名次(开关量),奖牌,控制耦合,被调用模块内处理逻辑模式,功能A,功能B,判别,改控制耦合为数据耦合举例,A,发金牌,发银牌,发铜牌,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合.外部偶合必不可少,但这种模块数目应尽量少.,(6)公共耦合(公共数据区耦合),一组模块
13、引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构 共享通讯区 内存公共覆盖区等 文件 物理设备,公共耦合,公共耦合举例,common公共数据区,松散的公共耦合,common公共数据区,紧密的公共耦合,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,公共耦合举例,所有的公共 耦合关系,A,E,B,C,D,6个模块共享一个公共数据区,F,(1)软件可理解性降低(模块间存在错综复杂的连系)(2)软件可维护性差(修改变量名或属性困难)(3)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:,(7)内容耦合
14、,一模块直接访问另一模块的内部信息(程序代码、数据或者控制信息)一个模块直接转移到另外一个模块内部最不好内容耦合形式!,发生内容耦合的情形,(1)一模块直接访问另一模块的内部数据(2)一模块不通过正常入口转到 另一模块内(3)两模块有一部分代码重叠(4)一模块有多个入口,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素目标:建立模块间耦合度尽可能松散的系统,如何降低模块间耦合度,(1)如模块必须存在耦合,选择适当的耦合类型原则:尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2)降低模块间接口的复杂性,弱耦合,接口复杂性与耦合类型的关系:,接口复杂性,接口
15、方式,接口数据的复杂性,无接口关系,直接引用,过程调用语句,数据项作参数,数据结构,变量名作参数,内容耦合,基本耦合,开关量,起控制变量作用,全程变量公用数据区,I/O设备,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,非直接耦合,模块的耦合,2.模块独立性的度量之二:内聚性,一个模块内部各成分之间相互 关联的强度设计目标:高内聚(一模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的),模块的内聚性类型:,低 巧合内聚 内 逻辑内聚 聚 时间内聚 性 过程内聚 通信内聚 信息内聚 高 功能内聚,模块独立性,弱(功能分散),强(功能单一),(1)巧合内聚(偶然内聚),模块内各部分间
16、无联系,A,B,C,M,MOVE O TO RREAD FILE FMOVE S TO T,模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差,例:,(2)逻辑内聚,把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的控制参数确定执行哪种功能。逻辑内聚缺点:不易修改 增强了耦合程度(控制耦合)效率低,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,e,f,g,EFG模块内部逻辑,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合程度(控制耦合)不易修改,效率低,公用代码段,公用代码段,(3)时间内聚,模块完成的功能必须在同一时间内执行,这些功能只因时
17、间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合 模块.,(4)过程内聚,模块内各处理成分相关,且必须以特定次序执行,过程内聚模块,建立方程组系数矩阵,全部任务纳入一个模块,得到一过程性模块,高斯消去法,回 代,高斯消去法解题流程,高斯消去法过程,过程内聚模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,(5)通信内聚,模块内各部分使用相同的输入数据,或产生相同的输出对象,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,相同输入,通信内聚模块二例,开领
18、书单,登记售书,发票,领书单,售 书登记表,文件,删除,修改,相同输入,处理相同输出对象,(6)信息内聚,模块完成多个功能,各功能都在同一数据结构 上操作,每一功能有唯一入口。,信息内聚模块,符 号 表,查找,登录,删除,修改,(7)功能内聚,模块仅包括为完成某个功能所必须的所有成分。(模块所有成分共同完成一个功能,缺一不可)内聚性最强内聚与耦合密切相关,同其它模块强耦合的模块意味者弱内聚,强内聚模块意味着与其它模块间松散耦合.设计目标:力争强内聚、弱耦合,块内聚合形式的判定,模块内七种聚合形式的比较,模块的内聚,3.耦合、内聚与模块独立性关系,耦合与内聚都是模块独立性的定性标准,都反映模块独
19、立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。,4.4.1 层次图和HIPO图,IBM公司发明的HIPO图:层次图+输入/处理/输出图(H图)+(IPO图)(Hierachy Input Process Output),4.4 结构设计中的图形工具,层次图、HIPO图、结构图,1.层次图(H图),表示软件的层次结构,正文加工系统,输入,输出,编辑,加标题,存储,检索,编目录,添加,删除,插入,修改,合并,列表,带编号的层次图(H图),正文加工系统,输入 1.0,输出 2.0,编辑 3.0,加标题 4.0,存储 5.0,检索 6.0,编目录 7.0,添加 3.1
20、,删除 3.2,插入 3.3,修改 3.4,合并 3.5,列表 3.6,传统的IPO图举例,输入,处理,输出,命令监控器(1.0)的IPO图,2.HIPO图,H图中每一方框(模块)均有一张IPO图对应,改进的IPO图格式,IPO图,系统:,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,命令监控器,输入,1.0,方华,1999-3-2,命令监控器主控菜单模块,命令监控器主控模块,取得输入、口令确认、请求确认、口令更新处理。输出正确性判断标志。,接收键盘口令,口令正确性判断标志,口令、标志,请求记录权限记录,改进的IPO图格式,HIPO图,系统:
21、,模块:,编号:,作者:,日期:,被调用:,调用:,输出:,输入:,处理:,局部数据元素:,注释:,人事档案管理系统,打印,2.1,方华,1999-3-2,人事档案管理模块,“打印全体人员”模块,“打印部分人员”模块,“打印个人:模块,将全体、按部门、个人的档案数据加工成要求的表格形式,进行输出、现示,人事档案数据和打印选择,打印全体人员、部分人员、个人的档案,HIPO图续,人事管理系统2.1,打印 2.1.1,“打印部分人员”2.1.1.2,“打印全体人员”2.1.1.1,“打印个人模块”2.1.1.3,4.4.2 结构图 SC(Structure Chart),SD方法在概要设计中的主要表
22、达工具约定,编辑学生记录,读学生记录,学生数据,无此学生,学号,不加区分的数据,数据信息,控制信息,SC中的四种模块,传入模块,(a),(b),A,A,传出模块,B,B,变换模块,(c),C,D,协调模块,E,(d),E,F,F,SC中的简单调用,B,A,C,x,y,z,(a),(b),z,B,A,C,1,2,入,出,1,2,x,y,z,z,SC中的选择调用,A,C,B,D,A根据内部判断决定是否调用B,A按另一判定结果选择调用C或D,SC中的循环调用,A,B,C,A根据内在的循环重复调用B、C等模块,结构图(SC)举例,医院管理系统,门诊管理,药房管理,药库管理,病房管理,财务管理,处,方,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4096116.html