软件工程理论及应用 教学课件 作者 周屹第7章_第1页
软件工程理论及应用 教学课件 作者 周屹第7章_第2页
软件工程理论及应用 教学课件 作者 周屹第7章_第3页
软件工程理论及应用 教学课件 作者 周屹第7章_第4页
软件工程理论及应用 教学课件 作者 周屹第7章_第5页
已阅读5页,还剩28页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第7章面向对象的分析方法

软件工程自70年代以来,有力地推动了软件能力的解决。自顶向下的分析和设计方法、软件项目的工程化管理、软件工具和开发环境和软件的质量保证体系都是重要的进展。传统的软件工程技术的基点是:有确定不变的应用需求并能够准确地描述;软件开发人员负责设计、实现和维护,由最终用户来使用。这种模式对数据处理和事务处理的应用还是基本适应的,但还不能适应90年代以来的新型应用。传统软件工程都是从零开始开发软件的,软件的“重用”没有得到很好的解决,软件开发的抽象程度不高。这些都是传统软件工程的局限性。传统开发方法存在的主要问题:1.软件重用性差重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。传统的程序设计通过库函数的方式来实现重用。实践表明,标准函数库缺乏灵活性,往往难以适应不同应用场合的不同要求。对于用户自己设计的功能模块,对它的重用也有限制:一方面要保证功能完全相同,否则需要进行修改;另一方面,过程和数据是相互依赖的,功能的变化往往涉及数据结构的改变,如果新的应用中的数据与原来模块中的数据不同,那么在对数据进行修改的同时,功能模块也需要修改。2.软件可维护性差软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件重要的质量指标。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。开发出的软件不能满足用户需要面向对象分析的一般步骤是:

(1)在客户和软件工程师之间沟通基本的用户需求,获取客户对系统的需求,包括标识场景(Scenario)和用例(UseCase),以及建造需求模型。

(2)以基本的需求为指南来选择和标识类与对象(包括定义其属性和操作)。

(3)定义类的结构和层次。

(4)表示类(对象)之间的关系,建立对象--关系模型。

(5)建立对象---行为模型。

(6)利用用例/场景来复审分析模型,递进地重复任务(1)~(5),直至完成建模。其中,任务(2)~(4)刻画了待建系统的静态结构,任务(5)刻画了系统的动态行为。7.1面向对象分析概述7.1.1常用的OOA方法7.1.2OOA模型7.2领域分析7.2.1复用和领域分析7.2.2领域分析过程7.2.3面向对象分析模型的类属成分7.3OOA过程7.3.1use-case7.3.2类--责任---协作者建模7.3.3定义结构和层次7.3.4定义主题和子系统7.4对象---关系模型7.5对象---行为模型7.1面向对象分析概述分析是一种研究问题域的过程,该过程产生系统行为的需求说明描述,它是关于要作的事情的一个完全、一致和可行的陈述。分析关心的是用户边界、问题应用范围及系统应完成的任务。系统分析是关于问题空间的一种加工过程,它的输入是目标系统的问题空间,输出则是经过抽象、理解之后产生的系统需求说明。1.对象唯一性每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。在对象建立时,由系统授予新对象唯一的对象标识符,它在历史版本管理中有巨大作用。

2.分类性分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。每个类是个体对象的可能无限集合,而每个对象是相关类的实例。3.继承性4.多态性(多形性)多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息产生完全不同的结果,这种现象称为多态性。如MOVE操作,可以是窗口对象的移动操作,也可以是国际象棋棋子移动的操作。7.1.1常用的OOA方法面向对象技术的流行已经衍生出许多OOA方法,每个方法都引入一个产品或系统分析的过程、一组随过程演化的模型,以及使软件工程师能够以一致的方式创建模型的符号体系。1.Booch方法Booch最先描述了面向对象的软件开发的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。面向对象的软件分解更接近人对客观事物的理解,而功能分解只通过问题空间的转换来获得。2.Coad和Yourdon方法Coad的方法是1989年Coad和Yourdon提出的面向对象的开发方法,经典著作有“OOA”,“OOD”,该方法比较完整而系统地介绍了面向对象的分析和面向对象的设计3.Jocobson方法Jocobson方法即OOSE(面向对象软件工程)。和其他方法不同的是,Jocobson方法特别强调使用实例(UseCase)来描述用户和产品或系统间如何交互的场景。Jocobson的OOA过程概述如下:(1)标识系统的用户和他们的整体责任。(2)建造需求模型。定义参与者(Actor)和他们的责任,为每个参与者标识使用实例,准备系统对象和关系的初步视图,应用实例作为场景去复审模型以确定有效性。(3)建造分析模型。使用参与者交互的信息来标识界面对象,创建界面对象的结构视图,表示对象行为,分离出每个对象的子系统和模型,使用实例作为场景去复审模型以确定合法性。4.Rambaugh方法5.Wirfs-Brock方法Wirfs-Brock方法没有明确区分分析和设计任务,而是对客户规约的估价到设计完成的一个连续过程。Wirfs-Brock与分析相关的任务概述如下:(1)评估客户规约。(2)使用语法分析从规约中抽取候选类。(3)组合类似试图标识超类。(4)为每个类定义责任。(5)为每个类赋予责任。(6)标识类之间的关系。(7)定义类之间给予责任的协作。(8)构造类的层次表示以显示继承关系。(9)构造系统的协作图。虽然上述这些OOA方法的术语和步骤各有差异,但整体的OOA过程还是非常相似的。7.1.2OOA模型1.OOA模型OOA模型就是通过面向对象分析所建立的系统分析模型,表达了在OOA阶段所认识到的系统成分及其彼此关系。在UML和系统开发的统一过程中,用可视化建模概念所对应的表示法绘制相应种类的图,从而表示系统在不同角度的视图。在面向对象分析方法中,一般都是将分析得到的有关系统的重要信息放在模型中来表示,其他信息则放在详细说明中,作为对模型的补充描述和后续开发阶段的实施细则。2.动态模型动态模型描述了对象中与时间和操作次序有关的各种因素,它关心的是对象的状态是如何变化的,这些变化是如何控制的。动态模型可以用状态图表示,每个对象有它自己的一个状态图,其中的节点表示对象在不同时刻的状态,弧表示状态之间的变化。它描述了系统必须实现的操作。该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质;它关心的是系统的控制,操作的执行顺序;它从对象的事件和状态的角度出发,表现了对象的相互行为。该模型描述的系统属性是触发事件、事件序列、事件状态、事件与状态的组织,使用状态图作为描述工具,涉及到事件、状态及操作等重要概念。3.功能模型功能模型描述了系统内值的变化,以及通过值的变化表现出来的系统功能、映射、约束和功能依赖的条件。功能模型只考虑系统“干什么”而不考虑系统“何时干”和“如何干”,它说明了系统是如何响应外部事件的。7.2领域分析领域分析的目的,是发现或创建一些可广泛应用的类,使它们可以被复用。具体地说,面向对象领域分析就是以公共对象、类、子集合和框架等形式,在特定的应用领域中标识、分析和规约公共的可复用能力。7.2.1复用和领域分析对象技术通过复用产生杠杆作用。考虑一个简单的例子,对一个新应用的需求分析指明需要100个类,两个项目组被委派去实现该应用,各自将设计和构造一个最终产品,每个组由具有相同的技能级别和经验的人构成。7.2.2领域分析过程领域分析可以描述为软件的领域分析是在特定应用领域中标识、分析和规约公共需求,典型地是在应用领域中多个项目间的复用。面向对象领域分析是以公共对象、类、子集合和框架等形式在特定应用领域中标识、分析和规约公共的可复用的能力。“特定应用领域”可以涵盖从航空电子设备到银行,从多媒体视频游戏到计算机X射线轴向分层造影扫描机(CATscanner)中的软件。7.2.3面向对象分析模型的类属成分面向对象分析过程也遵从基本的分析概念和原则,虽然术语、符号体系和活动OOA与传统方法有所不同,但OOA(在其核心)也强调相同的根本目标。分析涉及建立真实世界的精确的、简明的、易理解的和正确的模型。面向对象分析的目的是以可理解的方式模拟真实世界。7.3OOA过程

