第6章 软件工程——结构化软件开发——详细设计编码测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
N-S图特点: (a) 图中每个矩形框都是明确定义了的功能域。 (b) 图中的控制转移不能任意规定。 (c) 从图中可以很容易地确定局部数据和全局数据的作用域。 (d) 图中很容易表现嵌套关系及模块的层次结构。
5
例:分别输入10个数,打印出其中的正数。
算法1:设T为计数器 ①输入第一个数—>X,1— >T; ②判断X>0 ? ; ③若X>0,则打印输出; ④判断T>10 ? ⑤若T>10,则表示10个数已 经处理完,结束。 否则,再输入下一个数— >X,且T+1——>T,然后转②继 续执行。
1
1. 程序流程图(Program Flow Chart)又称为程序框图。
2
程序流程图独立于任何 一种程序设计语言,比 较直观、清晰,易于学 习掌握。
缺点: 表示程序控制流程的箭 头可以不受任何约束, 随意转移控制。
3
2. N-S图
N-S图也称盒图(Box-Diagram),是由Nassi 和 Shneiderman提出的一种符合结构化程序设计原则的图形描述工 具。在N-S图中,相应规定了5种图形构件。
13
6.2.3 软件编码(程序设计)
程序设计阶段的任务:将“软件表示” 变成计算机能够 “理解”的形式,即为每个模块编程。
结构化程序设计,主要包括两个方面:
在编写程序时,强调使用几种基本控制结构,通过组合 嵌套,形成程序的控制结构。尽可能避免使用会使程序 质量受到影响的GOTO语句。
在程序设计过程中,尽量采用自顶向下和逐步细化的原 则,由粗到细,一步步展开。
14
例 打印A, B, C三数中最小者程序 程序1 100 110 程序2 if ( A < B ) and ( A < C ) then 130 write ( A ) 140 else if ( A B ) and ( B < C ) then write ( B ) else write ( C ) endif endif 120
8
4. PDL ( Program Design Language )
PDL是一种用于描源自文库功能模块的算法设计和加工细节的
语言,称为设计程序用语言。它是一种伪码。一般地,
伪码的语法规则分为“外语法”和“内语法”。外语法 应当符合一般程序设计语言常用语句的语法规则;而内
语法可以用英语中一些简单的句子、短语和通用的数学
详细设计 (过程设计)
定义: 在概要设计阶段完成了软件系统的总体设计,规定了各 个模块的功能及模块之间的联系之后,进一步就要考虑实现 各个模块规定的功能,也就是进行软件的详细设计,也称为 过程设计。
任务: 要决定各个模块的实现算法,并精确地表达这些算法。 常用工具: 1. 程序流程图 2. N-S图 3. PAD图 4. 伪代码 PDL
10
11
软件设计文档要求
概要设计说明书:规定软件结构
内容:以层次图表形式表示的软件总体结构、模块的
外部设计
详细设计说明书:描述程序的过程
内容:表示软件结构的图表、对逐个模块的程序描述
12
复审
复审:设计复审指对设计文档的复审。 目的在于及早发现设计中的缺陷和错误。 复审指导原则: 概要设计复审(PDR)和详细设计复审(DDR)应该分 开进行。 复审的内容: 概要设计复审(PDR): 重点在系统的总体结构、模块的划分、内外接口 详细设计复审(DDR): 重点在各个模块的具体设计上 软件设计时复审,可以找出软件中50%——65%的错误
符号,来描述程序应执行的功能。
PDL就是这样一种伪码。它具有严格的关键字外语法, 用于定义控制结构和数据结构,同时它的表示实际操作 和条件的内语法又是灵活自由的,可使用自然语言的词
汇。下面举一个例子,来看PDL的使用。
9
PDL举例
PROCEDURE spellcheck 查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词 lood up words in dictionary 在字典中查这些单词 display words which are not in dictionary 显示字典中查不到的单词 create a new dictionary 造一新字典 END spellcheck PDL特点: (1)有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特 征。 (2)内语法使用自然语言来描述处理特性。 (3)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层 次结构)的数据结构。 (4)有子程序定义与调用机制,用以表达各种方式的接口说明
从2到100中去掉2,3,…,9,10的倍数,剩下的就是 100以内的素数。
为了解决这个问题,可先按程序功能写出一个框架。
16
main ( ) { /*建立2到100的数组A[ ],其中A[i]=i*/ for ( i = 2;i <= 100;i++ ) A[i] = i; /* 建立2到10的素数表B[ ],其中存放2到 10以内的素数*/ B[1]= 2;B[2]= 3;B[3]= 5;B[4]= 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ for ( j = 1;j <= 4;j++ ) /*检查A[ ]所有的数能否被B[j]整除并将能 被整除的数从A[ ]中剔除*/ for ( i = 2;i <= 100;i++) if ( A[i]/B[j] * B[j] == A[i] ) A[i] = 0; /*输出A[ ]中所有没有被剔除的数*/ for ( i = 2; i <= 100;i++) /*若A[i]没有被剔除,则输出之*/ if ( A[i] != 0 ) printf ( “A[%d]=%d\n”, I,A[i] ); }
6
3. PAD图
PAD是Problem Analysis Diagram的缩写,它是日本日立公司提出, 由程序流程图演化来的。现在已为ISO认可。
7
PAD图特点: 用PAD所表达的程序,结构清晰并且结构化程度高。作为一种详细 设计的工具,它比流程图更易读,且由于PAD是一种树形结构,比流程 图更容易在计算机上处理,容易将PAD图转换成程序。
if ( A < B ) goto 120; if ( B < C ) goto 110; write ( C ); goto 140; write ( B ); goto 140; if ( A < C ) goto 130; goto 100; write ( A ); end
15
例 找出100以内的素数