- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《软件工程》第7章_详细设计
第 7 章详细设计 软件详细设计 结构设计确定了软件系统的总体框架,确定了系统模块的划分,而它仍不能直接进入程序编码。要从结构设计过度到编码的任务就是详细设计。 本章研究的内容 本章并不打算讨论如何设计模块算法的问题,这是其他课程的任务,而主要介绍以下三个与算法有关的问题: ①详细设计方法采用的结构化程序设计的思想及原理。 ②常用的算法过程的描述工具。 ③算法的复杂性评价问题。 本章主题 7.1 详细设计的目标及任务 7.2 算法的结构化设计思想 7.3 常用的算法描述工具 7.4 程序复杂度的度量 详细设计的目标 早期人们追求的是算法的精致和效率,能够满足较少的存储需要量和较短执行时间这两项要求的算法,就认为是好算法。 但是程序的实践证明,算法的逻辑结构及可读性或可理解性应当成为比效率更重要的因素。软件危机中的一项重要内容就是软件的可维护性极差,而影响可维护性的重要前提就是算法的可读性。 因此,详细设计的目标是:在确保算法的正确性和效率的前提下,算法应当具有较好的可读性和可理解性以及容易测试及维护的特点。 详细设计的任务 详细设计阶段的工作是软件设计工作中的一项重要内容。它向上承接软件总体结构设计阶段对系统功能分解并划分模块的结果,向下又为编码设计阶段构造源程序起到启下的基础作用,其应完成的任务主要有: ①模块的算法过程的设计。 ②模块内部数据结构的设计。 ③接口的设计。 ④模块测试用例的设计。 ⑤建立详细设计文档并复审。 本章主题 7.1 详细设计的目标及任务 7.2 算法的结构化设计思想 7.3 常用的算法描述工具 7.4 程序复杂度的度量 结构化程序设计的主要内容 结构化程序设计的思想在二十世纪七十年代成为程序设计的主流方法,是人类在解决软件危机的过程中第一次对软件设计方法进行创新。人们将结构化的程序设计称为程序设计技术发展的第一个里程碑。 结构化程序设计方法的定义是:结构化程序设计是一种程序算法的构造技术,它采用自顶向下、逐步求精的设计思想和单入口、单出口的控制结构,以合理有序的结构化方式设计由顺序、选择和循环三种基本控制结构组合的算法结构。 三种基本控制结构 两种扩充结构 结构化程序设计技术的优点: 自顶向下逐步求精的思想与人类求解复杂问题的思维规律相符,这有助于软件系统的分析与设计; 采用先抽象后具体、先宏观后微观、先总体后细节的开发过程,使得程序的层次结构清楚,可读性较好; 单入口、单出口的控制结构,可以保证程序的静态结构与其动态结构流程基本相似,程序的可维护性较好 控制结构的逻辑模式比较规范,范型统一。源程序清晰流畅,易读、易懂而且测试比较容易 良好的模块化特性支持软件部件的重用。 关于GO TO语句的问题 在汇编语言中有转移语句,包括条件转移和无条件转移。在FORTRAN和ALGOL高级语言中也有对应的无条件转移语句,即GO TO语句。由于GO TO语句可以无条件地转移到它处执行程序,这样GO TO来GO TO去往往使得程序难以捉摸,清晰度差。 60年代中期有人提出了从高级语言中取消GO TO语句,认为程序的质量与程序所用的GO TO语句的数量成反比。以后人们又证明了只用顺序、选择、循环三种基本控制结构就能实现任何单入口、单出口的程序。但取消GO TO语句并没有取得完全一致,因为GO TO的多少并不是衡量一个程序质量的唯一标准。 比较一致的看法是反对滥用GO TO,主张从改善程序的控制结构来提高程序的清晰度,这就是结构程序设计(SP)的思想,也是详细设计阶段指导模块设计的重要原则。 自顶向下、逐步求精 是结构化程序设计方法的的核心。 在前面的软件结构设计阶段中,采用自顶向下、逐步求精的设计思想,可以把一个复杂问题的求解算法分级并细化成一个由许多功能相对独立,有相互依赖的模块组成的层次结构系统。 详细设计阶段中则采用自顶向下、逐步求精的设计思想,同样也可以把模块的功能从抽象到具体地逐步分解细化为一系列的处理过程,这些处理过程很容易转化成高级语言的语句结构。 自顶向下逐步细化的实现方法 “云形图”的表示方法: 例:求一组数中最大数 本章主题 7.1 详细设计的目标及任务 7.2 算法的结构化设计思想 7.3 常用的算法描述工具 7.4 程序复杂度的度量 7.3 常用的算法描述工具 7.3.1 程序流程图 7.3.2 结构流程图(盒图) 7.3.3 PAD图 7.3.4 判定表 7.3.5 判定树 7.3.6 过程定义语言(PDL) 7.3.1 程序流程图 程序流程图又称为框图,是一种用于表达问题求解过程控制流的有效方法,也是早期使用最广泛的算法描述方法,也是最容易引起误解和受到争议的方法。 优点:直观,初学者很容易掌握。 缺点:用箭头表示控制流向,程序员可以随
文档评论(0)