软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码

上传人:E**** 文档编号:89433535 上传时间:2019-05-25 格式:PPT 页数:83 大小:852KB
返回 下载 相关 举报
软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码_第1页
第1页 / 共83页
软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码_第2页
第2页 / 共83页
软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码_第3页
第3页 / 共83页
软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码_第4页
第4页 / 共83页
软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码》由会员分享,可在线阅读,更多相关《软件工程 教学课件 PPT 作者 郑人杰 马素霞 麻志毅 第5章 详细设计与编码(83页珍藏版)》请在金锄头文库上搜索。

1、第2部分 结构化软件开发方法,第5章 详细设计与编码,5.1 结构化程序设计,由于软件开发和维护中存在的一系列严重问题,于20世纪60年代爆发了软件危机。 为了克服软件危机,引发了程序设计的一场革命,诞生了结构化程序设计方法。,5.1 结构化程序设计,结构化程序设计的概念与原则 最早由E. W. Dijkstra提出;建议从高级语言中取消GOTO语句; 1966年,Bohm和Jacopini证明:只用三种基本的控制结构“顺序”、“选择”和“循环”就能实现任何单入口和单出口的没有“死循环”的程序。,5.1 结构化程序设计,结构程序设计的概念 如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本

2、控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。,5.1 结构化程序设计,结构程序设计的主要原则 (1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。 (2)选用的控制结构只准许有一个入口和一个出口。 (3)程序语句组成容易识别的块(Block),每块只有一个入口和一个出口。 (4)复杂结构应该用基本控制结构进行组合嵌套来实现。 (5)语言中没有的控制结构,可用一段等价的程序段模拟, 但要求该程序段在整个系统中应前后一致。,5.1 结构化程序设计,结构程序设计的主要原则 (6) 严格控制GOTO语句,仅在下列情形才可使用: 用非结构化的程序设计语

3、言去实现结构化的构造。 若不使用GOTO语句就会使程序功能模糊。 在某种可以改善而不是损害程序可读性的情况下。例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简洁易懂。,5.1 结构化程序设计,结构程序设计的主要原则 (7) 在程序设计过程中,尽量采用自顶向下(TopDown)、逐步细化(Stepwise Refinement)的原则,由粗到细,一步步展开。,5.1 结构化程序设计,自顶向下、逐步细化的设计过程 主要包括两个方面: 一是将复杂问题的解法分解和细化成由若干个模块组成的层次结构; 二是将每个模块的功能逐步分解细化

4、为一系列的处理。,5.1 结构化程序设计,自顶向下、逐步细化的设计过程 在处理较大的复杂任务时,常采取“模块化”的方法,即在程序设计时不是将全部内容都放在同一个模块中,而是分成若干个模块,每个模块实现一个功能。 模块分解完成后,下一步的任务就是将每个模块的功能逐步分解细化为一系列的处理。,5.1 结构化程序设计,自顶向下、逐步细化的设计过程 在概要设计阶段,我们已经采用自顶向下、逐步细化的方法,把复杂问题的解法分解和细化成了由许多功能模块组成的层次结构的软件系统。 在详细设计和编码阶段,我们还应当采取自顶向下、逐步求精的方法,把模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种

5、程序设计语言写成的程序。,5.1 结构化程序设计,自顶向下、逐步细化方法举例 用筛选法求100以内的素数。 所谓的筛选法,就是从2到100中去掉2,3,5,7的倍数,剩下的就是100以内的素数。,5.1 结构化程序设计,首先按程序功能写出一个框架 main () 建立2到100的数组A ,其中Aii;- - - - - 1 建立2到10的素数表B ,存放2到10以内的素数;- - 2 若Aii是B 中任一数的倍数,则剔除Ai; - - 3 输出A 中所有没有被剔除的数; - - - - - - - 4 ,5.1 结构化程序设计,上述框架中每一个加工语句都可进一步细化成一个循环语句 main (

6、) /*建立2到100的数组A ,其中Aii*/ - - 1 for (i = 2;i = 100;i+)Ai = i; /* 建立2到10的素数表B ,存放2到10以内的素数*/ - 2 B1 =2; B2 = 3; B3 = 5; B4 = 7; /*若Aii是B 中任一数的倍数,则剔除Ai*/ - - 3 for (j = 1; j = 4; j+) 检查A 所有的数能否被Bj整除并将能被整除的数从A中剔除; /*输出A 中所有没有被剔除的数*/ - - - - - - - 4 for (i = 2; i = 100; i+) 若Ai没有被剔除,则输出之 ,5.1 结构化程序设计,自顶向

7、下、逐步求精的方法的优点 (1) 自顶向下、逐步求精方法符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率。 (2) 用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,因此程序容易阅读和理解。 (3) 程序自顶向下、逐步细化,分解成树形结构。 在同一层的结点上做细化工作,相互之间没有关系,因此它们之间的细化工作相互独立。在任何一步发生错误,一般只影响它下层的结点,同一层的其他结点不受影响。,5.1 结构化程序设计,自顶向下、逐步求精的方法的优点 (4) 程序清晰和模块化,使得在修改和重新设计一个软件时,可复用的代码量最大。 (5) 程序的逻

8、辑结构清晰,有利于程序正确性证明。 (6) 每一步工作仅在上层结点的基础上做不多的设计扩展,便于检查。 (7) 有利于设计的分工和组织工作。,5.2 过程设计的工具,表达过程规格说明的工具称为过程描述工具,可以将过程描述工具分为以下3类。 (1) 图形工具:把过程的细节用图形方式描述出来,如程序流程图、N-S图、PAD图、决策树等。 (2) 表格工具:用一张表来表达过程的细节。这张表列出了各种可能的操作及其相应的条件,即描述了输入、处理和输出信息,如决策表。 (3) 语言工具:用某种类高级语言(称为伪代码)来描述过程的细节,如很多数据结构教材中使用类Pascal、类C语言来描述算法。,5.2

9、过程设计的工具,程序流程图 程序流程图也称为程序框图,是软件开发者最熟悉的算法表达工具。 早期的流程图也存在一些缺点。特别是表示程序控制流程的箭头,使用的灵活性极大,程序员可以不受任何约束,随意转移控制,这将不符合结构化程序设计的思想。 为使用流程图描述结构化程序,必须对流程图加以限制。,5.2 过程设计的工具,程序流程图的基本控制结构 (1) 顺序型:几个连续的加工步骤依次排列构成。 (2) 选择型:由某个逻辑判断式的取值决定选择两个加工中的一个。 (3) 先判定(while)型循环:在循环控制条件成立时,重复执行特定的加工。 (4) 后判定(until)型循环:重复执行某些特定的加工,直至

10、控制条件成立。 (5) 多情况(case)型选择:列举多种加工情况,根据控制变量的取值,选择执行其一。,5.2 过程设计的工具,程序流程图的基本控制结构,5.2 过程设计的工具,程序流程图实例,5.2 过程设计的工具,程序流程图的标准符号(国家标准),5.2 过程设计的工具,循环的标准符号,5.2 过程设计的工具,注解符的使用,5.2 过程设计的工具,多选择判断,5.2 过程设计的工具,N-S图 Nassi和Shneiderman 提出了一种符合结构化程序设计原则的图形描述工具,叫做盒图 (box-diagram),也叫做N-S图。 在N-S图中,为了表示5种基本控制结构,规定了5种图形构件。

11、,5.2 过程设计的工具,N-S图的基本控制结构,5.2 过程设计的工具,N-S图的实例,5.2 过程设计的工具,N-S图的特点 (1) 图中每个矩形框(除CASE构造中表示条件取值的矩形框外)都是明确定义了的功能域(即一个特定控制结构的作用域),以图形表示,清晰可见。 (2) 它的控制转移不能任意规定,必须遵守结构化程序设计的要求。 (3) 很容易确定局部数据和(或)全局数据的作用域。 (4) 很容易表现嵌套关系,也可以表示模块的层次结构。,5.2 过程设计的工具,N-S图的扩展表示,5.2 过程设计的工具,PAD图 PAD(problem analysis diagram)是日本日立公司提

12、出,由程序流程图演化来的,用结构化程序设计思想表现程序逻辑结构的图形工具。 PAD也设置了5种基本控制结构的图式,并允许递归使用。,5.2 过程设计的工具,PAD图的基本控制结构,5.2 过程设计的工具,PAD图的实例,5.2 过程设计的工具,PAD的扩充控制结构,5.2 过程设计的工具,PAD的优点 使用PAD符号所设计出来的程序必然是结构化程序。 PAD图描绘程序结构清晰,图中竖线的总条数就是程序的层次数。 用PAD图表现程序逻辑易读、易懂、易记。 容易将PAD图自动转换为高级语言源程序。 PAD图既可以表示程序逻辑,也可用于描绘数据结构。 PAD图的符号支持自顶向下、逐步求精方法的使用。

13、,5.2 过程设计的工具,伪代码 伪代码是一种介于自然语言和形式化语言之间的半形式化语言,是一种用于描述功能模块的算法设计和加工细节的语言,也称为程序设计语言(Program Design Language,PDL)。 伪码的语法规则分为“外语法”和“内语法”。 外语法应当符合一般程序设计语言常用语句的语法规则; 内语法可以用英语中一些简单的句子、短语和通用的数学符号来描述程序应执行的功能。,5.2 过程设计的工具,伪代码的基本控制结构 简单陈述句结构:避免复合语句。 判定结构:IF_THEN_ELSE或CASE_OF结构。 重复结构:WHILE_DO或REPEAT_UNTIL结构。,5.2

14、过程设计的工具,伪代码实例:“检查订货单”例子,5.2 过程设计的工具,伪代码的特点 (1) 有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特征。外语法的关键字是有限的词汇集,它们能对伪代码正文进行结构分割,使之变得易于理解。 (2) 内语法使用自然语言来描述处理特性,为开发者提供方便,提高可读性。 (3) 有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。 (4) 有子程序定义与调用机制,用以表达各种方式的接口说明。,5.3 程序设计语言,程序设计语言的性能 从软件心理学及软件工程角度对程序设计语言的性能进行讨论。,5.3 程序设计语言,软件心理

15、学的观点 (1) 一致性。表示一种语言所使用符号的兼容程度、允许随意规定限制,以及允许对语法或语义破例的程度。 (2) 二义性。虽然语言的编译程序总是以一种机械的规则来解释语句,但读者则可能用不同的方式来理解语句。 (3) 简洁性。程序设计语言的简洁性用来表示为了用该语言编写程序,必须记忆的关于代码的信息量。,5.3 程序设计语言,软件心理学的观点 (4) 局部性。是指程序设计语言的综合特性。在编码的过程中,由语句组合成模块,由模块组装为程序系统结构,并在组装过程中实现模块的高内聚和低耦合,可使程序的局部性加强。 (5) 传统性。人们学习一种新的程序设计语言的能力受到传统的影响。,5.3 程序

16、设计语言,软件工程的观点 详细设计应能直接地容易地翻译成代码程序。 源程序应具有可移植性。 编译程序应具有较高的效率。 尽可能应用代码生成的自动工具。 可维护性。,5.3 程序设计语言,程序设计语言的分类 从软件工程的角度,根据程序设计语言发展的历程,可以将程序设计语言大致分为4类。 从属于机器的语言第一代语言 汇编语言第二代语言 高级程序设计语言第三代语言 从20世纪50年代就开始出现,它们的特点是用途广泛。典型的高级程序设计语言有ALGOL、FORTRAN、COBOL、BASIC、PASCAL、C、C +、Lisp、PROLOG、Ada等。,5.3 程序设计语言,程序设计语言的分类 (4) 第四代语言(4GL) 4GL以数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报表生成系统、多窗口表格设计系统、菜单生成系统等。 4GL提供了功能强大的非过程化问题定义手段,用户只需告诉系统做什么,而无须说明怎么做。,5.3 程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号