当前位置:
文档之家› 武汉理工软件工程课件第6章 软件实现
武汉理工软件工程课件第6章 软件实现
五、高级语言的内在特性 1. 传统的高级语言 具有代表性有:BASI、FORTRAN、ALOGOL 2.通用的结构化程序设计语言 具有代表性的有: PASCAL、PL/1、C、Ada 等 它们都是从 ALOGOL 语言派生出来的。 PL/1是第一个真正广泛适用于多种不同的应用 领域的语言,故又称大型公共汽车语言。支持多 任务处理和复杂的I/O功能,表处理等。 Ada语言一种用于嵌入式实时计算机设计的标准 语言。提供了一组丰富的实时特性,包括多任务 处理,中断处理任务间的同步通信等。提供了Ada 程序包及辅助软件开发的环境。
C#语言。具有Java的几乎所有特征,同时又增 加了泛型(generics)、委托(delegation)代码、 λ表达式 等现代高级语言的特性,使其表达能力非常强。 面向对象的可视化语言,即所见即所得,提供了 一个可视化的开发环境,具有图形设计工具,结构化 的事件驱动编程模式。具有代表性的有:Microsoft Visual Basic、Borland Delphi等。 4.第四代语言(4GL) 称为4GL (The Forth Generation Language)。其 特点是:不需要规定算法细节,在更高层次上用不同 文法来表示程序结构和数据结构。常见的有:查询语 言、程序生成器和其它4GL语言,如:判断支持语言、 原型语言、形式化规格说明语言等。
一、影响程序效率的因素 1. 算法对效率的影响 如顺序表的查找算法,假设顺序表的长度为N, 很明显,顺序查找法的时间复杂度为O(N),而二分法 的时间复杂度却只是O(log2N)。 后者的效率明显高于前者. 2. 存储效率 操作系统的存储管理方式,直接影响到程序的存 储效率。 3. 输入输出效率
提高输入/输出速度,减少出错率。
6.1 程序设计语言的选择
一、程序设计语言的分类 按照语言级别可以分为两大类: 低级语言 包括机器语言和汇编语言。 低级语言表示成二进制形式的机器基本指令集, 或者是操作码经过符号化的基本指令集,由于其依 赖于特定的机器,其使用复杂、繁琐、费时、易出 差错,因而程序编写也有一定的难度。 高级语言 高级语言的表示方法要比低级语言更接近于待 解的问题,其特点是在一定程度上与具体机器无关, 易学、易用、易维护。高级语言的实现极大的提高 了软件的生产效率。
3. 面向对象的程序设计语言(Object-Oriented) 其中具有代表性的有: Smalltalk语言,最先实现真正的面向对象的 程序设计语言,支持程序部件的“可复用性”。 C++程序设计语言,既融合了面向对象的能力, 又与C兼容,保留了C的许多重要特性。维护了大 量已开发的C库、工具及C源程序的完整性。具有 代表性的编程环境有: Borland C++;Microsoft Visual C++等。 Java语言,是一种简单的面向对象的分布式的 语言。功能强大、高效安全,与结构无关,易于 移植,是多线程的动态语言。增加了Objective C 的扩充,提供更多的动态解决办法 。具有网络支 持、简单、安全。
for (i = 0; i < N; i++) for (j = 0; j < N; j++) V[i][j] = (i / j) * (j / i);
采用直截了当的描述方式:
for (i = 0; i < N; i++) for (j = 0; j < N; j++) V[i][j] = (i == j) ? 1 : 0;
6.5 软件代码审查
为保证代码开发的质量,在编码完成后,进行 代码审查或称Review。
审查内容:
1.程序的版式
2.文件结构
3.命名规则
4.表达式与基本语句
详见P142,表6-1 软件代码审查
⑵寻求软件设计结构中的 “关键路径” 和 “关键事件”。仔细的设计该模块的实现算法。 ⑶选择合适的高级编程语言,提高程序的编译 效率。 ⑷在效率和实现功能之间寻求平衡点。所谓的 平衡点指的是,不要求为了一些不必要的功能而耗 费大量的时间,从而降低效率,以致得不偿失。
6.3 程序设计风格
讨论程序设计风格,是力图从编码原则的角度来探 讨提高程序的可读性、改善程序质量的方法和途径。
6.2 结构化程序设计
结构程序设计的概念最早是由E.W.Dijkstra提出 来的,
结构化程序设计方法 (Structured Program), 即SP法是结构化开发方法的重要组成部分。 其基本思想是自顶向下、逐步求精。它的基本原 则是功能的分解与抽象。
一、结构化程序设计特点
1.自顶而下、逐步求精 这种逐步求精的思想符合人类解决复杂问题的 普遍规律,从而可以显著提高软件开发的效率。 体现了先全局,后局部、先抽象后具体的方法, 使开发的程序层次结构清晰,易读、易理解还易验 证,因而提高了程序的质量。 2.单入口和单出口的控制结构 结构化的程序是由且仅由顺序、选择、循环三 种基本控制结构组成,既保证了程序结构清晰,又 提高了程序代码的可重用性。
高级语言
四、程序设计语言选择准则
选择程序设计语言的一般准则: 1. 项目的应用领域。应尽量选取适合某个应用领域的 语言。 2. 算法和计算复杂性。 3. 软件的执行环境。要选取机器上能运行且具有相应 支持软件的语言。 4. 性能因素。应结合工程具体性能来考虑。 5. 数据结构的复杂性。要根据不同语言构造数据结构 类型的能力选取 。 6. 软件开发人员的知识水平以及心理因素。要特别注 意选择语言时,尽量避免受外界的影响,盲目追求 高、新的语言。
6.4 算法与程序效率
设计逻辑结构清晰、高效的算法,是提高程序效 率的关键。 例如:在P139—P140 中,用C代码编写了两种绘 制直线的算法。
在DDA算法中,一共要进行4*dx次浮点加法和 2*dx次整型到浮点型的类型转换运算;
在Bresenham算法中,没有浮点运算,共要进行 dx次整数比较运算和最多3*dx次整数加法运算。 显然,Bresenham算法在各方面都比DDA算法优 越。
程序构思巧妙,但易读性差.
3. 数据说明方法
为使程序中的数据说明更易于理解和维护,数 据说明的次序应当规范化:
可按说明类型(常量,简单变量类型,复杂类型 )
一个语句说明多个变量时,按字母顺序排列。
复杂的数据结构,要加注释。 4. 输入输出技术 输入和输出格式应尽可能统一。 输出信息中应该反映输入的数据。 输入和输出应尽可能集中安排。
二、结构化程序设计的步骤
提出和分 析问题
确定数 学模型
设计算法
模块化 编程
程序整个编 译、运行
结构化程序设计步骤
三、优化设计
优化设计有多方面的内容,例如结构的优化,功 能的优化,算法的优化和时间、效率的优化等等.
介绍对时间起决定性作用的软件的优化方法:
⑴不考虑时间因素的前提下开发并精简软件结 构。
1. 代码文件
符号名的命名。尽量用与实际意义相同或接近的标 识符命名。 源程序中的注释 注释可分为序言性注释和解释性注释。错误的注 释宁可不要。 注意源程序的书写格式
2.语句构造方法 语句构造,尤其是流程控制语句的构造技术,直 接影响到程序的可读性及效率。应采用直接、清晰的 构造方式,而不要为了提高效率或者显示技巧而降低 程序的清晰性和可读性。 例1 若有以下C程序段,其功能是要建立一个N×N的 单位矩阵V:
6
第六章
软件实现
软件的详细设计,完成了软件的过程性的描述, 接下来进入程序编码阶段。 编码(Coding)阶段的任务,是为每个模块编 写程序。即是将详细设计的结果转换为源程序代码。
本章从如何提高软件的质量和可维护性的角度, 讨论在编码阶段所要解决的主要问题:
程序设计语言的特性及选择的原则 程序设计风格 软件代码审查
6.1 程序设计语言的选择
三、高级语言的分类
1Java等 专用语言有:APT等 2. 按用户的要求分为: 过程式语言和非过程式语言; 3. 按使用方式分: 交互式语言和非交互式语言; 4.按语言的内在特点分: 系统实现语言 静态高级语言 块结构高级语言;