软件工程 第七章 面向对象的分析及设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第7章
7.5 面向对象设计
25
7.5.2 面向对象设计的准则和启发式规则
2.面向对象设计的启发式规则 (1)设计结果应该清晰易懂
(2)一般/特殊结构的深度应适当
(3)设计简单的类 (4)使用简单的协议
(5)设计简单的服务
(6)最小设计变动
第7章
7.பைடு நூலகம் 系统设计
26
7.5.2 面向对象设计的准则和启发式规则
第7章
面向对象的分析与设计
1
理解面向对象分析的主要任务和一般过程;
本章 要点
初步掌握对象模型的建立方法; 了解动态模型和功能模型的建立方法; 理解面向对象设计的基本模型及主要内容。
第7章
7.1 面向对象分析
2
7.1.1 面向对象分析的目标和任务
面向对象分析(Object Oriented Analysis,OOA)是软件开发过程中的问题定义和需求分 析阶段,这一阶段最后得到的是对问题领域的清晰、精确的定义。OOA的目标是完成对所需求 解问题的分析,确定目标系统所要做的工作,定义所有与待解决问题相关的类,并建立系统的
数据流图,以便正确地确定对象应提供的服务。 (4)利用继承机制优化服务集合,减少冗余服务。应尽量抽取相似的公共属性和服务,
以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务。
第7章
7.3 建立动态模型
15
动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。 下列三个因素有关: (1)状态。状态是对象在其生存周期中的某个特定阶段所具有的行为模式,它是对影 响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。对象对输入事件 的响应,既可以执行一个或一系列动作,也可以是仅仅改变对象本身的状态。状态有持续性,
第7章
7.2 建立对象模型
13
7.2.4 确定服务和消息
所谓服务是在接收到一条消息后所要进行的加工。定义服务时,首先定义行为,然后定 义实例的通信。值得说明的是,确定服务和消息,只有在建立了动态模型和功能模型之后, 才可能最后确定对象类的服务。本教材为保持案例的连续性,故将服务和消息在此介绍。 确定一个类中的服务,主要取决于该类在问题中的实际作用以及求解过程中承担的处理 责任,确定的原则如下: (1)基本的属性操作服务。即类中应提供的访问、修改自身属性值的基本操作。这类 操作属于类的内部操作,可不必在对象模型中显式表示。 (2)事件的处理操作。动态模型中状态图描述了对象应接收的事件(消息),类和对
第7章
7.3 建立动态模型
17
第7章
7.4 建立功能模型
18
功能模型主要用来说明系统内部数据是如何传送和处理的,表示变化的系统的“功能” 性质。功能模型描述了系统“做什么”,它更直接、明确地反映了用户对目标系统的需求。 建立功能模型有助于软件开发人员更深入地理解整个问题域,改进和完善自己的设计。通常 在建立对象模型和动态模型之后再建立功能模型。 在UML中,用用例图描述用例模型,用例图包含系统、行为者、用例、用例之间的关系 等元素。其中:系统是一个提供用例的黑盒子,可用方框表示;行为者是与系统交互的角色 或其他外部系统;用例是一个完整的功能,完成系统内部的计算及与行为者的交互,它对应 于对象模型中的类所提供的服务;行为者与用例之间的关系用直线连接,表示两者之间有交 换信息,称为通信联系。
第7章
7.1 面向对象分析
5
7.1.2 面向对象分析的过程
2.需求建模 系统分析员根据所提取的用户需求,深入地理解用户需求,识别出问题域内的对象,并
分析它们之间相互的关系,抽象出目标系统应该完成的任务,并用OOA模型准确地表示出来,
即用面向对象观点建立对象模型、动态模型和功能模型。OOA模型是OOD的基础,它应该准 确、简洁地表示问题。通过建立模型,可以避免理解上的片面性,提高目标系统的正确性和
3.OOA的主要流程 面向对象分析大体上按照如图7-4所示的顺序进行。
第7章
7.2 建立对象模型
10
7.2.1 确定对象和类
OOA的核心是确定问题域中相关的对象,找出这些对象是个重要而复杂的过程。一般采 用基于词汇分析的方法:从目标系统的描述开始,找出其中的名词作为候选对象类,此外, 还可找出其中的动词作为候选方法(即后面要介绍的服务),然后产生一个由对象(名词) 和方法(动词)构成的表格,作为词汇分析的初步结果,最后从中选出确定的真正的对象类。 如图7-5所示。
第7章
7.4 建立功能模型
20
第7章
7.5 面向对象设计
21
7.5.1 面向对象设计概述
1.面向对象分析与面向对象设计的关系 面向对象设计(Object Oriented Design,OOD)是根据面向对象分析中确定的类和对象 设计软件系统。从OOA到OOD是一个逐步建立和扩充对象模型的过程。 OOA是分析用户需求并建立问题域模型的过程,是解决系统“做什么”问题的;OOD则
第7章
7.4 建立功能模型
19
用数据流图建立功能模型的主要步骤如下: (1)确定输入和输出值; (2)用数据流图表示功能的依赖性; (3)具体描述每个功能; (4)确定对象的约束;
(5)确定功能优化的准则。
功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的 过程(即处理)可以由下一层的数据流图作进一步说明。
可以同时(并行)处理,也可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继
续处理。例如,当系统分析员在确定类\|&\|对象时,想到了该类应该包含的一个服务,于 是把这个服务的名字写在服务层,然后又返回到类\|&\|对象层,继续寻找另外的类\|&\|对
象。
第7章
7.1 面向对象分析
9
7.1.4 对象模型的层次
模型。OOA的核心思想是利用面向对象的概念和方法为软件需求建造模型,以使用户需求逐步
精确化、一致化、完全化。为了达到这一目标,必须完成以下任务: (1)与用户进行充分沟通,全面理解和分析用户需求,明确所开发的软件系统的职责,
形成文件并规范地加以表述;
(2)识别解决问题的对象集合及对象间的关系; (3)定义类(包括定义其属性和操作)并建立类间的层次关系;
(4)通过建立模型来表示对象之间的关系及行为特性。
第7章
7.1 面向对象分析
3
7.1.2 面向对象分析的过程
第7章
7.1 面向对象分析
4
7.1.2 面向对象分析的过程
1.分析需求文档 系统分析通常是从一个需求文档(或称需求陈述)和用户一系列的讨论开始的。大多数需
求陈述都是有二义性的、不完整的甚至不一致的。通过分析可以发现和改正需求文档中的歧
是根据OOA得到的需求模型,建立求解域模型的过程,是解决系统“怎么做”问题的。
OOA主要是模拟问题域和系统任务,而OOD则是对OOA的扩充,主要是增加各种组成部 分。具体来说,OOA识别和定义类和对象。这些类和对象直接反映问题域和系统任务。而
OOD识别和定义其他附加类和对象,它们反映需求的一种实现,当然,也可以交替进行这两
系统设计确定实现系统的策略和目标系统的高层结构设计。系统设计是要将系统分解为若 干个子系统,子系统和子系统之间通过接口进行联系。系统设计的一般步骤如图7-14所示:
第7章
7.6 系统设计
27
7.5.2 面向对象设计的准则和启发式规则
义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、 更准确。分析过程中,系统分析员除了要反复多次地与用户讨论沟通外,还应调研、观察和
了解现有的类似系统,从而快速地建立一个原型系统,通过在计算机上运行原型系统,使得
分析员和用户尽快交流和相互理解,从而能更正确地、更完整地提取和确定用户的需求。
可靠性,在此基础上,编写出面向对象的需求规格说明书。
3.需求评审 需求规格说明文档经用户、领域专家、系统分析员和系统设计人员以及其他有关人员评
审、并进行反复修改后形成定稿,该文档将成为面向对象设计的依据。
第7章
7.1 面向对象分析
6
7.1.3 面向对象分析的三种模型
面向对象建模是OOA的关键。OOA的模型要表示出系统的数据、功能和行为三方面的基 本特征,因此通常需要建立三种模型,分别是对象模型、动态模型和功能模型。其中: (1)对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的
个阶段的工作。从OOA到OOD是一个逐渐扩充模型的过程,分析和设计活动是一个多次反复 迭代的过程。
第7章
7.5 面向对象设计
22
7.5.1 面向对象设计概述
2.面向对象设计的基本模型 OOD是在OOA模型的基础上建立对象模型的过程,两个阶段同样是建立对象模型,但侧重 点不同,OOA建立问题域对象模型,而OOD建立求解域的对象模型。因此OOD模型同样也由主题、 类\|&\|对象、结构、属性和服务等五个层次组成,并且每个透明层在逻辑上都划分为四个子系 统: 问题域子系统(PDC)、人机交互子 系统(HIC)、任务管理子系统(TMC)和数据 管理子系统(DMC),具体面向对象设计的 五个层次、四个组成部分构成的典型的面
向对象设计模型如图7-12所示。
第7章
7.5 面向对象设计
23
7.5.1 面向对象设计概述
3.面向对象设计的主要工作 面向对象设计技术进行问题解决方案的设计工作的大致做法是,它将问题的解决方案表述 为:“类+关联”的形式,其中,类包括问题空间(域)类、用户界面类(即人机交互类)、任 务管理类和数据管理类,是从设计的角度出发对问题解决方案中的对象的抽象和描述,关联则用 于描述这些类和类之间的关系。
占用一段时间间隔。
(2)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一 种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。
(3)行为。行为也称服务,是指对象在某种状态下所做的一系列处理操作,行为是需
要消耗时间的
第7章
7.3 建立动态模型
16
1.构建事件追踪图 要建立一个事件追踪图,通常首先要编写 脚本。脚本是系统执行某个功能的一系列事件。 脚本通常起始于一个系统外部的输入事件,结束 于一个系统外部的输出事件,它可以包括发生在 此期间内系统所有的内部事件。
第7章
7.5 面向对象设计
24
7.5.2 面向对象设计的准则和启发式规则
1.面向对象设计的准则 在进行面向对象设计的过程中,应该遵循软件设计的基本原理,此外,还要考虑面向对象 的特点。面向对象设计准则主要包括模块化、抽象、信息隐藏、低耦合、高内聚和复用性几点。 具体内容如下: (1)模块化 (2)抽象 (3)信息隐藏 (4)低耦合 (5)高内聚 (6)复用性
第7章
7.2 建立对象模型
11
7.2.1 确定对象和类
采用系统词汇法确定对象类,并进行建模的具体做法如下: (1)确定对象类 (2)准备数据词典 (3)确定关联 (4)确定属性
(5)使用继承来细化对象类
(6)完善对象模型
第7章
7.2 建立对象模型
12
7.2.3 确定主题
主题是一种关于模型的抽象机制,起一种控制作用。引入主题有助于分解大型项目以便 成立工作小组来承担不同的主题任务。主题有两种表示形式,如图7-7所示。
第7章
7.1 面向对象分析
8
7.1.4 对象模型的层次
2.OOA的五项活动 OOA对象模型的五个层次对应着OOA过程中建立对象模型的五项活动。这五项活动是:
确定类\|&\|对象、识别结构、识别主题、定义属性、定义服务。
需要说明的是,这五项工作完全没有必要顺序完成,也无需在彻底完成一项工作以后再 开始另外一项工作,在分析过程中并不需要严格遵循自顶向下,逐步求精的原则。五项活动
模型;
(2)动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结 构的模型;
(3)功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。
第7章
7.1 面向对象分析
7
7.1.4 对象模型的层次
1.对象模型的五个层次 复杂问题(大型系统)的对象模型由五个层次组成,即主题层、类\|&\|对象层、结构层、 属性层和服务层,如图7-3所示。
象中必须提供处理相应消息的服务,这些服务用于修改对象的状态(属性值)并启动相应的
服务。
第7章
7.2 建立对象模型
14
7.2.4 确定服务和消息
(3)数据流图中处理框对应的操作。功能模型中的每个处理框代表了系统应实现的部
分功能,而这些功能都与一个或几个对象中提供的服务相对应。因此,要仔细分析状态图和
相关文档
最新文档