Transcript 软件过程与质量
第8章 面向对象分析 主讲教师:孙秀杰 内容提要 8.1面向对象方法概述 8.2 标准建模语言UML 8.3用例模型 8.4分析模型 8.1 面向对象 “面向对象”是一种认识客观世界的世界观,这种 世界观将客观世界看成是有许多不同种类的对象 构成的,每个对象有自己的内部状态和运动规律, 不同对象之间的相互联系、相互作用就构成了完 整的客观世界。 “面向对象”是从结构组织的角度去模拟客 观世界的一种方法,这种方法的基本着眼 点是构成客观世界的那些成分----对象。 用“面向对象”的观点去认识客观世界, 用“面向对象”的方法去模拟客观世界, 这就构成了“面向对象”的完整含义。 对象 对象是现实世界中个体或事物的抽象表示,是其 属性和相关操作的封装。属性表示对象的性质, 属性值规定了对象所有可能的状态。对象的操作 是指该对象可以展现的外部服务。 类和实例 类是某些对象的共同特性的表示,它描述了 这些对象内部是如何构造的。相同类的对象在它 们的操作和它们的信息结构两个方面都有相同的 定义。 在面向对象系统中,每个对象都属于一个类。 属于某个特定类的对象称为该类的实例。因此, 常常把对象和实例当作同义词。实例是从某类创 建的一个对象。 继承 如果类B继承类A,那么类A中描述的操作和信息结构将成为类B 的一部分。 借助继承,可以表示类之间的类似性,并且在其他类能继承的一 个类中描述这些相似性。因此,就能够复用公共的描述。继承常常被 提倡为软件工业界中关于复用的一个核心思想。继承还有利于软件维 护。 通过抽取和共享公共特性就能够通用化一些类,并且把它们放在 继承层次的更高位置。同样,如果希望增加新类,可以寻找这样一个 类,它已经提供了适用于该新类的某些操作和信息结构。然后,让新 类继承这个类,只需增加该新类所独有的那些内容。然后,使这个类 专用化。 面向对象建模 面向对象思想比较自然地模拟了人类认识客 观世界的方式,面向对象的分析和设计应该从建 模开始。构造模型通常出于以下几个目地: 在着手解决一个复杂问题之前,对解决方案进行检测; 用于同客户或其他相关人员进行交流; 加强视觉效果; 对复杂问题进行简化。 面向对象建模 模型是对事物的一种抽象,人们常常在正 式建造实物之前,首先建立一个简化的模 型,以便更透彻地了解它的本质,抓住问 题的要害; 在模型中,人们总是剔除那些与问题无关 的、非本质的东西,从而使模型与真实的 实体相比更加简单、易于把握; 面向对象建模 在建造一个复杂系统时,开发者必须从多 种不同的角度来抽象系统,使用准确的符 号来构造模型,然后检查这些模型是否符 合系统的需求,并逐步添加细节,从而将 这些模型转化成实现方案。 建模语言是面向对象建模中的一个非常关 键的因素。 8.2 标准建模语言UML UML的设计目标: 运用面向对象概念来构造系统模型 建立起从概念模型直至可执行体之间明显 的对应关系 着眼于那些有重大影响的问题 创建一种对人和机器都适用的建模语言 标准建模语言UML UML概要 UML由OMG与1997年11月批准为标准建模语言 (Booch,Jacobson,Runbaugh)。 UML建立在当今国际上最有代表性的三种面向对 象方法(Booch(Grady Booch : The Booch method targets object-oriented analysis and design with emphasis on detailed design)方法, OMT(Object Modeling Technique)方法,OOSE 方法)的基础之上。 UML是一种建模语言而不是一种方法,UML本身 是独立于过程的。 标准建模语言UML UML为人们提供了从不同的角度去观 察和展示系统的各种特征的一种标准表达 方式。在UML中,从任何一个角度对系统 所作的抽象都可能需要用几种模型图来描 述,而这些来自不同角度的模型图最终组 成了系统的完整模型。 标准建模语言UML 一般而言,我们可以从以下几种常用的视角 来描述一个系统: 系统的使用实例:从系统外部的操作者的角度描述系统的 功能。 系统的逻辑结构:描述系统内部的静态结构和动态行为, 即从内部描述如何设计实现系统功能。 系统的构成:描述系统由哪些程序构件所组成。 系统的并发性:描述系统的并发性,强调并发系统中存在 的各种通信和同步问题。 系统的配置:描述系统的软件和各种硬件设备之间的配置 关系。 标准建模语言UML UML模型图(5类,10种): 用例图 静态图(类图,对象图,包图) 行为图(状态图,活动图) 交互图(顺序图,合作图) 实现图(构件图,配置图) 标准建模语言UML UML语义 元-元模型: 元模型的基础体系结构,定义一种说明元模型的语言 元模型: 元-元模型的一个实例,定义一种说明模型的语言 模型: 元模型的一个实例,定义一种语言来描述信息领域 用户对象: 模型的一个实例,定义一个特定的领域 标准建模语言UML UML主要文件: UML概要(UML Summary) UML语义(UML Semantics) UML表示法指南(UML Notation Guide) 对象约束语言规约(Object Contraint language Specification):该文件定义并介绍了一种对象约束语言 (OCL),其用途是用来说明在图形化的系统模型中不能 充分表达的建模信息。它是一种形式化语言。 http://www.rational.com/uml/index.jtmpl 8.3 用例图 从本质上将,一个用例是用户与计算 机之间为达到某个目的的一次典型交互作 用: 用例描述了用户提出的一些可见的需求; 用例可大可小; 用例对应一个具体的用户目标 用例图 用例图描述系统外部的执行者与系统 的用例之间的某种联系。 所谓用例是指对系统提供的功能(或称系统的用 途)的一种描述; 执行者是那些可能使用这些用例的人或外部系统; 用例和执行者之间的联系描述了“谁使用哪个用 例”。 用例图 用例图着重于从系统外部执行者的角度来 描述系统需要提供哪些功能,并且指明了 这些功能的执行者是谁; 用例图在UML方法中占有十分重要的地位, 人们甚至称UML是一种用例图驱动的开发 方法。 用例图 用例图中的图符: 用例 执行者 系统:用于界定系统功能范围,描述该系 统功能的用例都置于其中,而描述外部实体的执 行者都置于其外。 关联:连接执行者和用例,表示执行者所 代表的系统外部实体与该用例所描述的系统需求 有关。 用例图 用例图中的图符: 使用:由用例A连向用例B,表示用例A 中使用了用例B中的行为或功能。 扩展:由用例A连向用例B,表示用例B «扩展» 描述了一项基本需求,而用例A则描述了该基本 需求的特殊情况。 注释体:对UML实体进行文字描述 «使用» 注释连接:将注释体与要描述的实体连 接,说明该注释体是针对该实体所进行的描述。 用例图 设置边界 更新帐目 记帐系统 贸易经理 风险分析 交易估计 营销人员 «使用» «使用» 评价 进行交易 «扩展» 超越边界 销售人员 用例图 用例图 用例模型的获取: 获取执行者 获取用例 用例图 获取执行者: 谁使用系统的主要功能(主要使用者)? 谁需要系统支持他们的日常工作? 谁来维护、管理系统使其能正常工作(辅助使用 者)? 系统需要控制哪些硬件? 系统需要与其他哪些系统交互? 对系统产生的结果感兴趣的是哪些人? 用例图 获取用例: 执行者要求系统提供哪些功能? 执行者需要读、产生、删除、修改或存储 系统中的信息有哪些类型? 必须提醒执行者的系统事件有哪些? 执行者必须提醒系统事件有哪些?怎样把 这些事件表示成用例中的功能? 8.4活动图 活动图 活动图描述系统中各种活动的执行顺序,通常用于描述一 个操作中所要进行的各项活动的执行流程。同时,它也常 被用来描述一个用例的处理流程,或者某种交互流程。 活动图由一些活动组成,图中同时包括了对这些活动的说 明。当一个活动执行完毕之后,控制将沿着控制转移箭头 转向下一个活动。活动图中还可以方便地描述控制转移的 条件以及并行执行等要求。 在很多方面,活动图是结构化开发中流程图和数据流程图 (DFD) 的面向对象等同体 。 活动图 活动图的图符 实心圆表示活动图的起点,实际上是一个占位符, 带边框的实心圆表示终点。 圆角矩形表示执行的过程或活动。 菱形表示判定点。 箭头表示活动之间的转换,各种活动之间的流动 次序。 [条件] 箭头上的文字表示继续转换所必须满足的条件,总 是使用格式“[条件]”来描述。 粗线条表示可能会并行进行的过程的开始和结束。 活动图 活动图 [没有咖啡] 找饮料 人 [没有可口可乐] [找到可口可乐] [找到咖啡] 将咖啡放到 过滤器中 加水到容器中 取出咖啡杯 取一听 可口可乐 把过滤器放 到咖啡炉上 点燃咖啡炉 冲调咖啡 熄灭咖啡炉 倒咖啡 喝饮料 活动图 活动图最适合支持描述并行行为,这使之 成为支持工作流建模的最好工具。 活动图最大的缺点是很难清楚地描述动作 与对象之间的关系。 活动图 对于以下情况可以使用活动图: (1)分析用例; (2)理解牵涉多个用例的工作流; (3)处理多线程应用。 在下列情况下,一般不要使用活动图: (1)显示对象间合作; (2)显示对象在其生命周期内的运转情况。