软件工程07-实现

上传人:012****78 文档编号:133492107 上传时间:2020-05-27 格式:PPT 页数:111 大小:855.50KB
返回 下载 相关 举报
软件工程07-实现_第1页
第1页 / 共111页
软件工程07-实现_第2页
第2页 / 共111页
软件工程07-实现_第3页
第3页 / 共111页
软件工程07-实现_第4页
第4页 / 共111页
软件工程07-实现_第5页
第5页 / 共111页
点击查看更多>>
资源描述

《软件工程07-实现》由会员分享,可在线阅读,更多相关《软件工程07-实现(111页珍藏版)》请在金锄头文库上搜索。

1、个人成果 妥善保存 请勿传播 软件工程 岐兵Email qib 个人成果 妥善保存 请勿传播 可行性研究 需求分析 概要设计 详细设计 实现 集成测试 确认测试 使用与维护 退役 软件定义 软件开发 软件使用与维护 软件生命周期 个人成果 妥善保存 请勿传播 软件实现的任务 软件实现把编码和测试统称为实现编码就是把软件设计结果翻译成用某种程序设计语言书写的程序所选用的程序设计语言的特点及编码风格将对程序的可靠性 可读性 可测试性和可维护性产生深远的影响 个人成果 妥善保存 请勿传播 软件实现的任务 软件实现软件测试在软件生命周期中横跨两个阶段编码和单元测试属于软件生命周期的同一个阶段对软件系统

2、还应该进行各种综合测试 这是软件生命周期中的另一个独立的阶段软件测试的工作量往往占软件开发总工作量的40 以上 个人成果 妥善保存 请勿传播 课程内容提纲 第7章 实现 编码软件测试基础单元测试 集成测试 确认测试白盒测试技术黑盒测试技术调试软件可靠性 个人成果 妥善保存 请勿传播 编码 程序设计语言是人和计算机通信的基本工具程序设计语言的特点影响人的思维和解题方法影响人和计算机通信的方式和质量影响人月度和理解程序的难易程度由于软件大部分成本在测试和维护 所以程序容易测试和容易维护极端重要 个人成果 妥善保存 请勿传播 编码 选择程序设计语言程序员在相同时间内可以写出的高级语言语句数和汇编语言

3、指令数大体相同因此用高级语言写程序比用汇编语言写程序生产率可以提高好几倍用高级语言写的程序易测试 易阅读和维护 除了特殊的应用领域需要汇编语言 其他程序一律使用高级语言编写 个人成果 妥善保存 请勿传播 编码 选择程序设计语言的理想标准应该有理想的模块化机制 以及可读性好的控制结构和数据结构语言特点应该使编译程序能够尽可能多地发现程序中的错误选用的高级语言应该有良好的独立编译机制 个人成果 妥善保存 请勿传播 编码 选择程序设计语言的实用标准系统用户的要求如果所开发的系统由用户负责维护 用户通常要求用他们熟悉的语言书写程序可以使用的编译程序运行目标系统的环境中可以提供的编译程序往往限制了可以选

4、用的语言的范围可以得到的软件工具如果某种语言有支持程序开发的软件工具可以利用 则目标系统的实现和验证都变得比较容易 个人成果 妥善保存 请勿传播 编码 选择程序设计语言的实用标准工程规模如果工程规模很庞大 现有的语言又不完全适用 那么设计并实现一种供这个工程项目专用的程序设计语言 可能是一个正确的选择程序员的知识如果和其他标准不矛盾 那么应该选择一种已经为程序员所熟悉的语言 个人成果 妥善保存 请勿传播 编码 选择程序设计语言的实用标准软件可移植性要求如果目标系统将在几台不同的计算机上运行 或者预期的使用寿命很长 那么选择一种标准化程度高 程序可移植性好的语言就是很重要的软件的应用领域FORT

5、RAN语言特别适合于工程和科学计算COBOL语言适合于商业领域应用C语言和Ada语言适用于系统和实时应用领域LISP语言适用于组合问题领域PROLOG语言适于表达知识和推理 个人成果 妥善保存 请勿传播 编码 编码风格 好 程序的标准源程序代码的逻辑简明清晰 易读易懂为写出 好 程序应遵循的原则 个人成果 妥善保存 请勿传播 编码 编码风格1程序内部的文档程序内部的文档包括 恰当的标识符适当的注解程序的视觉组织选取含义鲜明的名字 对帮助阅读程序很重要 不必要的长标识符提供了出错的潜在可能性 如果使用缩写 缩写规则在整个程序设计过程中应保持一致 必要时应给缩写名字加注解 个人成果 妥善保存 请勿

