目录:
正文: UML的产生背景:计算机有软件和硬件两部分组成,从计算机诞生到现在,硬件技术始终比软件技术的发展速度快。上世纪60年代,“软件危机”发生,硬件技术的迅速发展使得计算机价格下降,成了普通人可以用得起的“家用电器”;人们需要更加复杂的软件系统来满足他们工作、生活中的各种需要,但是,当时的软件开发模式很难开发出复杂的软件,即使开发出来,其可靠性、可维护性都是很大的问题。 为了解决“软件危机”,人们提出了“软件工程”的概念,试图将工程化的思想引入到软件业。在这一阶段,诞生了很多的开发方法,其中包括面向对象的开发方法,由于面向对象的各种优点,这种开发方法得到了大家的普遍关注,出现了Simula、C++ 、Java、 C#等面向对象的语言,也出现了各种面向对象的建模方法:OMT、OOSE、Booch等。这些建模方法之间各有区别,对于开发人员来讲,如同三门不同的语言,使用不同语言的开发人员不能很好的交流。 这时,人们期待一种统一的建模语言的诞生,如同建筑设计图一样,符号简单、没有二义性而且更重要的是人人都能够看懂,交流起来很方便,就这样,UML诞生了,UML提出了一套IT专业人员期待多年的统一的标准建模符号。通过使用UML,人员能够阅读和交流系统架构和设计规划,就像建筑工人多年来所使用的建筑设计图一样。 UML的发展史在1995年10月,Grady Booch和James Rumbaugh一同工作,为了合并两大著名的对象方法——Booch'93和OMT-2,合并后的新方法定为“统一方法”(Unified Method),其为UML的前身。后来,在1995年秋天,Ivar Jacobson也加入研究行列,动手合并另一个著名的对象方法—— OOSE。在这之后的一年,他们才公布UML,正式将其定位为建模语言,并且舍弃了先前的统一方法。这令人精神一振,因为UML不再是另一个老掉牙的对象方法了,它是一个新发明,至此UML真正诞生了。1997年十一月,UML的1.1版出炉了,OMG从此接过了制定以后各个版本的责任。各个版本及发布年限参见下图 UML的作用在建筑领域,建筑设计师可以用画在图纸上的模型图、存在计算机中的模型或实际的三维模型是自己的设计结果可视化,并用这些模型来做设计方面的试验。建造、修改一个小的模型比较,这使得设计人员不需要花费什么代价就可以进行创造和革新,最终设计出经济、安全、美观且符合用户需求的建筑。 在软件领域,UML充当了最终软件产品的模型,UML通过各种模型图,从不同角度出发分析问题,每一种模型图都是最终软件产品的一种投影,设计人员可以用这些模型图与用户交流,确认用户的需求,设计人员可以用这些模型图与开发人员交流,确认开发的可行性方案,设计人员可以用这些模型图与测试人员交流,确认测试的完备性等等,总之,通过使用UML,可以使开发过程中不同角色的人员之间能够得到高效的沟通,这样,可以最大限度的保证每个人员心目中的最终产物的一致性,从而使开发更加高效、产物更加“精确”。 UML的构成UML的三要素:基本构造块、规则、公共机制。 1.基本构造块由三部分组成:事物、关系、图组成。 1.1四种事物及在UML中各种元素所属的事物如下图所示: 1.2 四种关系:关联、泛化、实现、依赖: 1.3 9种图及其所属的视图如下所示: 2.规则 不能简单的把UML的构造块按随机的方式放在一起。像任何语言一样,UML有一套规则,这些规则描述了一个结构良好的模型看起来应该像什么 UML有用于描述如下事物的语义规则 ·命名:为事物、关系和图起名 ·范围:给一个名称以特定含义的语境 ·可见性:怎样让其他人使用或看见名称 ·完整性:事物如何正确、一致的相互联系 ·执行运行或模拟动态模型的含义是什么 3. 公共机制 略 UML的适用领域UML的目标是以面向对象的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。 编程(构造)是一个独立的阶段,其任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。因为在早期阶段,模型仅仅是理解和分析系统结构的工具,过早考虑编码问题十分不利于建立简单正确的模型。 参考:http://www.hudong.com/wiki/UML#9 http://book.51cto.com/art/200801/65305.htm http://wenku.baidu.com/view/e580063a580216fc700afd07.html http://www.docin.com/p-4662320.html http://blog.csdn.net/cjqhuadielei/article/details/5900832 |
|