软件工程05-总体设计

PPT
  • 阅读 186 次
  • 下载 0 次
  • 页数 113 页
  • 大小 1.087 MB
  • 2023-07-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档22.00 元 加入VIP免费下载
此文档由【精品优选】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
软件工程05-总体设计
可在后台配置第一页与第二页中间广告代码
软件工程05-总体设计
可在后台配置第二页与第三页中间广告代码
软件工程05-总体设计
可在后台配置第三页与第四页中间广告代码
软件工程05-总体设计
软件工程05-总体设计
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 113
  • 收藏
  • 违规举报
  • © 版权认领
下载文档22.00 元 加入VIP免费下载
文本内容

【文档说明】软件工程05-总体设计.pptx,共(113)页,1.087 MB,由精品优选上传

转载请保留链接:https://www.ichengzhen.cn/view-290959.html

以下为本文档部分文字说明:

个人成果,妥善保存,请勿传播软件工程岐兵Email:qib@epsoft.com.cn个人成果,妥善保存,请勿传播软件定义软件开发软件使用与维护软件生命周期个人成果,妥善保存,请勿传播软件开发的三个关联步骤–每个步骤都按某种方式进行信息变换,最后得到有效的计算机软件个人成果,妥

善保存,请勿传播分析模型和设计模型的转换◼将分析模型转换为软件设计个人成果,妥善保存,请勿传播软件设计是后续开发步骤及软件维护工作基础如果没有设计,只能建立一个不稳定的系统结构个人成果,妥善保存,请勿传播软件设计的任务◼从工程管理的角度来看,软件设计分

两步完成个人成果,妥善保存,请勿传播软件设计的任务◼从工程管理的角度来看,软件设计分两步完成–总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。–详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。个人成果,妥善保存,请勿

传播课程内容提纲◼第3章:“总体设计”–总体设计过程–软件设计原理–软件设计中的启发规则–描绘软件结构的图形工具–面向数据流的设计方法个人成果,妥善保存,请勿传播总体设计过程◼总体设计(概要设计或初步设计)–划分出组成系统的物理元素◼程序、文件、数据库、

人工过程和文档等◼并不涉及物理元素内部设计–总体设计阶段的一项任务是设计软件结构◼确定系统中每个程序是由哪些模块组成的◼以及这些模块相互间的关系个人成果,妥善保存,请勿传播总体设计过程◼总体设计过程总体设计过程一般分为两个阶段–

系统设计阶段:确定系统的具体实现方案–结构设计阶段:确定软件的结构个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤1◼提出各种可能的实现方案◼以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统方案◼设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法◼余

下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤2选取合理方案◼从前一步得到的一系列供选择的方案中选取若干个合理的方案–通常至少选取低成本、中等成本和高成本的三种方案◼–系统流程图––成本/–

实现这个系统的进度计划个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤3◼综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐◼用户和技术专家应认真审查所推荐的最佳系统◼如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进

一步审批◼在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤4功能分解目标系统的实现一般要分两步进行:◼首先是进行结构设计,确定系统是由哪

些模块组成的,以及这些模块之间的关系–确定软件体系结构、数据结构◼其次是过程设计,确定每个模块的处理过程–确定详细的数据结构、算法结构设计是总体设计阶段的任务,而过程设计是详细设计阶段的任务。个人成果,妥善保存,请勿

传播总体设计过程◼总体设计的步骤5设计软件结构◼模块确定以后,每个模块的功能也就随之确定◼把这些模块自顶向下组成一种良好的层次调用关◼如果数据流图已经细化到适当的层次,那么我们便可以从数据流图映射成软件结构图总体设计过程◼总体设计的步骤6设计数据库◼–模式设计:确定数据库的逻辑结

构,常见的数据库形式有关系、层次或网状等–子模式设计:为系统中各用户设计出各自的数据视图–存储模式设计:确定数据库的空间需求、存储格式、索引组成等个人成果,妥善保存,请勿传播个人成果,妥善保存,请勿传播总体设计

过程◼总体设计的步骤7◼在软件开发的早期阶段考虑测试问题◼使软件设计人员在设计时注意软件的可测试性总体设计过程◼总体设计的步骤8◼系统说明–系统流程图:描绘系统构成方案、组成系统的物理元素–成本/效益分析–对最佳方案的概括描述、精化的数据流图–用层次图或结构图描

绘的软件结构–用IPO图或其它工具简要描述各个模块的算法–模块间接口关系、建立需求、功能和模块三者之间的交叉参照关系个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤8◼用户手册◼测试计划–测试策略、测试方案、预期的测试结果、测试进度计划等◼◼数据库设计

结果–数据库系统的选择、模式、子模式、存储模式的设计结果等个人成果,妥善保存,请勿传播个人成果,妥善保存,请勿传播总体设计过程◼总体设计的步骤9复审◼对总体设计的结果进行严格的技术审查◼在技术审查通过之后再由使用部门的负责

人从管理角度进行复审个人成果,妥善保存,请勿传播课程内容提纲◼第3章:“总体设计”–总体设计过程–软件设计原理–软件设计中的启发规则–描绘软件结构的图形工具–面向数据流的设计方法个人成果,妥善保存,请勿传播软件设计原理1.抽象–抽象:人们在实

践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。–抽象就是:抽出本质,忽略细节,分层理解个人成果,妥善保存,请勿传播软

件设计原理–举例说明:软件工程各阶段的抽象◼在可行性研究阶段,软件作为系统的一个完整部件;◼在需求分析阶段,软件解法是使用在问题环境内熟悉的方式描述;◼进入总体设计向详细设计过渡阶段,抽象的程度将随之减少;◼最后当源程序被写出后,抽象则达到最低层个人成果,妥善保存,请勿传播软件设计原理2.模块化

–模块:是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。◼PASCAL或Ada这样的块结构语言中的Begin…End对◼C、C++和Java语言中的{...}对◼过程、函数、子程序和宏等◼面向对象方法学中的对象(见第9章

)是模块,对象内的方法(或称为服务)也是模块个人成果,妥善保存,请勿传播软件设计原理–模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。–模块化

的数学依据◼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)个人成果,妥善保存,请勿传播软件设计原理◼E(

P1+P2+…+Pn)>E(P1)+E(P2)+…+E(Pn)--以上揭示了把一个复杂问题分成许多容易解决的小问题,原来问题将容易解决◼每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。M成本

/模块接口成本软件总成本成本模块数最小成本区个人成果,妥善保存,请勿传播软件设计原理3.逐步求精–逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。◼其作用就在于它能帮助软件工程师把精力集中在与当前开发阶段最

相关的那些方面上◼忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑。个人成果,妥善保存,请勿传播软件设计原理3.逐步求精–Miller法则:◼一个人在任何时候都只能把注意力集中在(7±2)个知识块上◼Miller法则是人类智力的基本局限,我们不可能战

胜自己的自然本性,只能接受这个事实,承认自身的局限性,并在这个前提下尽我们的最大努力工作个人成果,妥善保存,请勿传播软件设计原理3.逐步求精–抽象与求精是一对互补的概念◼抽象使得设计者能够说明过程和数据,同时却忽略低层细节;可以把抽象看作是一种通过忽略多余的细节同时强调有

关的细节,而实现逐步求精的方法◼求精则帮助设计者在设计过程中逐步揭示出低层细节◼这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型个人成果,妥善保存,请勿传播软件设计原理4.信息隐蔽和局部化–信息隐蔽原理◼应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要这些信

息的模块来说,是不能访问的–局部化◼是把一些关系密切的软件元素物理地放得彼此靠近。显然,局部化有助于实现信息隐藏个人成果,妥善保存,请勿传播软件设计原理5.模块独立性–模块独立性的概念是模块化、抽象化、信息隐蔽概念的一个直

接产物–强调模块的独立性,有两个重要原因:◼模块化程度较高的软件容易编制◼独立的模块比较容易维护和测试–模块独立是好设计的关键,而设计又是决定软件质量的关键环节个人成果,妥善保存,请勿传播软件设计原理5.模块独立性–模块的独立程度可以由两个定性标准度量,这两个标准分别称为

内聚和耦合耦合(Coupling)&内聚(Cohesion)个人成果,妥善保存,请勿传播软件设计原理5.1耦合–耦合:是对一个软件结构内不同模块之间互连程度的度量–耦合强弱取决于模块间接口复杂程度,进入

或访问一个模块的点,以及通过接口的数据–模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性个人成果,妥善保存,请勿传播软件设计原理GreatdealofdependenceIndependent高耦合中等耦合无耦

合☺耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统个人成果,妥善保存,请勿传播软件设计原理例1:A访问C的内部数据或不通过正常入口而转入C的内部……ABCDA:……………………gotoC1……………………C:……………………C1:

…………独立性由弱到强(耦合程度由强到弱)排列为:内容耦合:一个模块直接影响另一个模块,调用或操纵其他模块的数据个人成果,妥善保存,请勿传播软件设计原理例2:部分代码重叠(常现在汇编程序中)BA例3:一个模块有多个入口(功能)A:………………………………entry1:…………………………

……entry2:………………………………软件设计原理–如果发生下列情形,模块间就发生了内容耦合(1)一个模块直接访问另一个模块的内部数据(2)一个模块不通过正常入口转到另一模块内部(3)两个模块有一部分程序代码重迭(只可能出现在汇编语言中)(4)一个模块有多个入口个

人成果,妥善保存,请勿传播个人成果,妥善保存,请勿传播软件设计原理公共耦合:几个模块共享一个数据区域Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Gl

obal:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………缺陷:公共部分的改动将影响所有调用它的模块;公共部分的数据存取无法控制;复杂程度随耦合模块的个数增加而增加。个人成果

,妥善保存,请勿传播软件设计原理特征耦合:把整个数据结构作为参数传递而被调用模块只使用其中一部分数据元素时就出现了特征耦合。控制耦合:一个模块通过传递控制信息来控制另一个模块ABFlagF2F1Fn…………Flag接口单一,但影

响被控模块的内部逻辑个人成果,妥善保存,请勿传播软件设计原理数据耦合:只有数据在模块之间进行交换,只通过参数传递基本类型的数据标记耦合与数据耦合形式相同,区别在于调用时传递的参数是否为基本数据类型标记耦合:模块间通过参数表传递记录信息,这个记录是某一数据结构的子结构,而不是简

单变量非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的非直接耦合的模块独立性最强个人成果,妥善保存,请勿传播软件设计原理◼关于“耦合”的使用原则–尽量使用数据耦合–少用控制耦合和特征耦合–限制公共环境耦合的范围–完全不用内容耦合个人成果,妥善保存,

请勿传播软件设计原理5.2内聚–内聚:标志着一个模块内各个元素彼此结合的紧密程度–内聚和耦合都是进行模块化设计的有力工具–实践表明内聚更重要,应该把更多注意力集中到提高模块的内聚程度上个人成果,妥善保存,请勿传播软件设计原理5.2内聚

–内聚有七种,由弱到强分别为偶然内聚->逻辑内聚->时间内聚->过程内聚->通信内聚->顺序内聚->功能内聚个人成果,妥善保存,请勿传播软件设计原理5.2内聚–偶然内聚(低内聚)◼如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫

做偶然内聚◼有时在写完一个程序之后,发现一组语句在两处或多处出现,于是把这些语句作为一个模块以节省内存,这样就出现了偶然内聚的模块。个人成果,妥善保存,请勿传播软件设计原理5.2内聚–逻辑内聚(低内聚)◼如果一个模块完成的任务在逻辑上属于相同或相似的一类,

由参数决定模块执行的功能,则称为逻辑内聚例如,一个模块产生各种类型的全部输出A:Readinputsfromdiskfromtapefrom……个人成果,妥善保存,请勿传播软件设计原理5.2内聚–时间内聚(低内聚)◼如果一个模块包含的任务必须在同一段时间内

执行,就叫时间内聚例如,模块完成各种初始化工作或当一个模块处理意外故障时,这个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任务,这就构成了时间内聚。个人成果,妥善保存,请勿传播软件设计原理5.2内聚–过程内聚(中内聚)◼如果一个模块内的处理元素是相关的而且以特定次序执行

