软件工程_实现.ppt_第1页
软件工程_实现.ppt_第2页
软件工程_实现.ppt_第3页
软件工程_实现.ppt_第4页
软件工程_实现.ppt_第5页
免费预览已结束,剩余198页可下载查看

下载本文档

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

文档简介

1、实现、取出产品、实现在生命周期中的位置、软件设计、编码和测试统称为实现、编码:编写程序(根据设计)。测试:尝试运行代码,直到它是正确的。事实上,编码和测试是不可分割的。测试将跨越软件生命周期的两个阶段(单元测试和集成综合测试)。测试是整个软件工程中工作量第二大的部分(它可能占总工作量的40%以上,但实际上却是最大的)。在这个阶段,我们不应该认为你已经写完了程序。(但实际上,当你收到项目资金时,你就完成了。)软件工程的目标是开发完全满足所有用户需求的高质量软件,但这仅仅是理想的!测试的最终目标是停止测试,这也是理想的!测试的目的是发现错误!测试绝不是调试。调试的目的是纠正程序中的错误(普通程序员

2、更注重语法调试)。调试的目的是纠正错误!(程序员认为最困难的部分),编码,这个阶段的任务是把软件设计的结果翻译成一个能被计算机“理解”和用计算机语言表达的程序。编程语言:是人们与计算机交流的基本工具,它指导计算机按照人们的意愿工作。19461954:机器语言和汇编语言,它们与计算机硬件操作一一对应。1954年:FORTRAN是第一种高级语言。高级语言的类型:基本语言-fortran,basic,cobol,ALGOL结构化语言-pl/1,Pascal,c,ada特殊语言-特殊应用程序,如LISP,Prolog。编程语言的特点:名称描述:类型描述:初始化:程序对象(语句、存储、进程的局部性:程序

3、模块:循环控制结构:分支选择结构:异常处理:独立编译:选择编程语言的原则:系统用户的要求;可以使用的编译器;可用的软件工具;项目规模;程序员的知识;软件可移植性要求;软件的应用领域。编码、编程方式、编写程序的风格、程序内部的文档适当且有意义的标识符、注释、程序的可视化组织(句子布局)、数据描述顺序标准化、分类、句子结构每个句子的结构应该简单、直接且易于理解。一般来说,为了节省纸张,不要在一行中写多条语句;避免复杂的条件测试;减少“不”条件的测试;避免大量使用循环嵌套和条件嵌套;用括号使逻辑表达式或算术表达式的运算顺序清晰直观。输入/输出效率-程序运行时间,内存效率,输入和输出效率。编程方法论,

4、编程自动化三种方式(用户需求的正式和准确定义,组件技术,范例),编程工具编译程序代码管理系统,编码,一般来说,衡量某一编程语言是否适合某一特定项目,应考虑以下因素:应用领域算法和计算复杂性;软件操作环境中的性能要求;数据结构的复杂性;软件开发人员的知识水平;可用的编译系统;选择编程语言的基本原则;系统用户可用的软件工具;工程规模;程序员的知识;软件可移植性对软件应用领域、编码、编码风格的要求在很大程度上影响了程序的可读性、可测试性和可维护性。由于软件的大部分成本是在测试和维护阶段消耗的,所以倡导良好的编码风格并努力提高可测试性和可维护性是极其重要的。好的编码风格是在不影响性能的情况下有效地安排

5、和组织程序,从而提高可读性和可维护性。为了编译一个清晰、紧凑和高效的程序,应该依次考虑以下原则:(1)编译一个易于修改和维护的代码;(2)编译一个易于测试的代码;(3)统一编程和文档工作;(4)在编程中采用统一的标准和惯例,以降低程序的复杂性;(5)限制各层的副作用,降低耦合度;(6)尽可能重用程序的内部文档部分(即注释部分)的样式数据表明,每个语句的构造简单而直接,为了提高效率,程序不能变得过于复杂;为了节省空间,不要在同一行写多条语句;尽量避免复杂的条件测试;尽量减少“不”条件的测试;避免大量使用循环嵌套和条件嵌套;用括号使逻辑表达式或算术表达式的运算顺序清晰直观;输入和输出验证所有输入数

6、据;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,不要要求用户指定数据的数量;清楚地提示交互输入的请求,并指定可用的选择或边界值;当编程语言对格式有严格要求时,输入格式应该一致;设计良好的输出报告;标记所有输出数据;效率(时间、空间)程序运行时间(考虑的主要因素)存储区效率(考虑的次要因素)输入输出效率(缓冲区应用),算法复杂度因素,避免多层循环和嵌套递归,使用较少的多维数组,使用较少的指针和复杂的表,避免复杂的运算(加、减、乘、除、平方根、超越运算)。尽量使用整数和布尔运算、编码和数据描述的简单原则:数据描述的顺序应该标准化;当同时解释多个变量时,它们应该按字母顺序排列。如

7、果在设计中使用复杂的数据结构,那么用编程语言实现它的特点和方法应该用注释来解释。编码和句子结构应尽可能简单,并应遵循以下原则:程序应清晰直观,不要过于巧妙;使用某些原则来指导控制结构的使用;(1)不要使用空的THEN语句;(2)避免“然后-如果”结构;(3)不要窝得太深;(4)避免不必要的转移;(5)使用转到;原则上;(6)采用标准结构,弥补语言的不足。用括号清楚地表示逻辑表达式和算术表达式;使用空白或清晰的符号清楚地表达声明的内容;心理换位“如果我没有写这个程序,我能理解它吗?”编码和程序交互部分的设计指导原则:掩盖计算机的内部特征,使用户看不到;将程序穿上“防弹背心”,即保证程序不会被用户

8、破坏,用户不会使程序异常结束;如果用户的请求会产生重大后果,有必要提醒用户;根据用户的级别设计输入要求;区别对待不同类型的用户;最小化用户的错误处理工作量。编码、编程支持环境目前,编程过程大多是在一套CASE工具的支持下进行的,这些工具辅助完成编辑、编译、调试、项目管理等一系列任务。这些工具有机地集成在一起,形成了一个编程支持环境。编码和编程支持环境应具有以下特点:通用性:适用于不同的语言、不同的应用领域和开发方法;适应性:通过设置开关,可以准备不同的编程支持环境示例;开放性:新工具很容易添加;重用支持:支持可重用模块的存储、索引和搜索;自控:确保正确和协调的操作;自带数据库:提供数据库机制来

9、存储和管理开发的软件产品;质量保证:有助于提高开发软件的质量;吸引用户:用户愿意使用;市场竞争力:它能真正提高软件生产率。测试和软件测试的重要性及其对软件可靠性的影响怎么强调都不为过。软件测试的工作量通常占软件开发总工作量的40%以上(在极端情况下,它是其他步骤总成本的3到5倍)。软件测试的目的与软件工程所有其他阶段的目的相反,并且目的不是建设性的。测试,软件测试的目标或定义:测试是执行程序以发现程序中错误的过程。一个好的测试用例是发现到目前为止还没有发现的错误。一个成功的测试是发现了迄今为止还没有发现的错误的测试。从心理学的角度来看,程序员测试自己是不合适的;综合测试需要一个专门的测试团队;

10、测试不能是全面的,但它可以是尽可能全面的,所以最终用户是最后的测试者;测试、测试和调试的区别:测试的设计和实现可以在很大程度上忽略被测对象的详细设计,但是没有详细设计的知识,调试是不可能的;测试可以由非程序员完成,但是调试则相反;测试已经奠定了它的理论基础。理论上,人们已经知道它能做什么和不能做什么,但是到目前为止,还没有一种理论方法能够经得起考验。测试,测试原则:避免软件开发部门(人员)测试自己的程序,最好由独立的第三方测试;测试用例的设计和选择以及预期结果的定义应该有利于错误检测;严格执行测试计划,消除测试的随机性;合理进行回归测试和验证,防止在故障排除过程中引入新的更严重的错误;除了非常

11、小的程序,无论是功能测试(黑盒测试)还是结构测试(白盒测试),彻底的测试是不现实的;妥善保管测试用例、测试计划、错误统计和最终分析报告,为维护提供便利;充分注意测试中的聚类现象,并根据测试后剩余误差数与这部分发现的误差数成正比的特点,重点对程序段的误差聚类进行测试,提高测试投资效益;软件测试的目标或定义测试是执行一个程序以发现程序中的错误的过程。2)一个好的测试方案是很有可能发现到目前为止还没有发现的错误的方案。3)一个成功的测试是发现到目前为止还没有发现的错误的测试。黑盒测试和白盒测试黑盒测试:我们已经知道了软件产品应该具备的功能,并且测试了每个功能是否可以正常使用。这种测试方法也称为功能测

12、试。白盒测试:了解软件产品的内部工作过程,测试产品的内部动作是否按照规范正常进行。这种测试方法也被称为结构测试。无论是每一个功能还是每一个逻辑控制路径,如果所有的情况都被测试,这样的测试将成为详尽的测试。全面的测试通常是不可行的。示例1,Sum(int a,int b,int c)返回(a b c);int类型被假定为16位整数。需要216* 216* 216次测试。每次大约需要10,000年1毫秒、20个周期,各种组合,大约520种,例2:白盒测试,测试,测试基本概念(1),软件关键点是测试模块之间的接口。将测试后的子系统组装成一个完整的系统进行测试;发现设计和编码错误,验证系统是否满足需求

13、规范中定义的功能和动态特性;也称为集成测试。同时运行新旧系统,并比较处理结果,以确定新系统是否满足相关性能指标。用户参与的验收测试、系统测试;验证用户的需求是否得到满足。测试阶段的信息流、测试与软件开发各阶段的关系软件开发过程是一个自上而下、逐步细化的过程。软件规划阶段定义软件范围,分析软件需求,建立软件信息域、功能和性能需求、约束和其他软件设计,并通过某种编程语言将设计转换成程序代码。测试过程是一个自下而上、逐步整合的过程,按相反的顺序排列。包括需求规范、设计规范、源程序列表等。测试过程、规范定义、设计、编码、系统测试、集成测试、单元测试、用户需求、验收测试、返回测试、配置管理、缺陷跟踪、测

14、试基本概念(2)、测试和软件开发阶段之间的关系(示意图)在任何情况下,都应使用边界值分析法。影响软件测试效率的因素:人为因素软件类型错误类型(1)初始试验错误(2)控制错误(3)数据错误(4)计算错误(5)接口错误(6)外观错误测试充分性:只有当测试充分性非常接近100%时,测试发现错误的能力才能得到充分发挥。调试(debug)调试是人们将软件错误现象与其原因联系起来的思维过程,人们对这一过程还没有深入了解。虽然调试可以而且应该是一个有组织的过程,但它仍然有很多技巧,心理因素在调试过程中起着一定的作用。在分析测试结果时,软件工程师经常看到软件错误的迹象,错误的内部原因可能与错误的外部表现没有明

15、显的关系。故障排除的三个要素:分析、直觉和运气。调试(调试)方法原始方法:跟踪和插入打印语句。归纳和演绎。追溯:从源程序中有症状的语句追溯。排除故障的最后一条准则是:当所有方法都失败时,向别人寻求帮助。阿尔法测试和贝塔测试,阿尔法测试由用户在开发人员处进行,测试在开发人员对用户的“指导”下进行,开发人员记录发现的问题(程序主页、现场测试);测试由软件最终用户在一个或多个客户站点进行。Beta测试是软件在开发人员无法控制的环境中的“真实”应用,用户记录他们自己发现的问题;参照测试报告修改的软件是向客户发布的软件产品;单元测试(1),也称为模块测试,是针对软件设计的最小单元程序模块进行正确性检查的

16、测试工作。其目的是找出每个模块中可能存在的各种错误。单元测试需要从程序的内部结构设计测试用例。多个模块可以并行独立测试。1。单元测试的内容,在单元测试中,测试人员需要根据详细的设计规范和源程序清单,了解模块的I/O条件和逻辑结构,主要采用白盒测试的测试用例,辅以黑盒测试的测试用例,以便能够识别和响应任何合理的输入和不合理的输入。(1)模块接口测试,在单元测试开始时,应测试通过被测模块的数据流。测试项目包括:调用该模块的输入参数是否正确;当模块调用子模块时,输入到子模块的参数是否正确;各模块中全局数量的定义是否一致;模块接口本地数据结构重要执行路径错误处理路径影响上述特征的边界条件,单元测试(2),在做内部和外部内存交换时,考虑:文件属性是否正确;打开和关闭语句是正确的;缓冲区容量是否与记录长度匹配;文件是否在读写前打开;文件是否在文件处理结束时关闭;文本写入输入错误,是否检查和处理输入输出错误。,(2)本地数据结构测试的不正确或不一致的数据类型解释了未赋值或未初始化的变量的不正确初始值或不正确默认值、模块上变量名的拼写错误或拼写错误的不一致数据类型的影响,以及(3)路径测试选择适当的测试用例来测试模块中的重要执行路径。测试用例的设计应能发现由不正确的计算、不

温馨提示

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

评论

0/150

提交评论