分析的目的是确定一个系统“干什么”的模型,该模型通过使用对象、关联、动态控制流和功能变换等来描述。分析过程是一个不断获取需求及不断与用户磋商的过程。

1.问题陈述,问题陈述为记下或获取对问题的初步描述。

2.构造对象模型的步骤如下:

(1)确定对象类。

(2)编制描述类、属性及关联的数据词典。

(3)在类之间加入关联。

(4)给对象和链加入属性。

(5)使用继承来构造和简化对象类。

(6)将类组合成模块,这种组合在紧耦合和相关功能上进行。最后得到:对象模型=对象模型图+数据词典。3.构造动态模型的步骤如下:

(1)准备典型交互序列的脚本。

(2)确定对象间的事件并为各脚本安排事件跟踪。

(3)准备系统的事件流图。

(4)开发具有重要动态行为的各个类的状态图。

(5)检查状态图中共享事件的一致性和完整性。最后得到:动态模型=状态图+全局事件流图。

4.构造功能模型的步骤如下:

(1)确定输入、输出值。

(2)需要时使用数据流图来表示功能依赖关系。

(3)描述各功能“干什么”。

(4)确定约束。(5)详细说明优化标准。最后得到:功能模型=数据流图+约束。首先标识类和关联,因为它们影响到整体结构和解决问题的方法;其次是增加属性,进一步描述类和关联的基本框架,使用继承合并和组织类;最后将操作增加到类中去作为构造动态模型和功能模型的参考。构造对象模型的第一步是标识来自问题域的相关对象类,对象包括物理实体和概念。所有类在应用中都必须有意义,在问题陈述中,并非所有类都是明显给出的,有些是隐含在问题域或一般知识中的。OOA过程并不是从考虑对象开始,而是从理解系统的使用方式开始,如果系统是人机交互的,则考虑被人使用的方式;如果系统是涉及过程控制的,则考虑被机器使用的方式;或者如果系统协调和控制应用,则考虑被其他程序使用的方式。定义了使用场景后,即开始软件的建模过程。面向对象分析模型的组成结构如图7.2所示。7.3.1use-case用例是可以被执行者感受到的、系统的一个完整的功能。在UML中把用例定义成系统完成的一系列动作序列,动作的结果能够被特定的执行者察觉到。用例是外部可见的系统功能单元;在不揭示系统内部构造的前提下定义连贯的行为;不是需求或功能的规格说明,但是也展示和体现其所描述的过程中的需求情况。7.3.2类--责任---协作者建模一旦系统的基本使用场景确定后,则要开始标识候选类并指明它们的责任和协作,类--责任---协作者(Class-responsibility-collaborator,CRC)建模提供了一种简单的标识和组织与系统或产品需求相关的类的手段。CRC建模的描述如下:CRC模型实际上是一组表示类的标准的索引卡片的集合。卡片被分成三个部分,在卡片的顶部为类的名字,在卡片体的左边列出类的责任,在右边列出协作者。7.3.3定义结构和层次一旦已经使用CRC模型标识了类和对象,分析员开始关注类模型的结构及由类和子类所引致的类层次。识别对象所属的类,对类进行划分,也就是结构的认定。结构是指多种对象的组织方式,用来放映问题空间中的复杂事物和复杂关系。7.3.4定义主题和子系统在一个复杂系统的分析模型中,可能涉及到成百上千个类(对象)。由于受到人的思维能力的限制,可能会造成理解上的混乱。为此,有必要定义一种简洁的表示,对类(对象)作进一步的抽象处理,为此,OOA引进主题词机制。7.4对象---关系模型对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看做对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。我们所指的对象是计算机中的对象,是对现实中对象的模拟,它抽象出现实世界中对象的特征和行为,分别用数据和函数刻画,并封装成一个整体。模拟后的计算机对象既能体现现实世界事物的状态,也具有相应的行为。7.5对象---行为模型

对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态。对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。对象-行为图用于描述对象的动态行为,通常由:对象状态转换图:描述对象可能具有的状态以及引起状态变化的事件。对象的状态是对象属性的一组值。当发生某个事件后,对象的

温馨提示

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

评论

0/150

提交评论