UML面向对象分析与设计.ppt

上传人:牧羊曲112 文档编号:5451608 上传时间:2023-07-08 格式:PPT 页数:99 大小:375KB
返回 下载 相关 举报
UML面向对象分析与设计.ppt_第1页
第1页 / 共99页
UML面向对象分析与设计.ppt_第2页
第2页 / 共99页
UML面向对象分析与设计.ppt_第3页
第3页 / 共99页
UML面向对象分析与设计.ppt_第4页
第4页 / 共99页
UML面向对象分析与设计.ppt_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《UML面向对象分析与设计.ppt》由会员分享,可在线阅读,更多相关《UML面向对象分析与设计.ppt(99页珍藏版)》请在三一办公上搜索。

1、UML面向对象分析与设计,UML把Booch,Rumbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法。UML的特点:统一标准面向对象可视化,表示能力强大独立于过程容易掌握使用,UML的定义,UML定义有两个主要组成部分:语义:用自然语言描述 表示法:定义UML的可视化标准表示符号使用 UML 时,要从不同的角度观察系统,为此定义了概念“视图”。视图是对系统的模型在某方面的投影,注重于系统的某个方面。,结构视图,行为视图,实现视图,环境视图,用例视图,为最终用户做什么,系统静态结构,程序员提供什么,软件组织与管理,系统集成人员如何组织与控制系统,系统工

2、程师如何配置和运行系统,系统拓扑、交付、安装、操作、通信,分析员或测试员,系统任务控制与管理(性能,可伸缩性,吞吐量),行为,结构视图:描述系统的静态结构,可根据它确定重要的设计:类、包和子系统。实现视图:描述处于开发环境中的静态软件成分的组织(源程序、构件、数据文件、可执行程序等)。行为视图:描述系统在运行时的并发性,包括任务、线程、进程及其相互作用。,软件体系结构的 4+1 视图模型,环境视图:描述处于运行环境中的各种可执行程序是如何映射到底层平台或计算结点上的。用例视图:包括若干关键场景或用例。在初始和细化阶段用来帮助发现和设计体系结构。在构造阶段用来验证各种不同视图。在文档中用来表明其

3、他视图是如何工作的。UML分析建模着重系统的用例模型和结构模型,设计建模着重行为模型,实现模型和环境模型上。,体系结构中主要的元素包括:主要的类,如为业务实体建模的类。将行为赋予类的机制,如协同。模式与框架。层次与子系统。接口以及主要的进程控制或线程控制。UML 的三个主要组成元素 基本构造块 组织构造块的规则 运用于整个 UML 的公共机制,UML的构成,UML包括三种基本构造块:事物、关系和图。,UML事物结构事物,类,接口 描述一个类或构件的服务(操作)。协作 描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模。用例 表示系统想要实现的行为,不关心这些行为是怎样实现

4、的。,主动类 它至少拥有一个进程或线程,故能够启动控制活动。,构件 系统中物理 的、可替代的部件。节点 系统在运行 时存在的物理元素。,UML 事物行为事物,交互 由在特定环境中共同完成一定任务的一组对象之间交换的消息组成。,状态机 描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列。,UML 事物分组事物,包,UML 事物注释事物,注释 依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。,UML 关系,依赖 两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。,关联 一种描述一组对象之间连接的结构关系。聚合是一种特殊类型的关联,描述了整体和部分间的结构关系

5、。泛化 一种一般化特殊化的关系。,实现 类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。两种情况出现实现关系:在接口和实现它们的类或构件之间;用例和它们的协作之间。,模型中主要的图形元素,UML 模型的图形,1.用例图,用例图展现了一组用例、参与者以及它们间的关系。可以用用例图描述系统的静态使用情况,它定义了系统的功能需求,但这是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。在对系统行为组织和建模方面,用例图的是相当重要的。,用例规格说明:销售商品,2.类图,类图展示了一组类、接口和协作及它们间的关系。类图没有时间概念,是概念数据模型(如E-R 图)的一种延伸。用类

6、图说明系统的静态结构视图,包含主动类的类图专注于系统的静态处理视图。系统可有多个类图,单个类图仅表达了系统的一个方面,要在高层给出类的主要职责,在低层给出类的属性和操作。,类图是从系统构成角度来描述系统。类的表示:,限定关联,聚合、引用和重复度,关联名,类 1,类 2,角色 1,角色 2,关联类,泛化关系,3.对象图,对象图展示了一组对象及它们间的关系。用对象图说明类图中类的对象实例的数据结构和静态快照,即在某一时刻,一组对象的状态及其关系。对象图表达了系统的静态设计视图或静态过程视图,除了现实和原型的方面因素外,它与类图作用是相同的。,4.包图,包图表明包及其之间的依赖类图。包是对模型中涉及

7、的元素分组所得的结果,是具有特定语义的一个子集,必须保证低耦合、高内聚。广义地讲,包可以包含类、接口、构件、节点、协作、用例等,还可以内嵌其他子包。包之间的访问权限通过输出(输出品)和导入(进口货)设置,虚箭头 从源包到目标包。,5.构件图,构件图展现了一组构件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库等的系统建模。构件图表示系统的静态实现视图。,6.部署图,部署图展现了对运行时处理节点以及其中构件的配置每一节点代表一个计算单元。它描述系统硬件的物理拓扑结构(包括网络布局和构件在网络上的位置),以及在此结构上执行的软件(即运行时软构件在节点中的分布情况)。用部署图说明系统结构的静

8、态环境视图,即说明分布、交付和安装的物理系统。,8.活动图,活动图是一种特殊的状态图,描述要做的活动、执行这些活动的顺序以及工作流。它对于系统的功能建模特别重要,强调对象间的控制流程。高层活动图用于表示任务。即用于分析用例,理解涉及多个用例的工作流、多线程及并行,显示相互联系的行为整体,还可用于业务过程建模,对系统的功能建模。低层活动图用于表示类的方法。,9.状态图,状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。一个状态图描述了一个状态机,用状态图说明系统的动态视图。状态图对于接口、类或协作的行为建模尤为重要,可用它描述用例实例的生存周期。,Project对

9、象的状态图,10.交互图,交互图展现了按一定的目的进行一种交互,它由在一个上下文中的一组对象及它们之间交互的信息组成。交互图可用于描述一个用例的行为。顺序图和协作图都是交互图,它们可以相互转换。如果希望查看单个对象跨用例的行为,要使用状态图。如果希望查看跨用例跨线程的行为,要使用活动图。,10-1 顺序图,顺序图展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。对象表述为虚垂线顶端的矩形小框。垂线是对象的生命线,说明对象的生命。生命线之间的箭头表示消息。消息出现的次序自上而下。消息箭头可以回到同一条生命线,指明自调用,即对象发给自己的消息。,移动电话系统的用例图,移动电话系统的

10、顺序图,10-2 协作图,协作图展现了一组对象,这组对象之间的连接以及这组对象收发的消息。它强调收发消息的对象结构组织,按组织结构对控制流建模。协作图中的协作不是参与者与系统之间的交互,而是系统内部某一个用例中各个对象之间信息传递的方式。消息上所附编号指明执行顺序。,移动电话系统的协作图,*RUP(Rational Unified Process统一开发过程)的分析/设计工作流,分析和设计工作流的目的是研究欲采用的实现环境和系统构件的效用,定义软件的组织结构,把需求获取结果转化为实现规格。为实现这种转化,必须理解需求,采用最佳实现策略将其翻译为系统设计。为此,首先是建立健壮的软件体系结构,设计

11、出易于理解、开发和演进的系统,然后调整这个设计,使之适应实现环境。最后结果是产生一个对象模型,即设计模型。,定义一个初始的体系结构建立一个初始的系统体系结构草图。定义一组初始的重要体系结构元素。一组初始分析机制。系统的初始分层和组织。在当前迭代过程中处理的用例实现。从重要的构件用例中确定类。确定类之间的交互作用,修改用例实现。细化体系结构,建立从分析到设计的自然转移,并标识:从分析元素中确定适当的设计元素。从相关分析机制中确定适当的设计机制。保持体系结构的一致性和完整性,确保:将当前迭代中标识的新的设计元素与已有的设计元素集成在一起。在设计中尽早地、最大限度地复用可获得的构件和设计元素。描述系

