Home > Commentary, 閒聊, 評論, Free Talk, Technologies, 技術 > UML 之背後 – 真的 Unified 了嗎?

UML 之背後 – 真的 Unified 了嗎?

July 11, 2006 (Tuesday) Leave a comment Go to comments

UML (Unified Modeling Language),中文叫作統一塑模語言。

根據 OMG (Object Management Group) 的定義:

(UML®) helps you specify, visualize, and document models of software systems, including their structure and design, in a way that meets all of these requirements. (You can use UML for business modeling and modeling of other non-software systems too.)

UML 從出現以來,一直被大家所推崇,從學界到業界都在使用。除了有強大的工具可以讓你畫出很多漂亮的圖以外,還有很多跟 UML 脫不了關係的研究、工具、產品、技術等等。UML 看來真的幫了大家不少忙,建立了大家一個溝通的平台。

只是 UML 博大精深,版本也一直在更改,事實上很少有人能把所有的 UML 圖例都記得一清二楚。而且,不是每個人都是看相同的東西學 UML 的,造成大家對 UML 的理解有所不同,這也不是第一天知道的事了。尤其在 Use Case Diagram 這個比較少邏輯規範在裡面的圖最容易有不同的見解,剛好 RUP (Rational Unified Process) 的精神就是 Architecture-centric + Use case driven,因此 Use case 佔了非常重要的一個色角色,如果 Use case 弄得不好,後面的也會跟著不倫不類下去。在學校裡有對與錯,在實務上,畫了就是畫了,沒有人會跟你講你的圖畫錯。再者,對錯也不是那麼的重要,反正開發又是另一回事。講到重點了,”開發又是另一回事”,既然如此,為什麼又要畫 UML 圖呢?

追根究底,還是軟體工程的問題,系統分析到底在商業上站了一個什麼角色,是可有可無的東西,還是是軟體開發的重點。當大家在用 UML 畫圖時是用一個什麼心態,是為了交差了事,還是真的要好好分析這個系統需要開發什麼東西呢?

站在學術理論的角度上,我個人非常欣賞 MDA (Model Driven Architecture) 的想法,由 UML 的圖去產生幾乎所有的程式架構。即使用到一些特定的 framework 也可以在 MDA tools 上設定,透過圖上的 stereotype 去產出特定的 code。例如:Struts 的 config file 就可以用標有特定 stereotype 的 Activity Diagram 表示。但這種東西在實務上還有一段距離,而且技術推陳出新,MDA tools 要趕上最新的技術也有困難。

總而言之,UML 似乎在實務上沒有發揮到它被創造時想發揮的作用。問題就在於,這是一個語言,只要是語言每個人的理解就有不同。Unified Modeling Language,的確是一個很好用的 modeling language。但有 unified 嗎?就語言上,的確 unified 了,但就人而言,我可以確定的是,人對事情的理解,永遠是不會 unified 的。

technorati tags:,

Blogged with Flock

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: