软件工程与实践第6章 软件实现.ppt_第1页
软件工程与实践第6章 软件实现.ppt_第2页
软件工程与实践第6章 软件实现.ppt_第3页
软件工程与实践第6章 软件实现.ppt_第4页
软件工程与实践第6章 软件实现.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论