代码改变世界

按图索骥---软件的设计图纸(用例图,类图,状态图,活动图,顺序图)

2010-06-10 21:42  穆容  阅读(4871)  评论(17编辑  收藏  举报
 

按图索骥---软件的设计图纸

 

序:

我一直以为,在软件设计中,各种图要比文档重要的多。图可以更加直接的反应软件的构造。尤其是在面向对象的软件设计中。图可以让我们直观的了解各个类和对象直接的交互和关系。

 

1、 用例图

定义:展示系统中参与者与用例之间的关系

我的理解 用例图是根据需求分析得到的,也是软件设计中的第一张图纸。描述了软件系统的全部用户(角色)和全部功能点(业务需求),以及他们之间的关系。也是软件开发中最重要的一张图纸。

用例准则:用例描述了为参与者提供可测量的价值的一个动作顺序,如:提取资金,登记文件。

参与者准则:参与者是和系统进行一次或多次交互的某个角色,它可以是人,组织,进程或者外部系统,如:客户,学生,付款机

技巧:通过竖排用例,隐含表达用例之间的时间顺序。

            用例名以意义明确的动词开头。

            主要参与者放在图的左上角

图例:

 

2、 类图

定义:类图展示的系统中的类,类之间的相互关系,类的方法和属性。

理解:根据用例图,可以基本上设计出系统的类和他们的之间的关系。类图描述的就是类的静态结构

类关系:

       关联:关联指的是类之间的特定的对应关系,在UML中拥戴实现的箭头表示。按照类之间的数量对比,关联可分为以下3种。

聚合:聚合指的是整体与部分之间的关系,在UML中用带实线的菱形箭头表示。例如台灯和灯泡之间就是聚集关系。当台灯类(ReadingLamp类)由灯泡类(Bulb类)和Circuit类聚集而成时,在ReadingLamp类中应该包含Bulb类和Circuit类型的成员变量。

聚集关系中,子系统允许被拆卸和替换。例如:电灯和灯泡

Bulb bulb1 = new Bulb(); //创建第一个灯泡

Bulb bulb2 = new Bulb(); //创建第二个灯泡

ReadingLamp lamp = new ReadingLamp(bulb1); //创建的时候使用第一个灯泡

lamp.setBulb(bulb2); //创建以后还可以换成第二个灯泡

           组合:是关联关系的一种,是比聚集关系强的关联关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期,合成关系是不能共享的。

                    合成关系中,子系统不允许被拆卸和替换。例如:Windows的窗口和窗口上的菜单就是组合关系。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。

           依赖:依赖指的是类之间的调用关系,在UML中用带虚线的箭头表示。如果类A访问类B的属性或方法,或者类A负责实例化类B,那么可以说类A依赖类B。和关联关系不同,无须在类A中定义类B类型的属性。例如PanelShape类之间存在依赖关系,因为Panel类会调用Shape类的draw()方法。

           继承:类之间的继承关系,在UML中用带实线的三角形箭头表示。例如长方形Rectangle、圆形Circle和直线Line都继承Shape

           实现:实现指的是类与接口之间的关系,在UML中用带虚线的三角形箭头表示,这里的接口指的是接口类型,接口名字用斜体字表示,接口中的方法都是抽象方法,也采用斜体字表示。

图例:

3、 状态图

定义:状态图中展示实体基于它当前的状态对不同的事件是如何反应的。

我的理解:状态图是系统即时、实施的图纸。从这个图开始,消息的概念开始贯穿设计始终。通过状态图,我们可以了解系统中的主要对象的状态变迁和变迁散发出的消息。

图例:

4、 活动图

定义:工作流程活动图用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。

我的理解:活动图是状态图的延续,不止是在图中标记了对象状态的变迁,还加入了状态变迁相关的操作。

基本元素:活动状态表示在工作流程中执行某个活动或步骤。   

转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。   

决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。   

同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。

泳道:可以使用垂直实线将活动图划分为泳道。每条泳道代表整个工作流程的某活动图个部分的职责,该职责由组织的某个部门来执行。泳道最终可以由组织单元或者业务对象模型中的一组类来实施。

图例:

5、 顺序图

定义:描述涉及用例实现的多个对象实例以及对象交互时传递的消息,并按照用例的执行步骤为顺序指明对象的交互顺序。

我的理解:主要描述对象间消息的传递和消息传递的顺序。

重点:画顺序的关键是要理清对象间的交互,也就是决定消息该发给那个对象。

图例: