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

合集下载

软件工程讲义第六章

软件工程讲义第六章
hour:=hour+1;
ENDWHILE; 2.1、2.2、2.4已能用程序语言表达,只需对2.3进一步精细化。 为了处理60个数据,又需一循环结构。
引入分钟值变量:minutes,每分钟要做的工作是: 累计:求每小时的平均值 检查违章情况 为了累计,引入变量sum: 在每小时处理前设初值为0。 每小时处理后求平均值。
3、自顶向下的程序验证。
2019年11月26日星期二
西南交通大学信息科学与技术学院
结构化程序设计的核心内容
二、使用三种基本控制结构来构造程序 1、任何程序都由顺序、选择和重复三种基本控制结构构造。 顺序实现了任何算法规约中的核心处理步骤; 条件允许根据逻辑情况选择处理方式; 重复提供了循环。 这些逻辑元素是结构化程序设计的基础。
BEGIN
1. 设置初值;
2. 处理24小时数据;
END
求精步骤1:设置初值。开始时一般不明确为哪些变量赋初值。
求精步骤2:计算结果是以小时为统计单位输出,它是重复执行24次的
循环结构。
局部数据结构设计:数据输入的方案选择:
1、处理前读入所有24小时数据,共1440个,需要大一个大的数组。
2、每次计算输入一个数据,这要保证对先前输入的数据不再使用。
ENDWHILE;
Mean:=sum/60.0; 一次违章出现是指连续5次污染值超过10.00。如果违章分布在两个相间的时 间段上,则把这次违章算在下一小时上。 首先测试当前值是否超过10.00,若是,还将进一步检查是否连续出现5次。 为了实现第二个测试,需要两个计数器: Voilation:计数本小时出现的违章次数。 Infraction:计数连续出现超过正常值的次数。 每次超正常值出现时,Infraction增1。为了保证Infraction表示连续出现超正 常值,必须保证在第一次出现超正常值时其初值为0。为了保证相继两个小时的 Infraction的值能连续被使用,在每小时处理前不能为Infraction置0值,只能在 第一小时处理前置0。另外,在发现一次未超正常值时,也应置它为0,即连续 出现超正常值中断。

软件工程导论编码(共24张PPT)

软件工程导论编码(共24张PPT)
有良好的风格。
– 源程序文档化 – 数据说明 – 语句结构 – 输入/输出方法
4
第四页,共24页。
(1)源程序文档化
– 标识符的命名 – 安排注释 – 程序的视觉组织
5
第五页,共24页。
★ 符号名的命名
• 符号名即标识符,包括模块名、变量名、常量名、标 号名、子程序名、 、数据区名以及缓冲区名等。
意追求技巧性,使程序编写得过于紧凑。
例如:A[I] = A[I]+A[T]; A[T] = A[I]-A[T]; A[I] = A[I]-A[T];
WORK = A[T]; A[T] = A[I];
A[I] = WORK;
13
第十三页,共24页。
▪ 例如:
int i,j; for ( i = 1; i <= n; i++ )
√ 写程序之前先简化算术的和逻辑的表达式; √ 仔细研究嵌套的循环,以确定是否有语句可以从内层往外移;
√ 尽量避免使用多维数组;
√ 尽量避免使用指针和复杂的表;
√ 使用执行时间短的算术运算;
√ 不要混合使用不同的数据类型;
√ 尽量使用整数运算和布尔表达式。
在效率是决定性因素的应用领域,尽量使用有良好优化特 性的编译程序,以自动生成高效目标代码。
for ( j = 1; j <= n; j++ ) V[i][j] = ( i/j ) * ( j/i )
n for ( i=1; i <= n; i++ )
for ( j=1; j <= n; j++ )
if ( i == j )
V[i][j] = 1;
else

软件工程课件第6章

软件工程课件第6章

第6章 编码
二、存储器效率
采用结构化程序设计,将程序功能合理 分块,使每个模块或一组密切相关模块的程 序体积大小与每页的容量相匹配,可减少页 面调度、减少内外存交换,提高存储器效率。
在微型计算机系统中,存储器的容量对 软件设计和编码的制约比较大。因此要选择 可生成较短目标代码且存储压缩性能优良的 编译程序,有时需要采用汇编语言编程。
第6章 编码
三、程序设计语言的选择
程序设计语言的选择常从以下几个方面考虑:
(1)项目的应用领域 (2)算法与计算的复杂性 (3)数据结构的复杂性 (4)效率 (5)可移植性 (6)程序设计人员的水平 (7)构造系统的模式
第6章 编码
6.2 编码风格
编码风格实际上是一种编码原则。从 20世纪70年代以来,编码的目标从强调效 率转变到强调清晰。与此相应,编码风格 也从追求“聪明”和“技巧”,变为提倡 “简明”和“直接”。人们逐渐认识到, 良好的编码风格能在一定程度上弥补程序 设计语言存在的缺点。反之,如果不注意 编码风格,即使使用了结构化的现代语言, 也很难写出高质量的程序。
(2)好的设计可以提高效率。
(3)代码效率与代码的简单性相关。
第6章 编码
一、代码效率
(1)应先简化算术和逻辑的表达式。 (2)仔细研究嵌套的循环,以确定是否有语 句可以从内层往外移。 (3)尽量避免使用多维数组。 (4)尽量避免使用指针和复杂的列表。 (5)使用执行时间短的算术运算。 (6)即使语言允许,一般也不要采用混合数 据类型。 (7)尽量使用整数表达式和布尔表达式。
第6章 编码
一、代码文档化:指织形式。
二、数据说明:程序或模块在其可执行部分的前面 都集中了一些说明语句 ,出于阅读理解和维护的 要求,最好使其规范化,使说明的先后次序固定 。

