第7章面向对象软件开发方法_第1页
第7章面向对象软件开发方法_第2页
第7章面向对象软件开发方法_第3页
第7章面向对象软件开发方法_第4页
第7章面向对象软件开发方法_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第7章章 面向对象软件开发方法面向对象软件开发方法 学习目标 l面向对象的分析过程l面向对象的设计过程l面向对象系统的实现2第第7章章 面向对象的软件开发方法面向对象的软件开发方法 教学内容 7.1 面向对象分析 7.2 面向对象设计 7.3 面向对象系统的实现 7.4 面向对象测试 本章小结 37.1 面向对象分析面向对象分析 面向对象分析的目的是对客观世界的系统建立对象模型、动态模型和功能模型。7.1.1 面向对象分析过程面向对象分析过程1基本过程概述基本过程概述 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 分析过程从分析陈述用户需求的文件开始。 系统分析员应该深

2、入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来。返回目录47.1.1 面向对象分析过程面向对象分析过程23个模型和个模型和5个层次个层次 面向对象建模得到的模型包含系统的3个要素,即静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。 复杂问题(大型系统)的对象模型通常由下述5个层次组成:主题层、类与对象层、结构层、属性层和服务层。57.1 面向对象分析面向对象分析 综合上述,在概念上可以认为,面向对象分析大体上按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。但分析不可能严格按预定顺序进行,大型、复杂系统的模型

3、需要反复构造多遍才能建成。通常,先构造出模型的子集,然后逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。 返回目录6 面向对象分析首要的工作,是建立问题域的对象模型。这个模型描述了现实世界中的“类与对象”以及它们之间的关系,表示了目标系统的静态数据结构。 1.1.识别类与对象识别类与对象(1)寻找关联的类与对象 识别对象需要对对象的分类加以认识,一般对象有几种形式: 1)与系统相关的外部物理实体,如打印机、各种物理设备等。返回目录7.1.2 建立对象模型建立对象模型77.1.2 建立对象模型建立对象模型 2)与目标系统交互的人员及各种角色。如用户、程序员等。 3)系统运行中要

4、记忆的事件,如故障错误日志的报告等。 4)各种环境因素、问题等。 5)客观存在的事物、概念。8(2)筛选出正确的类和对象)筛选出正确的类和对象 1)删除冗余的类和对象。 2)删除无关类和对象。 3)应把笼统和模糊的名词去掉。 4)若某些对象其实是另一对象的属性,则可以把它归到属性中,从而省去这个对象,若不能看成属性,则把它独立为一个对象。 5)有些对象还可以看成是某个对象的操作,应根据它是适合作为对象还是适合作为对象的操作,从而决定应不应该删除这个对象。 6)去掉仅与系统实现有关的候选类和对象。在系统分析阶段不应过早地考虑系统实现。 7.1.2 建立对象模型建立对象模型92. 确定结构确定结构

5、 在确定了类与对象后,需要将类、对象间的关系用结构表示出来。类、对象间的关系类型主要有两种:一般特殊关系、整体部分关系。(1)一般特殊结构 一般特殊结构反映的是一般类与特殊类间的关系。如图7.1所示7.1.2 建立对象模型建立对象模型107.1.2 建立对象模型建立对象模型学生大专生本科生研究生图7.1 一般-特殊结构117.1.2 建立对象模型建立对象模型(2)整体部分结构 又称为组装结构,把属于部分的对象组合成具有整体性的对象。整体部分关系描述的是对象之间的关系,而不是类之间的关系。如图7.2所示控制板小键盘显示板指示灯图7.2 整体-部分结构12(3)关联关系)关联关系 类的关联关系反映

