软件工程第12章-面向对象实现课件

PPT
  • 阅读 35 次
  • 下载 0 次
  • 页数 58 页
  • 大小 465.445 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
软件工程第12章-面向对象实现课件
可在后台配置第一页与第二页中间广告代码
软件工程第12章-面向对象实现课件
可在后台配置第二页与第三页中间广告代码
软件工程第12章-面向对象实现课件
可在后台配置第三页与第四页中间广告代码
软件工程第12章-面向对象实现课件
软件工程第12章-面向对象实现课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 58
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】软件工程第12章-面向对象实现课件.pptx,共(58)页,465.445 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44893.html

以下为本文档部分文字说明:

第12章面向对象实现面向对象实现主要包括两项工作:把面向对象设计结果翻译成用某种程序语言书写的面向对象程序;测试并调试面向对象的程序。第12章面向对象实现对于面向对象的软件来说,情况也是如此。面向对象测试的目标,也是用尽可能低的测试成本发现尽可能多的软件错误。但是,面

向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。必须在实践中努力探索适合于面向对象软件的更有效的测试方法。目前,软件测试仍然是保证软件可靠性的主要措施主要内容12.1程

序设计语言12.2程序设计风格12.3测试策略12.4设计测试用例主要内容12.1程序设计语言12.2程序设计风格12.3测试策略12.4设计测试用例使用面向对象语言时,由于语言本身充分支持面向对象概念

的实现,因此,编译程序可以自动把面向对象概念映射到目标程序中。使用非面向对象语言编写面向对象程序,则必须由程序员自己把面向对象概念映射到目标程序中。面向对象设计的结果既可以用面向对象语言、也可以用非面向对象语言实现。例如,C语言并不直接支持类或对象的概念,程序员

只能在结构(struct)中定义变量和相应的函数(事实上,不能直接在结构中定义函数而是要利用指针间接定义)。12.1程序设计语言12.1.程序设计语言所有非面向对象语言都不支持一般-特殊结构的实现,使用这类语言编程时要

么完全回避继承的概念,要么在声明特殊化类时,把对一般化类的引用嵌套在它里面。到底应该选用面向对象语言还是非面向对象语言关键不在于语言功能强弱,即选择哪个语言能最好地表达问题域语义从原理上说,使用任何一种通用语言都可以实现面向对象概念。当然,使用面向对象语言,实现面向对象概念,远比使用

非面向对象语言方便,但是,方便性也并不是决定选择何种语言的关键因素。选择编程语言的关键因素,是语言的一致的表达能力、可重用性及可维护性。从面向对象观点看来,能够更完整、更准确地表达问题域语义的面向对象语言的语法是非常重要的,因为这会带来下述3个重要优点。12.1

.程序设计语言12.1程序设计语言1.一致的表示方法从前面章节的讲述中可以知道,面向对象开发基于不随时间变化的、一致的表示方法。这种表示方法应该从问题域到OOA,从OOA到OOD,最后从OOD到面向对象编程(OOP),始终稳定不变。一致的表示方法:既有利于在软件开发

过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。12.1.1面向对象语言的优点12.1程序设计语言2.可重用性为了能带来可观的商业利益,必须在更广泛的范围中运用重用机制,而不是仅仅在程序设计这个层次上进行

重用。因此,在OOA、OOD直到OOP中都显式地表示问题域语义,其意义是十分深远的。随着时间的推移,软件开发组织既可能重用它在某个问题域内的OOA结果,也可能重用相应的OOD和OOP结果。12.1程序设计语言

3.可维护性以ATM系统为例,说明在程序内部表达问题域语义对维护工作的意义。假设在维护该系统时没有合适的文档资料可供参阅,于是维护人员人工浏览程序或使用软件工具扫描程序,记下或打印出程序显式陈述的问题域语义,维护人员看到“ATM”、“账户”、“现金兑换卡”等,这对维护人员理解所要维护的软件

将有很大帮助。12.1程序设计语言12.1.2面向对象语言的技术特点20世纪80年代以来,面向对象语言像雨后春笋一样大量涌现,形成了两大类面向对象语言。一类是纯面向对象语言,如Smalltalk和Eiffel等语言另一类是混合型面向对象语言,也就是在过程语言的基础上增加面向对象机制,如C++等

语言纯面向对象语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象语言的目标则是提高运行速度和使传统程序员容易接受面向对象思想。成熟的面向对象语言通常都提供丰富的类库和强有力的开发环境。12.1程序设计语言1.支持类与对象概念

的机制所有面向对象语言都允许用户动态创建对象,并且可以用指针引用动态创建的对象。允许动态创建对象,就意味着系统必须处理内存管理问题,如果不及时释放不再需要的对象所占用的内存,动态存储分配就有可能耗尽内存。有两种管理内存的方法:一种是由语言的运行机制自动管理内存,即提

供自动回收“垃圾”的机制;另一种是由程序员编写释放内存的代码。下面介绍在选择面向对象语言时应该着重考察的一些技术特点12.1程序设计语言2.实现整体-部分(即聚集)结构的机制一般说来,有两种实现方法:使用指针独立的关联对象实现整体-部分结构。大多数现有的面向对

象语言并不显式支持独立的关联对象,在这种情况下,使用指针是最容易的实现方法,通过增加内部指针可以方便地实现关联。12.1程序设计语言3.实现一般-特殊(即泛化)结构的机制既包括实现继承的机制也包括解决名字冲突的机制

。这个问题仅在支持多重继承的语言中才会遇到。某些语言拒绝接受有名字冲突的程序,另一些语言提供了解决冲突的协议。不论使用何种语言,程序员都应该尽力避免出现名字冲突。所谓解决名字冲突,指的是处理在多个基类中可能出现的重名问题。12.1程序设计

语言4.实现属性和服务的机制对于实现属性的机制应该着重考虑以下几个方面:支持实例连接的机制;属性的可见性控制;对属性值的约束。对于服务来说,主要应该考虑下列因素:支持消息连接(即表达对象交互关系)的机制;控制服务可见性的机制;动态联编。所谓动态联编,是指应用系统在运行过程中,当需要执

行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。12.1程序设计语言5.类型检查程序设计语言可以按照编译时进行类型检查的严格程度来分类。如果语言仅要求每个变量或属性隶属于一个对象,则是弱类型的;如果语法规定每个变量或属性必须准确地属于

某个特定的类,则这样的语言是强类型的。面向对象语言在这方面差异很大,例如,Smalltalk实际上是一种无类型语言(所有变量都是未指定类的对象);C++和Eiffel则是强类型语言。混合型语言(如C++、Objective_C等)甚

至允许属性值不是对象而是某种预定义的基本类型数据(如整数和浮点数等),这可以提高操作的效率。12.1程序设计语言一是有利于在编译时发现程序错误二是增加了优化的可能性。通常,使用强类型编译型语言开发软件产品。使用弱类型解释型语言快速开发原型。总地说

来,强类型语言有助于提高软件的可靠性和运行效率,现代的程序语言理论支持强类型检查,大多数新语言都是强类型的。强类型语言主要有两个优点:12.1程序设计语言6.类库大多数面向对象语言都提供一个实用的类库。某些语言本身并没有规定提供什么样的类库,而是由实现这种语言的编译系统自行提供类库。存在类库,这

为实现软件重用带来很大方便。类库中往往包含实现通用数据结构(例如,动态数组、表、队列、栈、树等)的类,通常把这些类称为包容类。在类库中还可以找到实现各种关联的类。更完整的类库通常还提供独立于具体设备的接口类(例如,输入

输出流),此外,用于实现窗口系统的用户界面类也非常有用,它们构成一个相对独立的图形库。12.1程序设计语言7.效率许多人认为面向对象语言的主要缺点是效率低。一个原因是,某些早期的面向对象语言是解释型的而不是编译型的。另一个原因

