《需求分析和系统建模(2).doc》由会员分享,可在线阅读,更多相关《需求分析和系统建模(2).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.2 面向对象的分析2.2.1 面向对象的分析技术1面向对象开发方法中的面向对象的分析(1)什么是面向对象的分析(Object-Oriented Analysis,OOA)。运用面向对象方法,对问题域和系统应该满足的功能进行分析和理解,找出描述问题域和系统功能所需的各个对象,并定义这些对象的属性和操作以及建立这此对象之间的关系;最后建立一个符合问题域,满足用户需求的OOA模型。(2)实施OOA需要完成的工作。由于在OOA阶段不考虑与系统具体实现有关的因素,如软件系统最终的运行平台、开发工具和具体采用的实现技术等,而将这些留给面向对象的设计(Object-Oriented Design,OOD
2、)去处理,因此实施OOA包括两方面的工作。根据实现条件对OOA模型作某些必要的修改和调整:针对具体实现条件,建立人机交互界面、数据存储和控制驱动等模型。(3)面向对象分析的首要任务。面向对象分析的任务主要是识别问题域内的各种对象,并分析它们相互间的关系和通信,最终建立简洁、精确、可理解的问题域软件模型面向对象分析的结果。面向对象分析主要涉及静态分析和动态分析两个方面,动态分析受静态分析的约束,静态分析也足动态分析的基础。静态分析主要体现在静态结构上确定出系统中的各个类、类之间的关系、类的组成等,动态分析着重于动态行为的建立和理解获得对象之间的交互情况、对象的活动和状态。2如何实施面向对象分析面
3、向对象分析的实施首先是根据需求定义用例并绘出用例图、分析用户需求,然后再识别类与对象并确定属性与服务,其后再识别对象之间的关系并画出代表静态分析结果的类图,最后建立对象之间的交互图等。 注意面向对象分析过程实际上是反复迭代的。大体的过程是依次建立对象模型、动态模型、功能模型。之后可以根据需要,按此过程逐渐迭代细化。当然,在实际工作中,这些步骤并不是线性的,特别是在大型应用系统的开发中;面向对象分析方法中的各个步骤可能是以某种交织、迭代或并行的方式进行的。这是因为对于一个大型系统,不可能一次性地完成复杂软件需求中的各个对象、类、消息等的识别和描述。下面为实施面向对象分析的一股步骤。(1)分析用户
4、需求,建立Use Case并通过用例图来描述用户的需求。(2)通过建立域模型以识别类与对象,从而识别系统中的各种对象。(3)确定对象的内部特征,从而定义出各个属性与服务,以进一步细化类的结构。(4)识别对象之间的关系并使用设计模式对类的结构进行优化和改造。(5)获得对象之间的行为关系,绘制出各种动态图形(顺序图、协作图、状态图等)。3主要的工作目标用规范的面向对象分析和设计中的各种形式的图表(如各种形式的UML视图)和文档来描述要建造的软件系统,以便使用户与系统分析人员之间达成一定的共识,同时使后续的开发工作(如系统设计和开发实现)能够继续进行。4应用面向对象分析的主要优点(1)能够加强对问题
5、域和系统功能的充分理解。面向对象分析由于强调从问题域中的实际对象以及与系统功能实现有关的概念出发,构造软件系统的模型,在这种模型中的各个对象、对象的内部结构以及对象之间的关系能直接地描述和体现出问题域。因此面向对象分析方法非常有利于对问题域和系统应该完成的功能的理解。(2)促进与分析有关的各类人员之间的交流。由于面向对象分析是运用常用的思维方法和构造策略来认识和描述问题域的,构造出的系统模型直接来自问题域的术语及概念。这样将有助于开发过程中所涉及的各类人员之间进行交流。(3)对需求的变化具有较强的适应性。类的封装性原则使得它对变化比较有弹性,并且能够适应变化。而面向对象分析以类作为系统的基本组
6、成元素,类的稳定性和功能的相对独立性,使得应用系统本身也具有一定的稳定效果。(4)支持软件复用等技术。应用面向对象分析的结果是找出了系统中的各个类。由于类具有良好的封装性和完整、独立的功能,很适于作为可复用的组件。(5)贯穿软件生命周期全过程的一致性。面向对象提供了一整套的技术和方法,包括面向对象的分析、面向对象的设计、面向对象的编程实现、面向对象系统测试等多种不同的形式。因此,面向对象的方法贯穿在软件生命周期的全过程中。面向对象分析方法的核心是利用面向对象的概念和方法为软件需求构造出模型。它包含面向对象的图形语言机制以及用于指导需求分析的面向对象的方法学。1主要的面向对象的方法(1)Pete
7、r Coard和Edward Yourdon的OOA和OOD方法。面向对象的分析(作者:Peter CoardEdward Yourdon,出版社:北京大学出版社,出版日期:1997年5月)一书中详细地评述了面向对象分析方法的5个步骤标识对象、标识结构、标识主题、定义属性和定义服务,以及如何通过这些步骤产生问题空间的集数据和加工为一体的对象层次模型。(2)Booth的面向对象设计方法。Booth认为软件开发是一个螺旋上升的过程。在螺旋上升的每个周期中,有4个主要的步骤,这4个主要步骤如下:标识类和对象。确定它们的含义。标识它们之间的关系。说明每一个类的界面和实现。(3)OMT(Object M
8、odeling Technology)方法。对象建模技术(OMT)是目前最成熟和实用的方法之一,它从3个方面对系统进行建模,每个模型都从一个侧面反映系统的特性。这三个模型分别是:功能模型、对象模型和动态模型。2对象建模技术(OMT)定义的3种模型(1)功能模型。功能模型表明了系统中数据之间的依赖关系,以及有关数据的处理功能,它由一组数据流图来体现数据之间的依赖关系。其中的处理功能可以用IPO图(或表)和伪码等多种方式描述。用例图也是建立功能模型的有力上具,在UML中用用例图建立起来的系统功能模型称为用例模型。图2.30所示为某个航空订票系统项目系统后台用例图中的部分用例图示。图2.30 对象建
9、模技术中的功能建模用例图注意:IPO图是输入/处理/输出图的简称,描述输入数据、对数据的处理和输出数据之间的关系;IPO图在系统流程图的详细设计过程中用来描述每个模块的输入/输出数据、处理功能及模块调用的详细情况。(2)对象模型。对象模型描述了系统的静态结构,在第一轮迭代中可能只能确定类的名称和类间的关系,在动态模型和功能模型都建立后,再细化类图中的属性和方法。UML中的类图能够表示对象模型,图2.31所示为某个航空订票系统项目持久层中的DAO组件类图。图2 31对象建模技术中的对象模型类图(3)动态模型。动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中对象的合法变化序列。一
10、般先针对某一情形编写脚本,再根据脚本画出事件跟踪图或者UML中的顺序图,最后根据顺序图确定每个类在该情形的状态图。根据所有情形分别编写出脚本,画出事件跟踪图或者顺序图;最后画出状态图,分析人员就能够根据每个状态图的分支点把它们合并起来,形成每个类的整个状态图。图2.32所示为某图书管理系统中管理员的状态图。图232对象建模技术中的动态模型状态图3面向对象分析的主要原则(1)面向对象分析中的抽象。抽象是形成概念的必需手段,并且是指在分析某类事物时舍弃非本质的特征,抽取主要的、共同的、本质性的特征过程。应用抽象的原则,有两方面的意义:第一,尽管问题域中的事物很复杂,但是软件系统的分析人员并不需要完
11、全了解和描述这些问题,只需要分析和研究其中与实现本软件系统目标有关的内容及其本质性的特征即可;第二,通过舍弃非本质的特征和个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。(2)面向对象分析中的封装。封装就是把对象的属性和服务结合为一个不可分的系统单位(面向对象编程技术中的类),并尽可能隐蔽对象的内部细节。其主要目的是防止程序中的关键性属性被无关部分错误地修改或错误地使用了对象的私有部分。当从对象外部试图直接对受保护的内部数据进行修改时,将被程序拒绝,只有通过对象提供的对外服务方法才能对其内部数据进行必要的访问,从而保证了数据处理的合法性。(3)面向对象分析中的继承关系。特殊类的
12、对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。在面向对象分析中运用继承原则,就是把一般类的对象实例和所有特殊类的对象实例共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类已定义的成员,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。应用面向对象中的继承原则的优点是:不仅使系统模型比较简练,而且也比较清晰。缺点是会产生紧密耦合的关系。(4)面向对象分析中的聚合和组合关系。借助于聚合和组合关系的原则,可以把一个复杂的事物看成若干简单事物的组装体,从而简化对复杂事物的描述。同时也能够将复杂的事物分解为更细小的事物。(5)面向对象分析中的依赖和关联。依赖和关联是人们思考问题时经常运用的思想方法:通过一个事物联想到另外的其他事物。使人联想的原因是事物之间确实存在着某些特定联系(关系)。(6)面向对象分析中的消息通信。这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接存取对象内部的属性。通过消息进行通信是基于面向对象分析的封装原则基础之上的。在面向对象分析中要求用消息连接表示对象之间的动态联系。