当前位置:文档之家› 《软件工程》 第六章程序的实现(编码)PPT课件

《软件工程》 第六章程序的实现(编码)PPT课件

如果设每行代码的出错率为每100行源程序中可能的错误 数目。例如,每行代码的出错率为 1%,也就是说,每 100 行 源程序中就可能有一个错误。
较小的程序 --- 1.3%~1.8%/行 较大的程序 --- 2.7%~3.2%/行
21
2、McCabe 度量法
:利用程序的控制流来度量程序的复杂性
该方法是利用程序模块的程序图中环路的个数,来 计算程序的复杂性的。为此,该方法也称为环路复杂度 计算法。
它是一种退化了的程序流程图。即:把程序 流程图中每个处理符号都退化成一个结点, 而原来流程图ቤተ መጻሕፍቲ ባይዱ的流程线,则变成连接不同 结点的有向弧。
顺序、选择和循环。
6
单入口
…… for(a=1,b=1;a<=100,a++)
{ if (b>=20) break;
if (b%3==1) { b+=3; continue; } b-=5; } ……
单出口 7
…… If (A.LT.B) goto 120 If (B.LT.C) goto 110 100 write(6,*) C goto 140 110 write(6,*) B goto 140 120 If(A.LT.C) goto 130 goto 100 130 write(6,*) A 140 continue
入口和一个出口 4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句
10
……
F0=F(a); F1=F(b);
if(F0*F1<=0)
{ X0=a; X1=b;
for(i=1;i<=n;i++)
{ Xm=(X0+X1)/2; Fm=F(Xm);
if(abs(Fm)<eps||abs(X1-X0)<eps)
4
4
语句数最少
5
3
开发时间最短
3
3
效率
内存数 语句数
3
3
5
5
1
2
2
1
4
4
开发 时间
4 2-3 5 2-3 1
5
6.2 结构化程序设计 (Structured Programming)
结构化程序设计是一种设计程序的技术,它采用 “自顶向下,逐步细化”的设计方法和单入口(Single entry) 单出口(Single exit)的控制结构。 这种控制结构包括有:
第六章 系统实现 ---编码
1
标题添加
点击此处输入相 关文本内容
标题添加
点击此处输入相 关文本内容
总体概述
点击此处输入 相关文本内容
点击此处输入 相关文本内容
2
➢ 程序编码的目的 ➢ 结构化程序设计的原则 ➢ 自顶向下,逐步细化的程序方法 ➢ 程序复杂度的度量 ➢ 程序效率 ➢ 人机交互程序设计
第一步:列出问题的初步解
1:输入一组数 2:找出其中最大的数 3:输出最大的数
15
第二步:分解主要问题
2.1:首先读入一个数并设其为最大的数 2.2:将该数逐次与其它数进行比较 2.3:若有大于该数的则将其保存
16
第三步:确定数据结构
3.1:定义一数组 A 3.2:max=A(1) 3.3:从A(2)至A(n)开始比较 3.4:若当前数大于max, 则令:max=A(I)
1、程序设计是一个由粗到细的 “渐进” 的过程
2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。
二者都要一步一步地细化。
列出问题的初步解
分解主要问题
采用逐步细化方法 设计程序的步骤
继续细化
利用图形工具或伪代码 描述程序的详细逻辑
14
用逐步细化方法设计一个程序,其功能为 “从一组数中找出最大的数 ”
19
为了度量程序复杂性,要求复杂性度量应满足以下假设:
它可以用来计算任何一个程序的复杂性; 对于不合理的程序,例如对于长度动态增长的程序, 或者对于原则上无法排错的程序,不应当使用它进行 复杂性计算;
如果程序中指令条数、附加存储量、计算时间增多, 不会减少程序的复杂性。
20
1、代码行度量法 :统计程序中的源代码的行数
3
6.1 编码的目的
编码的目的: 是使用选定的程序设计语言,把模块的过程 性描述翻译为用该语言书写的源程序(源代码)
模块的过程性描述 (不可执行的)
编码 源程序 (可执行的)
4
Winberg 的程序实验结果
结果 评判项目
清晰性
名次
编码要求
程序 输出
程序可读性最佳
1-2
2
输出可读性最佳
1-2
1
占内存最小
M2
A,B,C
F A<B T
B<C F T
F A<C T
打印B 打印C 打印A
----- 单入口多出口结8构
M
无节制地使用了GOTO语句所产生的程序流程
9
一、结构化程序设计的原则
1、使用语言中的顺序、选择、重复等有限的基本控制 结构表示程序
2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个
17
第四步:用PDL描述
input array A set max=A(1) DO for I=2 to N
IF max<A(I) Set max=A(I)
ENDIF ENDDO print max
18
三、程序复杂性的度量
程序复杂性主要是指模块内部程序的复杂性。它 直 接关系到软件开发费用的多少,开发周期的长短和 软件 和软件内部潜伏错误的多少。同时它也是软件可 理解性 的另一种度量。
goto finish;
if(F0*Fm>0)
{ X0=Xm; F0=Fm;}
else
X1=Xm;
}
finish: printf(“%d\n”,Xm);
}
11
Begin
Q=abs((Fm)<eps||abs(X1-X0)<eps)
2
F0=F(a) F1=F(b)
(F0*F1)<=0 F T
X0=a X1=b i=1
{ Xm=(X0+X1)/2; Fm=F(Xm);
if(abs(Fm)<eps||abs(X1-X0)<eps) finish=1;
if(finish==0);
if(F0*Fm>0) { X0=Xm; F0=Fm;}
else X1=Xm;
i++;
}
printf(“%d\n”,Xm);
}
13
二、程序设计自顶向下,逐步求精
i<=n
T
(F0*Fm)>0 F
X0=Xm F0=Fm
X1=Xm
Xm=(X0+X1)/2 Fm=F(m)
Q
F
T
1
i
1
Xm
2
End
12
……
F0=F(a); F1=F(b);
if(F0*F1<=0)
{ X0=a; X1=b; i=1; finish=0;
while(i<=n && finish==0)
相关主题