6、对象之间相互依赖、相互作用的关系。如图7.3(a)所示。 1)阶。就是关联的对象的个数。阶数用标在连线端点的单个数字或数值区间表示。如图7.3(b)所示。学生课程学生课程学习成绩学分mn(a) (b) 图7.3 关联关系和链属性7.1.2 建立对象模型建立对象模型137.1.2 建立对象模型建立对象模型2)链属性 链属性就是关联的性质。链属性与关联之间用虚线连接。如图7.3(b)所示。3)限定 限定用来对关联的含义做某种约束,利用限定词通常能有效地减少关联的阶数。14教师学生毕业设计成绩mn教师毕业设计成绩学生k(b)图7.4 教师与学生的关联关系(a)7.1.2 建立对象模型建立对象模型15

7、3. 3. 确定主题确定主题 主题是在对象和结构的基础上更高一层的抽象,是为了提供面向对象分析结果的可见性。主题是一种指导读者和用户研究大型复杂模型的机制。(1)主题的选择。主题的选择应遵循以下两点: 1)为每个对象相应地增加一个主题。 2)为每个结构也相应地增加一个主题。7.1.2 建立对象模型建立对象模型167.1.2 建立对象模型建立对象模型(2)划分精炼主题 1)从问题域入手,使用整体-部分关系结构对问题域进行划分,而不是按功能分解的方式划分。 2)利用高内聚、低耦合的原则,使主题间的依赖性和交互性达到最小。 3)如果主题数超过7个,则应对主题进行精炼,抽象出更高层次的主题。174.

8、4. 定义属性定义属性1)标识属性 识别属性需要考虑以下几个问题: (1)怎样描述一个对象的特征? (2)该对象具有哪方面的状态和信息? (3)该对象在目标系统中的作用如何?怎样完成这些功能? 确定属性要注意以下几个方面: (1)不能误把一个对象当作属性。 (2)删除多余的或没有意义的属性。 (3)仅有一种相关属性的对象可以表示为其他对象的属性。 (4)不能把对象的内部状态当成属性。 (5)为保持模型的简洁性,对象的导出属性可略去。 (6)不要误把关联类的属性当作一般对象的属性。7.1.2 建立对象模型建立对象模型182)实例连接 实例连接表示了两个或多个实例间的联系。实例连接有一对一(1:1

9、)、一对多(1:n)和多对多(m:n)三种连接。5. 5. 定义服务定义服务1)常规操作2)从事件导出的操作3)与处理或用例对应的操作 4)利用继承减少冗余操作7.1.2 建立对象模型建立对象模型19 要建立动态模型,首先要编写具有交互作用的脚本。然后从脚本中提取事件,确定事件与对象之间的触发关系。接着排列事件的顺序,确定每个对象可能的状态及状态间的转换关系,用状态图描绘它们。最后检查状态图间的正确性和一致性。 状态图描述的是每一类对象的动态行为以及它们的关系。动态模型就是由多个状态图通过共享事件组成的。7.1.3 建立动态模型建立动态模型201. 编写脚本编写脚本 在建立动态模型过程中,脚本

10、是系统执行某个功能的一系列事件。脚本通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括这个期间发生的所有的系统内部事件。 如打电话、通话过程的脚本。打电话、通话过程的一系列事件如下:7.1.3 建立动态模型建立动态模型212. 2. 设计用户界面设计用户界面 动态模型着重表示应用系统的控制逻辑。但是在分析阶段不能忽略用户界面的设计。应该快速建立用户界面原型,供用户试用与评价。3. 3. 画顺序图或活动图画顺序图或活动图 打电话、通话过程的顺序图。如图7.5所示。 还可以用活动图来描述打电话的过程。如图7.6所示。7.1.3 建立动态模型建立动态模型22图7.5 打电话、

11、通话的顺序图图7.6 打电话的活动图顺序图和活动图顺序图和活动图23 4. 4.画状态转换图画状态转换图 面向对象方法中的状态转换图,与传统方法中数据对象的状态转换图表示方法相同。如拨打电话的状态转换图如图7.7所示。图7.7 拨打电话状态转换图7.1.3 建立动态模型建立动态模型返回目录24 功能模型描述系统的数据处理功能,反映了用户对系统的需求。功能模型一般由一组数据流图和一组用例图组成。 建立功能模型的一般步骤是:1. 确定输入和输出 建立功能模型时,应当确定输入、输出数据的方式、格式、范围、约束 条件、操作规范等。2. 画数据流图 可用多张数据流图、程序流程图等来表示。用标准的符号表示