是,这种语言在运行时使用动态联编实现多态性,这似乎需要在运行时查找继承树,以得到定义给定操作的类。事实上,使用拥有完整类库的面向对象语言,有时能比使用非面向对象语言得到运行更快的代码。这是因为类库中提供了更高效的算法和更好的数据结构。事实上,绝大多数面

向对象语言都优化了这个查找过程,从而实现了高效率查找。12.1程序设计语言8.持久保存对象任何应用程序都对数据进行处理,如果希望数据能够不依赖于程序执行的生命期而长时间保存下来,则需要提供某种保存数据的

方法。希望长期保存数据主要出于以下两个原因:(1)为实现在不同程序之间传递数据,需要保存数据;(2)为恢复被中断了的程序的运行,首先需要保存数据。一些面向对象语言(例如C++),没有提供直接存储对象

的机制。这些语言的用户必须自己管理对象的输入输出,或者购买面向对象的数据库管理系统。另外一些面向对象语言(例如Smalltalk),把当前的执行状态完整地保存在磁盘上。还有一些面向对象语言,提供了访问磁盘对象的输入输出操

作。通过在类库中增加对象存储管理功能,可以在不改变语言定义或不增加关键字的情况下,就在开发环境中提供这种功能。然后,可以从“可存储的类”中派生出需要持久保存的对象,该对象自然继承了对象存储管理功能。这就是Eiffel语言采用的策略。12.1程序设计语言12.1程序设计语言9.

参数化类有了这种机制,程序员就可以先定义一个参数化的类模板(即在类定义中包含以参数形式出现的一个或多个类型)然后把数据类型作为参数传递进来从而把这个类模板应用在不同的应用程序中,或用在同一应用程序的不同部分。Eiffel语言中就有参数化

类,C++语言也提供了类模板。所谓参数化类,就是使用一个或多个类型去参数化一个类的机制。12.1程序设计语言10.开发环境软件工具和软件工程环境对软件生产率有很大影响。编译程序或解释程序是最基本、最

重要的软件工具。在开发大型系统的时候,需要有系统构造工具和变动控制工具。12.1程序设计语言开发人员在选择面向对象语言时,还应该着重考虑以下一些实际因素。1.将来能否占主导地位为了使自己的产品在若干年后仍然具有很强的生命力,人们可能希望采用将来占主导地位的语言编

程。根据目前占有的市场份额,以及专业书刊和学术会议上所做的分析、评价,人们往往能够对未来哪种面向对象语言将占据主导地位做出预测。但是,最终决定选用哪种面向对象语言的实际因素,往往是诸如成本之类的经济因素而不是技术因素。12.1.3选择面向对象语言12.1程序设计语言2.可重用

性采用面向对象方法开发软件的基本目的和主要优点,是通过重用提高软件生产率。因此,应该优先选用能够最完整、最准确地表达问题域语义的面向对象语言。3.类库和开发环境考虑类库的时候,不仅应该考虑是否提供了类库,还应该考虑类库中提供了哪些有价值的类。为便于积累可重用的类和重用已有的类,在开发环境

中,除了提供前述的基本软件工具外,还应该提供使用方便的类库编辑工具和浏览工具。其中的类库浏览工具应该具有强大的联想功能。语言、开发环境和类库这3个因素综合起来,共同决定了可重用性。12.1程序设计语言4.其他因素在选择编程语言时,应该考虑的其他因素还有:对用户学

习面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台、发行平台;对机器性能和内存的需求;集成已有软件的容易程度等。主要内容12.1程序设计语言12.2程序设计风格12.3测试策略12.4

设计测试用例12.2程序设计风格良好的面向对象程序设计风格既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则。良好的程序设计风格不仅能明显减少维护或扩充的开销,

而且有助于在新项目中重用已有的程序代码。良好的程序设计风格对保证程序质量的重要性。12.2程序设计风格12.2.1提高可重用性软件重用有多个层次,在编码阶段主要涉及代码重用问题。代码重用一般有两种:一种是本

项目内的代码重用,另一种是新项目重用旧项目的代码。内部重用主要是找出设计中相同或相似的部分,然后利用继承机制共享它们。为做到外部重用(即一个项目重用另一项目的代码),则必须要有长远眼光,需要反复考虑精心设计。虽然为实现外部重用比实现内部重用考虑的面更广,但是,有助于实现这两类重用的程序设计准

则却是相同的。12.2程序设计风格下面讲述主要的准则:1.提高方法的内聚一个方法(即服务)应该只完成单个功能。如果某个方法涉及两个或多个不相关的功能,则应该把它分解成几个更小的方法。2.可重用性应该减小方法的规模,如果某个方法规模过大(代码长度超过一页纸可能

就太大了),则应该把它分解成几个更小的方法。12.2程序设计风格3.保持方法的一致性保持方法的一致性,有助于实现代码重用。一般说来,功能相似的方法应该有一致的名字、参数特征(包括参数个数、类型和次序)、返回值类型、使用条件及出错条件等。4.把策略与

实现分开为提高可重用性,在编程时不要把策略和实现放在同一个方法中,应该把算法的核心部分放在一个单独的具体实现方法中。为此需要从策略方法中提取出具体参数,作为调用实现方法的变元。什么是策略方法和实现方法??

12.2程序设计风格一类方法负责做出决策,提供变元,并且管理全局资源,可称为策略方法。另一类方法负责完成具体的操作,但却并不做出是否执行这个操作的决定,也不知道为什么执行这个操作,可称为实现方法。策略方法应该检查系

统运行状态,并处理出错情况,它们并不直接完成计算或实现复杂的算法。策略方法通常紧密依赖于具体应用,这类方法比较容易编写,也比较容易理解。从所完成的功能看,有两种不同类型的方法实现方法仅仅针对具体数据完成特定处理,通常用于实现复杂的算法。实现方法并不制定决策,也不管理全局资

源,如果在执行过程中发现错误,它们应该只返回执行状态而不对错误采取行动。由于实现方法是自含式算法,相对独立于具体应用,因此,在其他应用系统中也可能重用它们。12.2程序设计风格5.全面覆盖如果输入条件的各种组合都可能出现,则应该针对所有组合写出方法,而不能仅仅针对当前用到

的组合情况写方法。此外,一个方法不应该只能处理正常值,对空值、极限值及界外值等异常情况也应该能够作出有意义的响应。6.尽量不使用全局信息应该尽量降低方法与外界的耦合程度,不使用全局信息是降低耦合度的一项主要措施。12.2程序设计风格7.利用继

承机制在面向对象程序中,使用继承机制是实现共享和提高重用程度的主要途径。(1)调用子过程最简单的做法是把公共的代码分离出来,构成一个被其他方法调用的公用方法。如下图所示:12.2程序设计风格(2)分解因子有时提高相似类代码可重用性的一个有效途径,是从不同类的相似方法中分解出不同的“因子”(即不同

的代码),把余下的代码作为公用方法中的公共代码,把分解出的因子作为名字相同算法不同的方法,放在不同类中定义,并被这个公用方法调用,如图所示。使用这种途径通常额外定义一个抽象基类,并在这个抽象基类中定义公用方法。12.2程序设计风格(3)使用委托当确实存在一般-特殊关系时,

使用继承才是恰当的。继承机制使用不当将造成程序难于理解、修改和扩充。当逻辑上不存在一般-特殊关系时,为重用已有的代码,可以利用委托机制,如本书11.11.3小节所述。(4)把代码封装在类中程序员往往希望重用用其他方法编写的、解决同一类应用问题的程序代码。重用这类代码的一个比较安全的途径,是

把被重用的代码封装在类中。12.2程序设计风格上一小节所述的提高可重用性的准则,也能提高程序的可扩充性。此外,下列的面向对象程序设计准则也有助于提高可扩充性。1.封装实现策略应该把类的实现策略(包括描述属性的数据结构、修改属性的算法等)封装起来,对外只提供公有的接

