软件工程第7章实现和软件测试基础与可靠性_第1页
软件工程第7章实现和软件测试基础与可靠性_第2页
软件工程第7章实现和软件测试基础与可靠性_第3页
软件工程第7章实现和软件测试基础与可靠性_第4页
软件工程第7章实现和软件测试基础与可靠性_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程Software Engineering第7章实现和软件测试基础与可靠性可行性研究需求分析分析开发编码和单元测试(实现)集成测试(实现)维护维护设计详细设计总体设计软件过程模型软件生命周期编码软件测试基础 单元测试 集成测试 确认测试 白盒测试 黑盒测试调试软件可靠性3第7章 实现主要内容:4从两道概率题说起题1:假设爱国者导弹单发命中率为80%,问3发齐射命中率为多少?答:3发都不命中才算不命中因此“不命中率”(1-80%)3 = 0.8%命中率 = 1 - 0.8% = 99.2%敌机几乎有来无回5题2:波音777飞机由300万个零件组成,每个零件的合格率达到99.9999%,问整

2、架飞机的合格率是多少?答:只要一个零件不合格,整架飞机就有问题整架飞机的合格率 = (99.9999%)3000000= 你猜多少? 5%6从两道概率题说起问题出在哪里?首先该题的解答没有错但是飞机确实是最安全的交通工具之一制造飞机不是题目中说的这么简单不是简单的把零件组装起来就可以需要“全面质量管理”:模块化7从两道概率题说起例如假设整架飞机可分成5个子系统,每个子系统60万个零件如果只是简单的组装,每个子系统的合格率为(0.999999)600000=54.9%如果对每个子系统进行严格的测试,可以发现其中99%的问题,则合格率为1-(1-54.9%)*(1-99%)=99.5%再把这5个子

3、系统组装起来并测试,整架飞机的合格率就可以保证模块化设计 8从两道概率题说起引申出一题:假设一个程序员平均每写100行代码就会犯一个错误,假设一个程序有1万行,问合格率是多少?答:平均每写100行代码就会犯一个错误因此正确写出一行代码的概率是99%整个程序要正确,一句错误的代码都不能有整个程序正确的概率 = (99%)10000= 2.2510-44 09从两道概率题说起启发没有不出错的程序(除非特别简单)但是通过有效的质量管理可以保证大部分错误都被发现充分的需求分析、合理的设计、正确的编程、彻底的测试每一步都遵循规范的方法,使用有效的工具在每一个环节保证每一个中间产品的合格率模块化设计 7.

4、1 编码概念:就是把软件设计结果翻译成用某种程序设计语言书写的程序。是将设计转化为计算机能够理解的形式。10选择合适的语言工具20 七月 202211 第 7 章 编码1 程序设计语言的特性及选择一、程序设计语言特性结构化程序设计主要包括两方面:(1) 在编写程序时,强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。尽可能避免使用GOTO语句。(2) 在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。12 第 7 章 编码 结构化程序设计的主要原则 1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。 2、选用的控制结构只准许有一个入口和一个出口

5、。 3、程序语句组成容易识别的模块,每块只有一个入口和一个出口。 4、复杂结构应该用基本控制结构进行组合嵌套来实现。13 第 7 章 编码一、程序设计语言特性 2. 工程特性 (1) 可移植性:指程序从一个计算机环境移植到另一个计算机环境的容易程度,计算机环境是指不同机型、不同的操作系统版本及不同的应用软件包。 要增加可移植性,应考虑以下几点:在设计时模块与操作系统特性不应该有高度联系; 要使用标准的语言,要使用标准的数据库操作,尽量不使用扩充结构; 对程序中各种可变信息,均应参数化,以便于修改。14 第 7 章 编码 (2) 开发工具的可利用性:指有效的软件开发工具可以缩短编码时间,改进源代

6、码的质量。 目前,许多编程语言都嵌入到一套完整的软件开发环境里。这些开发工具为:交互式调试器、交叉编译器、屏幕格式定义工具、报表格式定义工具、图形开发环境、菜单系统和宏处理程序等。 (3) 软件的可重用性:指编程语言能否提供可重用的软件成分,如模块子程序可通过源代码剪贴、包含和继承等方式实现软件重用。(效率) 可重用软件在组装时,从接口到算法都可能调整, 需考虑额外代价。20 七月 202215 第 7 章 编码 (4) 可维护性:指源程序的可维护性对复杂的软件开发项目的重要性。 如易于把详细设计翻译为源程序、易于修改需要变化的源程序。因此,源程序的可读性、语言的文档化特性对软件的可维护性具有

7、重大的影响。20 七月 202216 第 7 章 编码一、程序设计语言特性3. 技术特性 语言的技术特性对软件工程各阶段有一定的影响, 特别是确定了软件需求之后,程序设计语言的特性就显得非常重要 要根据项目的特性选择相应特性的语言,要求:提供复杂的数据结构 实时处理能力强 方便地进行数据库的操作。17程序设计语言的选择 1. 项目的应用领域 项目应用领域是选择语言的关键因素, 有下列几种类型。 1) 科学工程计算 该计算需要大量的标准库函数, 以便处理复杂的数值计算, 可供选用的语言有: (1) FORTRAN语言( FORmula TRANslator ): 是世界上第一个被正式推广应用的计

8、算机语言,产生于1954年,经过FORTRAN 0到FORTRAN , 又相继扩展为FORTRAN 77,FORTRAN 90,通过几个版本不断的更新,使它不仅面向科学计算,数据处理能力也极强。18早在1951年,美国IBM公司约翰贝克斯(John Backus)针对汇编语言的缺点着手研究开发FORTRAN语言,并于1954年在纽约正式对外发布。到1957年第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。20世纪60代末,结构化程序设计方法提出后,许多计算机厂商开始对FORTRAN 66进行不同程度的扩充,引入了结构化特征。20世纪80年代末,FORT

9、RAN 77结构化和现代化的研究开始兴起, FORTRAN 90的推出,使传统FORTRAN语言具有了现代气息。Windows平台下,微软公司将FORTRAN 90无缝集成在Developer Studio集成开发环境之中,推出了,使FORTRAN 90真正实现了可视化编程Linux平台下,其gcc编译器默认支持fortran,另外有Intel,Sun Studio,openMPI,Photran等共享编译器和PGI,Absoft,lachy, IBM,SGI,HP等多个版本的商业编译器20 七月 202219 第 7 章 编码 (2) Pascal语言: 产生于60年代末, 具有很强的数据和

10、过程结构化的能力,它是第一个体现结构化编程思想的语言, 由于它语言简明、数据类型丰富、程序结构严谨,许多算法都用类Pascal来概括。用Pascal语言写程序,也有助于培养良好的编程风格。(Delphi结合使用,图形用户界面开发环境) (3) C语言:产生于70年代初,最初用于描述UNIX操作系统及其上层软件,后来发展成具有很强功能的语言,支持复杂的数据结构, 可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符。此外还具有汇编语言的某些特性,使程序运行效率高。 适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。20 七月 202220 第 7 章 编码 2)

11、数据处理与数据库应用 数据处理与数据库应用可供选用的语言如下: (1) Cobol语言( COmmonBusinessOrientedLanguage面向商业的语言): 产生于 50 年代末, 是广泛用于商业数据处理的语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开, 数据描述与算法描述分开,结构严谨层次分明, 说明采用类英语的语法结构,可读性强。在企业管理中,数值计算并不复杂,但数据处理信息量却很大。对各种类型的数据进行 收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。20 七月 202221 (2) SQL语言: 最初是为IBM公司开发的数据库查询语言, 目前不

12、同的软件开发公司有了不同的扩充版本, 如 80 年代后期我国引入Informix-SQL, Microsoft-SQL可以方便地对数据库进行存取管理。 (3) 4GL语言: 称为第4代语言,原来的第2代语言(如FORTRAN,Cobol)第3代语言(如Pascal, C等)受硬件和操作系统的局限,其开发工具不能满足新技术发展的需求,因此,在70年代末,提出了第4代语言的概念, 4GL的主要特征是:具有“面向问题”、“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。 4GL以数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报

13、表生成、多窗口表格设计、菜单生成系统等,为用户提供了一个良好的应用开发环境。4GL的代表性软件系统有:PowerBuilder、Delphi和INFORMOX-4GL等。22 第 7 章 编码 3) 实时处理 实时处理软件一般对性能的要求很高, 可选用的语言有: (1) 汇编语言:是面向机器的,它可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。 (2) Ada语言:是美国国防部出资开发的,主要用于适时、 并发和嵌入系统的语言。Ada语言是在Pascal基础上开发出来的,但其功能更强、更复杂。它提供了一组丰富的实时特性, 包括多任务处理、中断处理、任务间同步与通信等, 它

14、还提供了许多程序包供程序员选择。通过修订,已成为安全、高效和灵活的面向对象的编程语言。它被誉为第四代计算机语言的成功代表23 第 7 章 编码 4) 系统软件 如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。 5) 人工智能 如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角及自然语言处理等人工智能领域内的系统,应选择的语言如下: 24 第 7 章 编码 (1) Lisp: 是一种函数型语言,产生于60年代初,它特别适用于组合问题中的符号运算和表处理,因此用于定理证明、树的搜索和其他问题的求解。近年来Lisp广泛

15、应用于专家系统的开发, 对定义知识库系统中的事实、规则和相应的推理相对要容易一些。 (2) Prolog: 是一种逻辑型语言,产生于70年代初,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的子句组成, 比较接近于自然语言,符合人的思维方式。20 七月 202225 第 7 章 编码2. 软件开发的方法 有时编程语言的选择依赖于开发的方法,快速原型模型来开发,要求能快速实现原型,因此宜采用4GL(面向问题,面向非过程)。面向对象方法,宜采用面向对象的语言编程。面向对象的语言: (1) C+ (2) Java:26 第 7 章 编码 3. 软件执行的环境 良好的编程环境不但有效

16、提高软件生产率, 同时能减少错误,有效提高软件质量。 可视化的软件开发环境, 如Visual BASIC, Visual C, Visual FoxPro及Delphi(面向对象的Pascal)等,都提供了强有力的调试工具, 帮助你快速形成高质量的软件。27 第 7 章 编码 4. 算法和数据结构的复杂性 科学计算、实时处理和人工智能领域中的问题算法较复杂, 而数据处理、数据库应用和系统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力, 或者有构造复杂数据结构的能力。20 七月 202228 第 7 章 编码 5. 软件开发人员的知识 有时编程语言的选择与软件开

17、发人员的知识水平及心理因素有关,新的语言虽然有吸引力,但软件开发人员若熟悉某种语言, 而且有类似项目的开发经验,往往愿选择原有的语言。 开发人员应仔细地分析软件项目的类型, 敢于学习新知识,掌握新技术。20 七月 202229 第 7 章 编码3 程序设计风格 程序实际上也是一种供人阅读的文章,有一个文章的风格问题。应该使程序具有良好的风格。 源程序文档化 数据说明 语句结构 输入输出方法(1)源程序文档化 标识符的命名 安排注释 程序的视觉组织30 符号名的命名符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、 、数据区名以及缓冲区名等。这些名字应能反映它所代表的实际东西,应有一

18、定实际意义。例如,表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等。名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。31 程序的注释 夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。32序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。

19、序言性注释包括: 程序标题;有关本模块功能和目的的说明; 主要算法; 接口说明:包括调用形式,参数描述,子程序清单;33有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息; 模块位置:在哪一个源文件中,或隶属于哪一个软件包; 开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。34功能性注释功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样,而不要解释下面怎么做。 例如, /* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNTTOTAL上面注视不清楚,如果注明把月销售额计入年度总额,便使读者理解了

20、下面语句的意图: /* ADD MONTHLY-SALES TO ANNUAL-TOTAL */ TOTAL = AMOUNTTOTAL要点 描述一段程序,而不是每一个语句; 用缩进和空行,使程序与注释容易区别; 注释要正确。35 视觉组织 空格、空行和移行恰当地利用空格,可以突出运算的优先性,避免发生运算的错误。例如 ,将表达式 (A17)ANDNOT(B49)ORC写成 (A17) AND NOT (B49) OR C自然的程序段之间可用空行隔开;移行也叫做向右缩格。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系。对于选择语句和循环语句,把其中的程序段

21、语句向右做阶梯式移行。使程序的逻辑结构更加清晰。例如,两重选择结构嵌套,写成下面的移行形式,层次就清楚得多。 IF() THEN IF() THEN ELSE ENDIF ELSE ENDIF36(2) 数据说明在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点: 数据说明的次序应该标准化。有次序易查阅,能加速测试、调试和维护的过程。 例如:数据说明 数据类型说明 常量说明 简单变量类型说明 数组说明 公用数据块说明 所有的文件说明 整型量说明 实型量说明 字符量说明 逻辑量说明37 b. 当多个变量名在

22、一个语句中说明时,应该按字母顺序排列这些变量。 例如,把 integer size, length, width, cost, price 写成 cost, integer size, length, price, width c. 如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。3839(3)语句构造 构造语句时应该遵循的原则是,每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂;也不要刻意追求技巧性,使程序编写得过于紧凑。 例如:AI = AIAT; AT = AIAT; AI = AIAT;WORK = AT; AT = AI;

23、 AI = WORK; 下述规则有助于使语句简单明了: 不要为了节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试; if ( !( char0 | char 9 ) ) 改成 if ( char = 0 & char = 9 ) 不要让读者绕弯子想。 避免大量使用循环嵌套和条件嵌套; 利用括号使逻辑表达式或算术表达式的运算次序清晰直观。4041(4)输入输出 在设计和编写程序时应该考虑下述有关输入输出风格的规则: 对所有的输入数据都要进行检验,识别错误的输入,以保证每个数据的有效性;(范围) 检查输入项的各种重要组合的合法性,必要时报告输入状态信息;(字母、数子?) 使得输入的步骤和操作尽可能简单,并保持简单的输入格式; 输入数据时,应允许使用自由格式输入; 应允许缺省值;42 输入一批数据时,最好使用输入结束标志,而不要由用户指定输入数据数目; 在交互式输入输入时,要在屏幕上使用提示符明确提示交互输入的请求,指明可使用选择项的种类和取值范围。同时

温馨提示

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

评论

0/150

提交评论