6、传播 编码 编码风格1程序内部的文档程序中的注解分为两类序言性注解 位于每个模块的开始 作用是简要描述模块的功能 主要算法 接口和重要数据功能性注解 它插在程序中间 一般在源代码的右边 其作用是解释这段代码的必要性程序清单的布局对于程序的可读性有很大影响程序设计者应该遵循简单语句一行写一个语句对于选择 循环等复杂语句采用逐层缩进的书写原则 保证程序具有良好的梯形结构 个人成果 妥善保存 请勿传播 编码 编码风格2数据说明数据说明的次序应该标准化例如 按照数据结构或数据类型确定说明的次序有次序就容易查阅 因此能够加速测试 调试和维护的过程 当多个变量名在一个语句中说明时 应该按字母顺序排列这些变

7、量如果设计时使用了一个复杂的数据结构 则应该用注解说明用程序设计语言实现这个数据结构的方法和特点 个人成果 妥善保存 请勿传播 编码 编码风格3语句构造构造语句时应该遵循的原则是 每个语句都应该简单而直接不能为了提高效率而使程序变得过分复杂不要为了节省空间而把多个语句写在同一行尽量避免复杂的条件测试尽量减少对 非 条件的测试避免大量使用循环嵌套和条件嵌套用括号使逻辑或算术表达式的运算次序清晰直观 个人成果 妥善保存 请勿传播 编码 编码风格4输入输出风格的规则对所有输入数据都进行检验检查输入项重要组合的合法性保持输入格式简单使用数据结束标记 不要要求用户指定数据的数目提示交互式输入的请求 说明

8、可用的选择或边界数值程序语言对格式有严格要求时 应保持输入格式一致设计良好的输出报表 个人成果 妥善保存 请勿传播 编码 编码风格5效率效率主要指处理机时间和存储器容量两个方面关于效率的三条原则第一 效率是性能要求 应该在需求分析阶段确定效率方面的要求 第二 效率是靠好设计来提高的 第三 程序的效率和程序的简单度是一致的 不要牺牲程序的清晰性和可读性来不必要地提高效率 个人成果 妥善保存 请勿传播 编码 编码风格5效率程序运行时间源程序的效率直接由详细设计阶段确定的算法的效率决定写程序的风格也能对程序的执行速度和存储器要求产生影响把详细设计翻译成程序时 应使用的原则 写程序之前先简化算术的和逻

9、辑的表达式研究嵌套的循环 以确定是否有语句可以从内往外移尽量避免使用多维数组尽量避免使用指针和复杂的表使用执行时间短的算术运算不要混合使用不同的数据类型尽量使用整数运算和布尔表达式 个人成果 妥善保存 请勿传播 编码 编码风格5效率存储器效率提高存储器效率主要是指如何使程序占用存储单元少 存取时间短提高执行效率的技术也能提高存储器效率对于大型计算机要考虑操作系统页式调度的特点对于微处理机应选用有紧缩存储器特性的编译程序 必要时可使用汇编语言 个人成果 妥善保存 请勿传播 编码 编码风格5效率输人输出的效率输入输出效率指人给计算机提供输入或为了理解计算机输出 所需花费的脑力是否经济简单清晰是提高

10、输入输出效率的关键所有输入输出都应有缓冲 减少用于通信的额外开销对二级存储器 如磁盘 应选用最简单的访问方法如果 超高效的 输入输出很难被人理解 则不应采用这种方法 个人成果 妥善保存 请勿传播 课程内容提纲 第7章 实现 编码软件测试基础单元测试 集成测试 确认测试白盒测试技术黑盒测试技术调试软件可靠性 个人成果 妥善保存 请勿传播 软件测试基础 防不胜防的软件错误案例1963年 美国飞往火星的火箭爆炸 损失 10million 原因FORTRAN循环DO5I 1 3误写为DO5I 1 3软件测试的必要性软件的复杂性成员之间的沟通和配合技术评审的不完整性编码引入新的错误 个人成果 妥善保存

11、请勿传播 软件测试基础 软件测试的目的软件测试的目的与软件工程其他阶段的目的都相反软件工程的其他阶段都是 建设性 的在测试阶段测试人员努力设计一系列测试方案 目的却是为了 破坏 已经建造好的软件系统 竭力证明程序中有错误不能按照预定要求正确工作测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误 最终把一个高质量的软件系统交给用户使用 个人成果 妥善保存 请勿传播 软件测试基础 软件测试的目标什么是测试 它的目标是什么 G Myers给出了关于测试的一些规则 1 测试是为了发现程序中的错误而执行程序的过程 2 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 3 成功的测试是发现了

12、至今为止尚未发现的错误的测试 个人成果 妥善保存 请勿传播 软件测试基础 软件测试准则 1 所有测试都应该能追溯到用户需求 2 应该在测试开始之前就制定出测试计划完成了需求模型就可以着手制定测试计划在建立了设计模型后就可以立即开始设计详细的测试方案 3 测试发现的错误中的80 很可能是由程序中20 的模块造成的 问题是怎样找出这些可疑的模块并彻底地测试它们 个人成果 妥善保存 请勿传播 软件测试基础 软件测试准则 4 应该从 小规模 测试开始 并逐步进行 大规模 测试通常 首先重点测试单个程序模块 然后把测试重点转向在集成的模块簇中寻找错误 最后在整个系统中寻找错误 5 穷举测试是不可能的所谓

13、穷举测试就是把程序所有可能的执行路径都检查一遍的测试 6 为了达到最佳的测试效果 应该由独立的第三方从事测试工作 个人成果 妥善保存 请勿传播 主要问题 穷尽测试通常是不可能的 例 Black box 程序要求输入3个整形数据 若字长16位 则各种可能输入的排列组合共有 种 软件测试基础 若程序执行需10 3秒 则对于所有合法输入的测试大约需用一万年 而且还应测试输入非法数据的情况 个人成果 妥善保存 请勿传播 软件测试基础 例 下图所示的程序中共有520 1014条可能的执行通路 显然 每条通路都执行一遍是不现实的 个人成果 妥善保存 请勿传播 软件测试基础 测试方法有关概念测试用例一组用于

14、测试的输入数据和预期得出的正确输出测试方案测试用例和用例预定要检验的功能测试计划要进行的测试种类和进度安排 个人成果 妥善保存 请勿传播 软件测试基础 测试方法黑盒测试法把程序看作一个黑盒子 完全不考虑程序的内部结构和处理过程黑盒测试是在程序接口进行的测试检查程序功能是否能按照规格说明书的规定正常使用程序是否能适当地接收输入数据产生正确的输出信息程序运行过程中能否保持外部信息黑盒测试又称为功能测试 测试过程后期使用的方法 个人成果 妥善保存 请勿传播 软件测试基础 测试方法白盒测试法把程序看成装在一个透明的白盒子 测试者完全知道程序的结构和处理算法这种方法按照程序内部的逻辑测试程序 检测程序中

15、主要执行通路是否都能按预定要求正确工作白盒测试又称为结构测试 测试过程早期使用的方法 个人成果 妥善保存 请勿传播 软件测试基础 测试步骤1 模块测试模块测试的目的是保证每个模块作为一个单元能正确运行模块测试通常又称为单元测试在这个测试步骤中所发现的往往是编码和详细设计的错误2 子系统测试子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试模块相互间的协调和通信是这个测试过程中的主要问题这个步骤着重测试模块的接口 个人成果 妥善保存 请勿传播 软件测试基础 测试步骤3 系统测试把经过测试的子系统装配成一个完整的系统来测试发现的往往是软件设计中的错误 也可能发现需求说明中的错误兼有检测和

16、组装两重含义 通常称为集成测试4 验收测试验收测试把软件系统作为单一的实体进行测试 测试内容与系统测试基本类似 但是它是在用户积极参与下进行的 而且可能主要使用实际数据 系统将来要处理的信息 进行测试验收测试的目的是验证系统确实能够满足用户的需要 在这个测试步骤中发现的往往是系统需求说明书中的错误验收测试也称为确认测试 个人成果 妥善保存 请勿传播 软件测试基础 测试步骤5 平行运行所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统 以便比较新旧两个系统的处理结果 这样做的具体目的有如下几点 1 可以在准生产环境中运行新系统而又不冒风险 2 用户能有一段熟悉新系统的时间 3 可以验证用户指南和使用手册之类的文档 4 能够以准生产模式对新系统进行全负荷测试 可以用测试结果验证性能指标 个人成果 妥善保存 请勿传播 软件测试基础 测试阶段的信息流软件配置 包括需求说明书 设计说明书和源程序清单测试配置 包括测试计划和测试方案 个人成果 妥善保存 请勿传播 课程内容提纲 第7章 实现 编码软件测试基础单元测试 集成测试 确认测试白盒测试技术黑盒测试技术调试软件可靠性 个人成果 妥善

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号