12、统运行的组织和实施体系结构。组织实现模型以实现设计到实现无缝转移。,分析行为将用例提供的行为描述转变为一系列可作为设计基础的元素。在分析行为时,主要注重于如何能够提供要求的功能,较少关心系统的非功能需求。设计构件找出设计元素如何实现要求行为的细节,细化设计元素的定义。根据新的设计元素来细化和更新用例实现。当设计演进后,进行设计评审。,设计实时构件在实时的或交互式的上下文中,使用封装制品作为主要的设计元素。设计实时构件与设计构件有相似的活动,但增加了封装设计活动,定义系统的并发控制线程和它们之间的协议。设计数据库在设计中标识永久类并设计适当的数据库结构来存储永久类。定义一种存储和检索永久数据的机

13、制和策略,以满足系统的性能需求。,分析和设计工作流中的关键制品:设计模型 由类的协作构成。这些类的协作可能集成为包或子系统。包是对类的逻辑分组,是为了减少系统的复杂性。分析模型 是设计的抽象和泛化,它提供系统的功能描述,忽略了系统如何工作的细节。软件体系结构文档 涵盖系统不同的体系结构视图。,实现工作流,实现工作流的目的是 建立代码的分层结构;从构件(源文件、二进制文件、可执行文件或其他文件)角度来实现类和对象;对开发出来的构件进行单元测试;将个人和开发团队开发的结果集成到可执行系统中。单元测试仅对单个构件进行。集成测试和系统测试在测试工作流中执行。,实现模型是在细化阶段通过不断迭代,不断使用

14、更大规模的集成构造建立起来的。对于每一次迭代,要求做到:确定要实现哪一个子系统,以及在当前迭代中子系统的集成顺序。对于每一个子系统,确定实现每个类的顺序,以及子系统集成的计划。实现设计模型中的类和对象,包括编写源代码、改写已有构件、编译、链接和执行,及时反馈设计中可能的缺陷。,修改有缺陷的源代码,进行单元测试以验证这些变更。最后进行代码评审。指定专人负责将所有新的和已变更的构件集成为一个新的实现子系统版本。在团队环境,集成将产生一系列构造,对每个构造由集成测试员进行集成测试。将发布的子系统集成到系统。最终的构造即为系统。由系统测试员进行系统测试。,实现工作流的关键制品有:实现子系统 构件和其他

15、实现子系统的集成。它是将实现模型细分为更小的部分,并使其构造化。构件 可以是一块程序代码,或是包含信息的文件。构件可以由其他构件聚合而成。集成构造计划 定义构件和子系统的实现顺序,详细描述系统集成时要建立的构造。实现与设计的关系紧密。在设计元素和实现元素之间有非常明显的跟踪链接。,创建良好设计的原则,设计原则1:分治软件系统分解为子系统 分布式系统可以分解为客户机和服务器;系统可以分解为一系列子系统;子系统可以分解为一个或多个包;包可以分解为类;类可以分解为方法。,设计原则2:尽可能增加内聚不同内聚类型:优先级从高到低排序功能内聚:模块只执行单一计算并返回结果,没有副作用。如函数过程。层内聚:

16、相关服务放在一起,并有严格的层次结构,高层服务可访问低层服务,反之不可。如分层结构。通信内聚:访问或操作同一数据的过程放在一个类中,这些过程可以互相通信。如某个类设计。,顺序内聚:存在一系列过程,其中一个过程向另一个过程提供输入,这些过程放在一起,形成顺序内聚。如消息序列。过程内聚:几个一次调用的过程放在一起,但其中一个过程的输出不一定是另一个过程的输入,形成过程内聚。如调用结构。时间内聚:程序执行过程中同一阶段内完成的操作放在一起,达到时间内聚。实用程序内聚:逻辑上不能纳入其他内聚类型的相关实用程序放在一起,形成实用程序内聚。如可复用的过程或类。,设计原则3:尽可能降低耦合模块间存在相互依赖

17、关系即为耦合。不同耦合类型从高向低排列有:内容耦合:一个构件在不被察觉的情况下修改另一个构件内部的数据,应始终避免。公共耦合:一组构件使用了全局数据,就产生公共耦合。应通过封装降低公共耦合。控制耦合:一个过程通过标志、开关或命令显式地控制另一个过程的动作,就产生控制耦合。降低的方法是采用多态操作。,标记耦合:在一个操作的参数表中将类作为参数,就产生标记耦合。降低标记耦合的方法可以传递简单变量或使用接口做参数。数据耦合:在一个操作的参数表中用简单变量或简单的类(如string)作为参数,就产生数据耦合。应通过减少参数个数降低耦合。例程调用耦合:一个例程(或类操作)调用另一个例程,就产生例程调用耦

18、合。如果出现例程调用序列,降低的方法是编写一个例程将这个调用序列封装起来。,类型使用耦合:类将实例变量或本地变量声明为另一个类时,就产生类型(嵌套)使用耦合。降低该耦合的方法是将变量的类型声明为包含所需操作的最通用的类或接口。包含/引入耦合:当一个构件引入(import)一个包时就产生引入耦合,当一个构件包含(include)另一个构件时,就产生包含耦合。外部耦合:模块对外部系统,如操作系统、共享库或硬件有依赖关系时就产生外部耦合。可通过信息隐蔽减少这种依赖关系。,设计原则4:尽可能提高抽象层次设计应隐藏或推迟考虑细节以降低复杂性。类是包含过程抽象的数据抽象。父类和接口可进一步提高抽象层次。类

19、中公有操作越少,抽象程度越高。类中所有变量都是私有,抽象程度达到最高。抽象可确保在设计时不必关心不必要的细节,能把握问题的本质并做出重要的决策。设计原则5:尽可能提高可复用性,可以在算法、类、过程、框架和完整应用程序的级别上创建可复用性。复用构件的机制包括过程调用和继承父类。设计原则6:尽可能复用已有的设计和代码复用已有的设计是对可复用性设计的补充。通过复用可从以往对可复用构件的投资中获益。设计原则7:灵活性设计积极预测将来可能在实现和功能上的变化,并为此采取相应措施。,在设计中引入灵活性的方法有:降低耦合并提高内聚(易于提高替换能力)建立抽象(创建有多态操作的接口和父类)不要将代码写死(消除

20、代码中的常数)抛出异常(由操作的调用者处理异常)使用并创建可复用的代码设计原则8:预计过期积极预测将来可能在技术和运行环境上的变化,并为此采取相应措施。,在设计中应遵循的预计过期的规则有:避免使用早期发布的技术 避免使用针对特定环境的软件库 避免使用软件库中未编档的或很少使用的功能 避免使用小公司或可能不提供长期支持的公司提供的可复用构件或特殊硬件 使用众多厂商支持的标准语言和技术设计原则9:可移植性设计,可移植性设计的主要目标是让软件在尽可能多的平台上运行。实现可移植性的规则有:避免使用特定环境的专有功能 使用不依赖特定平台的程序设计语言 小心使用可能依赖某一平台的类库 了解其他语言可能依赖

21、特殊硬件结构的功能和文本文件的差异设计原则10:可测试性设计设计时采取措施使得测试易于进行。,可测试性设计的最重要的方法是保证代码的所有功能都能脱离图形用户界面执行设计原则11:防御性设计为提高可靠性,应确保不引入任何缺陷,能够处理其他代码不适当使用构件引起的问题。按契约设计是防御性设计技术,其核心思想:被调用操作为正常执行必须满足的前置条件(precondition):调用操作在调用一个操作时有责任确保该操作的前置条件成立。,被调用操作正常执行所得到的结果即为后置条件(postcongdition):要求被调用操作在返回前有责任保证这些后置条件成立。被调用操作在执行时确保不会被修改的不变量(

22、invariant)。前置条件、后置条件和不变式都是布尔表达式,其计算结果为假,表示有错误发生。可以使用断言机制。在重要构件的边界(如层)应始终保留严格的断言检测。,设计模式,设计模式是面向对象软件设计经验的总结。设计模式系统地命名、解释和评价了面向对象系统中的一个重要的和重复出现的设计。设计模式使人们可以简单方便地复用成功的设计和体系结构。设计模式描述了在特定场景下使用的解决一般设计问题的类和相互通信的对象。,设计模式的四个基本要素,模式名 用于描述模式的名字,说明模式的问题、解决方案和效果。问题 说明在何种场合使用模式。要描述使用模式的先决条件和特定设计问题。解决方案 描述设计的成分、它们

