软件工程教案_6(第四章).ppt_第1页
软件工程教案_6(第四章).ppt_第2页
软件工程教案_6(第四章).ppt_第3页
软件工程教案_6(第四章).ppt_第4页
软件工程教案_6(第四章).ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章软件设计,主要内容:软件设计的目标和任务软件设计基础模块的独立性结构化设计方法数据设计及文件设计过程设计,讨论要点,(1)如何将分析模型转换为软件设计?(2)作为软件工程师在软件设计方面应使用哪些基本原则和概念?,4.1软件设计的目标和目的,软件需求:解决“做什么”软件设计:解决“怎么做”4.1.1软件设计的任务问题结构(软件需求)软件结构从软件需求规格说明书出发,形成软件的具体设计方案。,映射,将分析模型转换为软件设计,数据字典,数据流图,E-R图,状态变迁图,加,工,规,约,控制规约,数,据,对,描述,象,数据设计,体系结构设计,接口设计,过程设计,分析模型,设计模型,1.软件的总体结构主要回答的问题,软件的组成部分软件的层次关系模块的内部处理逻辑模块之间的界面,2.软件设计的问题,工具如何描述软件的总体结构方法用什么方法有问题结构导出软件结构评估准则什么样的软件结构是“最优的”,3.软件设计方法,结构化设计方法(SD)面向数据结构的设计方法(JSD方法)面向对象的设计方法(OOD),4.软件设计分为两个阶段:,(1)概要设计(总体设计)确定软件的结构以及各组成成分(子系统或模块)之间的相互关系。(2)详细设计确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。,4.1软件设计的原则,Davis提出的软件设计原则:Thedesignprocessshouldnotsufferfrom“tunnelvision.”Thedesignshouldbetraceabletotheanalysismodel.Thedesignshouldnotreinventthewheel.Thedesignshould“minimizetheintellectualdistance”betweenthesoftwareandtheproblematitexistsintherealworld.Thedesignshouldexhibituniformityandintegration.,Thedesignshouldbestructuredtoaccommodatechange.Thedesignshouldbestructuredtodegradegentle,evenwhenaberrantdata,evens,oroperatingconditionsareencountered.Designisnotcoding,codingisnotdesign.Thedesignshouldbeassessedforqualityasitisbeingcreated,notafterthefact.Thedesignshouldbereviewedtominimizeconceptual(semantic)errors.,4.2软件设计的概念和原理,1.软件结构2.软件过程3.模块化4.抽象5.信息隐蔽6.信息局部化,4.2.1软件体系结构,软件体系结构包括两部分:(1)过程构件(模块)的层次结构(2)数据构件,控制结构(程序结构),控制结构是软件模块间关系的表示,控制结构图示:,1.控制结构的层次规则,只有一个顶层(0层)模块0层外任一模块都会在它的邻层存在一模块与它有关同层模块间不发生联系,2.软件结构度量术语,深度,宽度,扇出,扇入,(模块的层数),(同一层最大模块数),(一个模块直接调用的模块数),(调用一个给定模块的模块个数),4.2.2软件过程,软件过程用以描述各模块的处理细节(算法的详细描述),包括对下层模块控制的操作细节。,4.2.3模块化(Modularity),模块化是好的软件设计的一个基本准则高层模块从整体上把握问题,隐蔽细节复杂问题较小问题分解可减小解题所需的总的工作,分解,例:将问题(P1+P2)分解为P1,P2设函数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)各个击破理论,模块化和软件成本,成本或工作量,模块数量,软件总成本,集成成本,成本/模块,M,最小成本区域,4.2.4抽象(Abstraction),抽象原则应用举例WindowsNT一体化的I/O系统设计,文件管理网络管理设备管理高速缓冲存储器,对虚拟文件的字节流,虚拟文件可为任何设备和实体,抽象,4.2.5信息隐蔽(InformationHiding),模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。,软件质量因素:,可维护性可靠性可理解性效率信息隐蔽的目的:提高模块的独立性,减少修改或维护时的影响面。,4.2.6信息局部化,把关系密切的软件元素物理地放得彼此靠近。优点:可维护性好可靠性好可理解性好,4.3模块的独立性,4.3.1模块独立性的概念模块独立的含义:模块完成独立的功能符合信息隐蔽和信息局部化原则模块间关连和依赖程度尽量小,4.3.2模块独立性的度量,模块独立性取决于模块的内部和外部特征。SD方法提出的定性的度量标准:模块之间的耦合性模块自身的内聚性,用三个封装级别表示的软件结构,原始代码行,0级,程序模型(子程序或过程),1级,2级,类/对象结构,结构设计(或1级)标准,用以管理每一对封装级别的元素之间的相互关系,内聚,结构化设计,0级结构体(代码行),1级结构体(程序),TO:,FROM:,0级结构体(代码行),1级结构体(程序),输出端,耦合性,内聚是指度量一个给定的程序内的多行代码的单一功能性,以确定是否达到该程序所要实现的目的。耦合性用来度量程序之间联系的次数和强度,上表的扩展:包括2级封装(所有的类),内聚,结构化设计,0级结构体(代码行),1级结构体(程序),TO:,FROM:,0级结构体(代码行),1级结构体(程序),输出端,耦合性,2级结构体(类),类的耦合,2级结构体(类),类的内聚,类的内聚是模仿了一个程序的内聚。类的耦合性是一种度量类之间联系的次数和强度的方法。,1.模块独立性的度量之一:耦合性,模块间相对独立性(相互依赖程度)的度量耦合性越高,模块独立性越弱,无耦合没有依赖关系,松散耦合有少量依赖关系,紧密耦合有很多依赖关系,耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度,模块间耦合的类型,低无直接耦合耦数据耦合合标记耦合性控制耦合外部耦合公共耦合高内容耦合,模块独立性,弱,(低耦合),强,(中耦合),(较强耦合),(强耦合),(1)无直接耦合,两个模块没有直接关系(模块1和模块2),模块独立性最强。,模块1,模块2,模块3,模块4,(2)数据耦合,一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。属松散耦合。,数据耦合举例,开发票,计算水费,单价数量,金额,(3)标记耦合(特征耦合),如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系,则称这两个模块间存在标记偶合。,标记耦合举例,计算水电费,计算水费,计算电费,住户情况,水费,电费,住户情况,“住户情况”是一个数据结构,图中模块都与此数据结构有关.“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合.,将标记耦合修改为数据耦合举例,计算水电费,计算水费,计算电费,本月用水量,本月用电量,水费,电费,(4)控制耦合,一模块向下属模块传递的信息(开关量、标志等控制被调用模块决策的变量)控制了被调用模块的内部逻辑。,控制耦合举例,A,计算平均分或最高分,B,平均/最高(控制信号),成绩,读入分数,输出结果,计算平均分,计算最高分,平均/最高?,B,控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块,改控制耦合为数据耦合举例,A,计算平均分,B1,平均成绩,最高成绩,计算最高分,B2,(5)外部耦合,一组模块均与同一外部环境关联(例如,I/O模块与特定的设备、格式和通信协议相关联),它们之间便存在外部耦合。外部偶合必不可少,但这种模块数目应尽量少。,(6)公共耦合(公共数据区耦合),一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构共享通讯区内存公共覆盖区等,公共耦合举例,公共数据区,C,B,模块A、B、C间存在错综复杂的联系,(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差,(4)软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量!,公共耦合存在的问题:,(7)内容耦合,一模块直接访问另一模块的内部信息(程序代码或数据),最不好的耦合形式!,A,B,A,B,模块代码重叠,Entry1Entry1,多入口模块,模块化设计的原则和目标,耦合是影响软件复杂程度和设计质量的重要因素目标:建立模块间耦合度尽可能松散的系统,如何降低模块间耦合度:,(1)尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2)降低接口的复杂性,2.模块独立性的度量之二:内聚性,一个模块内部元素在功能上相互关联的强度设计目标:高内聚(模块在软件过程中完成单一的任务),模块的内聚性类型,低偶然内聚0分逻辑内聚1分内时间内聚3分聚过程内聚5分性通信内聚7分信息内聚9分高功能内聚10分,模块独立性,弱(功能分散),强(功能单一),低内聚模块举例,为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列任务:(1)根据初始计算的数据计算补充数据;(2)在用户的工作站上生成错误报告;(3)执行用户要求的跟踪计算;(4)更新数据库;(5)使选择后续处理的菜单有效。虽然上述任务是松散相关的,但每一项都是独立的功能实体,最好作为独立的模块完成。,(1)偶然内聚(巧合内聚),模块内各部分间无联系,A,B,C,M,MOVEOTORREADFILEFMOVESTOT,模块M中的三个语句没有任何联系缺点:可理解性差,可修改性差,例:,(2)逻辑内聚,把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。,逻辑内聚模块,A,B,C,E,F,G,A,B,C,EFG,A1,B1,C1,EFG模块内部逻辑,E、F、G逻辑功能相似,组成新模块EFG,缺点:增强了耦合程度(控制耦合)不易修改,效率低,公用代码段,公用代码段,(3)时间内聚(经典内聚),模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:初始化系统模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块.,(4)过程内聚(顺序性组合),模块内各处理成分相关,且必须以特定次序执行,过程内聚模块,读入成绩单,审查成绩单,统计成绩,打印成绩,读入并审查成绩单,统计并打印成绩单,(5)通信内聚,模块内各部分使用相同的输入数据,或产生相同的输出结果,通信内聚模块例,产生工资报表,计算平均工资,职工工资记录,职工工资报表,平均工资,产生职工工资报表并计算平均工资模块,(6)信息内聚,模块完成多个功能,各功能都在同一数据结构上操作,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论