全部博文(584)
分类: 嵌入式
2011-02-20 15:53:05
若想成功地利用类表示用例描述,需要借助开发者的经验。通常,开发者必须反反复
复地多次试验各种不同的可能情况,逐步完善解决方案,使该方案能够实现用例描述且灵活易扩展。如果将来用例描述改变了,只要将其对应的实现作简单地修改即可。
另外,UML 的创始人Jacobson 定义了三种类型的版类对象类(stereotype object types);边界对象(又称接口对象)、控制对象和实体对象。还可以利用这三个对象类描述用例的实现。每个对象类能胜任的职责是:
(1)边界对象(boundary objects)
这种对象类紧靠系统的边界(虽然仍在系统内部)。它负责与系统外部的角色交互,
在角色和系统内部的其它对象类之间传递消息。
(2)控制对象(control objects)
这种对象类控制一组对象之间的交互。控制对象可以是刺激用例启动的角色,也可以
用来实现若干个用例的普通序列。控制对象通常仅存在于用例执行阶段。
(3)实体对象(entity objects)
这种对象类代表系统控制区域内的区域实体。它是被动对象本身不能启动交互。在
信息系统中,实体对象通常是持久的,存储在数据库存,中实体对象也可以出现在多个用例中。
上述三个对象类各有自己的图标,可以用来图示协作和类图。在定义了不同的对象类
和详细说明了一个协作之后,也可以用一个具体的活动测试用例,确认对象的实现方式,以便这些类重用在其它用例中,Jacobson 将这种开发过程称为用例驱动的开发过程。
实现用例有多种不同的方法。不同的实现方法为实现用例的类分配不同的功能。有些
方
法采用先建立作用域分析模型(用于显示所有的作用域类及其它们之间的关系),然后才处理用例,为分析模型中的类分配应完成的功能,在这个过程中有时会修改
分析模型或在模型中添加新的类。另外一些方法则把用例当作发现类的基础,在为类分配应完成功能的同时,逐步建立作用域分析模型。总之不论采用何种方法,对
开发者来说,要明白这种实现工作将是反反复复的过程。也就是说,当利用用例为类分配功能时,或许可以发现类图中的错误和遗漏,这时,必须返回去修改类图或
者建一个新类来反映用例的本意。当然,在某些情况下,可能必须修改用例图,因为初期建造的用例图不一定完全正确地描述系统的功能,随着开发者对系统功能的
深入理解,原图之中的不足之处就可能暴露出来。最后一点需要说明的是,并不是所有面向对象的方法都提供用例图。比如有的方法只提供类和对象等静态结构,忽略系统开发过程中其它方面的描述。