23、之间的相互关系、各自的职责和合作方式。效果 描述模式使用的效果,包括对时间和空间的衡量,以及对系统灵活性、可扩充性、可移植性的影响。,设计模式的特性,灵活性 设计模式应是精巧的解决方法。一般化 设计模式不依赖于某一种特定的系统类型、程序设计语言或应用领域。已验证 设计模式已在某些面向对象系统中实践并已通过测试。简单性 设计模式通常较小,只有几个类。可复用 可在设计层次(不是编码层次)应用于所有的系统。面向对象 设计模式以面向对象的形式出现。,设计模式的类型,依据设计模式工作目的不同,模式可分为 创建型模式(Creational pattern)结构型模式(Structural pattern)

24、行为型模式(Behavioral pattern)创建型模式与对象的创建有关;结构型模式处理类和对象的组合,将一组对象组合成一个大的结构,例如复杂的用户界面;行为型模式描述类或对象的交互和职责分配,定义对象间的通信和复杂程序中的流控。,1、创建型模式,创建型模式描述怎样创建一个对象。它隐藏对象创建的具体细节,使用程序可不依赖具体的对象。因此当增加一个新对象时几乎不需要修改代码。创建型类模式将对象的部分创建工作延迟到子类,创建型对象模式将它延迟到另一对象中。这时,重点从定义固定的行为集合转向定义一个较小的基本行为集合,由这些行为可以组成许多更复杂的行为集合。,模式的特点 封装了系统中使用的类的具

25、体信息;隐藏了这些类的实例如何创建、如何放在一起的(机制)。系统关于这些对象所知道的只有由抽象类定义的接口。创建型类模式有Factory Method(工厂方法)。创建型对象模式包括Abstract Factory(抽象工厂)、Builder(生成器)、Prototype(原型)、Singleton(单件)四种模式。,2、结构型模式,结构型模式处理类或对象的组合,即描述类和对象之间怎样组织起来形成大的结构,从而实现新的功能。结构型类模式采用继承机制来组合类,如Adapter(适配器)模式;结构型对象模式则描述了对象的组装方式,如Adapter(适配器)、Bridge(桥接)、Composite

26、(复合)、Decorator(装饰)、Facade(外观)、Flyweight(享元)、Proxy(代理)等七种模式。,3、行为型模式,行为模式涉及算法和对象之间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信。行为模式刻划了在运行时难以跟踪的复杂的控制流,但这类模式把人们的注意力从控制流转移到对象间的相互联系。类行为模式使用继承机制在类间分派行为,如Template Method(模板方法)和Interpreter(解释器)模式。,对象行为模式使用对象复合而不是继承,描述对象如何协同完成预定任务,如Chain of Responsibility(职责链)、Command(命令

27、)、Iterator(遍历器)、Mediator(中介者)、Memento(备忘录)、Observer(观察者)、State(状态)、Strategy(策略)、Visitor(访问者)等九种模式。,面向对象测试,面向对象系统的测试与传统的基于功能的系统的测试之间存在很大差别:对象作为一个单独的构件一般比一个功能模块大。由对象到子系统的集成通常是松散耦合的,没有一个明显的“顶层”。如果对象被复用,测试者无权进入构件内部来分析其代码。,面向对象系统的测试可分为4个层次:测试与对象相关联的单个操作 它们是一些函数或程序,传统的白盒测试和黑盒测试方法都可以使用。测试单个对象类 黑盒测试的原理不变,但等

28、价划分的概念要扩展以适合操作序列的情况。测试对象簇(聚集)严格的自顶向下或自底向上的集成不适合一组关联对象的情形。应使用基于场景的测试等其他方法。,对象类测试,测试面向对象系统 根据系统需求规格说明进行检验和有效性验证的过程可以像对其他范型的系统一样进行。,在测试对象时,完全的覆盖测试应当包括:隔离对象中所有操作,进行独立测试。测试对象中所有属性的设置和访问。测试对象的所有可能的状态转换。所有可能引起状态改变的事件都要模拟到。,对象类,作为在语法上独立的构件,应当允许用在不同的应用中。每个类都应是可靠的,并且不需了解任何实现的细节就能复用。因此,对象类应尽可能孤立地进行测试。设计操作的测试用例

29、时需要注意:首先定义测试对象的各操作的测试用例。对于一个单独的操作,可通过该操作的前置条件选择测试用例,产生输出,让测试者能够判断后置条件是否能够得到满足。,各个操作的测试与传统对函数过程定义的测试基本相同。然后再把测试用例组扩充,针对被测操作调用对象类中其他操作的情况,设计操作序列的测试用例组。测试可以覆盖每个操作的整个输入域。但这不够,还必须测试这些操作的相互作用,才能认为测试是充分的。各个操作间的相互作用包括类内通信和类间通信。,在设计对象类的规格说明测试时需要注意:把对象类当做一个黑盒,确认类的实现是否遵照它的定义。对于“Stack”的测试应当确保 LIFO 原则得以实施。对于多数的对

30、象类,主要检验在类声明的 public 域中的那些操作。对于子类,要检查继承父类的public 域和protected 域的那些操作。检查所有public域,protected域及private 域中的操作以完全检查对象中定义的操作。,等价划分的思想也可用到对象类上。将使用对象相同属性的测试归入同一个等价划分集合中。这样可以建立对对象类属性进行初始化、访问、更新等的等价划分。在设计对象类的行为测试时需要注意:基于对象的状态模型进行测试时,首先要识别需要测试的状态的变迁序列,并定义事件序列来强制执行这些变迁。原则上应当测试每一个状态变迁序列,当然这样做测试成本很高。,对象集成测试,当开发面向对象

31、系统时,集成的层次并不明显。而当一组对象类通过组合行为提供一组服务时,则需将它们一起测试,这就是簇测试。此时不存在自底向上和自顶向下的集成。,完全的单元应当保证类的执行必须覆盖它的一个有代表性的状态集合。构造函数和消息序列(线索)的参数值的选择应当满足这个规则。,簇需要根据对象操作以及对象属性的关联来构成。面向对象系统的集成测试有3种可用的方法:用例或基于场景的测试 用例或场景描述了对系统的使用模式。测试可以根据场景描述和对象簇来制定。这种测试着眼于系统结构,首先测试几乎不使用服务器类的独立类,再测试那些使用了独立类的下一层次的(依赖)类。这样一层一层地持续下去,直到整个系统构造完成。,基于线

32、程的测试 它把为响应某一系统输入或事件所需的一组对象类组装在一起。每一条线程将分别测试和组装。因为面向对象系统通常是事件驱动的,因此这是一个特别合适的测试形式。对象交互测试 这个方法提出了集成测试的中间层概念。中间层给出叫做“方法-消息”路径的对象交互序列。所谓“原子系统功能”就是指一些输入事件加上一条“方法-消息”路径,终止于一个输出事件。,面向对象的确认测试,在确认测试或系统测试的层次上,不再考虑对象类间相互连接的细节。主要着眼于用户可见的动作和用户可识别的系统输出。为了帮助确认测试的执行,测试者需要回到分析时的动态模型和描述系统行为的事件序列(脚本)进行测试。可以利用黑盒测试的方法来驱动

33、确认测试。测试检测软件中的故障并确定软件是否执行了预定要开发的功能。,面向对象测试用例的设计,测试过程包括了一组测试用例的开发,每一个测试用例要求能检验应用的一个特定的元素。还需要分析用各个测试用例执行测试的结果来收集有关软件的信息。软件测试人员可以参考以下方法:应当唯一标识每一个测试用例,并与被测试的类显式地建立关联。陈述测试对象的一组特定状态。,对每一个测试建立一组测试步骤,要思考和确定的问题包括:被测试对象的一组特定状态;一组消息和操作;考虑在对象测试时可能产生的一组异常;一组外部条件;辅助理解和实现测试时的补充信息。传统的白盒测试方法可用在类定义的操作测试和类级别测试中,黑盒测试方法可用于多类测试。,小结:(自己完成),P223 一,二(书上),作业:,谢谢使用本课件!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号