转五篇:原型法和面向对象的分析与设计方法(3)

9.2 面向对象的分析与设计方法

9.2.1 面向对象的方法――概念与思想

所谓面向对象技术,顾名思义,就是以对象观点来分析现实世界中的问题。从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。在面向对象的系统中,世界被看成是独立对象的集合,对象之间通过过程(在面向对象术语中称之为“消息”)相互通信。面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送和多态性等概念来构造系统的软件开发方法。

1OO方法的产生和发展

结构化生命周期法难以控制、处理和适应变化的矛盾,因此产生了原型化方法来进行弥补,原型化方法又需要有快速原型生成工具来支持。这两种方法都是从一般系统工程的角度采用计算机语言来描述、处理自然世界,这样必然造成系统分析、设计与其事物管理的差距,使管理信息系统在应用上产生了许多困难和矛盾。在20世纪80年代初期产生了面向对象的设计方法(OOP),面向对象设计方法既吸取了以前开发方法的优点,同时又正视和顺应了现实世界由物质和意识两部分组成,是近20年来发展起来的基于问题对象的一种自底向上的系统开发方法。

面向对象的思想首先出现在程序设计的语言中,产生了面向对象的程序设计方法(Object-Oriented Programming, OOP),并进而产生面向对象技术和方法。一般认为,面向对象的概念起源于20世纪70年代挪威的K.Nyguarded等人开发的模拟离散事件的程序设计语言Simula67。但真正的面向对象设计(OOP)还是来源于Alan Keyz主持设计的Smalltalk语言由Xerox Learning Research Group所研制的Smalltalk-80系统,则是较全面地体现了面向对象程序设计语言的特征,标志面向对象程序设计方法得到比较完善实现,从而兴起了面向对象研究的高潮。

20世纪80年代中期,也就是C++ 语言十分热门的时候,面向对象分析(OOA)的研究开始发展,进而延伸到面向对象设计(OOD)。1988年Shlaer和Mellor出版第一本OOA著作;1990年Coad和Yourdon发展出更简单的合作行为思想;Booch进行综合性工作,Rumbaugh提出了OMT,Jacobson提出了OOSE,Wirfs-Brock提出了RDD和CRC卡等。这些系统间存在互不相容(不仅仅在内部)问题,为了尽快发布标准,建立了对象管理组织(OMG)大型合作组织。著名的成果有CORBA和其相应的UML等。目前主要关注基于部件开发(CBD)、模式、标准化(记号、过程和体系结构),并与大型应用和OO数据库系统相结合。至此,面向对象方法从理论走向具体实现,显示出其强大的生命力,在许多领域和方向上取得进展。如面向对象技术的理论基础和形式化描述;用面向对象技术的概念设计操作系统;面向对象的知识表示;面向对象的仿真系统等等。

2.面向对象的基本概念

OO方法涉及一些重要概念,对其理解掌握是面向对象分析设计的基础。

 (1)对象

面向对象方法就是以对象为中心、以对象为出发点的方法,所以对象的概念相当重要。在应用领域中有意义的、与所要解决的问题有关系的任何人或事物(即我们说的实体)都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的事物或东西。

在面向对象方法中,对象是一组数据(属性)和施加于这些数据上的一组操作代码(操作)构成的独立类体。换言之,对象是一个有着各种特殊属性(数据)和行为方式(方法)的逻辑实体。对象是一个封闭体,它向外界提供一组接口界面,外界通过这些接口与对象进行交互,这样对象就具有较强的独立性、自治性和模块性,从而为软件的重用奠定了坚实的基础。

从传统的结构化编程观点来看,数据和处理它们的代码(操作过程)是两个不同的独立实体,它们之间的正确联系、选择与匹配需要应用系统的设计者时刻考虑、操心和进行统一。而在OO中,一个对象则是由私有数据和其上的一组操作代码组成的一个统一体,如图9-4。 

对象的动作取决于发送给该对象的消息表达式,消息告诉对象要求完成的功能(what to do),并激活该功能,这意味着对象具有自动“知道”如何完成相应操作代码(how to do)的“智能”选择机制,正是这一选择机制把结构化设计(SP)中应用系统程序员或用户做出的选择操作数与相应操作函数代码匹配的负担转移给了系统设计员,正是这一与传统SP风格有本质区别的对消息请求自动选择操作的小小变化,蕴涵了 OOP技术的全部威力。

2)消息

   对象通过对外提供服务发挥自身作用,对象之间的相互服务是通过消息来连接实现的。消息是为了实现某一功能而要求某个对象执行其中某个功能操作的规格说明。它一般含有下述信息:提供服务的对象标识、服务标识、输入信息和响应信息。对象接收消息,根据消息及消息参数调用自己的服务,处理并予以响应,从而实现系统功能。

    消息是对象之间相互作用和相互协作的一种机制,更通俗地讲,OOP中的术语“消息”只不过是现实世界中的“请求”、“命令”等日常生活用语的同义词。

    (3)方法

“方法”对应于对象的能力,它是实现对象所具有的功能操作代码段,是响应消息的“方法”。在C+十中,方法即是类中定义的成员函数,它只不过是该类对象所能执行的操作的算法实现。

    方法与消息是一一对应的,每当对象收到一个消息,它除了能用其“智能化”的选择机制知道和决定应该去做什么(what to do)外,还要知道和决定该怎样做(how to do)。而方法正是与对象相连决定怎么做的操作执行代码。所以方法是实现每条消息具体功能的手段。

4)类

在面向对象的软件技术中,类可以定义为由数据结构及相关操作所形成的集合,或所有相似对象的状态变量和行为构成的模板。

    类是对一组对象的抽象归纳与概括,更确切地说,类是对一组具有相同数据成员和相同操作成员的对象的定义或说明。而每个对象都是某个类的一个具体实例。

  在OOP中,每个对象由一个类来定义或说明,类可以看作生产具有相同属性和行为方式对象的模板。与成语“物以类聚,人以群分”的意思一样,“类”就是具有相似性质的事物的同类特征的集中。在面向对象系统中,我们一般就是根据对象的相似性(包括相似的存储特征和相似的操作特征)来组织类的。简而言之,按照对象的相似性,我们把对象分成一些类和子类,将相似对象的集合即称为“类”。对 c+十程序员而言,类实际只是一种对象类型、它描述属于该类型的具有相同结构和功能的对象的一般性质。

    (5)继承

    继承是对象类间的一种相关关系,指对象继承它所在类的结构、操作和约束,也指一个类继承另外一个类的结构、操作和约束。继承体现了一种共享机制。

    继承机制既是一个对象类获得另一对象类特征的过程,也是一个以分层分级结构组织、构造和重用类的工具。它是解决客观对象“相似但又不同”的妙法。

    继承机制具有能清晰体现相似类间的层次结构关系;能减小代码和数据的重复冗余度,大大增强程序的重用性;能通过增强一致性来减少模块间的接口和界面,大大增强程序的易维护性等特点。

如果没有继承概念的支持,则OOP中所有的类就象一盘各自为阵、彼此独立的散沙,每次软件开发都要从“一无所有”开始。

6)封装

封装(encapsulation)即信息隐藏。它保证软件部件具有较好的模块性,可以说封装是所有主流信息系统方法学中的共同特征,它对于提高软件清晰度和可维护性,以及软件的分工有重要的意义。我们从两个方面来理解封装的含义。

① 当设计一个程序的总体结构时,程序的每个成分应该封装或隐藏为一个独立的模块,定义每一模块时应主要考虑其实现的功能,而尽可能少地显露其内部处理逻辑。

② 封装表现在对象概念上。对象是一个很好的封装体,它把数据和服务封装于一个内在的整体。对象向外提供某种界面(接口),可能包括一组数据(属性)和一组操作(服务),而把内部的实现细节(如函数体)隐藏起来,外部需要该对象时,只需要了解它的界面就可以,即只能通过特定方式才能使用对象的属性或对象。这样既提供了服务,又保护自己不轻易受外界的影响。

7)多态性

 多态性(polymorphism)指相同的操作(或函数,过程)可作用于多种类型的对象并获得不同的结果。在面向对象方法中,可给不同类型的对象发送相同的消息,而不同的对象分别做出不同的处理。例如给整数对象和复数对象定义不同的数据结构和加法运算,但可以给它们发送相同的消息“做加法运算”,整数对象接收此消息后做整数加法运算,复数对象则做复数加法运算,产生不同的结果。多态性增强了软件的灵活性、重用性、可理解性。

3.面向对象的思想

按设计思想来分,传统的软件系统开发可分为自顶向下和自底向上两种。流行的结构化方法采用自顶向下的设计思想。自顶向下的方法总是首先从问题的大的方面入手来寻找解决办法,避免了为具体的细节所缠绕,降低了难度,而直到恰当的时机,才去过问实现的细节;而自底向上与此正好相反,它总是从解决基本的、简单的问题开始,在此基础上逐步建立解决复杂问题的能力,直到整个问题的解决。

总的来看,面向对象方法既不是自顶向下方法也不是自底向上方法。尽管它兼有这两者的一些特点。一方面,面向对象方法鼓励人们从问题的基本的、简单的方面入手,用对象来考虑如何描述问题的解决,然后抽象并确定类,得到具有一般性的解决问题的方法,这正是自底向上的本质;而另一方面,面向对象的方法又要求人们面向目标,考虑为达到这一目标如何建立这些基本的对象,这正体现了自顶向下的思想。

面向对象方法从一开始就强调结构与代码的共享与重用。因而在解决复杂问题时,它总是从问题的基本方面入手,力求寻找构成解决不同复杂问题的基本方法,因为这些基本方法在一些功能细节上是相似或相同的,这些方法不仅能解决当前问题,而且可以帮助解决未来的问题。因而,对方法的划分(或类的认定)既要考虑其特殊性,又要考虑其一般性。在面向对象的方法中,可重用的软件对象正是抓住了问题的基本方面这一关键点,因而它所建立的过程方法和自顶向下所创建的低层模块不同,自顶向下方法中所得到的模块是为支持其特定的上层目标而开发的;它同自底向上方法开始时所建立的过程也不同,那些过程是被临时建立、不可重用的。

面向对象方法与传统的结构化设计思想比起来,有着明显的优点。

① 代码的可重用性好

随着开发平台以及应用要求越来越复杂,应用程序的规模变得越来越庞大,代码重用成了提高程序设计效率的关键。采用传统的结构化设计模式,程序员每次进行一个新系统的开发,几乎都要从零开始,这中间当然有着大量重复、繁琐的工作。在这种情况下,如果要进行代码重用,就只能采用当今大多数程序员所采用的比较笨的方式――拷贝。

     可维护性和可扩充性好

用传统的面向过程语言开发出来的软件很难维护,是长期困扰人们的一个严重问题,也是软件危机的突出表现。在面向对象方法中,类是理想的模块机制,它的独立性好,修改一个类通常很少牵扯到其他类。如果仅修改一个类的内部实现部分,而不修改该类的对外接口,则可以完全不影响软件的其他部分。面向对象软件技术特有的继承机制,使得对软件的修改和扩充比较容易实现,通常只需从已有类派生出一些新类,无须修改软件的原有成分。

面向对象软件技术的多态性机制,使得扩充软件功能是对原有的代码所需做的修改进一步减少,需要增加的新代码也比较少。

     稳定性好

结构化程序设计也存在模块的独立性,因此结构化软件也有一定的稳定性。但结构化设计是通过过程(函数、子程序)的概念来实现的。这一层的概念很狭隘,稳定性很有限,使得在大型软件开发过程中数据的不一致性问题仍然存在。而面向对象模式是以对象和数据为中心,以数据和方法的封装体“对象”为程序设计单位,程序模块之间的交互存在于对象一级,这时的数据与传统的数据有很大的不同,它具有“行动”的功能,它同它的方法一起被封装。当把它作为一个组件构成程序时,程序逻辑的稳定性的优点就充分体现出来了。

9.2.2 面向对象的分析方法

面向对象分析(OOA)是面向对象(OO)方法的一个组成部分,它利用面向对象的方法进行系统分析,即在明确的用户需求的基础上,通过对问题空间的分析,把空间分解成一些类或对象,找出这些对象的特点(即属性和服务),以及对象间的关系(一般/特殊,整体/部分关系),并由此产生一个规格说明,建立以对象为单元的信息系统逻辑模型,为面向对象设计(OOD)和面向对象程序设计(OOP)提供指导。

