面向对象方法综述 |
陈小群 |
(本文转载自软件工程专家网www.21cmm.com,不代表gigix观点)
|
八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。其中,Booch, Coad/Yourdon, OMT, 和Jacobson的方法在面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML(Unified Modeling Language),该方法结合了Booch, OMT, 和Jacobson方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。UML方法自去年提出后到现在已发展到1.1版,并已提交给对象管理集团OMG,申请成为面向对象方法的标准。 面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。 为了发现对象和类,开发人员要在系统需求和系统分析的文档中查找名词和名词短语,包括可感知的事物(汽车、压力、传感器);角色(母亲、教师、政治家);事件(着陆、中断、请求);互相作用(借贷、开会、交叉);人员;场所;组织;设备;和地点。通过浏览使用系统的脚本发现重要的对象和其责任,是面向对象分析和设计过程的初期重要的技术。 当重要的对象被发现后,通过一组互相关联的模型详细表示类之间的关系和对象的行为,这些模型从四个不同的侧面表示了软件的体系结构:静态逻辑、动态逻辑、静态物理和动态物理。 静态逻辑模型描述实例化(类成员关系)、关联、聚集(整体/部分)、和一般化(继承)等关系。这被称为对象模型。一般化关系表示属性和方法的继承关系。定义对象模型的图形符号体系通常是从用于数据建模的实体关系图导出的。对设计十分重要的约束,如基数(一对一、一对多、多对多),也在对象模型中表示。 Booch方法 动态逻辑模型描述对象之间的互相作用。互相作用通过一组协同的对象,对象之间消息的有序的序列,参与对象的可见性定义,来定义系统运行时的行为。Booch方法中的对象交互作用图被用来描述重要的互相作用,显示参与的对象和对象之间按时间排序的消息。可见性图用来描述互相作用中对象的可见性。对象的可见性定义了一个对象如何处于向它发送消息的方法的作用域之中。例如,它可以是方法的参数、局部变量、新的对象、或当前执行方法的对象的部分。 静态物理模型通过模块描述代码的布局。动态物理模型描述软件的进程和线程体系结构。 Booch方法的过程包括以下步骤: 这四种活动不仅仅是一个简单的步骤序列,而是对系统的逻辑和物理视图不断细化的迭代和渐增的开发过程。 类和对象的识别包括找出问题空间中关键的抽象和产生动态行为的重要机制。开发人员可以通过研究问题域的术语发现关键的抽象。语义的识别主要是建立前一阶段识别出的类和对象的含义。开发人员确定类的行为(即方法)和类及对象之间的互相作用(即行为的规范描述)。该阶段利用状态转移图描述对象的状态的模型,利用时态图(系统中的时态约束)和对象图(对象之间的互相作用)描述行为模型。 在关系识别阶段描述静态和动态关系模型。这些关系包括使用、实例化、继承、关联和聚集等。类和对象之间的可见性也在此时确定。 在类和对象的实现阶段要考虑如何用选定的编程语言实现,如何将类和对象组织成模块。 在面向对象的设计方法中,Booch强调基于类和对象的系统逻辑视图与基于模块和进程的系统物理视图之间的区别。他还区别了系统的静态和动态模型。然而,他的方法偏向于系统的静态描述,对动态描述支持较少。 Booch方法的力量在于其丰富的符号体系,包括: 用于类和对象建模的符号体系使用注释和不同的图符(如不同的箭头)表达详细的信息。Booch建议在设计的初期可以用符号体系的一个子集,随后不断添加细节。对每一个符号体系还有一个文本的形式,由每一个主要结构的描述模板组成。符号体系由大量的图符定义,但是,其语法和语义并没有严格地定义。 Rumbaugh的OMT方法 Rumbaugh的OMT方法从三个视角描述系统,相应地提供了三种模型,对象模型,动态模型和功能模型。对象模型描述对象的静态结构和它们之间的关系。主要的概念包括: 动态模型描述系统那些随时间变化的方面,其主要概念有: 功能模型描述系统内部数据值的转换,其主要概念有: 该方法将开发过程分为四个阶段: 2 系统设计 3 对象设计 4 实现 Coad/Yourdon方法 Coad/Yourdon方法严格区分了面向对象分析OOA和面向对象设计OOD。该方法利用五个层次和活动定义和记录系统行为,输入和输出。这五个层次的活动包括: 在面向对象分析阶段,经过五个层次的活动后的结果是一个分成五个层次的问题域模型,包括主题、类及对象、结构、属性和服务五个层次,由类及对象图表示。五个层次活动的顺序并不重要。 面向对象设计模型需要进一步区分以下四个部分: Jacobson方法 Jacobson方法与上述三种方法有所不同,它涉及到整个软件生命周期,包括需求分析、设计、实现和测试等四个阶段。需求分析和设计密切相关。需求分析阶段的活动包括定义潜在的角色(角色指使用系统的人和与系统互相作用的软、硬件环境),识别问题域中的对象和关系,基于需求规范说明和角色的需要发现use case,详细描述use case。设计阶段包括两个主要活动,从需求分析模型中发现设计对象,以及针对实现环境调整设计模型。第一个活动包括从use case的描述发现设计对象,并描述对象的属性、行为和关联。在这里还要把use case的行为分派给对象。 在需求分析阶段的识别领域对象和关系的活动中,开发人员识别类、属性和关系。关系包括继承、熟悉(关联)、组成(聚集)和通信关联。定义use case的活动和识别设计对象的活动,两个活动共同完成行为的描述。Jacobson方法还将对象区分为语义对象(领域对象)、界面对象(如用户界面对象)和控制对象(处理界面对象和领域对象之间的控制)。 在该方法中的一个关键概念就是use case。use case是指行为相关的事务(transaction)序列,该序列将由用户在与系统对话中执行。因此,每一个use case就是一个使用系统的方式,当用户给定一个输入,就执行一个use case的实例并引发执行属于该use case的一个事务。基于这种系统视图,Jacobson将use case模型与其它五种系统模型关联: |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2287