




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第7章 实现软件过程模型软件过程模型软软件件生生命命周周期期 编码 软件测试基础l 单元测试l 集成测试l 确认测试l 白盒测试l 黑盒测试 调试 软件可靠性3:4 题1:假设爱国者导弹单发命中率为80%,问3发齐射命中率为多少? 答:3发都不命中才算不命中因此“不命中率”(1-80%)3 = 0.8%命中率 = 1 - 0.8% = 99.2%敌机几乎有来无回5 题2:波音777飞机由300万个零件组成,每个零件的合格率达到99.9999%,问整架飞机的合格率是多少? 答: 只要一个零件不合格,整架飞机就有问题 整架飞机的合格率 = (99.9999%)3000000= 你猜多少? 5%6
2、 问题出在哪里?首先该题的解答没有错但是飞机确实是最安全的交通工具之一 制造飞机不是题目中说的这么简单不是简单的把零件组装起来就可以需要“全面质量管理”:模块化:模块化7 例如假设整架飞机可分成5个子系统,每个子系统60万个零件如果只是简单的组装,每个子系统的合格率为(0.999999)600000=54.9%如果对每个子系统进行严格的测试,可以发现其中99%的问题,则合格率为1-(1-54.9%)*(1-99%)=99.5%再把这5个子系统组装起来并测试,整架飞机的合格率就可以保证8 引申出一题:假设一个程序员平均每写100行代码就会犯一个错误,假设一个程序有1万行,问合格率是多少? 答:平
3、均每写100行代码就会犯一个错误因此正确写出一行代码的概率是99%整个程序要正确,一句错误的代码都不能有整个程序正确的概率 = (99%)10000= 2.2510-44 09 启发 没有不出错的程序(除非特别简单) 但是通过有效的质量管理可以保证大部分错误都被发现 充分的需求分析、合理的设计、正确的编程、彻底的测试 每一步 在每一个7.1 7.1 编码编码概念:概念:就是把软件设计结果翻译成就是把软件设计结果翻译成用某种程序设计用某种程序设计语言语言书写的程序。书写的程序。是将设计转化为计算机能够理解的是将设计转化为计算机能够理解的形式。形式。102022年年6月月20日星期一日星期一111
4、 程序设计语言的特性及选择一、1.1.结构特性结构特性结构化程序设计主要包括两方面:(1) 在编写程序时,强调使用几种基本控制结构强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。尽可能尽可能避免使用避免使用GOTO语句语句。(2) 在程序设计过程中,尽量采用自顶向下和逐自顶向下和逐步细化步细化的原则,由粗到细,一步步展开。12 1、使用语言中的、等有限的基本控制结构表示程序逻辑。 2、选用的控制结构只准许有和和。 3、程序语句组成组成,每块只有和。 4、复杂结构应该用基本控制结构进行组合嵌套来实现。13一、 2. 2. 工程特性工程特性 (1) (1) 可移植性:可移植性:指程序从
5、一个计算机环境移植到另一个计算机环境的容易程度,计算机环境是指不同机型、不同的操作系统版本及不同的应用软件包。 要增加可移植性,应考虑以下几点:在设计时要增加可移植性,应考虑以下几点:在设计时模块与操作模块与操作系统特性系统特性不应该有高度联系不应该有高度联系; 要使用要使用标准的语言标准的语言,要使用,要使用标标准的数据库操作准的数据库操作,尽量,尽量不使用扩充结构不使用扩充结构; 对程序中各种对程序中各种可变可变信息,均应参数化信息,均应参数化,以便于修改。,以便于修改。14 (2) 开发工具的可利用性:指有效的软件开发工具可以缩短编码时间,改进源代码的质量。 目前,许多编程语言都嵌入到一
6、套完整的软件开发环境里。这些开发工具为:交互式调试器、交叉编译器、屏交互式调试器、交叉编译器、屏幕格式定义工具、报表格式定义工具、图形开发环境、菜幕格式定义工具、报表格式定义工具、图形开发环境、菜单系统和宏处理程序等。单系统和宏处理程序等。 (3) 软件的可重用性:指编程语言能否提供可重用的软件成分,如模块子程序可通过模块子程序可通过源代码剪贴源代码剪贴、包含和继承等方、包含和继承等方式实现软件重用。式实现软件重用。(效率)(效率) 可重用软件在组装时,从接口到算法都可能调整, 需考虑额外代价。2022年年6月月20日星期一日星期一15 (4) (4) 可维护性:可维护性:指源程序的可维护性对
7、复杂的软件开发项目的重要性。 如易于把详细设计翻译为源程序易于把详细设计翻译为源程序、易于修改需易于修改需要变化的源程序要变化的源程序。因此,源程序的可读性、语言的文档化特性对软件的可维护性具有重大的影响。2022年年6月月20日星期一日星期一16一、3. 技术特性 对软件工程各阶段有一定的影响, 特别是确定了软件需求之后,程序设计语言的特性就显得非常重要要求:要求:17 是选择语言的关键因素, 有下列几种类型。 该计算需要大量的标准库函数, 以便处理复杂的数值计算, 可供选用的语言有: (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
9、进行不同程度的扩充,引入了结构化特征。 20世纪80年代末,FORTRAN 77结构化和现代化的研究开始兴起, FORTRAN 90的推出,使传统FORTRAN语言具有了现代气息。 Windows平台下,微软公司将FORTRAN 90无缝集成在Developer Studio集成开发环境之中,推出了Microsoft FORTRAN PowerStation 4.0,使FORTRAN 90真正实现了可视化编程 Linux平台下,其gcc编译器默认支持fortran,另外有Intel,Sun Studio,openMPI,Photran等共享编译器和PGI,Absoft,lachy, IBM,S
10、GI,HP等多个版本的商业编译器2022年年6月月20日星期一日星期一19 (2) Pascal语言: 产生于60年代末, 具有很强的数据和过程结构化的能力,它是第一个体现体现结构化编程思想的语言结构化编程思想的语言, 由于它语言简明、数据类型丰富、程序结构严谨,许多算法都用类Pascal来概括。用Pascal语言写程序,也有助于培养良好的编程风格。(Delphi结合使用,图形用户界面开发环境) (3) C C语言:语言:产生于70年代初,最初用于描述,后来发展成具有很强功能的语言,支持复杂的,具有丰富灵活的。此外还具有,使程序运行效率高。 适于编写系统软件,三维,二维图形和动画,具体应用比如
11、单片机以及嵌入式系统开发。2022年年6月月20日星期一日星期一20 数据处理与数据库应用可供选用的语言如下: (1) Cobol语言( COmmonBusinessOrientedLanguage面向商业的语言): 产生于 50 年代末, 是广泛用于商业数据处理的语广泛用于商业数据处理的语言言,它具有极强的数据定义能力,程序说明与硬件环境说明分开, 数据描述与算法描述分开,结构严谨层次分明, 说明采用类英语的语法结构,。在企业管理中,数值计算并不复杂,但数据处理信息量却很大。对各种类型的数据进行 收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。2022年年6月月20日星期一
12、日星期一21 (2) 最初是为, 目前不同的软件开发公司有了不同的扩充版本, 如 80 年代后期我国引入Informix-SQL, Microsoft-SQLMicrosoft-SQL可以方便地对数据库进行存取管理。可以方便地对数据库进行存取管理。 (3,原来的第2代语言(如FORTRAN,Cobol)第3代语言(如Pascal, C等)受硬件和操作系统的局限,其开发工具不能满足新技术发展的需求,因此,在70年代末,提出了第4代语言的概念, 4GL的主要特征是:具有“面向问题面向问题”、“非过程化程度高”等特点,可以成数量级地提高软件生产率,缩短软件开发周期,因此赢得了很多用户。 4GL以以数
13、据库管理系统数据库管理系统所提供的功能为核心,所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报表生成、多窗口表格设计、菜单生成系统报表生成、多窗口表格设计、菜单生成系统等,为用户提供了一个良好的应用开发环境。4GL的代表性软件系统有:PowerBuilder、和INFORMOX-4GL等。22 实时处理软件一般对性能的要求很高, 可选用的语言有: 是面向机器的,它可以完成高级语言无法满足要求的特殊功能,如与外部设备之间的一些接口操作。是美国国防部出资开发的,主要用于适时、 并发和嵌入系统的语言。Ada语言是在Pascal基础上开发出来的,但其功能更强、更复杂。它提供了一组丰富的
14、实时特性, 包括多任务处理、中断处理、任务间同步与通信等, 它还提供了许多程序包供程序员选择。通过修订,已成为安全、高效和灵活的面向对象的编程语言。它被誉为第四代计算机语言的成功代表23 如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。 如果要完成知识库系统、专家系统、决策支持系完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别、机器人视角及统、推理工程、语言识别、模式识别、机器人视角及自然语言处理自然语言处理等人工智能领域内的系统,应选择的语言如下: 24是一种,产生于60年代初,它特别适用于组合问题中的符号运算和表处理,因此用
15、于定理证明、树的搜索和其他问题的求解。近年来Lisp广泛应用于专家系统的开发, 对定义知识库系统中的事实、规则和相应的推理相对要容易一些。是一种,产生于70年代初,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的子句组成, 比较接近于自然语言,符合人的思维方式。2022年年6月月20日星期一日星期一25 有时编程语言的选择依赖于开发的方法,来开发,要求能快速实现原型,因此宜采用4GL。,宜采用面向对象的语言编程。面向对象的语言: (1) C+ (2) Java:26 良好的编程环境不但有效提高软件生产率, 同时能减少错误,有效提高软件质量。 可视化的软件开发环境, 如Visu
16、al BASIC, Visual C, Visual FoxPro及Delphi(面向对象的Pascal)等,都提供了强有力的调试工具, 帮助你快速形成高质量的软件。27 科学计算、实时处理和人工智能领域中的问题算法较复杂, 而数据处理、数据库应用和系统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂算法的能力选择语言时可考虑是否有完成复杂算法的能力, 或者有构造复杂数据结构的能力。2022年年6月月20日星期一日星期一28 有时编程语言的选择与软件开发人员的知识水平及心理因素有关,新的语言虽然有吸引力,但软件开发人员若熟悉某种语言,软件开发人员若熟悉某种语言, 而且有类
17、而且有类似项目的开发经验,往往愿选择原有的语言。似项目的开发经验,往往愿选择原有的语言。 开发人员应仔细地分析软件项目的类型, 敢于学习新知识,掌握新技术。2022年年6月月20日星期一日星期一29 程序实际上也是一种供人阅读的文章,有一个问题。应该使程序具有良好的风格。 (1 1)源程序文档化)源程序文档化30 符号名的命名符号名的命名 符号名即标识符,包括符号名即标识符,包括模块名、变量名、常量名、模块名、变量名、常量名、标号名、子程序名、标号名、子程序名、 、数据区名、数据区名以及以及缓冲区名缓冲区名等。等。 这些名字应能反映它所代表的实际东西,这些名字应能反映它所代表的实际东西,应有一
18、应有一定实际意义。定实际意义。例如,表示次数的量用例如,表示次数的量用TimesTimes,表,表示总量的用示总量的用TotalTotal,表示平均值的用,表示平均值的用AverageAverage,表,表示和的量用示和的量用SumSum等。等。 名字不是越长越好名字不是越长越好,应当选择精炼的意义明确的,应当选择精炼的意义明确的名字。名字。必要时可使用缩写名字必要时可使用缩写名字,但这时要注意缩,但这时要注意缩写写,并且要,并且要给每一个名字加注释给每一个名字加注释。同。同时,在一个程序中,一个变量只应用于一种用途。时,在一个程序中,一个变量只应用于一种用途。31 程序的注释程序的注释 夹在
19、程序中的注释是夹在程序中的注释是程序员程序员与与日后日后的的程程序读者序读者之间之间通信的重要手段通信的重要手段。 注释注释决不是可有可无决不是可有可无的。的。 一些正规的程序文本中,注释行的数量一些正规的程序文本中,注释行的数量占到整个源程序的占到整个源程序的1/31/3到到1/21/2,甚至更多。,甚至更多。 注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释。32序言性注释序言性注释 通常置于通常置于每个程序模块的开头部分每个程序模块的开头部分,它应当给出程序的,它应当给出程序的整体说明整体说明,对于,对于理解程序本身具有引导作理解程序本身具有引导作用。用。 序言性注释包括:序
20、言性注释包括: 程序程序标题标题; 有关本模块有关本模块功能和目的功能和目的的说明;的说明; 主要主要算法算法; 接口接口说明:包括调用形式,参数描述,子程说明:包括调用形式,参数描述,子程序清单;序清单;33 有关数据描述:重要的变量及其用途变量及其用途,约束或限制条件,以及其它有关信息; 模块位置:在哪一个源文件中,或隶属于哪一个软件包; 开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。34功能性注释功能性注释 功能性注释功能性注释嵌在源程序体中,用以描述其后的语嵌在源程序体中,用以描述其后的语句或程序段是在句或程序段是在,或是执行了下面的或是执行了下面的语句会怎么样,而不要
21、解释下面怎么做。语句会怎么样,而不要解释下面怎么做。 例如,例如, / /* * ADD AMOUNT TO TOTAL ADD AMOUNT TO TOTAL * */ / TOTAL = AMOUNT TOTAL = AMOUNTTOTALTOTAL上面注视不清楚,如果注明把月销售额计入年度上面注视不清楚,如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:总额,便使读者理解了下面语句的意图: / /* * ADD MONTHLY-SALES TO ANNUAL-TOTAL ADD MONTHLY-SALES TO ANNUAL-TOTAL * */ / TOTAL = AMOU
22、NT TOTAL = AMOUNTTOTALTOTAL 要点要点 描述一段程序,而不是每一个语句;描述一段程序,而不是每一个语句; 用缩进和空行,使程序与注释容易区别;用缩进和空行,使程序与注释容易区别; 注释要正确。注释要正确。35 视觉组织视觉组织 空格、空行和移行空格、空行和移行 恰当地利用恰当地利用空格空格,可以,可以突出运算的突出运算的优先性优先性,避免发生运算的错误。例,避免发生运算的错误。例如如 ,将表达式,将表达式 ( (A A17)17)ANDNOTANDNOT( (B B49)49)ORCORC写成写成 ( (A A17) 17) AND NOTAND NOT ( (B B
23、49) 49) OR COR C 自然的程序段之间可用自然的程序段之间可用空行空行隔开;隔开; 移行移行也叫做也叫做向右缩格向右缩格。它是指程序。它是指程序中的各行不必都在左端对齐,都从中的各行不必都在左端对齐,都从第一格起排列。这样做使程序完全第一格起排列。这样做使程序完全分不清层次关系。分不清层次关系。 对于对于选择语句选择语句和和循环语句循环语句,把其中,把其中的程序段语句向右做的程序段语句向右做阶梯式移行阶梯式移行。使程序的逻辑结构更加清晰。使程序的逻辑结构更加清晰。例如,两重选择例如,两重选择结构嵌套,写成结构嵌套,写成下面的移行形式,下面的移行形式,层次就清楚得多。层次就清楚得多。
24、36(2) (2) 数据说明数据说明在设计阶段已经确定了数据结构的组织及其复杂性。在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,在编写程序时,则则需要注意数据说明的风格。需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意为了使程序中数据说明更易于理解和维护,必须注意以下几点以下几点: : a.数据说明的次序应该标准化数据说明的次序应该标准化。有次序易查阅,能加有次序易查阅,能加速测试、调试和维护的过程。速测试、调试和维护的过程。 例如:数据说明例如:数据说明 数据类型说明数据类型说明 常量说明常量说明 简单变量类型说明简单变量类型说明 数组说明数组说明 公用数
25、据块说明公用数据块说明 所有的文件说明所有的文件说明 整型量说明整型量说明 实型量说明实型量说明 字符量说明字符量说明 逻辑量说明逻辑量说明37 b. 当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。 例如,把 integer size, length, width, cost, price 写成 cost, integer size, length, price, width c. 如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。3839(3)语句构造 构造语句时应该遵循的原则是,每个语句都应该简单而直接,不能为了提高效率而使程序变
26、得过分复杂;也不要刻意追求技巧性,使程序编写得过于紧凑。 例如:AI = AIAT; AT = AIAT; AI = AIAT; 下述规则有助于使语句简单明了: 不要为了节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试; 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度医院体检与健康管理培训服务协议
- 二零二五年度劳动合同与聘用合同在劳动争议预防与处理中的策略合同
- 二零二五年度大数据分析服务借款合同
- 二零二五年度租赁合同到期后租客违约责任
- 2025年度高端商务办公租赁合同
- 社交媒体营销中的用户心理分析
- 科技发展与社交礼仪变革
- 科技创新与知识产权合规审查的互动关系
- 水生蔬菜池建设工程项目可行性研究报告-水生蔬菜产业前景广阔
- 科技发展下的磁头产品安全性能新标准解读
- 2025寒假开学第一课 课件【1】
- 2024-2024年高考全国卷英语语法填空
- 会议会务服务投标方案投标文件(技术方案)
- 无违法犯罪记录证明申请表(个人)
- (更新版)HCIA安全H12-711笔试考试题库导出版-下(判断、填空、简答题)
- 优秀教材推荐意见(真实的专家意见)
- Of studies原文译文及赏析
- 安全阀基本知识讲义
- QTD01钢质焊接气瓶检验工艺指导书
- 辛弃疾生平简介(课堂PPT)
- 人教版七年级英语下册全册英语单词默写直接打印
评论
0/150
提交评论