口,否则将降低今后修改数据结构或算法的自由度。12.2.2提高可扩充性12.2程序设计风格2.不要用一个方法遍历多条关联链一个方法应该只包含对象模型中的有限内容。违反这条准则将导致方法过分复杂,既不易理解,也不易修改扩充。3.避免使用多分支语句一般说来,可以利用DO_CASE

语句测试对象的内部状态,而不要用来根据对象类型选择应有的行为,否则在增添新类时将不得不修改原有的代码。应该合理地利用多态性机制,根据对象当前类型,自动决定应有的行为。12.2程序设计风格4.精心确定公有方法公有方法是向公众公布的接口。对这类

方法的修改往往会涉及许多其他类,因此,修改公有方法的代价通常都比较高。为提高可修改性,降低维护成本,必须精心选择和定义公有方法。私有方法是仅在类内使用的方法,通常利用私有方法来实现公有方法。删除、增加或修改私有方法所涉及的面要窄得多,因此代价也

比较低。12.2程序设计风格程序员在编写实现方法的代码时,既应该考虑效率,也应该考虑健壮性。必须认识到,对于任何一个实用软件来说,健壮性都是不可忽略的质量指标。所谓健壮性就是在硬件故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度。12.2.3提高健

壮性12.2程序设计风格1.预防用户的操作错误软件系统必须具有处理用户操作错误的能力。任何一个接收用户输入数据的方法,对其接收到的数据都必须进行检查,即使发现了非常严重的错误,也应该给出恰当的提示信息,并准备再次接收用户的输入,不能运行中断或“死机”。2.检查

参数的合法性对公有方法,尤其应该着重检查其参数的合法性,因为用户在使用公有方法时可能违反参数的约束条件。12.2程序设计风格3.不要预先确定限制条件在设计阶段,往往很难准确地预测出应用系统中使用的数据结构的最大容量需求。因此不

应该预先设定限制条件。如果有必要和可能,则应该使用动态内存分配机制,创建未预先设定限制条件的数据结构。4.先测试后优化为在效率与健壮性之间做出合理的折衷,应该在为提高效率而进行优化之前,先测试程序的性能。经过测试

,合理地确定为提高性能应该着重优化的关键部分。主要内容12.1程序设计语言12.2程序设计风格12.3测试策略12.4设计测试用例12.3测试策略测试软件的经典策略是,从“小型测试”开始,逐步过渡到“大型测试”。用软件测试的专业术语描述,就是从单元测试开始,逐步进入集成测试,最后进行确

认测试和系统测试。对于传统的软件系统来说,单元测试集中测试最小的可编译的程序单元(过程模块),一旦把这些单元都测试完之后,就把它们集成到程序结构中去;在集成过程中还应该进行一系列的回归测试,以发现模块接口错误和

新单元加入到程序中所带来的副作用;最后,把软件系统作为一个整体来测试,以发现软件需求错误。测试面向对象软件的策略与上述策略基本相同,但也有许多新特点。12.3测试策略当考虑面向对象的软件时,单元的概念改变了。12.3.1面向对象的单元测试最小的可测试单元是封装起来的类和对象。一个类可以包含一组不

同的操作,而一个特定的操作也可能存在于一组不同的类中。因此,对于面向对象的软件来说,单元测试的含义发生了很大变化。12.3测试策略测试面向对象软件时,不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。例如,假设有一个类层次,操作X在超类中定义并被一组子类继承,每个子类

都使用操作X,但是,X调用子类中定义的操作并处理子类的私有属性。由于在不同的子类中使用操作X的环境有微妙的差别,因此有必要在每个子类的语境中测试操作X。这就说明,当测试面向对象软件时,传统的单元测试方法是不适用的,不能再在“真空”中(即孤立地)测试单个