软件工程第6章编码(精)

软件工程第6章编码(精)

软件编码涉及的基本内容
• (2)数据处理与数据库应用,可供选用的语言有如下三种。 • ①COBOL语言:产生于20世纪50年代末,被广泛应用于 商业数据处理,具有极强的数据定义能力,程序说明与硬 件环境说明分离,数据描述与算法描述分离,结构严谨, 层次分明,说明采用英语的语法结构,可读性强。 • ②SQL语言:最初是IBM公司开发的数据库查询语言,目 前不同的软件开发公司有不同的扩充版本,如20世纪80年 代后期我国引入Informix—SQL,Microsoft的SQL可以方 便地对数据库进行存取管理。 • ③4GL语言:称为第四代语言,随着信息系统的飞速发展, 原来的第二代语言(如FORTRAN,COBOL)、第三代语 言(如PASCAL,C等)受硬件和操作系统的局限,其开发 工具不能满足新技术发展的需求,因此,在20世纪70年代 末,提出了第四代语言的概念。
软件编码涉及的基本内容
• • • 1.项目管理 项目应用领域是选择语言的关键因素,有下列几种类型。 (1)科学工程计算,需要大量的标准库函数,以便能处理复杂的数 值计算,可供选用的语言有如下四种。 ①FORTRAN语言:产生于1945年,是世界上第一个被正式推广应用 的计算机语言,经过FORTRAN0到FORTRAN4,继而又扩展到 FORTRAN77、FORTRAN90,通过版本的不断更新,使它不仅支持科 学计算,而且数据处理能力也极强。
• •


软件编码涉及的基本内容
• • 2.软件开发方法 有时编程语言的选择依赖于软件开发的方法,采用 4GL语言适合于用快速原型模型来开发。如果是面向对象 方法,一般采用面向对象的编程语言,近年来,推出了许 多面向对象的语言,这里主要介绍以下两种。 • (1)C++:是由美国AT.T公司的Bell实验室最先设计和 实现的语言,它支持并实现了面向对象设计中类的定义、 继承、封装的概念,并且与C语言兼容,已成为当今最受欢 迎的面向对象语言之一。 • (2)Java:是由Sun公司开发的一种面向对象的、分布 式的、安全的程序设计语言。因为它运行在Java虚拟机上, 因此它与硬件无关,可移植性强。和C++比较,它不支持运 算符重载、多继承等特性,但增加了内存空间自动垃圾收 集功能,使程序员不必考虑内存的管理问题,Java应用程 序提供了许多适合网络编程的软件包。

软件工程导论PPT课件-第6章-实现

软件工程导论PPT课件-第6章-实现
编码风格是指在不影响程序正确性和效率的前 提下,有效编排和合理组织程序的基本原则。良好 编码风格主要表现:可读性好、易测试、易维护。
将从以下几方面来说明编码风格:程序内部文 档、语句的构造及书写、输入/输出、效率 。
6.3 编码风格
6.3.1 程序内部文档
说明性注释信息
包括标识符的选取、增加注解和好的程序布局。
6.3 编码风格
输入设计:
(1) 输入方式力求简单,避免给用户带来不必要的麻烦。如: 尽可能采用简单的输入格式、尽可能减少用户的输入量。
(2) 交互式输入数据时应有必要的提示信息。 (3) 程序应对输入数据的合法性进行检查。 (4) 若用户输入某些数据后可能会产生严重后果,应给用户
输出必要的提示并在必要的时候要求用户确认。 (5) 当需要输入一批数据时,不要以记数方式控制数据的输
Tom J. McCabe McCabe & Associates 公 司创始人、CEO及董事会 主席、McCabe 圈复杂度 的始创者。
6.4 程序复杂度度量 6.4.1 McCabe方法
环形复杂度:根据程序控制流的复杂程度定量度 量程序的复杂程度,可得到环形复杂度。
流图: 也称“程序图”,即“退化了的”程序 流程图,仅描绘程序的控制流图,不表现对数据 的操作及分支或循环条件。
在书写语句时,应通过采用递缩式格式使程序的 层次更加清晰。
在模块之间通过加入空行进行分隔。 为了便于区分程序中的注释,最好在注释段的周
围加上边框。
6.3 编码风格
6.3.3输入/输出
输入、输出的方式往往是用户衡量程序好坏 的重要指标。为了使程序的输入、输出能便于用 户的使用,在编写程序时应对输入和输出的设计 格外注意。

《软件编码》课件

《软件编码》课件

THANK YOU
感谢聆听
命名规范
总结词
明确命名语义
详细描述
命名应准确反映变量的含义或函数的操作,使代码更具 可读性和可维护性。
注释规范
总结词
提供必要的注释
详细描述
对复杂的代码逻辑或算法提供必要的注释,帮助读者理解代码的意图和实现方式。
注释规范
总结词
保持注释更新
详细描述
当代码发生变化时,相应地更新注释,确保注释与代 码的一致性。
效果。
C语言
总结词
面向对象、高效性能
详细描述
C是一种面向对象的程序设计语言,由Bjarne Stroustrup于1983年开发。它结合了C语言的低级特 性和一些新的编程技术,如类、继承和异常处理等。 C具有高效性能和可扩展性,广泛应用于游戏开发、 系统软件等领域。
04
软件编码规范与风格
命名规范
日志输出:在关键位置输 出日志信息,帮助定位问 题所在。
单元测试:编写单元测试 用例,对每个模块进行测 试,确保模块功能正确。
06
软件编码的未来发展
人工智能在软件编码中的应用
80%
自动化代码生成
利用人工智能技术,自动生成代 码,减少人工编写的工作量,提 高开发效率。
100%
代码质量检测
通过机器学习算法,对代码进行 质量检测,发现潜在的错误和漏 洞,提高软件质量。
06
详细描述
根据业务逻辑和需求,合理处理异常情况,避 免程序崩溃或产生不可预知的行为。
05
软件编码实践与技巧
代码重构技巧
95% 85% 75% 50% 45%
0 10 20 30 40 5
代码重构是优化代码质量的重要手段,通过重构可以 消除代码中的冗余、提高代码可读性和可维护性。

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

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

140
2013-5-23
continue
----- 单入口多出口结构
M
无节制地使用了GOTO语句所产生的程序流程
2013-5-23
一、结构化程序设计的原则
1、使用语言中的顺序、选择、重复等有限的基本控制 结构表示程序 2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个 入口和一个出口 4、复杂结构应该用基本控制结构进行组合嵌套来实现
i+1 共计执行了
2013-5-23
60次
从键盘输入 10个整数,要求按由小到大 的顺序将它们输出。
请采用比较交换法和选择法对上述10条数据进行 排序,然后分别对这两种方法进行比较,并从程序 的运行效率的角度对两个程序进行比较。
2013-5-23
main() { int a[10],i,j,t; for(i=0;i<10;i++) scanf(“%d”,&a[i]);
if(F0*Fm>0) { X0=Xm; F0=Fm;} else X1=Xm; } finish: printf(“%d\n”,Xm);
2013-5-23
}
Q=abs((Fm)<eps||abs(X1-X0)<eps)
Begin F0=F(a) F1=F(b) (F0*F1)<=0
2
F
T
X0=Xm F0=Fm
第三步:确定数据结构
3.1:定义一数组 A 3.2:max=A(1) 3.3:从A(2)至A(n)开始比较 3.4:若当前数大于max, 则令:max=A(I)
2013-5-23
第四步:用PDL描述

软件工程 第4版 第6章 软件实现

软件工程 第4版 第6章 软件实现
质量更易保证
6.1 结构化程序设计 6.2 选择程序设计语言
6.3 程序设计风格
6.4 程序设计质量评价
6.5 程序设计文档
6.6 软件测试目标和原则
本章内容
6.7 软件测试方法 6.8 软件测试步骤
6.9 设计测试方案
6.10 软件调试、验证与确认
6.11 软件测试计划和分析报告
6.3 程序设计风格 01 源程序文档编写规则
OP码构成指令,不 同的CPU 具有不 同的指令系统
汇编语言
02
机器指令的符号 化,与机器指令 有着直接的对应
关系
高级程序设计语言
03
使用的概念和符号 与人们通常使用的 概念和符号比较接 近,一条语句往往 对应若干条机器指

非过程化语言
04
编码时只需说明 “做什么”,不 需描述算法细节
结构清晰、明显。
6.3 程序设计风格 02 数据说明
OPTION
数据说明的顺序应规范
对于复杂的数据结构 要加注释语句
说明同一语句的多个变量时 应按英文字母的顺序排列
变量说明不要遗漏 变量的类型、长度、 存储及初始化要正确
6.3 程序设计风格 03 语句构造要简单直接
OPTION
➢ 不要为了节省空间把多个语句写在同一行。 ➢ 尽量避免复杂的条件测试。 ➢ 尽量减少对“非”条件的测试。 ➢ 对于多分支语句,应尽量把出现可能性大的情况
6.2 选择程序设计语言 02 选用汇编语言的情况
OPTION
一般在设计应用软件时,应当优先选用高级语言,只有下列3 种情况才选用汇编语言。
软件系统对程序执行 时间和使用空间都有
严格限制
系统硬件是特殊的微处理 机,不能使用高级语言
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果设每行代码的出错率为每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)
相关文档
最新文档