《软件工程第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)举例,医院管理系统,门诊管理,药房管理,药库管理,病房管理,财务管理,处,方,
23、挂号处理,挂,号,费,总,计,挂号单,挂号费总计,出库处理,进药管理,病历管理,处方管理,常规处理,4.5 概要设计的方法,结构化设计方法(SD)国际上应用最广,技术上比较完善的系统设计方法。结构化设计方法(SD)是以数据流图为基础的,它定义了把数据流图变换成软件结构的不同映射方法,所以这种方法也称为面向数据流的设计方法。,4.5.1 面向数据流的设计方法,1.面向数据流设计方法的基本概念面向数据流的设计要解决的任务:映射 DFD 软件系统的结构 软件系统 软件结构的 逻辑模型 初始结构描述,系统结构特征可归纳为两种典型形式,变换型结构事物型结构,(1)变换型结构,由输入、变换中心和输出三部分
24、组成。基本模型:,变换中心,输入路径,输出路径,变换流示意图,时间,数据流图可分为两种类型:,变换型数据流事物型数据流,变换型数据流图,输入信息,物理输入,格式检查,处理,显示,正确信息,结果,物理输出,数据,变换中心,输出,逻辑输入,逻辑输出,输入,具有明确的输入、变换(或称主加工)和输出界面的DFD,(2)事务型结构,特征:具有在多种事物中选择 执行某类事物的能力基本模型:,事务中心,接受路径,动作路径,大型系统DFD中,变换型和事务型结构往往共存:,T,事务中心,传入,变换,传出,2.面向数据流设计方法的设计步骤,(1)精化DFD(2)确定DFD类型(3)把DFD映射到系统模块结构 设计
25、出模块结构的上层(4)基于DFD逐步分解高层模块 设计出下层模块(5)根据模块独立性原理,精化 模块结构(6)模块接口描述,SD方法的两种映射过渡方法,变换型DFD,事务型DFD,初始SC,初始SC,变换分析,事务分析,4.5.2 变换分析设计方法,步骤:(1)区分输入、变换中心、输出部分,在 DFD 上 标明分界线,B,C,A,D,E,Q,P,R,W,U,V,a,b,c,e,d,r,p,u,w,v,变换中心,输入部分,输出部分,第一级分解后的SC,变换分析设计方法步骤:,(2)第一级分解(建立初始SC框架)设计顶层和第一层模块,第一级分解后的SC(另一种画法),MC,MA1,c,e,u,w,
26、c,p,MA2,Q,P,R,ME1,ME2,e,p,r,r,w,u,w,输入分支的分解1),A,MA,C,B,b,a,c,E,D,d,e,c,e,变换分析设计方法步骤,(3)第二级分解(分解SC各分支)自顶向下分解,设计出每个分支的中、下层模块,输入分支的分解(2),MA,Get C,b,a,c,Read D,d,e,c,e,B to C,b,c,d,e,a,b,Get E,Get B,D to E,A to B,Read A,输出分支的分解,ME,W,Write V,u,u,w,u,v,v,v,Put U,U to V,ME,U,Write W,w,w,u,w,u,V,(1),(2),中心加
27、工分支的分解,MT,P,Q,R,e,c,p,r,u,w,p,r,任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。,4.5.3 事务分析设计方法,事务分析设计方法步骤:,(1)在DFD上确定事务中心、接收部分和发送部分(2)画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和动作发送模块。(3)分解细化接收分支和发送分支,完成初始SC。,事务型DFD的划分,T,事务中心,传入,变换,传出,接收部分,发送部分,事务型SC的上层结构(1),事务控制,接收,顶层,发送,第一层,事务型SC的上层结构(2),事务控制
28、,事务分析,发送,N-S图,动作分支的典型结构,P,T 2,T 1,T i,A 2,D 2,A 1,D 1,A 3,A j,D k,事务层,操作层,细节层,处理层,4.5.4 设计优化,将初始SC根据模块独立性原则进行精化,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,产生设计文档的最终SC。,改进软件结构设计的指导原则,(1)模块功能的完善化(2)消除重复功能(3)模块的作用范围应在控制范围内(4)减少高扇出争取高扇入(5)模块大小适中(6)降低模块接口的复杂性(7)模块功能可预测,软件结构设计的启发式规则,1.提高模块独立性2.深度、宽
29、度、扇出和扇入适中3.设计成单入口、单出口模块,(1)模块功能的完善化,完整的模块应包括三部分:(1)执行规定功能部分(2)出错处理部分(3)需返回给调用者数据时,返回是否正确结束标志。,(2)消除重复功能,A,C,B,C,A,B,C,改进前,改进后,(3)作用范围应在控制范围内(作用域应在控制域内),模块的控制范围(控制域):包括模块本身和其下属模块的集合。,模块的作用范围(作用域):,指受该模块内一个条件判定影响的所有模块的集合。(控制域是从结构方面考虑的,作用域是从功能方面考虑的),A,F,B,C,E,M,D,G,模块的作用范围和控制范围,:条件判定,模块A的作用范围:A、B、C、D、E
30、、F,作用范围/控制范围原则:把一个条件判定的作用范围限制在判定所在模块的控制范围之内。(作用域是控制域的子集),判定位置违反了作用范围/控制范围原则,TOP,A,B,C,D,G,E,条件判定,判定的作用范围有一部分(模块C)越出了判定所在模块G的控制范围,G D B C,符合作用范围/控制范围原则,但判定位置太高,TOP,A,B,C,D,G,E,条件判定,TOP B D G,TOP B C,符合作用范围/控制范围原则,判定位置适中,TOP,A,G,C,D,B,E,条件判定,B D G,B C,符合作用范围/控制范围的理想判定位置,TOP,A,G,E,B,D,C,条件判定,D G,D E,(1
31、)将包含条件判定的模块合并到它的调用模块中,使判定处于较高位置(2)将接受判定影响的模块下移到控制范围内(3)增加模块的重用性(4)减少高扇出,争取高扇入,修改模块结构方法:,(5)模块大小适中,模块过大:可理解程度下降模块过小:开销大于有效操作 系统接口复杂,(6)降低模块接口的复杂性,接口传递信息应简单且和模块功能一致。,例:求一元二次方程的根设求根模块调用形式为:(1)QUADROOT(TBL,X)传递系数的数组 存放根的数组(2)QUADROOT(A,B,C,ROOT1,ROOT2)A,B,C为方程系数 ROOT1,ROOT2是两个根,(7)模块功能可预测,模块看成黑盒子,相同输入产生
32、相同输出,其功能为可预测的。模块带有内部状态其功能可能是不可预测 的。难理解、难测试、难维护。,防止模块功能过分局限,功能单一的模块具有高内聚。但如任意限制局部数据结构的大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。,数据设计,好的数据设计将改善程序结构和模块划分,降低过程复杂性。,接口设计,接口设计主要包括三个方面:设计软件模块间的接口(内部接口);设计模块和其他非人的信息生产者和消费者的接口(外部接口);设计人和计算机间的接口(人机界面)。,体系结构设计优化的指导规则,设计阶段早期应该对程序结构多做精化和评估,以达到最好。便于
33、优化是开发软件体系结构表示的一个重要因素。结构上的简单往往反映出程序的优雅和高效。设计优化应在满足模块化要求的前提下适当减少模块数量。在满足信息需求的前提下尽量减少复杂的数据结构。,体系结构设计优化的指导规则,对模块分割、合并和变动调用关系的指导规则 提高内聚,降低耦合后简化模块接口少用全局性数据和控制型信息保持高扇入/低扇出的原则 作用域/控制域规则 作用域不要超出控制域的范围 位置离受它控制的模块越近越好,体系结构设计优化的指导规则,对于性能要求高的应用,有时需要进行如下的工作:开发和精化程序结构,且不考虑关键性能而进行的优化。使用可以提高运行性能的CASE工具来孤立低效的部分。在后期设计
34、中,对有可能最消耗时间的模块的算法进行时间优化。用适当的程序设计语言编码。孤立出那些大量占用处理器时间的模块。如果需要,用依赖机器的语言重新设计和编码,以提高效率。先使其工作起来,再设法使其更好地工作。,4.6详细设计(过程设计),目的确定模块采用的算法和块内数据结构任务:编写软件的“过程设计说明书”为每个模块确定采用的算法 确定每一模块使用的数据结构 确定模块接口的细节 原则清晰第一的设计风格结构化的控制结构逐步细化的实现方法,详细设计的描述方法,详细设计工具:(1)图形工具(2)表格工具(3)语言工具,程序设计工具,程序流程图盒图(N-S图)问题分析图(PAD)4.过程设计语言(PDL)(
35、伪代码)5.判定表6.Jackson System Development(JSD),结构程序设计的特点:自顶向下逐步求精;具有单入、单出的控制结构(取消GOTO语句),1、程序流程图(Program Flow Chart),5(或3)种基本控制结构为:,(1)顺序结构(sequential structure),(2)选择结构(selective structure),(3)先判定型循环结构(while-loop structure),(4)后判定型循环结构(until-loop structure),(5)多情况选择(case structure),任何复杂的程序流程图都应由以上五种基本结
36、构组合而成。,缺点:本质上不具备逐步求精的特点,对于提高 大型系统的可理解性作用甚微;不易表示数据结构;转移控制太方便。,趋势:减少使用,优点:容易掌握,且历史“悠久”,使用广泛。,系统流程图图例,早于DFD的一种建模工具。以图形方式说明系统中的控制流和数据,处理框,选择框,循环框(较新版),文件,I/O框,i=0,循环体,i10,流程起点或终点,2.盒图(N-S图),用方框图代替传统的流程图描述五种基本控制结构的图形构件(1)顺序型,A,B,C,A,B,F,条件,T,A,F,T,条件,then 部分,then 部分,else部分,(2)选择型(If then else),If then el
37、se If then,(3)多分支选择型(CASE型),A1,值1,A2,An,.,.,条件,值2,值n,(4)WHILE重复型(5)UNTIL重复型,S(循环体),DO-WHILE P,S(循环体),REPEAT UNTIL P,(先测试循环),(后测试循环),循环条件,(6)并行结构,A1,A2,An,.,(7)移出标记,A,C,B,F,X6,T,A:,D,(调用结构),例:,特点:控制不能随意转移:没有箭头,不允许随意转移控制;结构化功能域清晰:每个矩形框(Case中条件取值例外)都是一个功能域(即一个特定结构的作用域),结构表示明确;数据的作用域清晰:局部及全程数据的作用域易见;易表现
38、嵌套关系(embedded structure)以及模块的层次结构。,3.问题分析图(PAD),(Problem Analysis Diagram)基本控制结构:(1)顺序结构(2)选择结构,A,B,C,A,B,T,F,条件,(3)重复结构,WHILE C,S,UNTIL C,S,(先测试循环),(后测试循环),等价的PASCAL语言:REPEAT S UNTIL C,等价的PASCAL语言:WHILE C DO S,(4)多分支选择型(CASE型),A1,值1,值2,值n,A2,An,.,.,.,.,条件,特点:没有箭头,不允许随意转移控制;每个矩形框(Case中条件取值例外)都是一个功能域
39、(即一个特定结构的作用域),结构表示明确;局部及全程数据的作用域易见;易表现嵌套关系(embedded structure)以及模块的层次结构。,4.结构化语言,结构化语言/伪代码/过程设计语言PDL结构化语言介于自然语言与计算机语言之间。语句类型:顺序语句、条件语句、循环语句。,结构化语言举例商店业务处理系统中检查发货单的例子,IF 发货单金额超过$500 THENIF 欠款超过60天 THEN在偿还欠款前不予批准ELSE(欠款未超期)发批准书及发货单ENDIFELSE(发货单金额未超过$500)IF 欠款超过60天 THEN发批准书,发货单及催款通知ELSE(欠款未超期)发批准书及发货单E
40、NDIFENDIF,过程设计语言(PDL Program Design Language),优点:易于实现由PDL到源代码的自动转换。,PDL应具备以下特点:有固定的外语法(keyword);,有数据说明,例如:TYPE number IS STRING LENGTH(12)TYPE table IS INSTANCE OF symbol_table,有子程序定义与调用机制,例如:PROCEDURE INTERFACE pseudocode lines END 调用时可用:PERFORM USING,内语法用自然语言描述;,抽象类型,PDL的基本组成,(1)数据说明declare as 数据名
41、为变量名或常量名表限定词为 scalar,array,list,char,structure(2)子程序结构procedure interface(3)分程序结构begin end,伪代码表示的3种基本结构,顺序结构A seq B C DA end,选择结构A select cond1 BA or cond2 CA or cond3 DA end,循环结构A iter BA end,5.判定(决策)表&判定(决策)树(Decision Table&Tree)表示复杂的条件(input)组合与应做动作(output)之间的对应关系。如果判断的条件较多,各条件又相互组合,则使用决策表比较好。,例:
42、P.86 航空行李托运费的算法按规定:重量不超过30公斤的行李可免费托运。重量超过30公斤时,对超运部分,头等舱国内乘客收4元/公斤;其它舱位国内乘客收6元/公斤;外国乘客收费为国内乘客的2倍;残疾乘客的收费为正常乘客的1/2。,决策表举例2:超产奖决策表,在对加工的描述中,如果条件比较多,而且又互相组合,则比较适合使用决策表。决策表的田字型结构:条件、状态、决策方案、决策规则。决策表的读表方法:顺时针方向。,决策表的绘制步骤,分析决策问题涉及几个条件。分析每个条件有几个取值区间。画出条件取值分析表,分析条件的各种可能组合。分析决策问题涉及几个决策方案。画出有条件组合的决策表。决定各种条件组合
43、的决策方案,即填写决策规则。合并化简决策表,即相同决策方案所对应的各个条件组合是否存在无需判断的条件。,决策树是一种图形工具,适合于描述加工中具有多个策略,而且每个策略和若干条件有关的逻辑功能。,决策树,用判定树表示计算行李费的算法,注:判定表与判定树并不适用于作为一种通用的设计工具,通常将之用于辅助测试,决策树举例2:超产奖决策树,6.Jackson System Development(JSD),与SD的由DFD导出结构设计不同,JSD是以数据结构(data structure)为基础设计每个模块的处理过程。,1、Jackson Diagram:,注意:JD中的方框代表几个语句构成的简单操
44、作;表现组成关系。,第1步:用Jackson图描述 IO 的数据结构,第2步:在两个图中指出有直接因果关系(causality)、可以同时处理的单元(重复的次序,次数均相同),s,经过程序处理由正文文件得到输出表格。,每处理输入中一个字符串后就得到输出中一个串信息,二者重复次序和次数均相同。,字符不与多字符组成的字符串对应。,单个空格不能决定空格数。,统计空格,分析字符串*,分析字符*,I,注:顺序执行的处理中不允许混有重复执行或选择执行的处理。,第3步:Data structure Program structure,把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准),第
45、4步:列出所有操作条件,并分配到上幅程序结构图中,打开文件读入字符串空格总数totalsum=0关闭文件仃止,第5步:用Pseudocode 表示程序。,过程设计,目的确定模块采用的算法和块内数据结构任务:编写软件的“过程设计说明书”为每个模块确定采用的算法 确定每一模块使用的数据结构 确定模块接口的细节,一个模块内的软件过程,过程设计的原则,清晰第一的设计风格结构化的控制结构逐步细化的实现方法,软件设计文档,软件设计说明书范围 数据设计 体系结构设计接口设计 模块的过程设计 其它,包括测试的考虑,确保设计满足所有需求,设计约束和一些特殊注解等内容。,设计复审(design review),及早发现设计中的缺陷差错的传播复审的内容概要设计复审 系统的总体结构,模块划分,内外接口 详细设计复审 各个模块的具体设计,小结,软件设计包括四个既相互独立又相互联系的活动:数据设计、体系结构设计、接口设计和过程设计。数据设计将分析模型中的数据对象转换成数据结构体系结构设计方法使用分析模型中信息流的特征来导出程序结构接口设计包括内部和外部程序接口,以及用户界面设计过程设计利用结构化程序设计方法和设计符号体系表示过程细节。,