操作。12.3测试策略12.3.2面向对象的集成测试因为在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自底向上的集成策略就没有意义了。此外,由于构成类的各个成分彼此间存在直接或间接的交互,一次集成一个操作到类中(传统的渐增式集成方

法)通常是不现实的。面向对象软件的集成测试主要有下述两种不同的策略:(1)基于线程的测试(2)基于使用的测试12.3测试策略这种策略把响应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归

测试以保证没有产生副作用。这种方法首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完为止。(1)基于线程的测试(2)基于使用的测试

在测试面向对象的软件过程中,应该注意发现不同的类之间的协作错误。集群测试(clustertesting)是面向对象软件集成测试的一个步骤。在这个测试步骤中,用精心设计的测试用例检查一群相互协作的类(通过研究对象模型可以确定

协作类),这些测试用例力图发现协作错误。12.3测试策略在确认测试或系统测试层次,不再考虑类之间相互连接的细节。和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最

可能发现用户交互需求错误的情景。当然,传统的黑盒测试方法(见本书第7章)也可用于设计确认测试用例,但是,对于面向对象的软件来说,主要还是根据动态模型和描述系统行为的脚本来设计确认测试用例。12.3.3面向对象的确认测试主要内容12.1程序设计语言12.2程序设计风格12.3测试策略12.4设计测

试用例12.4设计测试用例目前,面向对象软件的测试用例的设计方法,还处于研究、发展阶段。与传统软件测试(测试用例的设计由软件的输入—处理—输出视图或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当

的操作序列以检查类的状态。12.4设计测试用例12.4.1测试类的方法对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。测试单个类的方法主要有随机测试、划分测试和基于故障的测试3种。1.随机测试12.

4设计测试用例2.划分测试与测试传统软件时采用等价划分方法类似,采用划分测试(partitiontesting)方法可以减少测试类时所需要的测试用例的数量。下面介绍划分类别的方法。(1)基于状态的划分(2)基于属性的划分(3)基于功能的划分首先,把输入和输

出分类,然后,设计测试用例以测试划分出的每个类别。12.4设计测试用例3.基于故障的测试基于故障的测试(faultbasedtesting)与传统的错误推测法类似,也是首先推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用例。为了推测出软件中可能有的错误,应该仔细研究分析模型和设计模型

,而且在很大程度上要依靠测试人员的经验和直觉。如果推测得比较准确,则使用基于故障的测试方法能够用相当低的工作量发现大量错误;反之,如果推测不准,则这种方法的效果并不比随机测试技术的效果好。12.4设计测试用例开始集成面向对象系统以后,测试用例的设

计变得更加复杂。在这个测试阶段,必须对类间协作进行测试。和测试单个类相似,测试类协作可以使用随机测试方法和划分测试方法,以及基于情景的测试和行为测试来完成。为了举例说明设计类间测试用例的方法,这里扩充12.4.1小节引入的银行系统的例子,使它包含下图所示的类和协

作。图12.3中箭头方向代表消息的传递方向,箭头线上的标注给出了作为由消息所蕴涵的协作的结果而调用的操作。12.4.2集成测试方法12.4设计测试用例Kirani和Tsai建议使用下列步骤,以生成多个类的随机测试用例。对每个客户类,使用类操作符列表来生成一系列随机测

试序列。这些操作符向服务器类实例发送消息。对所生成的每个消息,确定协作类和在服务器对象中的对应操作符。对服务器对象中的每个操作符(已经被来自客户对象的消息调用),确定传递的消息。对每个消息,确定下一层被调用的操作符,并把这些操作符结合进测试序列中。1.多类测试12.4设计测试用例1

.多类测试另一种划分测试方法,根据与特定类的接口来划分类操作。多个类的划分测试方法类似于单个类的划分测试方法。但是,对于多类测试来说,应该扩充测试序列以包括那些通过发送给协作类的消息而被调用的操作。还可以用基于状态的划分,进一步精化划

分。12.4设计测试用例2.从动态模型导出测试用例怎样用状态转换图作为表示类的动态行为的模型。类的状态图可以帮助人们导出测试该类(及与其协作的那些类)的动态行为的测试用例。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?