,则称为过程内聚。使用程序流程图作为工具设计软件时,常常通过研究流程图确定模块的划分,这样得到的往往是过程内聚的模块enterdatacheckdatamanipulatedata个人成果,妥善保存,请勿传播软件设计原理5.2内聚–通信内聚(中内聚)◼如

果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,则称为通信内聚。例如,一个模块的功能是从输入的文件中读出数据,然后由这些数据产生报表,同时也由这些数据产生单项报表。例如:从同一磁带上读取不相干的数据——可能破坏独立性个人成果

,妥善保存,请勿传播软件设计原理个人成果,妥善保存,请勿传播软件设计原理5.2内聚–顺序内聚(高内聚)◼如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输人

数据),则称为顺序内聚。例如,一个解非线性方程组的模块,它的功能依次为:输入常数项系数,求解,输出方程组的解。个人成果,妥善保存,请勿传播软件设计原理5.2内聚n顺序内聚(高内聚)个人成果,妥善保存,请勿传播软件

设计原理5.2内聚–功能内聚(高内聚)◼如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。例如,一个模块只完成矩阵加法运算或只打印输出一种特定的表格功能。个人成果,妥善保存,请勿传播软件设计原理◼七种

内聚的优劣评分,将得到如下结果:–功能内聚10分时间内聚3分–顺序内聚9分逻辑内聚1分–通信内聚7分偶然内聚0分–过程内聚5分对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软件设计的一贯原则个人成果,妥善保存,请勿传播软件设计原理

耦合、内聚与模块独立性的关系:个人成果,妥善保存,请勿传播课程内容提纲◼第3章:“总体设计”–总体设计过程–软件设计原理–软件设计中的启发规则–描绘软件结构的图形工具–面向数据流的设计方法个人成果,妥善保存,请勿传播软件设计中的启发规则◼

结构设计原则个人成果,妥善保存,请勿传播软件设计中的启发规则◼结构设计原则–总结经验-》“启发式规则”–找到改进软件设计,提高软件质量的途径1.提高模块独立性–争取低耦合、高内聚(增加内聚>减少耦合)2.模块规模适中–过大不易理解

;太小则接口开销过大–注意分解后不应降低模块的独立性个人成果,妥善保存,请勿传播软件设计中的启发规则3.选择适当的深度、宽度、扇出和扇入个人成果,妥善保存,请勿传播软件设计中的启发规则3.选择适当的深度、宽度、扇出和扇入–深度=分层的层数◼过大表示分工过细–宽度=同一层上模块数的最大值

◼过大表示系统复杂度大个人成果,妥善保存,请勿传播软件设计中的启发规则扇出=一个模块直接调用\控制的模块数。3fan-out9AA的扇出AA的扇入扇入=直接调用该模块的模块数在不破坏独立性的前提下,fan-in大的比较好。个人成果,妥善保存,请勿传播软件设计中的

启发规则3.选择适当的深度、宽度、扇出和扇入–深度:表示软件结构中控制的层数◼深度能粗略地标志一个系统的大小和复杂程度,深度和程–宽度:表示软件结构中控制的总跨度◼宽度是同一个层次上的模块总数的最大值,宽度越大系统越

复杂;对宽度影响最大的因素是模块的扇出–扇出:表示一个模块直接控制(调用)的模块数目◼扇出为3-4,上限扇出为5-9–扇入:表示有多少个上级模块直接调用该模块◼扇入越大则共享该模块的上级模块数目越多。软件结构一般要求顶层扇出比较高,中层扇出较少,底层模块有高扇入个人成果,妥善保存,请勿传播软件

设计中的启发规则4.模块的作用域应在其控制域之内n模块的作用域◼受模块判定条件影响的所有模块集合n模块的控制域◼模块本身以及所有直接从属模块的集合个人成果,妥善保存,请勿传播4.作用域在控制域内控制域M

ACBM的控制域为{M,A,B,C}作用域:M中的一个判定所影响的模块。例如:A:…………if……thengotoB1……………………B:……………………B1:……………………作用域在控制域内A:…………if……thengotoM1…………………

…M:……………………M1:gotoC1……………………作用域超出了控制域上例(右图)中A的作用超出了控制域。改进方法之一,可以把A中的if移到M中;方法之二,可以把C移到A下面。个人成果,妥善保存,请勿传播

软件设计中的启发规则4.模块的作用域应在其控制域之内◼上移判断点:使该判断层次升高以扩大它的控制范围;◼下移受判断影响的模块:将受判断影响的模块下移到判断所在模块的控制范围内个人成果,妥善保存,请勿传播软件设计中的启发规则5

.降低接口的复杂程度–接口复杂可能表明模块的独立性差6.单出单入,避免内容耦合7.模块功能可预测–相同输入必产生相同输出–反例:模块中使用全局变量或静态变量,则可能导致不可预测软件模块结构的改进◼模块功能的完善化–一个完整的模块应当有以下几部分:◼执行规定的功能的部分;◼出错处理的部分,当模块不能

完成规定的功能时,必须回送出错标志,出现例外情况的原因◼如果需要返回数据给它的调用者,在完成数据加工或结束时,应当给它的调用者返回一个状态码。◼消除重复功能,改善软件结构–完全相似◼在结构上完全相似,可能只在数据类型上不一,此时可以采取完全合并的方法–局部相似◼找

出其相同部分,分离出去,重新定义成一个独立的下一层模块◼还可以与它的上级模块合并软件模块结构的改进◼消除重复功能,改善软件结构n完全相似◼完全合并n局部相似◼分离◼与上级合并软件模块结构的改进◼模块的作用范围应在控制范围之内◼尽可能减少高扇出结构,随深度增大扇入–如果一个模块的扇出数过大,就意味

着该模块过分复杂,需要协调和控制过多的下属模块–应当适当增加中间层次的控制模块软件模块结构的改进◼避免或减少使用病态联接–应限制使用如下三种病态联接◼1.直接病态联接即模块A直接从模块B内部取出某些数据,或者把某些数据直接送到模块B内部软件模块结构的改进◼避免或减

少使用病态联接–应限制使用如下三种病态联接◼2.公共数据域病态联接,模块A和模块B通过公共数据域,直接传送或接受数据,而不是通过它们的上级模块◼这种方式将使得模块间的耦合程度剧增,它不仅影响模块A和模块B,而且影响与公共数据域有关联的

所有模块软件模块结构的改进◼避免或减少使用病态联接–应限制使用如下三种病态联接◼3.通信模块联接即模块A和模块B通过通信模块TABLEIT传送数据。从表面看这不是病态联接,因为模块A和模块B都未涉及通信模块TABLEIT的

内部。◼然而,它们之间的通信(即数据传送)没有通过它们的上级模块,从这个意义上讲,这种联接是病态的。软件模块结构的改进◼模块的大小要适中–模块大小,可以用模块中语句的数量来衡量–模块的大小应限制在一定的范

围之内◼一个模块的语句超过30行以后,可理解性迅速下降◼通常规定其语句行数在50~100左右,保持在一页纸之内,最多不超过500行软件模块结构的改进◼设计功能可预测的模块,但要避免过分受限制的模块–一个功能可预测的模块,不论内部处理细节如何,但对相同的输入

数据,总能产生同样的结果◼如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的◼对于这种模块,如果调用者不小心使用,其结果将不可预测软件模块结构的改进◼设计功能可预测的模块,但要避免过分受限制的模块–如果一个模块的局部数据结构的大小、控制流的

选择或者与外界(人、硬软件)的接口模式被限制死了,则很难适应用户新的要求或环境的变更–为了能够适应将来的变更,软件模块中局部数据结构的大小应当是可控制的,控制流的选择对于调用者来说,应当是可预测的。而与外界的接口应当是灵活的。软件模块结构的改进◼软件应

满足设计约束和可移植性–为了使得软件可以在某些特定的环境下能够安装和运行,对软件提出了一些设计约束和可移植的要求◼例如,设计约束有时要求一个程序段在存储器中覆盖自身。当这种情况出现时,设计出来的软件程序结构不得不根据重复程度、访问频率、调用间隔等等特性,重新加以组织。软件模块结构的改进设计的

后处理–为每一个模块写一份处理说明–为每一个模块提供一份接口说明–确定全局数据结构和局部数据结构–指出所有的设计约束和限制–进行概要设计的评审–进行设计的优化(如果需要和可能的话)个人成果,妥善保存,请勿传播课程内容提

纲◼第3章:“总体设计”–总体设计过程–软件设计原理–软件设计中的启发规则–描绘软件结构的图形工具–面向数据流的设计方法个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼总体设计阶段常用的几种图形工具–层次图–HIPO图–结构图(SC图)个人成果,妥善保存,请勿传播描绘软件结构的图形

工具◼层次图和HIPO图–层次图:每个方框代表一个模块,方框间的连线表示调用关系–例如正文加工系统正文加工系统输入输出编辑加标题存储检索列表编目录格式化合并修改添加删除插入个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼层次图和HIPO图–HIPO

图:HIPO图是美国IBM公司发明的“层次加输入/处理/输出”图的英文缩写正文加工系统输入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个人成果,妥善保存,请勿传播描绘软件结构的图形

工具–HIPO图◼和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程系统:模块:编号:作者:日期:IPO图被调用:输入:调用:输出:处理:局部数据元素:注释:个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-SC图–Yourdon提出的结构图是进行软件结

构设计的一个有力工具–结构图反映程序中模块之间的层次调用关系和联系◼它以特定的符号表示模块、模块间的调用关系和模块间信息的传递个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-SC图–模块:模块用矩形框表示,并用模块的名字标记它个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结

构图-SC图–模块的调用关系和接口:模块之间用单向箭头联结,箭头从调用模块指向被调用模块个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-SC图–模块间的信息传递◼当一个模块调用另一个模块时,调用模块把数据或控制信息传送给被调用模块,以使被调用模块能够运行◼被调用

模块在执行过程中又把它产生的数据或控制信息回送给调用模块个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-SC图–在模块A的箭头尾部标以一个菱形符号,表示模块A有条件地调用另一个模块B。当一个在调用箭头尾部标以一个弧形符号,表示模块A反复调用模块C

和模块D个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-SC图产生最佳解计算最佳解得到好输入输出结果编辑输入读输入显示结果结果格式化编辑结果原始输入原始输入好输入好输入解解解格式化的解格式化的解个人成果,妥善保存,请勿传播描绘软件结构的图形工具◼结构图-

SC图–通常用层次图作为描绘软件结构的文档–利用IPO图或数据字典中的信息得到模块调用时传递的信息–由层次图导出结构图的过程导出结构图可以作为检查设计正确性和评价模块独立性的好方法个人成果,妥善保存,请勿传播课程内容提纲◼第3章:“总体设计”–总体设计过程–软件设计原理–软件设计中的启发

规则–描绘软件结构的图形工具–面向数据流的设计方法个人成果,妥善保存,请勿传播面向数据流的设计方法◼基本原理–又称为SD:StructuralDesign–面向数据流的设计方法把信息流映射成软件结构。–信

息流的类型决定了映射的方法–信息流有下述两种类型◼变化流◼事务流个人成果,妥善保存,请勿传播面向数据流的设计方法◼基本原理–变换流–信息通常以“外部世界”的形式进入软件系统,经过处理以后再以“外部世界

”的形式离开系统信息时间输入流输出流变换流信息流个人成果,妥善保存,请勿传播面向数据流的设计方法◼基本原理–事务流◼这种数据流是“以事务为中心的”◼数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干动作序列中选出一个执行–(1)接收输入数据(输人数据又称为事务);–(2)分析每个事务

以确定它的类型;–(3)根据事务类型选取一条活动通路。个人成果,妥善保存,请勿传播面向数据流的设计方法◼基本原理–事务流–当信息流具有明显的“发射中心”时,可归结为事务流T事务事务中心...活动通路个人成果,妥善保存,请勿传播面向数据流的设计方法◼软件结构的标准形式

–常见的软件结构标准型有两种:◼变换型◼事务型(1)变换型结构–变换型结构的数据流图基本上呈线性形状–明显地分为输入、变换(加工)、输出三部分输入部分输出部分变换部分输入信息正确信息结果数据正确性检查处理显示个人成果,妥善保存,请勿传播面向数据流的设计方法(1)变换型结构◼变换流:取得数据、

变换数据、给出数据◼相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成个人成果,妥善保存,请勿传播面向数据流的设计方法个人成果,妥善保存,请勿传播面向数据流的设计方法◼软件结构的标准形式–(2)事务型结构◼系统的数据流图常呈辐射状;◼

一个加工(事务中心)将它的输入分离成若干种发散的数据流,从而形成若干条活动的路径,然后根据输入值选择其中的一条路径处理事务中心处理处理处理处理分类事务2事务1事务n事务个人成果,妥善保存,请勿传播面向数据流的设计方

法事务个人成果,妥善保存,请勿传播面向数据流的设计方法◼变换分析–变换分析◼是一系列设计步骤的总称◼经过这些步骤把具有变换流特点的数据流图映射成软件结构–◼(1)◼(2)◼(3)确定数据流图具有变换特性还是事务特性◼(4)确定输入流和输出流的边界,从而孤立出变换中心个人成果,妥善保

存,请勿传播面向数据流的设计方法◼变换分析–变换分析–◼(5)完成“第一级分解”,把数据流图映射成系统模块结构,即设计系统的上层模块结构◼(6)完成“第二级分解”,基于数据流图逐步分解高层模块结构,设计出下层模块◼(7)使用设计度量和启发式

规则对第一次分割得到的软件结构进一步精化个人成果,妥善保存,请勿传播面向数据流的设计方法◼变换分析–应用案例:开发一个带有微处理器的汽车数字仪表板控制系统–◼1)通过模数转换实现传感器和微处理机的接口;◼2)在发光二极管在面板上显示如下数据:–显示每小时行驶的英

里数(mph)–显示每加仑油行驶的英里数(mpg);––◼3)如果汽车的速度超过55英里/小时,则发出超速警告铃声。个人成果,妥善保存,请勿传播燃料流传感器信号SPS旋转信号读旋转信号收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校

核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmrpmgphmphmpgmph超速值英里显示铃声mph显示mpg显示◼设计步骤–1)复查基本系统模型–2)复查并精化数据流个人成果,妥善保存,请勿传播燃料流传感

器信号SPS旋转信号读旋转信号收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmrpmgphmphm

pgmph超速值英里显示铃声mph显示mpg显示◼3)确定数据流图具有变换特性还是事务特性◼4)确定输入流和输出流的边界,从而孤立出变换中心输入流边界输出流边界IPO第一步:DFD的分界,先分出I、P、O三块个人成果,妥善保存

,请勿传播一般问题的一级分解方法:数字仪表板控制数据转换控制驱动仪表板接收传感器信号MPIO个人成果,妥善保存,请勿传播第二步:映射ADCBMICBDA:每个处理直接对应一个下层模块。P:由边界向回溯,将每个遇到的

处理器映成相应的层模块。I:由边界向外推,方法与类似OI个人成果,妥善保存,请勿传播例:数字仪表板控制数据转换控制驱动仪表板接收传感器信号计算gph读燃料流转换成rpm收集sps读旋转信号确定加/减速计算mph计算mpg计算里程加/减速显示显示mpg显示mph显示里程发

出铃声发光二极管显示个人成果,妥善保存,请勿传播◼每个模块应附一简要说明描述–①进出该模块的信息(接口描述)–②模块内部的信息–③过程陈述,包括主要判定点及任务等–④对约束和特殊特点的简短讨论第三步:修改-本着高内聚、低耦合的原则

个人成果,妥善保存,请勿传播MIIISABC………IIISBAC………◼事务分析个人成果,妥善保存,请勿传播“变换”“事物”精化数据流图流类型区分事物中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计变

换分析事物分析优化的前题是:“Getittowork,thenmakeitfast.”SD的总体过程个人成果,妥善保存,请勿传播◼软件设计主要任务是根据需求规格说明导出系统的实现方案,分为概要设计和详细设计两部分主要概念:模块

化、抽象、信息隐蔽。尽量保证模块的独立性。SD分析方法分为变换分析和事务分析,要将DFD转换为SC图,最后完成概要设计的文档小结:面向数据流的设计方法个人成果,妥善保存,请勿传播本章结束-下一章节导读:“详细设计”

精品优选
精品优选
该用户很懒,什么也没有留下。
  • 文档 34925
  • 被下载 0
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?