软件工程导论(第7章).ppt
《软件工程导论(第7章).ppt》由会员分享,可在线阅读,更多相关《软件工程导论(第7章).ppt(152页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章:实现 编码和和测试统称称为实现。编码:把:把软件件设计结果翻果翻译成程序。成程序。测试:检测程序并改正程序并改正错误的的过程。程。计算算机机程程序序设计语言言基基本本上上可可以以分分为两两大大类:1.汇编语言言;2.高高级语言。言。7.1编码编码7.1.1选择程序设计语言选择程序设计语言从从应用特点看,高用特点看,高级语言可分言可分为:1)基基础语言言如如BASIC、FORTRAN、COBOL等等2)结构化构化语言言如如PL/1、PASCAL、C、ADA等等3)专用用语言言如如APL、BLISS、FORTH、LISP、PROLOG等等选择一种一种编程程语言的理言的理论标准:准:1)有理
2、想的模)有理想的模块化机制;化机制;2)可)可读性好的控制性好的控制结构和数据构和数据结构;构;3)便于)便于调试和提高和提高软件可靠性;件可靠性;4)编译程序程序发现程序程序错误的能力的能力强;5)有良好的独立)有良好的独立编译机制。机制。选择语言言时除除了了考考虑理理论上上的的标准准,还必必须同同时考考虑主要的主要的实用用标准:准:(1)系统用户要求)系统用户要求(2)可以使用的编译程序)可以使用的编译程序(3)可以得到的软件工具)可以得到的软件工具(4)工程规模)工程规模(5)程序员知识)程序员知识(6)软件可移植性要求)软件可移植性要求(7)软件的应用领域)软件的应用领域1.程序内部的
3、文档程序内部的文档选取取含含义鲜明明的的名名字字,如如果果使使用用缩写写,缩写写规则要一致,并要一致,并给每个名字加注每个名字加注释;通通常常在在每每个个模模块开开始始处要要有有一一段段注注释,描描述模述模块功能、算法、接口特点等;功能、算法、接口特点等;程程序序清清单布布局局应利利用用适适当当的的阶梯梯形形式式,使使程序的程序的层次次结构清晰明构清晰明显。7.1.2写程序的风格写程序的风格2.数据数据说明明数据数据说明的次序明的次序应该标准化,如按数据准化,如按数据类型型确定确定说明的次序;明的次序;多个多个变量名在一个量名在一个语句中句中说明明时,应该按字按字母母顺序排列序排列这些些变量;
4、量;如果如果设计时使用了复使用了复杂的数据的数据结构,构,应该用用注注释说明明实现该数据数据结构的方法和特点。构的方法和特点。3.语句构造:句构造:语句分行、分段、复句分行、分段、复杂条件条件语句句规则、嵌套、嵌套规则等等。等等。4.输入入/输出:数据出:数据检验、格式、合法性、格式、合法性等等等等5.效率效率A程序运行程序运行时间B存存储器效率器效率C输入入/输出效率出效率 程序程序设计工具工具实例:例:VisualC运用运用VisualC+开发工具需要掌握:开发工具需要掌握:C语言特点、语法;语言特点、语法;Windows编程基础;编程基础;MFC相关知识;相关知识;VisualC集成开发
5、工具环境的使用;集成开发工具环境的使用;一、一、C语言特点、言特点、语法:法:C+语言是在言是在C语言的基言的基础是是扩展而成的,展而成的,两种两种语言的基本言的基本语法和法和语义是相同。是相同。C+中加入了面向中加入了面向对象程序象程序设计(OOP)的特征:的特征:封装性封装性:通:通过“类”把属性和函数把属性和函数组合在一起。合在一起。继承性承性:派生:派生类可从先前定可从先前定义的基的基类中中继承函承函数和属性。数和属性。多多态性性:一个函数名,由不同的:一个函数名,由不同的对象解象解释执行,行,可得到不同的可得到不同的执行效果。行效果。二、二、Windows编程基程基础:API:API
6、是是Windows应用程序用程序编程接口。程接口。API是一个程序内(或一是一个程序内(或一组相关程序内)的一相关程序内)的一组函数函数调用,程序用,程序员用它用它创建其他程序。建其他程序。程序程序员不必知道函数内部,只要知道不必知道函数内部,只要知道API的函的函数原型及返回数原型及返回值。API的函数原型及返回的函数原型及返回值形式形式可由相关的技可由相关的技术规范范资料料获得。得。现在的在的Win32API中,核心部分依靠三个主中,核心部分依靠三个主要要组件提供件提供Windows的大部分函数,的大部分函数,这三个三个组件分件分别是:是:USER32.DLL;GDI32.DLL;KERN
7、EL32.DLL。Windows消息机制消息机制:1)基于消息的事件)基于消息的事件驱动消息可以是由硬件消息可以是由硬件发来的(存于系来的(存于系统队列)列),也可以由也可以由Windows系系统和和应用程序用程序发来(存于来(存于程序程序队列中);列中);每一个每一个Windows程序在不停的捕捉各种消息程序在不停的捕捉各种消息,并并进行行处理;理;每个窗口都必每个窗口都必须有一个窗口函数,来有一个窗口函数,来负责消息消息的判断与的判断与处理。理。2)窗口函数)窗口函数对消息的消息的处理理窗口函数是一个回窗口函数是一个回调函数,可以函数,可以处理收到的理收到的消息,在程序中不需要用消息,在程
8、序中不需要用户显式式调用。用。该窗口函数的形式通常窗口函数的形式通常为:WndProc(),每个每个窗口窗口类必必须在初始化在初始化时指定一个窗口函数。指定一个窗口函数。三、三、MFC:MFC,即即Microsoft基本基本类,该类库封装了封装了SDK(软件开件开发工具包)工具包)结构、功能及构、功能及应用程序用程序框架内部技框架内部技术。它提供了它提供了许多可以重用的多可以重用的类,使得,使得Windows程序程序员避免了避免了许多重复性工作。多重复性工作。四、四、VisualC集成开集成开发工具工具环境境1)开)开发工具的使用;工具的使用;2)掌握)掌握Win32程序开程序开发流程流程;一
9、个一个win32程序由两大程序由两大块组成:成:程序代程序代码;用用户接口接口资源源。用用户接口接口资源源:菜:菜单,对话框,框,图标,光,光标等;等;这些些资源的源的实际内容(二内容(二进制代制代码)由各种工)由各种工具具产生,并以各种生,并以各种扩展名的文件存在;展名的文件存在;资源描述文件(源描述文件(*.rc)中中对用用户接口接口资源源进行描述;行描述;RC编辑器(器(RC.exe)根据根据该资源描述文件源描述文件(*.rc)将所有用将所有用户接口接口资源集中构造一个源集中构造一个*.RES文件;文件;*.RES文件与程序代文件与程序代码结合起来,构成一个合起来,构成一个Win32程序
10、。程序。关于函数关于函数库和和头文件文件:动态链接接库:应用程序用程序调用的用的API函数在函数在“执行行期期间”才才链接上的函数接上的函数库,扩展名可以是展名可以是.dll,也可以是也可以是.exe、.fon、.mod、.drv、.ocx等。等。静静态连接接库:.lib头文件文件:如:如windows.h,它包含操作系它包含操作系统本身的本身的三大模三大模块gdi32.dll、user32.dll和和kernel32.dll中的所有中的所有API函数。函数。有关有关测试的一些的一些规则:(1)测试是是为了了发现程程序序中中的的错误而而执行行程程序的序的过程;程;(2)好好的的测试方方案案是是
11、极极可可能能发现迄迄今今为止止尚尚未未发现的的错误的的测试方案;方案;(3)成功的)成功的测试是是发现了至今了至今为止尚未止尚未发现的的错误的的测试。7.2.1软件测试的目标软件测试的目标7.2软件测试基础软件测试基础测试的正确定的正确定义:“为了了发现程序中的程序中的错误而而执行程序的行程序的过程。程。”7.2.2软件件测试准准则1)所有测试都应该能追溯到用户需求;)所有测试都应该能追溯到用户需求;2)应该远在测试前就制定出测试计划;)应该远在测试前就制定出测试计划;3)把把Pareto原原理理应应用用到到软软件件测测试试中中;Pareto原原理理说说明明测测试试发发现现的的错错误误中中的的
12、80%很很可可能能是是由由程程序序中中20%的模块造成的。的模块造成的。4)应应该该从从“小小规规模模”测测试试开开始始,并并逐逐步步进进行行“大大规模规模”测试;测试;5)穷举测试是不可能的;是不可能的;穷尽测试穷尽测试:包含所有可能情况的测试称为穷尽测试。:包含所有可能情况的测试称为穷尽测试。程序程序main()()a2a1a3b输入输入输出输出a1、a2、a3:Integer16bits输入数据的穷输入数据的穷尽测试组合:尽测试组合:216216216248310146)为为了了达达到到最最佳佳测测试试效效果果,应应该该由由独独立立的的第第三三方从事测试工作。方从事测试工作。黑盒黑盒测试
13、:如如果果已已经知知道道软件件应该具具有有的的功功能能,可可以以通通过测试来来检验是是否否每每个个功功能能都都能能正正常常使使用用,这种种测试称黑盒称黑盒测试。也称功能。也称功能测试。7.2.3测试方法测试方法白盒白盒测试:也称也称结构构测试。如如果果知知道道软件件内内部部工工作作过程程,可可以以通通过测试来来检验软件件内内部部动作作是是否否按按照照规格格说明明书的的规定正常定正常进行,行,这种种测试称称为白盒白盒测试。1.模模块测试模模块测试又又称称单元元测试,它它把把每每个个模模块作作为单独的独的实体来体来测试。2.子系子系统测试子子系系统测试是是把把经过单元元测试的的模模块放放在在一一起
14、形成一个子系起形成一个子系统来来测试。7.2.4软件测试的步骤软件测试的步骤3.系系统测试系系统测试是是把把经过测试的的子子系系统装装配配成成一一个个完完整的系整的系统来来测试。4.验收收测试验收收测试把把软件件系系统作作为单一一的的实体体进行行测试(利用用(利用用户的的实际数据数据测试)。)。5.平行运行平行运行 平平行行运运行行是是同同时运运行行新新开开发出出来来的的系系统和和将将被被它它取取代代的的旧旧系系统,以以便便比比较新新旧旧两两个个系系统的的处理理结果。果。7.2.5测试阶段的信息流段的信息流测试测试评价评价调试调试可靠性可靠性模型模型软件配置软件配置测试配置测试配置测试测试结果
15、结果预期结果预期结果错误错误错误率数据错误率数据正确正确可靠性预测可靠性预测图图7.1测试阶段的信息流测试阶段的信息流7.3单元测试单元测试单元元测试的一般方法是:的一般方法是:首先通首先通过编译系系统检查并改正程序中所有的并改正程序中所有的语法法错误;然后用然后用详细设计模模块说明明为指南,指南,对重要的控重要的控制路径制路径进行行测试,以便,以便发现模模块内部的内部的错误。通常,通常,单元元测试使用白盒使用白盒测试方法。方法。1)模模块接口接口应该对穿穿过模模块接接口口的的数数据据流流进行行检测,以以保保证正确的正确的输入和入和输出。出。2)局部数据局部数据结构构这是是错误的的主主要要来来
16、源源,应该设计相相应的的测试用例,以便用例,以便发现数据数据结构方面的构方面的错误。7.3.1测试重点测试重点3)重要的重要的执行路径行路径由由于于不不可可能能进行行穷尽尽测试,因因此此选择测试路径是非常关路径是非常关键的。的。4)出出错处理通路理通路5)边界条件界条件审查小小组:1)组长;2)程序的)程序的设计者;者;3)程序的)程序的编写者;写者;4)程序的)程序的测试者。者。7.3.2代码审查代码审查7.3.3计算机算机测试由由于于软件件模模块不不是是一一个个独独立立的的系系统,不不能能独独立立运运行行,要要依依靠靠其其他他模模块调用用,或或需需要要调用用其其他模他模块。因因此此,必必须
17、要要为测试的的单元元开开发驱动程程序序或或存根程序存根程序。1)驱动程序程序相相当当于于一一个个“主主程程序序”,用用来来把把测试数数据据传送送给被被测试的模的模块,并打印有关,并打印有关结果。果。2)存根程序存根程序 用来代替被用来代替被测试模模块所所调用的模用的模块,相当于,相当于“虚虚拟子程序子程序”。如,如,测试B模模块,设计了了A模模块和和C模模块。由由A负责传送送测试数据,由数据,由C负责模模拟被被B调用的用的模模块。C模模块可能没有,可能没有,这取决于取决于B有没有有没有调用其用其他程序。他程序。A、C都是一次性程序,只在都是一次性程序,只在测试时临时使用,使用,应尽量尽量设计得
18、得简单一些,以一些,以节省省费用和用和时间。BAC被测试模块被测试模块驱动模块驱动模块存根模块存根模块例:例:正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图7.2正文加工系统正文加工系统TESTDRIVER编辑编辑3.0TESTSTUB对对“编辑编辑”功能的测试:功能的测试:7.4集成测试集成测试集集成成测试是是组装装软件件的的系系统化化技技术,它它将将经过单元元测试的模的模块联系在一起系在一起进行行测试。
19、由模由模块组装成程序装成程序时有两种方法:有两种方法:1)非非渐增式增式测试方法方法先先分分别测试每每个个模模块,再再把把所所有有模模块按按设计要求放在一起要求放在一起结合成所要的程序。合成所要的程序。2)渐增式增式测试方法方法 每次增加一个待每次增加一个待测试模模块,把它同已,把它同已经测试好的那些模好的那些模块结合起来合起来进行行测试,反复,反复进行直到完成所有模行直到完成所有模块测试的方法。的方法。使用使用渐增式增式测试方法把模方法把模块结合到合到软件系件系统中中去去时,有,有自自顶向下向下和和自底向上自底向上两种集成方法。两种集成方法。自自顶顶向向下下集集成成是是一一种种递递增增的的装
20、装配配软软件件结结构构的的方方法法,这这种种方方法法应应用用非非常常广广泛泛。它它需需要要存存根根程程序序,但是不需要驱动程序。但是不需要驱动程序。7.4.1自顶向下集成自顶向下集成这种种方方法法的的思思想想是是:从从主主控控模模块(主主程程序序)开开始始,沿沿软件件的的控控制制层次次向向下下移移动,逐逐渐把各个模把各个模块结合起来。合起来。在自在自顶向下向下结合方法中,如何将所有模合方法中,如何将所有模块组装到装到软件件结构中,又有两种方法:构中,又有两种方法:1)深度深度优先策略先策略先先组装装软件件结构的一条构的一条主主控制通路控制通路上的所有模上的所有模块,选择哪条主控制通路,具有哪条
21、主控制通路,具有较大的任意性。大的任意性。如如图,如果,如果选取左通路,取左通路,就先把模就先把模块M1、M2、M5结合起来合起来测试,然后,然后结合模合模块M8、M6,再构造中央和再构造中央和右右侧的控制通路。的控制通路。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例2)宽度度优先策略先策略沿着沿着软件件结构水平地移构水平地移动,把,把处于同一个于同一个层次的次的所有模所有模块组装起来。装起来。如如图,首先,首先结合合M2、M3、M4和主控模和主控模块M1,然后然后结合下一个控制合下一个控制层次中的模次中的模块M5、M6和和M7,最后最后结合模合模块M8。M1M2
22、M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例自自顶向向下下集集成成方方法法的基本的基本过程如下:程如下:1)对主主控控模模块进行行测试,测试时用用存存根根程程序序代代替替所所有有直直接接被被主主控控模模块调用用的的模模块;M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例2)根根据据选选定定的的结结合合策策略略(深深度度优优先先或或宽宽度度优优先先),每每次次用用一一个个实实际际模模块块代代替替一一个个存存根根程程序序(新新结结合合的的模模块块往往往往又又需需要要新新的的存存
23、根程序);根程序);3)每每结合合一一个个模模块,就就测试一个;一个;4)为保保证不不引引入入新新的的错误,需需要要进行行回回归测试,即即重重复复以以前前进行行过的的部部分分或或全全部部测试;5)重复回到第二步,)重复回到第二步,直到构成整个直到构成整个软件件结构。构。M1M2M3M4M6M5M7M8图图7.3自顶向下结合实例自顶向下结合实例 自自底底向向上上集集成成方方法法是是从从软件件结构构最最底底层模模块开开始始进行行组装装和和测试,它它与与自自顶向向下下结合合方方法法相相反反,需需要要驱动程程序序,不不需要存根程序。需要存根程序。7.4.2自底向上集成自底向上集成自自底底向向上上集集成
24、成方方法法的基本的基本过程如下:程如下:1)把把底底层模模块组合合成成实现一一个个特特定定软件件子子功功能能的的族族,如如图族族1、2、3。McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例2)为每个模每个模块设计一个一个驱动程序,作程序,作为测试的控制程序,的控制程序,以以协调测试用例的用例的输入和入和输出。出。图中中D1、D2、D3分分别是族是族1、2、3的的驱动程序;程序;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例3)对模模块进行行测试;4)用用实际模模块代代替替驱动程程序序组装装成成新新的的模模块族族,在在新新加加入入的的实际
25、模模块上上面面加加上上新新的的驱动程序程序进行行测试;McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例5)重复第二到第)重复第二到第四步,逐四步,逐渐向上加向上加入入实际模模块,直至,直至构造出整个构造出整个软件件结构。构。McMaMbD2D1D3族族1族族2族族3图图7.4自底向上实例自底向上实例7.4.3不同集成测试策略的比较不同集成测试策略的比较1.改改进的的自自顶向向下下测试方方法法;少少数数关关键模模块自底向上。自底向上。2.混合法。混合法。M1M2M3M4M5M67.4.4回回归测试指重新指重新执行已行已经做做过的部分的部分测试。回回归测试用于保用于保证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论
限制150内