软件工程05总体设计

上传人:青*** 文档编号:243144267 上传时间:2024-09-16 格式:PPTX 页数:114 大小:1.51MB
返回 下载 相关 举报
软件工程05总体设计_第1页
第1页 / 共114页
软件工程05总体设计_第2页
第2页 / 共114页
软件工程05总体设计_第3页
第3页 / 共114页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,个人成果,妥善保存,请勿传播,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,个人成果,妥善保存,请勿传播,软件工程(run jin n chn),岐兵,第一页,共114页。,可行性研究,需求(xqi)分析,概要(giyo)设计,详细(xingx)设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,软件使用与维护,软件生命周期,第二页,共114页。,软件开发的三个关联(gunlin)步骤,每个步骤(bzhu)都按某种方式进行信息变换,最后得到有效的计算机软件,第三页,共114页。,分析模型(mxng)和设计模型(mxng)的转换,将分析模型转换(zhunhun)为软件设计,第四页,共114页。,软件设计是后续开发步骤及软件维护工作基础如果没有设计,只能(zh nn)建立一个不稳定的系统结构,第五页,共114页。,软件设计的任务(rn wu),从工程管理(gunl)的角度来看,软件设计分两步完成,第六页,共114页。,软件设计的任务(rn wu),从工程管理的角度来看,软件设计分两步完成,总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。,详细设计,即过程设计。通过(tnggu)对结构表示进行细化,得到软件详细的数据结构和算法。,第七页,共114页。,课程内容提纲(tgng),第3章:“总体设计”,总体设计过程,软件设计原理,软件设计中的启发(qf)规则,描绘软件结构的图形工具,面向数据流的设计方法,第八页,共114页。,总体设计过程(guchng),总体设计(概要(giyo)设计或初步设计),划分出组成系统的物理元素,程序、文件、数据库、人工过程和文档等,并不涉及物理元素内部设计,总体设计阶段的一项任务是设计软件结构,确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系,第九页,共114页。,总体设计过程(guchng),总体设计过程,总体设计过程一般分为两个(lin )阶段,系统设计阶段:确定系统的具体实现方案,结构设计阶段:确定软件的结构,第十页,共114页。,总体设计过程(guchng),总体设计的步骤,1 设想供选择的方案,提出各种可能的实现方案,以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统(xtng)方案,设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法,余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统(xtng),第十一页,共114页。,总体设计过程(guchng),总体设计的步骤,2 选取合理方案,从前一步得到的一系列供选择的方案中选取若干个合理的方案,通常至少选取低成本、中等成本和高成本的三种方案,在此基础上分析员对每种方案准备四份文档:,系统流程图,组成系统的物理(wl)元素清单,成本/效益分析,实现这个系统的进度计划,第十二页,共114页。,总体设计过程(guchng),总体设计的步骤,3 推荐最佳方案,综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐,用户和技术专家应认真审查所推荐的最佳系统,如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批,在使用部门的负责人也接受(jishu)了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计,第十三页,共114页。,总体设计过程(guchng),总体设计的步骤,4 功能分解,目标系统的实现一般要分两步进行:,首先是进行结构设计,确定系统是由哪些模块组成的,以及(yj)这些模块之间的关系,确定软件体系结构、数据结构,其次是过程设计,确定每个模块的处理过程,确定详细的数据结构、算法,结构设计是总体设计阶段的任务,而过程设计是详细设计阶段的任务。,第十四页,共114页。,总体设计过程(guchng),总体设计的步骤,4 功能分解,为确定(qudng)软件结构,首先需要从实现角度把复杂的功能进一步分解,用算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能,应该使每个功能对大多数程序员而言都是明显易懂的,第十五页,共114页。,总体设计过程(guchng),总体设计的步骤,5 设计软件结构,模块确定以后,每个模块的功能也就随之确定,把这些模块自顶向下组成一种良好的层次调用关系,就完成(wn chng)了软件结构设计的任务,如果数据流图已经细化到适当的层次,那么我们便可以从数据流图映射成软件结构图,第十六页,共114页。,总体设计过程(guchng),总体设计的步骤,6 设计数据库,数据库的设计一般包括如下几步:,模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或网状等,子模式设计:为系统中各用户设计出各自的数据视图(sht),存储模式设计:确定数据库的空间需求、存储格式、索引组成等,第十七页,共114页。,总体设计过程(guchng),总体设计的步骤,7 制定测试(csh)计划,在软件开发的早期阶段考虑测试(csh)问题,使软件设计人员在设计时注意软件的可测试(csh)性,第十八页,共114页。,总体设计过程(guchng),总体设计的步骤,8 书写文档,系统(xtng)说明,系统(xtng)流程图:描绘系统(xtng)构成方案、组成系统(xtng)的物理元素,成本/效益分析,对最佳方案的概括描述、精化的数据流图,用层次图或结构图描绘的软件结构,用IPO图或其它工具简要描述各个模块的算法,模块间接口关系、建立需求、功能和模块三者之间的交叉参照关系,第十九页,共114页。,总体设计过程(guchng),总体设计的步骤,8 书写文档,用户手册,测试计划,测试策略(cl)、测试方案、预期的测试结果、测试进度计划等,详细的实现计划,数据库设计结果,数据库系统的选择、模式、子模式、存储模式的设计结果等,第二十页,共114页。,总体设计过程(guchng),总体设计的步骤,9 复审,对总体设计的结果进行严格的技术审查(shnch),在技术审查(shnch)通过之后再由使用部门的负责人从管理角度进行复审,第二十一页,共114页。,课程内容提纲(tgng),第3章:“总体设计”,总体设计过程,软件设计原理,软件设计中的启发规则,描绘软件结构的图形(txng)工具,面向数据流的设计方法,第二十二页,共114页。,软件设计原理(yunl),1. 抽象,抽象:人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。,抽象就是:抽出本质(bnzh),忽略细节,分层理解,第二十三页,共114页。,软件设计原理(yunl),举例说明:软件工程各阶段(jidun)的抽象,在可行性研究阶段(jidun),软件作为系统的一个完整部件;,在需求分析阶段(jidun),软件解法是使用在问题环境内熟悉的方式描述;,进入总体设计向详细设计过渡阶段(jidun),抽象的程度将随之减少;,最后当源程序被写出后,抽象则达到最低层,第二十四页,共114页。,软件设计原理(yunl),2. 模块化,模块:是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。,PASCAL或 Ada 这样的块结构语言(yyn)中的BeginEnd对,C、C+和Java语言(yyn)中的 . 对,过程、函数、子程序和宏等,面向对象方法学中的对象(见第9章)是模块,对象内的方法(或称为服务)也是模块,第二十五页,共114页。,软件设计原理(yunl),模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成(j chn)起来构成一个整体,可以完成指定的功能满足用户的需求。,模块化的数学依据,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),第二十六页,共114页。,软件设计原理(yunl),E(P1+P2+Pn)E(P1)+E(P2)+ +E(Pn),以上揭示了把一个复杂问题分成许多容易解决的小问题,原来问题将容易解决,每个程序都相应地有一个最适当(shdng)的模块数目M,使得系统的开发成本最小。,M,成本,/,模块,接口成本,软件总成本,成本,模块数,最小成本区,第二十七页,共114页。,软件设计原理(yunl),3. 逐步求精,逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。,其作用(zuyng)就在于它能帮助软件工程师把精力集中在与当前开发阶段最相关的那些方面上,忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。,第二十八页,共114页。,软件设计原理(yunl),3. 逐步求精,Miller法则:,一个人在任何时候都只能(zh nn)把注意力集中在(72)个知识块上,Miller法则是人类智力的基本局限,我们不可能战胜自己的自然本性,只能(zh nn)接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工作,第二十九页,共114页。,软件设计原理(yunl),3. 逐步求精,抽象与求精是一对互补的概念,抽象使得设计者能够说明过程和数据,同时(tngsh)却忽略低层细节;可以把抽象看作是一种通过忽略多余的细节同时(tngsh)强调有关的细节,而实现逐步求精的方法,求精则帮助设计者在设计过程中逐步揭示出低层细节,这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型,第三十页,共114页。,软件设计原理(yunl),4. 信息隐蔽和局部化,信息隐蔽原理,应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要(xyo)这些信息的模块来说,是不能访问的,局部化,是把一些关系密切的软件元素物理地放得彼此靠近。显然, 局部化有助于实现信息隐藏,第三十一页,共114页。,软件设计原理(yunl),5. 模块独立性,模块独立性的概念是模块化、抽象化、信息隐蔽概念的一个直接产物(chnw),强调模块的独立性,有两个重要原因:,模块化程度较高的软件容易编制,独立的模块比较容易维护和测试,模块独立是好设计的关键,而设计又是决定软件质量的关键环节,第三十二页,共114页。,软件设计原理(yunl),5. 模块独立性,模块的独立程度可以由两个定性(dng xng)标准度量,这两个标准分别称为内聚和耦合,耦合(Coupling) & 内聚(Cohesion),第三十三页,共114页。,软件设计原理(yunl),5.1 耦合,耦合:是对一个软件结构内不同模块之间互连程度的度量,耦合强弱取决于模块间接口复杂程度,进入或访问一个模块的点,以及通过(tnggu)接口的数据,模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性,第三十四页,共114页。,软件设计原理(yunl),Great deal of dependence,Independent,高耦合,中等耦合,无耦合,耦合表示一个软件结构内各个模块之间的互连程度,应尽量(jnling)选用松散耦合的系统,第三十五页,共114页。,软件设计原理(yunl),例1:A访问C的内部数据或不通过正常(zhngchng)入口而转入C的内部,A,B,C,D,A:,goto C1,C:,C1:,独立性由弱到强(耦合程度由强到弱)排列为:, 内容耦合: 一个模块直接影响另一个,模块,调用或操纵(cozng)其他模块的数据,第三十六页,共114页。,软件设计原理(yunl),例2:部分代码重叠(常现在(xinzi)汇编程序中),B,A,例3:一个模块有多个入口(r ku)(功能),A:,entry 1:,entry 2:,第三十七页,共114页。,软件设计原理(yunl),如果发生下列情形,模块间就发生了内容耦合,(1) 一个模块直接访问另一个模块的内部数据,(2) 一个模块不通过正常入口转到另一模块内部,(3) 两个模块有一部分程序代码重迭(zhn di)(只可能出现在汇编语言中),(4) 一个模块有多个入口,第三十八页,共114页。,软件设计原理(yunl), 公共耦合:几个模块共享一个数据(shj)区域,Global : V1,V2,A:,A1=V1+V2,B:,V1=B1,Global : V1,V2,A:,V1+,B:,V2=B1+V1,缺陷: 公共(gnggng)部分的改动将影响所有调用它的模块;, 公共(gnggng)部分的数据存取无法控制;, 复杂程度随耦合模块的个数增加而增加。,第三十九页,共114页。,软件设计原理(yunl), 特征耦合:把整个数据结构(sh j ji u)作为参数传递而被调用模块只使用其中一部分数据元素时就出现了特征耦合。, 控制耦合:一个模块通过传递(chund)控制信息来控制另一个模块,A,B,Flag,F2,F1,Fn,Flag,接口单一,但影响被控模块的内部逻辑,第四十页,共114页。,软件设计原理(yunl), 数据耦合: 只有数据在模块之间进行交换,只通过参数传递基本类型的数据,标记耦合与数据耦合形式相同,区别(qbi)在于调用时传递的参数是否为基本数据类型, 标记(bioj)耦合: 模块间通过参数表传递记录信息,这个记录是某一数据结构的子结构,而不是简单变量,非直接耦合,:,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,非直接耦合的模块独立性最强,第四十一页,共114页。,软件设计原理(yunl),关于“耦合”的使用原则,尽量使用数据(shj)耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合,第四十二页,共114页。,软件设计原理(yunl),5.2 内聚,内聚:标志着一个模块内各个(gg)元素彼此结合的紧密程度,内聚和耦合都是进行模块化设计的有力工具,实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上,第四十三页,共114页。,软件设计原理(yunl),5.2 内聚,内聚有七种,由弱到强分别为,偶然内聚-逻辑内聚-时间(shjin)内聚-过程内聚-通信内聚-顺序内聚-功能内聚,第四十四页,共114页。,软件设计原理(yunl),5.2 内聚,偶然内聚(低内聚),如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚,有时在写完一个程序之后(zhhu),发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块。,第四十五页,共114页。,软件设计原理(yunl),5.2 内聚,逻辑内聚(低内聚),如果一个模块完成的任务在逻辑上属于相同或相似(xin s)的一类,由参数决定模块执行的功能,则称为逻辑内聚,例如,一个模块产生各种类型的全部输出,A:,Read inputs,from disk,from tape,from ,第四十六页,共114页。,软件设计原理(yunl),5.2 内聚,时间内聚 (低内聚),如果一个模块包含的任务必须在同一段时间内执行,就叫时间内聚,例如,模块完成各种初始化工作或当一个模块处理意外故障时,这个模块必须在中断处理的同时完成关闭文件(wnjin)、报警和保留现场等任务,这就构成了时间内聚。,第四十七页,共114页。,软件设计原理(yunl),5.2 内聚,过程内聚 (中内聚),如果一个模块内的处理元素是相关(xinggun)的而且以特定次序执行,则称为过程内聚。,使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块,enter data,check data,manipulate data,第四十八页,共114页。,软件设计原理(yunl),5.2 内聚,通信内聚 (中内聚),如果模块中所有元素都使用同一个(y )输入数据和(或)产生同一个(y )输出数据,则称为通信内聚。,例如,一个(y )模块的功能是从输入的文件中读出数据,然后由这些数据产生报表,同时也由这些数据产生单项报表。,例如:从同一磁带上读取不相干的数据 可能破坏独立性,第四十九页,共114页。,软件设计原理(yunl),第五十页,共114页。,软件设计原理(yunl),5.2 内聚,顺序内聚 (高内聚),如果一个(y )模块内的处理元素和同一个(y )功能密切相关,而且这些处理必须顺序执行(通常一个(y )处理元素的输出数据作为下一个(y )处理元素的输人数据),则称为顺序内聚。,例如,一个(y )解非线性方程组的模块,它的功能依次为:输入常数项系数,求解,输出方程组的解。,第五十一页,共114页。,软件设计原理(yunl),5.2 内聚,顺序(shnx)内聚 (高内聚),第五十二页,共114页。,软件设计原理(yunl),5.2 内聚,功能内聚 (高内聚),如果模块内所有处理元素属于一个整体(zhngt),完成一个单一的功能,则称为功能内聚。,例如,一个模块只完成矩阵加法运算或只打印输出一种特定的表格功能。,第五十三页,共114页。,软件设计原理(yunl),七种内聚的优劣评分,将得到如下结果:,功能内聚 10分 时间内聚 3分,顺序内聚 9分 逻辑内聚 1分,通信内聚 7分 偶然内聚 0分,过程(guchng)内聚 5分,对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软件设计的一贯原则,第五十四页,共114页。,软件设计原理(yunl), 耦合、内聚与模块(m kui)独立性的关系:,第五十五页,共114页。,课程内容提纲(tgng),第3章:“总体设计”,总体设计过程,软件设计原理,软件设计中的启发规则(guz),描绘软件结构的图形工具,面向数据流的设计方法,第五十六页,共114页。,软件设计中的启发(qf)规则,结构设计原则(yunz),第五十七页,共114页。,软件设计中的启发(qf)规则,结构设计原则(yunz),总结经验“启发式规则”,找到改进软件设计,提高软件质量的途径,1. 提高模块独立性,争取低耦合、高内聚(增加内聚 减少耦合),2. 模块规模适中,过大不易理解;太小则接口开销过大,注意分解后不应降低模块的独立性,第五十八页,共114页。,软件设计中的启发(qf)规则,3. 选择适当(shdng)的深度、宽度、扇出和扇入,第五十九页,共114页。,软件设计中的启发(qf)规则,3. 选择适当的深度、宽度、扇出和扇入,深度 = 分层的层数,过大表示(biosh)分工过细,宽度 = 同一层上模块数的最大值,过大表示(biosh)系统复杂度大,第六十页,共114页。,软件设计中的启发(qf)规则, 扇出 = 一个模块(m kui)直接调用控制的模块(m kui)数。 3 fan-out 9,A,A,的扇出,A,A,的扇入, 扇入 = 直接调用(dioyng)该模块的模块数,在不破坏独立性的前提下,fan-in 大的比较好。,第六十一页,共114页。,软件设计中的启发(qf)规则,3. 选择适当的深度、宽度、扇出和扇入,深度:表示软件结构中控制的层数,深度能粗略地标志一个系统的大小和复杂程度,深度和程序(chngx)长度之间有粗略的对应关系,宽度:表示软件结构中控制的总跨度,宽度是同一个层次上的模块总数的最大值,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出,扇出:表示一个模块直接控制(调用)的模块数目,扇出为3-4,上限扇出为5-9,扇入:表示有多少个上级模块直接调用该模块,扇入越大则共享该模块的上级模块数目越多。,软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有高扇入,第六十二页,共114页。,软件设计中的启发(qf)规则,4. 模块的作用域应在其控制域之内,模块的作用域,受模块判定条件影,响的所有(suyu)模块集合,模块的控制域,模块本身以及所有(suyu),直接从属模块的集合,第六十三页,共114页。,4. 作用域在控制(kngzh)域内, 控制(kngzh)域,M,A,C,B,M的控制(kngzh)域为 M,A,B,C, 作用域:M中的一个判定(pndng)所影响的模块。,例如:,A:,if ,then goto B1,B:,B1:,作用域在控制域内,A:,if ,then goto M1,M:,M1: goto C1,作用域超出了控制域,上例,(,右图,),中,A,的作用超出了控制域。改进方法之一,可以把,A,中的,if,移到,M,中;方法之二,可以把,C,移到,A,下面。,第六十四页,共114页。,软件设计中的启发(qf)规则,4. 模块的作用域应在其控制(kngzh)域之内,上移判断点:使该判断层次升高以扩大它的控制(kngzh)范围;,下移受判断影响的模块:将受判断影响的模块下移到判断所在模块的控制(kngzh)范围内,第六十五页,共114页。,软件设计中的启发(qf)规则,5. 降低接口的复杂程度,接口复杂可能表明模块的独立性差,6. 单出单入,避免内容耦合,7. 模块功能可预测,相同输入必产生(chnshng)相同输出,反例:模块中使用全局变量或静态变量,则可能导致不可预测,第六十六页,共114页。,软件模块结构(jigu)的改进,模块功能的完善化,一个(y )完整的模块应当有以下几部分:,执行规定的功能的部分;,出错处理的部分,当模块不能完成规定的功能时,必须回送出错标志,出现例外情况的原因,如果需要返回数据给它的调用者,在完成数据加工或结束时, 应当给它的调用者返回一个(y )状态码。,第六十七页,共114页。,消除重复功能(gngnng),改善软件结构,完全相似,在结构上完全相似,可能只在数据类型上不一,此时可以采取完全合并的方法,局部相似,找出其相同部分,分离出去,重新定义成一个独立的下一层模块,还可以与它的上级模块合并,软件模块(m kui)结构的改进,第六十八页,共114页。,消除重复功能,改善(gishn)软件结构,完全相似,完全合并,局部相似,分离,与上级合并,软件模块结构(jigu)的改进,第六十九页,共114页。,模块的作用范围应在控制范围之内,尽可能减少高扇出结构,随深度增大扇入,如果一个(y )模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块,应当适当增加中间层次的控制模块,软件模块(m kui)结构的改进,第七十页,共114页。,避免或减少使用病态联接,应限制使用如下三种病态联接,1.直接病态联接 即模块A直接从模块B内部取出某些(mu xi)数据,或者把某些(mu xi)数据直接送到模块B内部,软件模块结构(jigu)的改进,第七十一页,共114页。,避免或减少使用病态联接,应限制使用如下三种病态联接,2.公共数据域病态联接,模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块,这种方式(fngsh)将使得模块间的耦合程度剧增,它不仅影响模块和模块,而且影响与公共数据域有关联的所有模块,软件(run jin)模块结构的改进,第七十二页,共114页。,避免或减少使用病态联接,应限制使用如下三种病态联接,3.通信模块联接 即模块A和模块B通过通信模块TABLEIT传送数据。从表面(biomin)看这不是病态联接,因为模块和模块B都未涉及通信模块TABLEIT的内部。,然而,它们之间的通信(即数据传送)没有通过它们的上级模块,从这个意义上讲,这种联接是病态的。,软件(run jin)模块结构的改进,第七十三页,共114页。,模块的大小要适中,模块大小,可以用模块中语句的数量来衡量,模块的大小应限制在一定(ydng)的范围之内,一个模块的语句超过30行以后,可理解性迅速下降,通常规定其语句行数在50100左右,保持在一页纸之内,最多不超过500行,软件模块结构(jigu)的改进,第七十四页,共114页。,设计功能可预测的模块,但要避免过分受限制的模块,一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结果,如果模块内部蕴藏有一些(yxi)特殊的鲜为人知的功能时,这个模块就可能是不可预测的,对于这种模块,如果调用者不小心使用,其结果将不可预测,软件模块结构(jigu)的改进,第七十五页,共114页。,第七十六页,共114页。,设计功能可预测的模块,但要避免过分受限制的模块,如果一个模块的局部数据结构的大小、控制流的选择或者与外界(人、硬软件) 的接口模式被限制死了,则很难适应用户新的要求或环境的变更(bingng),为了能够适应将来的变更(bingng),软件模块中局部数据结构的大小应当是可控制的,控制流的选择对于调用者来说,应当是可预测的。而与外界的接口应当是灵活的。,软件模块结构(jigu)的改进,第七十七页,共114页。,软件应满足(mnz)设计约束和可移植性,为了使得软件可以在某些特定的环境下能够安装和运行,对软件提出了一些设计约束和可移植的要求,例如,设计约束有时要求一个程序段在存储器中覆盖自身。当这种情况出现时,设计出来的软件程序结构不得不根据重复程度、访问频率、调用间隔等等特性,重新加以组织。,软件模块结构(jigu)的改进,第七十八页,共114页。,设计(shj)的后处理,为每一个模块写一份处理说明,为每一个模块提供一份接口说明,确定全局数据结构和局部数据结构,指出所有的设计约束(yush)和限制,进行概要设计的评审,进行设计的优化(如果需要和可能的话),第七十九页,共114页。,课程内容提纲(tgng),第3章:“总体设计”,总体设计过程,软件设计原理,软件设计中的启发规则,描绘软件结构的图形(txng)工具,面向数据流的设计方法,第八十页,共114页。,描绘软件结构的图形(txng)工具,总体设计阶段常用的几种图形工具(gngj),层次图,HIPO图,结构图(SC图),第八十一页,共114页。,描绘软件结构的图形(txng)工具,层次图和HIPO图,层次图:每个方框(fn kun)代表一个模块,方框(fn kun)间的连线表示调用关系,例如 正文加工系统,正文(zhngwn)加工系统,输入,输出,编辑,加标题,存储,检索,列表,编目录,格式化,合并,修改,添加,删除,插入,第八十二页,共114页。,描绘(miohu)软件结构的图形工具,层次图和HIPO图,HIPO图:HIPO图是美国IBM公司发明的“层次加输入/处理(chl)/输出”图的英文缩写,正文加工系统,输入,1.0,输出,2.0,编辑,3.0,加标题,4.0,存储,5.0,检索,6.0,列表,3.6,编目录,7.0,格式化,8.0,合并,3.5,修改,3.4,添加,3.1,删除,3.2,插入,3.3,第八十三页,共114页。,描绘软件结构的图形(txng)工具,HIPO图,和H图中每个方框相对(xingdu)应,应该有一张IPO图描绘这个方框代表的模块的处理过程,系统:,模块(m kui):,编号:,作者:,日期:,IPO,图,被调用:,输 入:,调 用:,输 出:,处 理:,局部数据元素:,注 释:,第八十四页,共114页。,描绘软件结构的图形(txng)工具,结构图SC图,Yourdon提出的结构图是进行软件结构设计的一个(y )有力工具,结构图反映程序中模块之间的层次调用关系和联系,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递,第八十五页,共114页。,描绘(miohu)软件结构的图形工具,结构图SC图,模块:模块用矩形框表示(biosh),并用模块的名字标记它,第八十六页,共114页。,描绘(miohu)软件结构的图形工具,结构图SC图,模块的调用关系和接口:模块之间用单向箭头联结(linji),箭头从调用模块指向被调用模块,第八十七页,共114页。,描绘(miohu)软件结构的图形工具,结构图SC图,模块间的信息传递,当一个模块调用另一个模块时,调用模块把数据或控制(kngzh)信息传送给被调用模块,以使被调用模块能够运行,被调用模块在执行过程中又把它产生的数据或控制(kngzh)信息回送给调用模块,第八十八页,共114页。,描绘(miohu)软件结构的图形工具,结构图SC图,在模块(m kui)A的箭头尾部标以一个菱形符号,表示模块(m kui)A有条件地调用另一个模块(m kui)B。当一个在调用箭头尾部标以一个弧形符号,表示模块(m kui)A反复调用模块(m kui)C和模块(m kui)D,第八十九页,共114页。,描绘软件结构的图形(txng)工具,结构图,SC,图,产生(chnshng)最佳解,计算(j sun)最佳解,得到好输入,输出结果,编辑输入,读输入,显示结果,结果格式化,编辑结果,原始输入,原始输入,好输入,好输入,解,解,解,格式化的解,格式化的解,第九十页,共114页。,描绘(miohu)软件结构的图形工具,结构图SC图,通常用层次图作为描绘软件结构的文档,利用IPO图或数据字典中的信息得到模块调用(dioyng)时传递的信息,由层次图导出结构图的过程,导出结构图可以作为检查设计正确性和评价模块独立性的好方法,第九十一页,共114页。,课程内容提纲(tgng),第3章:“总体设计”,总体设计过程,软件设计原理,软件设计中的启发规则(guz),描绘软件结构的图形工具,面向数据流的设计方法,第九十二页,共114页。,面向数据流的设计(shj)方法,基本原理,又称为 SD:Structural Design,面向数据流的设计方法把信息流映射成软件结构。,信息流的类型(lixng)决定了映射的方法,信息流有下述两种类型(lixng),变化流,事务流,第九十三页,共114页。,面向(min xin)数据流的设计方法,基本原理,变换流,信息通常(tngchng)以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界”的形式离开系统,信息(xnx),时间,输入流,输出流,变换流,信息流,第九十四页,共114页。,面向(min xin)数据流的设计方法,基本原理,事务流,这种数据流是“以事务为中心的”,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干动作序列中选出一个执行(zhxng),(1)接收输入数据(输人数据又称为事务);,(2)分析每个事务以确定它的类型;,(3)根据事务类型选取一条活动通路。,第九十五页,共114页。,面向数据流的设计(shj)方法,基本原理,事务流,当信息流具有(jyu)明显的“发射中心”时,可归结为事务流,T,事务(shw),事务中心,.,.,.,活动通路,第九十六页,共114页。,面向数据流的设计(shj)方法,软件结构的标准形式,常见的软件结构标准型有两种:,变换型,事务型,(1)变换型结构,变换型结构的数据流图基本上呈线性形状(xngzhun),明显地分为输入、变换(加工)、输出三部分,输入(shr)部分,输出部分,变换部分,输入信息,正确 信息,结 果,数据,正确性检查,处理,显示,第九十七页,共114页。,面向数据流的设计(shj)方法,(1)变换型结构,变换流:取得数据、变换数据、给出数据,相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分(b fen)组成,第九十八页,共114页。,面向(min xin)数据流的设计方法,第九十九页,共114页。,面向数据流的设计(shj)方法,软件结构的标准形式,(2)事务型结构,系统的数据流图常呈辐射状;,一个加工(事务中心)将它的输入分离成若干种发散的数据流,从而形成若干条活动的路径,然后根据输入值选择其中(qzhng)的一条路径处理,事务(shw)中心,处理,处理,处理,处理,分类,事务,2,事务,1,事务,n,事务,第一百页,共114页。,面向数据流的设计(shj)方法,事务(shw),第一百零一页,共114页。,面向数据流的设计(shj)方法,变换分析,变换分析,是一系列设计步骤的总称,经过(jnggu)这些步骤把具有变换流特点的数据流图映射成软件结构,设计步骤,(1) 复查基本系统模型,(2) 复查并精化数据流图,(3) 确定数据流图具有变换特性还是事务特性,(4) 确定输入流和输出流的边界,从而孤立出变换中心,第一百零二页,共114页。,面向(min xin)数据流的设计方法,变换分析,变换分析,设计步骤,(5) 完成“第一级分解”,把数据流图映射成系统模块(m kui)结构,即设计系统的上层模块(m kui)结构,(6) 完成“第二级分解”,基于数据流图逐步分解高层模块(m kui)结构,设计出下层模块(m kui),(7) 使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化,第一百零三页,共114页。,面向(min xin)数据流的设计方法,变换分析,应用案例:开发一个带有微处理器的汽车数字仪表板控制系统(kn zh x tn),功能描述,1)通过模数转换实现传感器和微处理机的接口;,2)在发光二极管在面板上显示如下数据:,显示每小时行驶的英里数(mph);,显示每加仑油行驶的英里数(mpg);,显示汽车是加速或减速行驶;,显示里程。,3)如果汽车的速度超过55英里/小时,则发出超速警告铃声。,第一百零四页,共114页。,燃料流,传感器信号,SPS,旋转信号,读,旋转信号,收集和求平均,确定加,/,减速,转换成,转,/,分,计算里程,计算,mph,超速值,产生,加,/,减速显示,计算燃料消耗,计算,gph,读和校核,产生,mpg,显示,产生,mph,显示,发出铃声,产生里程显示,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph,显示,mpg,显示,设计步骤,1)复查基本系统模型(mxng),2)复查并精化数据流,第一百零五页,共114页。,燃料流,传感器信号,SPS,旋转信号,读,旋转信号,收集和求平均,确定加,/,减速,转换成,转,/,分,计算里程,计算,mph,超速值,产生,加,/,减速显示,计算燃料消耗,计算,gph,读和校核,产生,mpg,显示,产生,mph,显示,发出铃声,产生里程显示,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph,显示,mpg,显示,3)确定数据流图具有变换特性还是事务特性,4)确定输入流和输出流的边界(binji),从而孤立出变换中心,输入(shr)流边界,输出(shch)流边界,I,P,O,第一步:,DFD,的分界,先分出,I,、,P,、,O,三块,第一百零六页,共114页。,一般问题(wnt)的一级分解方法:,数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,M,P,I,O,第一百零七页,共114页。,第二步:映射(yngsh),A,D,C,B,M,I,C,B,D,A,:每个处理直接对应一个下层模块。,P,:由边界向回溯,将每个遇到的处理器映成相应的层模块。,I,:由边界向外推,方法与 类似,O,I,第一百零八页,共114页。,例:,数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,计算,gph,读燃料流,转换成,rpm,收集,sps,读旋转信号,确定加,/,减速,计算,mph,计算,mpg,计算里程,加,/,减速,显示,显示,mpg,显示,mph,显示里程,发出铃声,发光二极管显示,第一百零九页,共114页。,每个模块应附一简要说明描述, 进出该模块的信息(接口描述), 模块内部的信息, 过程陈述,包括主要判定(pndng)点及任务等, 对约束和特殊特点的简短讨论,第三步:修改(xigi)-本着高内聚、低耦合的原则,第一百一十页,共114页。,M,II,I,S,A,B,C,I,II,S,B,A,C,事务(shw)分析,第一百一十一页,共114页。,“,变换”,“,事物”,精化数据流图,流类型,区分事物中心和数据接收通路,区分输入和,输出分支,映射成事务结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和,全程数据结构,复 查,详细设计,变换分析,事物分析,优化的前题是,:“,Get it to work, then make it fast.”,SD的总体(zngt)过程,第一百一十二页,共114页。,软件设计主要任务是根据需求规格说明导出系统的实现(shxin)方案,分为概要设计和详细设计两部分, 主要概念:模块化、抽象(chuxing)、信息隐蔽。尽量保证模块的独立性。, SD分析方法分为(fn wi)变换分析和事务分析,要将DFD转换为SC图,最后完成概要设计的文档,小结:面向数据流的设计方法,第一百一十三页,共114页。,本章(bn zhn)结束, 下一章节导读(do d):“详细设计”,第一百一十四页,共114页。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!