到目前为止,面向对象分析方法有许多种,有Booch方法(OOD)、CoadYourdon方法(OOA&D)Jacobson方法(OOSE)Rumbauph方法(OMT)、Wassman-Pircher方法(OOSD)等,这些方法从不同角度进行分析,各有特色,但距问题的全面解决还有一定的距离。本节介绍OOA主要原则,并以CoadYourdon方法讨论OOA过程。

1OOA的系统模型

OOA的主要目标是利用面向对象的方法,站在对象的角度对所要研究的问题空间及系统进行深刻的理解,正确认识问题空间中的事务及其事务之间的关系,识别描述问题空间及系统所需的对象、类,定义对象及类的属性与服务,建立与问题空间相映射、相对应的系统对象模型。

OOA的系统模型包括三大部分,即基本模型、补充模型及系统的详细说明。

1)基本模型

基本模型是以类图的形式来表达系统最重要的信息,而类图则由类、属性、服务、泛化-特化结构、整体-部分结构、实例连接和消息连接等主要成分所构成。这些成分所表达的模型信息可分为三个层次,即对象层、特征层和关系层。如图9-5所示。

对象层给出了系统中所有反映问题空间及系统责任的对象,用类符号来表达属于每一类的对象,而类作为对象的抽象描述,是构成系统的基本单位。特征层给出了每一类及其所代表对象的内部特征,即每类的属性与服务,描述了对象的内部构成状况及细节。关系层则给出了各个类及其所代表的对象彼此之间的关系,这些关系包括继承关系,用

对象类的集合

类的内部特征

类的外部特征

特征层

关系层

9-5  OOA基本模型

一般-特殊结构表示;组装关系用整体-部分结构表示;属性间的静态依赖关系,用实例连接来表示;服务间的动态依赖关系用消息连接表示,消息连接描述了对象类外部的联系情况。概括地说,OOA基本模型分别描述了:系统中应具有哪几类对象,每一类对象的属性和服务是什么;各类对象和外部的联系状况。由对象层、特征层和关系层所表达的信息有机组合起来,就构成了一个完整的类图。

2)补充模型

补充模型是基本模型之外的用于帮助理解并延伸基本模型的模型,补充模型由主题图、使用实例和交互图组成。

主题图是具有较强联系的类组织的集合体,它是对系统类图的进一步抽象,是较高层次上的系统视图。主题图描述了系统的主题构成,它简明直观,无论是对开发者还是对使用者都有很大帮助。

使用实例(Use Case)是对系统功能使用情况的文字描述,每个使用实例对应着系统的一个功能,它描述系统的外实体与系统之间的信息交互关系,即说明外部实体如何通过系统边界接口向系统输入信息,系统接收到信息后进行什么样的处理、输出或响应什么信息。使用实例就像一个“剧本”一样,较为直观简明地表达了用户对系统的功能需求。

交互图(Interaction Diagram)是一个使用实例与完成相应功能的系统成分之间的对照图,它具体表明了使用实例中陈述的事件是由系统中的哪个服务来响应和完成,以及这个服务在执行过程中又进一步用到哪些其它对象中的服务。

补充模型有助于在准确理解用户需求的基础上发现和定义服务,同时有助于检查系统是否提供了充分满足用户需求的对象环境及其服务。

3)系统的详细说明

详细说明是按照面向对象方法的要求格式对系统模型作出的进一步解释,它主要由类描述模板构成。对于OOA系统模型的每一类,一般都要建立一个类描述模板。类描述模板的构成有:对整个类及其对象的进一步说明、对每个属性和服务的进一步说明和其他必要的说明。类描述模板主要以文字方式给出,但有时也附加一些图表说明。OOA详细说明在OOA分析中是必不可少的,但其中的内容可以根据具体的需求情况进行取舍或简化。

OOA的系统模型给出了对OOA分析结果的完整表达和精确描述,在这3个组成部分中,基本模型是描述表达OOA的核心,补充模型是对基本模型的必要补充和辅助说明,而详细说明则给出了系统模型中类、对象、属性和服务的详细定义与进一步解释。这三个部分组合起来,构成OOA分析文档的主要内容,也是OOA的主要工具,OOA就是根据这一框架来展开工作的。

2 OOA分析过程

在一个系统开发过程中进行了系统业务调查以后,就可以按照面向对象的思想来分析问题了。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行归类分析和整理。OOA强调如下基本观点:分析规格说明的总体框架贯穿结构化方法,如整体和局部,类和成员,对象和属性等;用消息进行用户和系统之间以及系统中实例之间的相互通讯;

下面以CoadYourdon方法讨论OOA过程,OOA大致上遵循如下五个基本步骤:

1)确定类(class)和对象(object)。

    确定类与对象就是在实际问题的分析中,高度地抽象和封装能反映问题域和系统任务的特征的类和对象。如何在众多调查资料中进行分析并确定类与对象呢?解决这一问题的方法一般包含如下几个方面:

① 基础素材  系统调查的所有图表、文件、说明以及分析人员的经验、学识都是OOA分析的基础素材。

② 潜在的对象  在对基础素材的分析中,哪种内容是潜在的,并且有可能被抽象地封装成对象与类呢?一般说来下列因素都是潜在的对象:结构、业务、系统、实体、应记忆的事件等。

③ 确定对象  初步分析选定对象以后,就通过一个对象和其它对象之间关系的角度来进行检验,并最后确定它。

④ 图形表示。用图形化方法表示确定的对象和类。

2)确定结构(structure)。

结构表示问题空间的复杂程度。标识结构的目的是便于管理问题域模型的复杂性。在OOA中,结构是指泛化-特化结构和整体-部分结构两部分的总和。

① 确定泛化-特化结构(分类结构)

泛化-特化结构有助于刻画出问题空间的类成员层次。继承的概念是泛化-特化结构的一个重要组成部分。继承提供了一个用于标识和表示公共属性与服务的显式方法。在一个泛化-特化结构内,继承使共享属性或共享服务、增加属性或增加服务成为可能。

定义泛化-特化结构时,要分析在问题空间和系统责任的范围内,通用类是否表达了专用类的共性,专用类是否表示了个性。

9-6给出的是泛化-特化结构。其中,特殊化类是一般化类的派生类,一般化类是特殊化类的基类。分类结构具有继承性,一般化类和对象的属性和服务一旦被识别,即可在特殊化类和对象中使用。

② 确定整体-部分结构(组装结构)

整体-部分结构表示一个对象怎样作为别的对象的一部分,和对象怎样组成更大的对象,与我们在系统工程中划分子系统结构的思路基本一致。图9-7说明报社是由采访组、编辑室和印刷厂等几个部门组成,同时也指出,一个报社只有一个编辑室,一个印刷厂,但可以有一至多个采访组。

3)定义主题(subject)。

OOA中主题是一种指导我们研究和处理大型复杂模型的机制。它有助于分解系统,区别结构,避免过多的信息量同时出现所带来的麻烦。主题的确定可以帮助人们从一个更高的层次上来观察和表示系统的总体模型。

    选择主题时,首先应该考虑:为每一个结构相应地增设一个主题;为每一个对象相应地增设一个主题。如果主题的个数过多,则需进一步精炼主题。根据需要,可以把紧耦合的主题合在一起抽象一个更高层次的模型概念供读者理解。然后,列出主题及主题层上各主题之间的消息连接。最后,对主题进行编号,在层次图上列出主题以指导读者从一个主题到另一个主题。每一层都可以组织成按主题划分的图。

4)定义属性(attribute)。

OOA中属性被用来定义反映问题域的特点和系统的任务。定义属性通过确认信息和关系来完成的,它们和每个实例有关。

① 确定属性的范围

首先要确定划分给每一个对象的属性,明确某个属性究竟描述哪个对象,要保证最大稳定性和模型的一致性,其次,确定属性的层次,通用属性应放在结构的高层,特殊属性放在低层。如果一个属性适用于大多数的特殊分类,可将其放在通用的地方,然后在不需要的地方把它覆盖(即用“X”等记号指出不需要继承该属性),如果发现某个属性的值有时有意义,有时却不适用,则应考虑分类结构,根据发现的属性,还可以进一步修订对象。

② 实例连接

实例连接是一个问题域的映射模型,该模型反映了某个对象对其它对象的需求。通过实例连接可以加强属性对类与状态的描述能力。

实例连接有一对一(1:1、一对多(1:M)和多对多(M:M)三种,分别表示一个实例可对应一个或多个实例,这种性质叫多重性。例如,一个车主拥有一辆汽车,则车主到汽车的实例连接是1:1的;一个车主拥有多辆汽车,则是1:M的。

③ 详细说明属性和实例连接的约束

 用名字和描述说明属性,属性可分成四类;描述性的、定义性的、永远可导出的和偶而可导出的。实例连接的约束是指多重性与参与性。

④实例及符号

 实例连接的表示方法非常简单,只需在原类&对象的基础上用直线相连接,并在直线的两端用数字标志出它们之间的上下限关系即可。例如在车辆和执照事故管理系统中,可以将车辆拥有者和法律事件两个类&对象实例连接如图9-8形式。 

5)确定服务(service)。

    对象收到消息后所能执行的操作称为它可提供的服务。它描述了系统需要执行的处理和功能。定义服务的目的在于定义对象的行为和对象之间的通信(消息连接)。事实上,两个对象之间可能存在着由于通信需要而形成的关系,即为消息连接。消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。它们在图中用箭头表示,方向从发消息的对象指向收消息的对象。

    确定服务包括四个基本步骤:在分析中识别对象状态;识别所要求的服务;识别消息连接和指定服务。

① 识别对象状态    

在系统运行过程中,对象从被创建到释放要经历多种不同的状态。对象的状态是由属性的值来决定和表示的。一个对象状态是属性值的标识符,它反映了对象行为的改变。

识别对象状态的方法一般通过检查每一个属性的所有可能取值,确定系统的职责是否针对这些可能的值会有不同的行为;检查在相同或类似的问题论域中以前的分析结果,看是否有可直接复用的对象状态;利用状态迁移图描述状态及其变化。

② 识别所要求的服务

必要的服务可分为两大类:简单的服务和复杂的服务。

简单的服务是每一个类或对象都应具备这样的服务,在分析模型中,这些服务不必画出,如建立和初始化一个新对象(Create),释放或删除一个对象(Release)等。

复杂的服务分为两种:计算(Calculate)服务和监控(Monitor)服务,必须在分析模型中显式地给出,计算服务是利用对象的属性值计算,以实现某种功能;监控服务主要处理对外部系统的输入/输出,外部设备的控制和数据的存取。

为了标识必要的服务,需要注意检查每一个对象的所有状态,确定此对象在不同的状态值下要负责执行哪些计算、要做哪些监控,以便能够弄清外部系统或设备的状态将如何改变,对这些改变应当做什么响应;检查在相同或类似的问题论域中以前的分析结果,看是否有可直接复用的服务。

③ 识别消息连接 

消息连接是指从一个对象向另一个对象发送消息,并且使得某一处理功能,所需的处理是在发送对象的方法中指定的,并且在接收对象的方法中详细定义了的。

识别消息连接的方法及策略是检查在相同或类似的问题论域中以前分析的结果,看是否有可复用的消息连接。对于每一个对象,查询该对象需要哪些对象的服务,从该对象画一箭头到哪个对象;查询哪个对象需要该对象的服务,从那个对象画一箭头到该对象;循消息连接找到下一个对象,重复以上步骤;当一个对象将一个消息传送给另一个对象时,另一个对象又可传送一个消息给另一个对象,如此下去就可得到一条执行线索。检查所有的执行线索,确定哪些是关键执行线索(Critical Threads of Execution)。这样有助于我们检查模型的完备性。

④ 定义服务  

在确定了对象的状态,所要执行的内容和消息后,具体如何执行操作呢?OOA提供了模板式的方法描述方式。这是一种类似程序框图的工具。它主要是用定义方法和定义例示来实现。如图9-9所示。

6) 汇集OOA的分析文本

SSA中强调在系统分析之后需要给出系统分析报告,OOA也一样,分析之后也汇集分析文本,以便后继开发工作的进行。OOA完整的分析文本集应包括如下内容:

5个基本分析步骤模型(结果),它们是类-&-对象、结构、主题、属性和方法;

② 类-&-对象规范;

③ 补充说明文本。

需要大量补充说明的内容有:关键执行过程;附加的系统约束;方法处理细节;状态集合总表等。

目前,面向对象分析有一些CASE工具支持:

l         Object-Oriented Environment,由富士施乐信息系统公司出品

l         OOA Tool(面向对象分析的工具),由Object International Inc.公司出品

l         ObjectPlus,由Easyspec Inc.公司出品

AdagenMark V systems Ltd.公司出品

posted on 2006年7月19日 12:43 由 dongwei

Comments