面向对象软件开发方法及UML一览
引言
从大学开始就接触UML,但是总感觉使用起来畏手畏脚。最近,通过阅读大量的书籍及网上的文章,总算有了一点领悟,写下此文章,和大家分享一下。
通过这篇文章,我想表达的观点:
1. 学习UML要结合软件开发过程
2. UML即可用于抽象的图,也可用于具体的图。从业务建模阶段的图到实现阶段的图是一个从抽象到具体的过程。比如,抽象阶段的类图中的类,可以只有一个类名。到了实现阶段,才加上属性,加上方法。抽象阶段的序列图中的消息,可以自由一个消息名称,到了实现阶段,才会加上消息参数、返回值等。
正文
软件开发方法演变
我们开发软件是为了解决现实问题,所以我们软件开发过程中,需要把现实问题转化成计算机能处理的二进制指令和数据。
一个现实问题如何转变成计算机能懂的二进制指令及数据,从而由计算机帮助解决?
现实问题一般是以人理解的方式来描述,而二进制指令及数据是计算机能理解的,所以如何把以人理解方式描述的问题转化为计算机能理解的方式。
从计算机诞生到现在,计算机科学家做了很多工作来降低这个转化的难度。
在计算机诞生之初,对于现实问题(当时的问题侧重于计算类型的问题):
有了高级语言,人们编写程序更加容易了,但还有一个问题?如何把现实问题转化成高级语言书写的程序呢?
问这个问题,有的同学会觉得不以为然:我是编程高手,会写程序就一切OK了,想那么多干吗?
可以用这样一个类比来解释。我们都会写字,但是我们有多少人能写的出好文章。会写字,但是如果没有一定的功底、文采、语言组织方式,仍然写不出好的文章。作家们在准备创作时,也会花时间进行构思。
现在要把现实问题转化成高级语言程序,也要遵循一定的方式、方法,也需要计划、构思才能写出有价值的程序。
一开始,人们采用面向过程的分析方法,一步一步的把问题转化成程序。
面向过程的分析方法侧重于算法+数据,先确定数据,然后确定处理数据的算法,这个方式更接近于计算机的工作方式。计算机的工作方式就是CPU不断的读取指令,然后指令操作寄存器或内存中的数据,指令就代表了算法。
所以面向过程的方法较之于我们要重点说明的面向对象的方法更接近于计算机的工作方式,而不是与现实世界接近。
面向对象的方法将程序理解为是由一个个对象组成的,而对象又是数据+方法。我们的世界不正是由一个个个体组成的嘛!每一个个体就是一个对象。所以面向对象的方法更接近于现实世界本来的面目。所以用这个方法来把现实问题转化为程序是最恰当不过的。
面向对象分析与设计可以有不同的过程,可以把这里的"过程"理解为方法,不管这些过程、方法有什么不同,各有各的什么特点,他们都是面向对象分析与设计的一种,都是为了把现实问题通过一定的方法转换成面向对象编程语言的程序。
常见的面向对象开发方法有
1. RUP
2. 敏捷方法,其中又以XP(极限编程)最为常见
3. 瀑布模型
4. 基于构件的开发模型
到现在,面向对象编程成为主流的编程方式,但是从现实问题到用面向对象编程语言书写的程序,这中间仍然有很多工作要做。未来,一定会发展出一套技术,使计算机能够直处理用人类语言描述的问题。现在苹果公司的Siri就已经具有这方面功能,虽然还很弱。
模型
UML -- 统一建模语言
RUP(统一软件开发过程)
RUP已成为一种流行的构造面向对象系统的软件开发过程。下面介绍RUP中,业务建模、需求、设计、实现和测试这几个阶段中使用UML的哪些图进行建模。
写在最后
至此,我们介绍软件开发技术的演进历史,介绍了模型的作用,介绍UML,那么三者是一个什么关系呢?总结一下:面向对象软件开发过程中,会产生一系列表征系统的模型,我们使用UML来表达这些模型。
我向大家推荐我在网上找到的两个ppt,这两个ppt非常好,能够帮助你对UML及分析设计阶段的理解。感谢这两个ppt的作者。
UML基础教程
软件工程:UML建模之分析模型和设计模型