面向对象分析和设计各阶段步骤及主要产品

类别:软件工程 点击:0 评论:0 推荐:

最近一个项目中,开始全部使用UML做设计,在项目过程中,体会到关于UML的一些经验。我以前也间断地学过一些UML方向的知识,但从头到尾用到项目中,这是第一次,因此把其中一些收获列出来,不对的地方请指教。

 

一.  需求阶段

1.      需求阶段使用use-case图描述需求

顶层use-case:粗粒度地描述系统,给出系统的概况

细分use-case:将顶层use-case细化

 

Use_case图的方法是:从参与者开始寻找用例,用use-case diagram来表示参与者与用例之间的关系。

Use-case描述的方法是:就是use-case规约,用详尽的文字来描述用例的执行流程(包括主业务流程及所有分支流程及异常流程)。

Active diagram:可选,类似业务流程图,业务比较复杂时,用流程图来描述业务。

 

注:use-case图和use-case描述,是整个系统设计的主要产品,今后的分析和设计,都将围绕这两个产品进行。以前看过的好多资料,都没有讲到这一点,use-case的作用非常大,将贯穿分析到设计到编码的全过程。

 

二.分析阶段

分析阶段的主要工作,是围绕use-case图,及use-case规约,从中寻找参与系统的各种对象。

1.  用sequence diagram来描述use-case的执行过程(包括主流程及备选流程):

方法:a.从参与者开始,寻找参与系统流程的对象

       b.依照参与者à边界类à控制类à生命周期类à实体对象 的次序,区分各对象的职责,将参与系统的各种对象,依次添加到sequence中。

       c.从后向前验证序列,检查每个对象是否拥有它提供服务所必需的信息。如果没有,需要重新考虑对象的职责划分,确保每个对象有相应的方法或通过调用能够找到必需的信息。

 

注:分析阶段,不应涉及到具体技术。关注的重点还是系统做什么,而不是怎么做。

思考:1.现有项目,往往技术是已经确定的,这种情况下,分析应该关注什么内容?

2.  生命周期类,是开发中工作量较大的部分,也有很多可选的frmework来支持,常用的有自己实现DAO、hibernate等技术路线。

3.  分析阶段,已经确定了系统中的package。有一点要注意,package一定要根据业务来进行划分,而不是在系统建立时,就根据客户的意见来强行划分包。根据包之间最小依赖关系,来划分包,并注意一定要避免包之间的相互依赖。

 

三.从技术的角度考虑系统技术方法及软件构架

主要工作是为边界类、实体类、控制类选择候选技术。但往往项目已经是确定了技术路线的,比如我们公司项目已经规定使用J2EE技术。但即便如此,也有很多地方需要考虑。比如是使用JMS通信,还是自己实现Observer。是使用EJB,还是不使用。个人认为,使用EJB一定要慎重。

这部分工作需要系统设计经验比较丰富的人来做,因为技术路线一时选错,对系统后期带来的不良影响是十分大的。

 

根据可扩展性、可维护性、可靠性、可伸缩性的综合考虑,来确定系统的构架。

 

四.设计阶段

设计阶段,同样围绕use-case图及use-case描述来进行,和分析阶段的不同,是加入了选定的具体技术,同时使用面向对象的理论及设计模式等,对系统进行设计。

使用UML的建模工具,在设计阶段产生的产品,主要有两大作用:一是便于交流,也便于修改。二是便于进度安排和工作分配。

 

五.实现阶段

实现阶段是针对设计阶段的产品,编码来进行系统的实现。

 

 

注:主要内容都来自<<Enterprise Java with UML中文版>>及RUP文档。

本文地址:http://com.8s8s.com/it/it35308.htm