才子佳人博客

我的故事我讲述

建立对象模型典型的工作步骤
 
来源:xjh  编辑:xjh  2009-11-23

复杂问题(大型系统)的对象模型由下述五个层次组成:主题层(也称为范畴层)、类-&-对象层、结构层、属性层和服务层。

建立对象模型典型的工作步骤是:首先确立对象类和关联;对于大型复杂的问题还要进一步划分出若干主题;然后给类和关联增添属性,以进一步描述它们;接下来利用适当的继承关系进一步合并和组织类;最后,确定类的操作需要等到建立了动态模型和功能模型后。

一、确定类-&-对象

类-&-对象是在问题域中客观存在的,系统分析员的主要任务就是通过分析找出这些类-&-对象。首先,找出所有候选的类-&-对象;然后,从候选的类-&-对象中筛选掉不正确的或不必要的项。

步骤1:找出候选的类-&-对象

对象是对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念,在分析所面临的问题时,可以参照几类常见事物,找出在当前问题域中的候选类-&-对象。比如:

(1)可感知的物理实体

(2)角色

(3)事件、活动

(4)概念

另一种更简单的分析方法,是所谓的非正式分析。这种分析方法以用自然语言书写的需求陈述为依据,把陈述中的名词作为类-&-对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)候选者。当然,用这种简单方法确定的候选者是非常不准确的,其中往往包含大量不正确的或不必要的事物,还必须经过更进一步的严格筛选。通常,非正式分析是更详细、更精确的正式的面向对象分析的一个很好的开端。

步骤2:筛选出正确的类-&-对象

非正式分析仅仅帮助我们找到一些候选的类-&-对象,接下来应该严格考察候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。筛选时主要依据下列标准,删除不正确或不必要的类-&-对象:

(1)冗余(如果两个类表达了同样的信息)

(2)无关(仅需要把与本问题密切相关的类-&-对象放进目标系统中)

(3)笼统(需求陈述中笼统的、泛指的名词)

(4)属性(在需求陈述中有些名词实际上描述的是其它对象的属性)

(5)操作(正确地决定把某些词作为类还是作为类中定义的操作)

(6)实现(去掉仅和实现有关的候选的类-&-对象)

二、确定关联

两个或多个对象之间的相互依赖、相互作用的关系就是关联。分析确定关联,能促使分析员考虑问题域的边缘情况,有助于发现那些尚未被发现的类-&-对象。

步骤1:初步确定关联

在需求陈述中使用的描述性动词或动词词组,通常表示关联关系。因此,在初步确定关联时,大多数关联可以通过直接提取需求陈述中的动词词组而得出。通过分析需求陈述,还能发现一些在陈述中隐含的关联。最后,分析员还应该与用户及领域专家讨论问题域实体间的相互依赖、相互作用关系,根据领域知识再进一步补充一些关联。

步骤2:筛选

经初步分析得出的关联只能作为候选关联,还需要进一步筛选,去掉不正确或不必要的关联。

(1)已删去的类之间的关联

(2)与问题无关的或应在实现阶段考虑的关联

(3)瞬时事件

(4)三元关联或派生关联

三、定义结构、识别继承关系

结构指的是多种对象的组织方式,用来反映问题空间中的复杂事物和复杂关系。这里的结构包括两种:分类结构与组织结构。分类结构针对的是事物的类别之间的组织关系,组织结构则对应着事物的整体与部件之间的组合关系。

使用分类结构,可以按事物的类别对问题空间进行层次化的划分,体现现实世界中事物的一般性与特殊性。例如在交通工具、汽车、飞机、轮船这几件事物中,具有一般性的是交通工具,其它则是相对特殊化的。因此可以将汽车、飞机、轮船这几种事物的共有特征概括在交通工具之中,也就是把对应于这些共有特征的属性和服务放在“交通工具”这种对象之中,而其它需要表示的属性和服务则按其特殊性放在“汽车”、“飞机”、“轮船”这几种对象之中,在结构上,则按这种一般与特殊的关系。

四、识别主题

对一个实际的目标系统,特别是大的系统而言,尽管通过对象和结构的认定对问题空间中的事物进行了抽象和概括,但对象和结构的数目仍然是可观的,因此如果不对数目众多的对象和结构进行进一步的抽象,势必造成对分析结果理解上的混乱,也难以搞清对象、结构之间的关联关系,因此引入主题的概念。

主题是一种关于模型的抽象机制,它给出了一个分析模型的概貌。

应该按照问题领域而不是功能分解来确定主题,确定主题原则是:不同主题内的对象相互间依赖和交互最少。

五、认定属性

属性是数据元素,用来描述对象或分类结构的实例。

认定一个属性有三个基本原则:首先,要确认它对响应对象或分类结构的每一个实例都是适用的;其次,对满足第一个条件的属性还要考察其在现实世界中与这种事物的关系是不是足够密切;第三,认定的属性应该是一种相对的原子概念,即不依赖于其它并列属性就可以被理解。

参考来源:
http://web.nuist.edu.cn/courses/glxxxt/mis_files/develop_methd_4_5.htm

《软件工程》清华大学 张海潘


分类:编程开发| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: