[转自http://www.uml.org.cn]
这两天参加了公司组织的UML培训,培训者是火龙果软件公司的老师。通过两天课程的学习,对UML的使用有了更系统,深刻的认识。
之前对UML的使用,仅限于画图,写文档,而且很多时候都是代码完成了再反向工程得到类图,根据类图画出顺序图,最后把UseCase补上,就完工了。和标准的使用顺序刚好相反,呵呵。
1.业务建模
在系统UseCase图之前,应该有业务UseCase图,主要是对业务需求的描述,它的 Actor称为Business Actor(业务Actor),Business Actor可能最终并不是我们系统中的使用者,但是,从用户的角度,从提出业务需求者的角度,Business Actor是最直接能想到的,也是最重要的。例如,保险公司理赔系统中,Business Actor就是投保人,而实际上投保人并不会操作我们的管理系统,理赔专员,审核员,复核员等才是是系统Actor,但是在与业内人士确定需求时,肯定是以投保人为中心,投保人投保时需要提供什么信息,理赔时需要提供什么信息等。
有了业务UseCase图,就可以开始画活动图,也成泳道图,要尽可能详细,全面的描述客户的需求,此时并不用考虑哪些部分是系统实现的部分,关键在于能够把业务逻辑完整的表述出来。就是什么人(Actor),做了什么事(业务事件),产生了什么结果(业务实体,单据等)。注意,跨泳道的交互必须要有业务实体,即交互的数据。
2.需求建模
对活动图进行分析,得到系统UseCase图。就是要确定活动图中哪些业务事件是我们系统需要实现的,哪些部分是用户自己去做的。把系统需要做的业务事件归纳合并整理,得到UseCase,并对UseCase进行归纳整理。主要有三种归纳方法:include,extend和泛化。include是把重复的提出来;extend是备选流,对主业务流的补充,例如超市管理系统中,收银员收银这个UseCase,扫描仪无法扫描条形码,收银员手工输入就是备选流,查询不到商品信息的处理也是备选流;泛化是对过程类似的UseCase进行提炼,例如武松打虎,李逵杀虎,孙悟空打老虎三个UseCase,可以归纳出一个即打虎,只是行为人,实用工具,结果,方式不一样而已。
3.领域分析
从UseCase和活动图中找出类,主要有UI类,控制类,实体类,边界类(outerface),画顺序图。顺序图是对象之间的交互,对象一定要包含实体类,与实体类的连线以后就是该实体的方法了,注意尽量把对实体中数据的操作作为该实体的方法。
顺序图完成后,就从中抽象,提炼出类。并不是我之前的操作过程,先设计类,再画顺序图,对于简单的业务逻辑,是可以这么做的,一旦业务逻辑过于繁琐,之前也没有接触过,也不理解时,就可见从顺序图提炼类图是多么的关键了。因为顺序图是从活动图来的,活动图直接对应的就是业务需求。
提炼类是注意分配职责给类,而不仅仅是数据,把职责和数据绑定到一起。GRASP职责分配模式:信息专家模式,创建者模式,高内聚模式,低耦合模式,控制器(协调者)模式,中介者。
类之间的关系有4种:依赖关系,关联关系,继承关系和实现接口。
依赖关系用虚线箭头表示,是方法级别的,类A在某个方法中使用了自定义类B,那么A依赖B;
继承关系是实现和三角形表示,实现接口用虚线和三角形表示,都是类级别的;
关联关系是属性级别的,类A的某个属性是自定义类B,那么类A和B就是关联关系,分为组合和聚合两种,如果B的实例必须在A中创建,不能单独存在,随着A的消亡和消亡,那么就是聚合关系,用实心菱形和实线箭头表示,如人和眼睛,就是这种关系。另一种,B的实例也可以独立存在,和A只是一种组合,生命周期没有必然的联系,是组合关系,用空心菱形和实线箭头表示,例如电脑和鼠标。
如果行为逻辑比较复杂,设计多次循环,多方协调,事件驱动,用流程图可能不好描述,或者业务规则比较负责包含多个维度,就需要使用状态图。
状态图有三种:基本,复合,并发。
如果某个类的多个属性都含有状态,即有多个维度的状态,就需要用到复合或者并发了。
原则:把复杂问题简单化,简单的业务逻辑,很容易理解的,完全可以不画,但是对于负责的逻辑,尤其是涉及到算法的业务,必须要画出,只用分析设计,画图了,才能理清业务规则和关系,再进行提炼,合并和重构,就能化繁为简,也能方便日后的维护。
4.面向对象设计
先划分子系统,因为需要从用户的角度建立功能划分,再设计层,每个子系统可能有自己的层次结构,最后设计类和包。
组件图,部署图就在这一步完成。
分享到:
相关推荐
### 内部UML培训材料知识点总结 #### 一、UML基础知识与实践概述 - **UML(统一建模语言)**是一种用于规范软件工程领域中的系统建模语言,旨在帮助开发团队更好地理解系统需求并进行有效的沟通。UML通过提供一...
2. **易用性**:界面直观,无需复杂的培训即可上手,对于初学者友好。工具栏上的图标代表不同的UML元素,用户可以通过拖拽和简单的点击来创建和编辑模型。 3. **便携性**:UML PAD支持便携式应用模式,可以存放在...
IBM的这套资料是针对软件建模的专业培训材料,其中可能包含了对UML、RUP、OOA和OOD的深入讲解。PDF演讲资料通常会涵盖理论知识、实践经验、案例研究等内容,帮助学习者全面理解和掌握这些技术。通过学习,开发者可以...
综上所述,"UML培训资料"可能包括课程介绍、UML基础概念讲解、各种图示类型的详细说明以及如何将UML应用于设计模式和实际项目中的案例。文件"course_all.pdf"可能是全面的课程概述,而"course_advan1.pdf"和"course_...
8. **总结** 学习UML 2.0不仅涉及语法和符号,更重要的是理解如何有效利用其工具和概念来提高软件开发的效率和质量。 UML 2.0的最新讲解强调了建模的灵活性和适应性,通过丰富的图示和表达能力,使开发者能够更...
本书是作者多年使用Visio的经验总结,相信对初学者有很大的参考价值。 Visio不仅仅是一个功能强大、简单易用的绘图工具,它还是一个绝佳的UML建模工具。本书结合Visio最新的2002版本,介绍如下内容:UML相关理论...
总结来说,学生管理系统UML图是该系统设计的关键文档,它通过多种UML图解方式,从不同角度揭示了系统的功能、流程和结构。Reational Software的使用,使得这一过程更加规范和高效。理解和分析这些UML图,对于系统...
- **培训和支持**: 提供必要的培训和支持,确保团队成员能够熟练使用UML工具和技术。 #### 六、总结 通过学习UML的基础语法、面向对象的分析方法以及如何利用UML进行需求分析的最佳实践,您可以更加高效地完成软件...
总结来说,UML是一套内容丰富且复杂的建模语言,它提供了多种图表和表示方法,帮助软件开发者从不同的角度和细节层次来理解和构建软件系统。学习UML,尤其是其基本图形的画法和符号含义,对于任何希望在软件开发领域...
**UML Rose 教程详解** ...总结来说,UML Rose教程是一份全面的学习资料,旨在帮助你理解UML语言并熟练运用Rational Rose工具进行系统建模。通过学习,你将能够更高效地设计和管理复杂的软件项目。
总结,IBM ETP Java培训12部分的UML类图教程,旨在提升开发者对系统建模的理解,通过学习,我们可以更有效地表达和沟通软件设计思想,提高开发效率,并降低维护成本。掌握UML类图的使用,是每个Java程序员进阶路上不...
- 需要系统学习UML的企业员工或培训人员 #### 六、总结 《UML@Classroom》不仅是一本优秀的UML教材,也是一本面向对象建模领域的经典之作。无论是对于正在学习面向对象编程的学生还是希望提升自己建模能力的专业...
- 用户培训和支持:确保用户能够正确使用软件。 - 错误修正和功能增强:根据用户反馈修复错误,增加新功能。 #### 三、软件开发过程模型 1. **瀑布模型**: - 顺序执行各阶段,每个阶段结束时都要进行评审。 2. ...
总结来说,UML作为建模语言,提供了一套统一的方式来描述和理解软件系统,而Rational Rose则是一个强大的工具,它将UML的理论转化为实际的开发过程,尤其在Java开发中,两者结合能显著提升项目的质量和效率。...
**总结** Rational Rose是UML建模的强大工具,它通过多种视图提供对系统全面的描述,从需求分析到详细设计,再到物理部署,覆盖了软件开发的各个阶段。利用Rose,开发者可以更有效地沟通、管理和实现软件项目,确保...
### UML建模案例详解——内部培训资料 #### 一、引言 统一建模语言(Unified Modeling Language,简称UML)是一种广泛应用于软件工程领域的标准化建模语言,旨在帮助软件开发者有效地描述软件产品的架构、行为和...
总结来说,RUP开发过程与UML建模结合,为软件开发提供了结构化、可迭代的方法,帮助团队更好地理解和管理项目,降低风险,提高软件质量和可维护性。通过运用这些知识,开发者可以更有效地应对需求变化,创建满足用户...
这对于新员工培训、项目规划等都非常有用。 - **业务视角**:UML不仅能够从宏观角度描述整个组织结构,还可以根据不同角色的需求展示不同的业务视角,如客户视角、员工视角等。 - **业务规则**:通过UML可以明确地...