计算机软件技术基础-第4章-软件工程-2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020/2/91§4.4概要设计软件设计是把软件需求变为软件的具体方案软件设计包括两个阶段:概要设计详细设计概要设计根据软件需求所确定的数据流程或数据结构,导出软件的总体表示----软件结构或程序过程2020/2/92概要设计软件结构:软件结构是一种层次化的表示,其指出了由需求分析隐含的确定的某一问题的软件解法的各个元素(称之为模块)之间的相互控制关系软件结构的演变从确定问题开始,当该问题的每个部分用一个或多个软件加以解决以后,整个问题的解也就有了2020/2/93概要设计P3P1P2P4P5S1S2S3S4S52020/2/94概要设计软件结构的度量和术语:深度:表示控制的层数。宽度:表示控制(同一层次)总跨度。扇出数:指由一模块直接控制的其他模块的数目。扇入数:指有多少个模块直接控制一个给定的模块。上级模块下级模块2020/2/95概要设计程序过程:程序过程是用于描述每个模块的操作细节,是关于模块算法的详细描述,它应当包括处理的顺序、精确的判定位置、重复的操作以及数据组织和结构等。2020/2/96概要设计模块:模块是数据说明、可执行语句等程序对象的集合,是单独命名的并且可以通过名字来访问,例如过程、函数、子程序、宏等。2020/2/97概要设计模块化:软件被划分成(独立命名和可独立访问的被称作模块的)构件,每个模块完成一个子功能,它们集成到一起满足问题需求。2020/2/98概要设计模块化论据: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)2020/2/99概要设计软件总成本集成成本成本/模块模块数量成本或工作量最小成本区域M2020/2/910概要设计实现模块化的手段:抽象:抽出事物的本质特性而暂时不考虑它们的细节。数据隐蔽:应该这样设计和确定模块,使得一个模块内包含的数据(过程和数据)对于不需要这些数据的模块来说,是不可访问的。2020/2/911概要设计模块独立性:模块独立是指开发具有独立功能而且和其它模块之间没有过多的相互作用的模块。模块独立的意义:--功能分割,简化接口,易于多人合作开发同一软件;--独立的模块易于测试和维护。2020/2/912概要设计模块独立程度的衡量标准:--耦合性:对一个软件结构内不同模块间互连程度的度量(eg.数据耦合,控制耦合,公共环境耦合)。--内聚性:标志一个模块内各个处理元素彼此结合的紧密程度,理想的内聚模块只做一件事情。2020/2/913概要设计耦合分类:无任何连接:两个模块中的每一个都能独立地工作而不需要另一个的存在(最低耦合)。数据耦合:两个模块彼此通过参数交换数据,且交换的仅仅是数据(低耦合)。控制耦合:两个模块之间传递的数据有控制成分(中耦合)(控制耦合往往是多余的,在将模块适当分解后,通常可用数据耦合代替它。)2020/2/914概要设计公共环境耦合:两个或多个模块通过一个公共环境相互作用:1.一个存数据,一个取数据(低耦合);2.都存取数据。内容耦合:1.一个模块访问另一个模块的内部数据;2.两个模块有一部分程序代码重叠;3.一个模块不通过正常入口而转移的另一个的内部;4.一个模块有多个入口(意味着该模块有多个功能)。2020/2/915概要设计内聚分类(1/2):偶然内聚:一组任务关系松散(低)逻辑内聚:一组任务在逻辑上同属一类,例如均为输出(低)时间内聚:一组任务必须在同一段时间内执行(低)(eg.模块完成各种初始化工作)2020/2/916概要设计内聚分类(2/2):通信内聚:模块内所有元素都引用相同的输入或输出数据集合(中)顺序内聚:模块中的每个元素都是与同一功能紧密相关,一个元素的输出是下一个元素的输入(高)功能内聚:一个模块完成一个且仅完成一个功能(高)2020/2/917概要设计关于耦合性和内聚性的设计原则:1、力争尽可能低的耦合性:尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合2、力争尽可能高的内聚性.2020/2/918概要设计概要设计的启发式准则(1/3):1、改进软件结构,提高模块独立性2、模块规模应该适中(最好能写在一页纸上)大模块分解不充分;小模块使用开销大,接口复杂。3、尽量减少高扇出结构的数目,随着深度的增加争取更多的扇入。扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块。一般来说,顶层扇出高,中间扇出少,低层高扇入。经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是5~9)。2020/2/919概要设计概要设计的启发式准则(2/3):4、模块的作用范围保持在该模块的控制范围内模块的作用范围是指该模块中一个判断所影响的所有其它模块;模块的控制范围指该模块本身以及所有直接或间接从属于它的模块。5、力争降低模块接口的复杂程度模块接口的复杂性是引起软件错误的一个主要原因。接口设计应该使得数据传递简单并且与模块的功能一致。2020/2/920概要设计概要设计的启发式准则(3/3):6、设计单入口单出口的模块避免内容耦合,易于理解和维护。7、模块的功能应该可以预测相同的输入应该有相同的输出,否则难以理解、测试和维护。2020/2/921概要设计结构化设计方法(SD)思想:自顶向下,逐步精化;从数据流图向系统结构进行转换。(和需求分析阶段的SA方法衔接)数据流的类型决定了转换的方法。数据流有两种类型:变换流事务流2020/2/922概要设计输入流输出流变换中心变换流:数据沿输入通路进入系统,由外部形式变换成内部形式,经过加工处理以后再沿着输出通路变换成外部形式离开系统。2020/2/923概要设计事务流:数据沿着接收通路把外部世界的数据转换成一个事务项,然后,计算该事务项的值,根据它的值激励起多条活动通路中的一条数据流。发出多条通路的数据流中枢被称为“事务中心”。2020/2/924概要设计T事务事务中心活动通路2020/2/925设计过程区分输入和输出分支区分事务中心和数据接收通路映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构详细设计精化数据流程图流类型复查事务分析变换分析事务变换2020/2/926概要设计例子:汽车数字仪表板的设计。假设仪表板将完成下述功能:(1)通过模-数转换实现传感器和微处理机接口;(2)在发光二极管面板上显示数据;(3)指示速度&油耗(每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg));(4)指示加速或减速;(5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。2020/2/927概要设计变换型分析(7步)第1步复查基本系统模型。第2步复查并精化数据流图。第3步确定数据流图具有变换特性还是事务特性。第4步确定输入流和输出流的边界,从而孤立出变换中心。第5步完成“第一级分解”。软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程2020/2/9282020/2/929概要设计数字仪表板控制驱动仪表板数据转换控制接收传感器信号输入控制变换控制输出控制2020/2/930概要设计第6步完成“第二级分解”。把数据流图中的每一个处理映射成软件结构中一个适当的模块第7步使用设计度量和对得到的软件结构进一步精化。2020/2/931概要设计转换成rpm计算gph计算mph计算mpg计算里程显示mph显示mpg显示里程发出铃声数字仪表板控制接受传感器信号数据转换控制驱动仪表板读旋转信号读燃料流确定加速/减速发光二极管显示加速/减速显示精化后的数字仪表板系统的软件结构2020/2/932概要设计事务型分析(7步)第1步复查基本系统模型。第2步复查并精化数据流图。第3步确定数据流图具有变换特性还是事务特性。第4步确定事务中心和每个活动通路的流程特征。第5步把数据流图映射成一个适合于事务处理的软件结构。第6步对事务中心的结构和每个活动通路的结构进行分解、合并和改进。第7步使用设计度量和启发式规则对得到的软件结构进一步精化2020/2/933概要设计总结:设计方法有很多种但是:没有一种方法能够适用于所有的应用领域;设计“优劣程度”的评定标准,大都建立在不可证明的假设的基础之上;“设计”首先是解决问题的活动,而解决问题的过程和办法是因人而异的;方法是重要的,但只有在支撑环境中运用它们才能得到成功。2020/2/934§4.5详细设计(P243)详细设计是给出软件结构中各模块的内部过程描述模块的内部过程描述也就是模块内部的算法设计详细设计也就是要导出一种算法设计表示,由此可以直接而简单地导出程序代码2020/2/935详细设计详细设计的逻辑基础:使用结构化构造(即用顺序、选择和重复三种程序结构)表示程序过程,降低程序的复杂性,从而提高可靠性、易测试性和易维护性。2020/2/936详细设计详细设计工具对软件开发人员来说,提高软件开发效率;对软件测试和维护人员来说,提供摆脱繁琐的程序代码,了解模块程序结构的途径。图形工具:将过程细节用图来表示,在图中,逻辑结构用具体的图形表示列表工具:利用表来表示过程细节,表列出了各种操作和相应的条件语言工具:用类语言(伪码)表示过程的细节,很接近编程语言2020/2/937详细设计图形工具:流程图、方块图(盒图、N-S图)、PAD图2020/2/938详细设计流程图方框表示处理步菱形表示逻辑判断箭头表示控制流注意:用流程图表示过程细节时,要注意不要乱用箭头,否则会使结构不清晰2020/2/939详细设计S1C4C5C3C2C1S2S3S4S5NYNYNNNYYY2020/2/940详细设计流程图的主要缺点:--流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。--流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。--流程图不易表示数据结构。2020/2/941详细设计方块图(N-S图)研制方块图的目的是:既要制定一种图形工具,又不允许它违反结构化原则。方块图具有以下特点:(1)功能域有明确的规定,并且很直观地从图形表示中看出来;(2)想随意分支或转移是不可能的;(3)局部数据和全程数据的作用域可以很容易确定;(4)容易表示出递归结构。2020/2/942详细设计第一个任务第二个任务第三个任务条件FTELSE部分THEN部分CASE条件值1值2…...值nCASE1部分A循环条件Do-While部分Do-Until部分循环条件调用子程序A循环顺序IF-THEN-ELSE分支CASE分支2020/2/943详细设计C1C4C5NYS1S4S2S3S5NNYYC2C32020/2/944详细设计PAD图(ProblemAnalysisDiagram)P1P2P2P1PnP2P1...X=L1L2LnC顺序选择CASE型选择2020/2/945详细设计WHILECUNTILCPP循环语句标号定义def2020/2/946详细设计P1P3P2P5P4P2P6P10P8UNTILC3P7UNTILC2P9defCC12020/2/947详细设计WHILEC1UNTILC4S5S3S1S2S4C2C3C52020/2/948详细设计PAD图的特点:-使用PAD符号所设计出的程序必然是结构化程序。-PAD图所描述的程序结构十分清晰。-用PAD图表现程序逻辑,易读、易懂、易记-容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成-既可以用于表示程序逻辑,也可用于描述数据结构。-PAD图的符号具有支持自顶向下、逐步求精方法的作用。2020/2/949详细设计语言工具--PDL(ProgramDesignLanguage)(教材p246)一般说来PDL是一种“混合”语言,它使

1 / 59
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功