12、每个处理加工,描述各个部分功能。3. 优化处理。7.1.4 建立功能模型建立功能模型返回目录257.2 面向对象设计面向对象设计 面向对象设计是把分析阶段得到的需求,转变为符合成本和质量要求的、抽象的系统实现方案的过程。 从面向对象分析到面向对象设计(OOD),是一个逐渐扩充模型的过程。因此,分析和设计活动是一个多次反复迭代的过程。面向对象方法学在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡,领域专家和开发人员比较容易地跟踪整个系统开发过程,这是面向对象方法与传统方法比较起来所具有的一大优势。 267.2.1 面向对象设计准则面向对象设计准则1. 1. 模块化模块化2.

13、 2. 抽象抽象3. 3. 信息隐蔽信息隐蔽4. 4. 强内聚性强内聚性 (1)类内聚(不包含无用的属性和服务) (2)一般-特殊内聚 (3)服务内聚(一个服务仅完成一个功能) 277.2.1 面向对象设计准则面向对象设计准则5. 5. 弱耦合性弱耦合性 (1)交互耦合 对象之间的耦合通过消息连接来实现,这种耦合称为交互耦合。 (2)继承耦合 通过继承关系结合的父类和子类,彼此间结合越紧密越好。6. 6. 重用性重用性28 面向对象方法学开发软件,也积累了一些经验。得出了几条启发规则: 1. 设计结果应该清晰易懂 2. 一般-特殊结构的深度应适当 3. 设计简单的类 4. 使用简单的协议 5.

14、 使用简单的服务 6. 把设计变动减至最小7.2.2 启发式规则启发式规则29 采用面向对象方法设计软件系统时,面向对象设计模型,即求解域的对象模型,也由主题、类与对象、结构、属性、服务等5个层次组成。此外,大多数系统的面向对象设计模型,在逻辑上都由4大部分组成。这4大部分对应于组成目标系统的4个子系统,它们分别是问题域子系统、人机交互子系统、任务管理子系统和数据管理子系统。如图所示:7.2.3 系统设计系统设计307.2.3 系统设计系统设计l图7.8 典型的面向对象设计模型311 1子系统之间的两种交互方式子系统之间的两种交互方式 在软件系统中,子系统之间的交互有两种可能的方式: (1)客

15、户-供应商关系 在这种关系中,作为“客户”的子系统调用作为“供应商”的子系统,后者完成某些服务工作并返回结果。 (2)平等伙伴关系 每个子系统都可能调用其他子系统,因此每个子系统都必须了解其他子系统的接口。7.2.3 系统设计系统设计327.2.3 系统设计系统设计2 2组织系统的两种方案组织系统的两种方案 (1)层次组织:把软件系统组织成一个层次系统,每层是一个子系统。上层在下层的基础上建立,下层为实现上层功能而提供必要的服务。 (2)块状组织:把软件系统垂直地分解成若干个相对独立的、弱耦合的子系统,一个子系统相当于一块,每块提供一种类型的服务。3 3设计系统的拓扑结构设计系统的拓扑结构 典

16、型的拓扑结构有管道型、树型、星型等。设计者应该采用与问题结构相适应的、尽可能简单的拓扑结构,以减少子系统之间的交互数量。33 主要工作有以下几个方面:1 1需求调整需求调整2 2对已有类的重用对已有类的重用 (1)在已有类中找到能被问题域重用的类 (2)由重用的类派生出问题域的类 (3)添加定义问题域类,修改与问题域类相关的关联3 3组合问题域类组合问题域类4 4调整继承关系调整继承关系7.2.4 问题域的设计问题域的设计341 1人机界面设计的准则人机界面设计的准则 (1)操作过程简单容易。 (2)要有相应的提示信息。 (3)界面易学易用,用户可以通过说明资料掌握界面的使用。 (4)若系统出

17、错或用户操作错误,能恢复原先出错前的状态。7.2.5 人机界面的设计人机界面的设计357.2.5 人机界面的设计人机界面的设计2 2设计人机交互部分设计人机交互部分 设计人机交互子系统的策略如下: 分类用户 为设计出符合用户需要的界面,设计者首先应该把将来可能与系统交互的用户分类。 描述用户 应该仔细了解将来使用系统的每类用户的情况,把获得的下列各项信息记录下来。(用户类型、使用系统欲达到的目的、特征、技能水平等)367.2.5 人机界面的设计人机界面的设计设计命令层次 (1)研究人机交互活动的方式。 (2)建立一个初始的命令层。如命令行、菜单、工具等。 (3)细化每个命令层,为用户提供操作和

18、服务。3 3设计人机交互的类设计人机交互的类 根据图形用户界面设计出交互部分的类,包括窗口、菜单等。37 分析任务的并发性分析任务的并发性 通过面向对象分析建立起来的动态模型,是分析并发性的主要依据。如果两个对象彼此间不存在交互,或者它们同时接受事件,则这两个对象在本质上是并发的。1 1确定事件驱动任务确定事件驱动任务l 某些任务是由事件驱动的,这类任务可能主要完成通信工作。2 2确定时钟驱动任务确定时钟驱动任务l 某些任务每隔一定时间间隔就被触发以执行某些处理,是一个周期性的工作过程。7.2.6 任务管理部分设计任务管理部分设计387.2.6 任务管理部分设计任务管理部分设计3 3确定优先任

19、务确定优先任务 优先任务可以满足高优先级或低优先级的处理需求。 (1)高优先级 (2)低优先级4 4确定关键任务确定关键任务 是有关系统成功或失败的关键处理。5 5确定协调任务确定协调任务 当系统中存在三个以上任务时,就应该增加一个任务,用它作为协调任务。6 6定义每个任务定义每个任务397.2.7 数据管理部分设计数据管理部分设计 数据管理子系统是系统存储或检索对象的基本设施,它建立在某种数据存储管理系统之上,并且隔离了数据存储管理模式(文件、关系数据库或面向对象数据库)的影响。 数据管理方法主要有3种:文件管理、关系数据库管理和面向对象数据库管理。407.2.7 数据管理部分设计数据管理部

20、分设计 数据存储管理部分的设计包括数据存放方法的设计和相应操作的设计。设计时既要设计数据格式又要设计相应的服务。l1 1数据存放设计数据存放设计 考虑将数据采用文件存放、关系数据库存放或面向对象数据库存放。l2 2设计相应服务设计相应服务 如果某个类的对象需要存储起来,则在这个类中增加一个属性和服务,用于完成存储对象自身的工作。41l1 1对象描述对象描述 (1)协议描述(是一组消息和对消息的注释) (2)实现描述(由传送给对象的消息所蕴含的每个操作的实现细节)l2 2设计类中的服务设计类中的服务 (1)确定类中应有的服务 需要综合考虑对象模型、动态模型和功能模型,才能正确确定类中应有的服务。

21、 (2)设计实现服务的方法7.2.8 对象设计对象设计427.2.8 对象设计对象设计l3 3设计类的关联设计类的关联 关联分为单向关联和双向关联两种方式。l4 4链属性的实现链属性的实现 l5 5设计的优化设计的优化 设计优化要取得用户和系统应用领域专家的认可。返回目录437.3 面向对象系统的实现面向对象系统的实现7.3.1 选择程序设计语言选择程序设计语言1面向对象语言的优点 (1)一致的表示方法 (2)可重用性 (3)可维护性 2面向对象语言的技术特点 (1)支持类与对象概念的机制 (2)实现聚集结构的机制 (3)实现泛化结构的机制 (4)实现属性和服务的机制 (5)类型检查机制 (6

22、)类库 (7)效率 (8)持久保存对象的机制 (9)参数化的类的机制 (10)开发环境3选择面向对象语言的实际因素 (1)将来能否占主导地位 (2)可重用性 (3)类库和开发环境 (4)其他因素447.3 面向对象系统的实现面向对象系统的实现7.3.2 面向对象程序设计面向对象程序设计1提高可重用性提高可重用性 (1)提高方法的内聚。 (2)减小方法的规模。 (3)保持方法的一致性。 (4)把策略和实现分开。 (5)全面覆盖输入条件的各种可能组合。 (6)尽量不使用全局信息。 (7)充分利用继承机制。 457.3.2 面向对象程序设计面向对象程序设计2. 2. 提高可扩充性提高可扩充性(1)封

23、装类的实现细节。 (2)不要用一个方法遍历多条关联链。 (3)避免使用多分支语句 。(4)精心选择和定义公有方法。 3 3提高健壮性提高健壮性(1)预防用户的错误操作。(2)检查参数的合法性。 (3)不要预先设定数据结构的限制条件。 (4)先测试后优化。返回目录467.4 面向对象测试面向对象测试7.4.1 面向对象测试面向对象测试 结合传统的测试步骤的划分,可以把面向对象软件测试分为:l 面向对象分析的测试(OOA Test)l 面向对象设计的测试(OOD Test)l 面向对象编程的测试(OOP Test)l 面向对象单元测试(OO Unit Test)l 面向对象集成测试(OO Inte

24、grate Test)l 面向对象系统测试(OO System Test)477.4.2 面向对象的测试策略面向对象的测试策略 1面向对象分析(OOA)的测试 对面向对象分析的测试从下面几个方面考虑:l对认定的对象的测试l对认定的结构的测试l对认定的主题的测试l对定义的属性和实例关联的测试l对定义的服务和消息关联的测试7.4 面向对象测试面向对象测试487.4 面向对象测试面向对象测试2.2.面向对象设计的测试面向对象设计的测试 面向对象设计以面向对象分析为基础归纳出类,并建立类结构或进一步构造成类库,实现分析结果对问题空间的抽象。面向对象设计是面向对象分析的进一步更高层的抽象。 面向对象设计

25、的测试应从以下几个方面考虑:l 对认定的类的测试l 对构造的类层次结构的测试l 对类库的支持的测试497.4 面向对象测试面向对象测试3.3.面向对象软件的单元测试面向对象软件的单元测试 面向对象软件的类测试等价于传统软件的单元测试。单元是封装的类和对象。面向对象软件的类测试是由封装在类中的操作和类的状态行为所驱动的。一些传统的测试方法在面向对象的单元测试中都可以使用。如等价类划分法、因果图法、边值分析法、逻辑覆盖法等。单元测试一般建议由程序员完成。 面向对象编程的特性使得对成员函数的测试,又不完全等同于传统的函数或过程测试。尤其是继承特性和多态特性,使子类继承或重载的父类成员函数出现了传统测试中未遇见的问题。507.4 面向对象测试面向对象测试4.面向对象的集成测试 需要在整个程序编译完成后进行。面向对象程序具有动态特性,也只能对整个编译后的程序做基于黑盒的集成测试。 集成测试可分成两步进行:先进行静态测试,再进行动态测试。静态测试主要针对程序的结构进行,检测程序结构是否符合设计要求。 动态测试设计测试用例时,要确定不需被重复测试的部分,优化测试用例,减少工作量,使得进行的测试能够达到一定覆盖标准。 测试所要达到的覆盖标准是:达到类所有的服务要求或服务提供的一定覆盖率;依据类间传递的消息,达到对

温馨提示

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

评论

0/150

提交评论