經(jīng)驗(yàn)總結(jié) UML實(shí)踐中的現(xiàn)狀和一些建議
本節(jié)和大家討論一下UML實(shí)踐中的現(xiàn)狀和一些建議,主要從五個(gè)角度來介紹,相信通過本節(jié)的學(xué)習(xí)你一定會(huì)有所感悟。下面就是具體介紹。
UML實(shí)踐中的現(xiàn)狀和一些建議
UML在國(guó)內(nèi)不少地方獲得了應(yīng)用。這應(yīng)該說是個(gè)好事,然而背后我們也看到,這種應(yīng)用大多屬于不夠冷靜的炒作和跟風(fēng),UML在很多時(shí)候已經(jīng)變成了一種形式主義的東西。實(shí)際上,UML本身所倡導(dǎo)的主旨是很好的,它保證了程序員之間的交流語(yǔ)言,RUP之類的工具也保證了軟件開發(fā)過程的規(guī)范性,嚴(yán)格保證了先設(shè)計(jì)后開發(fā),設(shè)計(jì)階段有翔實(shí)的規(guī)范化的文檔等。接下來,我們要看看目前的UML熱潮是怎么產(chǎn)生的?為什么會(huì)存在形式主義?以及RUP之類的工具究竟存在哪些問題。
UML實(shí)踐中第一個(gè)問題是目前幾乎所有的UML工具都非常不好用,不美觀、不直觀、更不方便,在項(xiàng)目中進(jìn)行同步維護(hù)也很困難。很多項(xiàng)目中用UML基本上可歸于形式主義的范疇。事實(shí)上,UML本身是一種規(guī)范,而規(guī)范本身的目的在于更好的交流溝通和更快更好的設(shè)計(jì)質(zhì)量,事實(shí)上現(xiàn)在UML的發(fā)展已經(jīng)背離了這些更基本的宗旨。我崇尚簡(jiǎn)單就是美,最傳統(tǒng)的流程圖每個(gè)人都能看懂(甚至不是程序員也可以),現(xiàn)在的UML呢?太多不夠體貼和人性化的東西了,過于抽象化和公式化。我想未來會(huì)有新的更輕量級(jí)的類似的東西取代落后、冗腫和封閉的UML。我個(gè)人崇尚簡(jiǎn)單就是美……
UML實(shí)踐中第二個(gè)問題是目前程序員的普遍素質(zhì)不夠。UML本身基本是于面向?qū)ο蟮能浖O(shè)計(jì)思想的,沒有足夠優(yōu)良的OO設(shè)計(jì)能力,很難有真正需要UML類別設(shè)計(jì)工具去表達(dá)自己設(shè)計(jì)意圖的必要。這個(gè)觀點(diǎn)不算夸張,其實(shí)有的人OO理論很強(qiáng),但真正在實(shí)踐中往往過度設(shè)計(jì),或者設(shè)計(jì)本身極度不平衡,把項(xiàng)目開發(fā)改成了科研實(shí)驗(yàn)和上機(jī)實(shí)驗(yàn)。另外更多的一些人對(duì)自己的動(dòng)手能力很信任,往往忽視設(shè)計(jì)環(huán)節(jié),基本上項(xiàng)目的設(shè)計(jì)一直處于反復(fù)和動(dòng)蕩中。這些程序員不給他們一段時(shí)間學(xué)習(xí)和實(shí)踐,是很難成為成熟的設(shè)計(jì)師的,在基本成熟之前,UML對(duì)他們將是一個(gè)形式化的東西,不會(huì)有很強(qiáng)的意義。Andrei曾經(jīng)說程序員要到35歲才會(huì)成熟,而代碼員可能20多歲就可以了。這句話里大概也有“設(shè)計(jì)本身是個(gè)很需要經(jīng)驗(yàn)的工作”的意思。
UML實(shí)踐中第三個(gè)問題是少數(shù)社會(huì)層面的宣傳誤導(dǎo)。印度海歸派、外企員工、IT譯書作者和出版社、職業(yè)培訓(xùn)機(jī)構(gòu)等處于各自的經(jīng)驗(yàn)、目的和原因,大部分人完全背離現(xiàn)實(shí)的盲目鼓吹UML,甚至幾乎片面的認(rèn)為UML就是軟件工程。外企應(yīng)用UML其實(shí)也并不很成功,不過他們有成熟的培訓(xùn)體系,所以一定程度的彌補(bǔ)了UML過于晦澀的弱點(diǎn),作為已經(jīng)掌握他們的外企員工有一些可能會(huì)比較片面的歡迎UML。而印度海歸派的目的就不用多說了,至于培訓(xùn)和譯書的人很多都學(xué)者成分大于實(shí)戰(zhàn)成分,他們需要鼓吹UML,不過早晚他們會(huì)發(fā)現(xiàn)更好的東西而放棄對(duì)UML的鼓吹。事實(shí)上,現(xiàn)在已經(jīng)有人開始考慮這樣作了。
UML實(shí)踐中第四個(gè)問題是少數(shù)程序員非常依賴自動(dòng)代碼框架生成,而這其實(shí)根本不是UML的關(guān)鍵問題。他們?yōu)榱耸褂媚承┕ぞ呱傻囊稽c(diǎn)也不符合中國(guó)人閱讀習(xí)慣的代碼,情愿放棄其他的一切。對(duì)他們來說UML只是一個(gè)代碼生成工具而已,所以他們作的UML大都沒有多大價(jià)值,比較形式化。
UML實(shí)踐中第五個(gè)問題是項(xiàng)目資源的問題。國(guó)內(nèi)大多數(shù)項(xiàng)目實(shí)際可支配的資源非常有限,如果給其他外國(guó)公司的開發(fā)人員看無論開發(fā)周期還是資金人力都基本是荒唐可笑的。UML實(shí)際上應(yīng)該貫穿始終,而不是只在最初的設(shè)計(jì)階段,也應(yīng)該貫穿整個(gè)項(xiàng)目組,包括設(shè)計(jì)、管理、開發(fā)、測(cè)試所有的人都應(yīng)該應(yīng)用它。
我想一般的公司如果沒有極大的把握不用太迷信UML/RUP,其實(shí)某些基于輕量級(jí)項(xiàng)目并不需要RUP或UML?,F(xiàn)在正打算學(xué)習(xí)UML的同行們,也盡可以先放下它,將來一定會(huì)有更優(yōu)秀的技術(shù)取代它,現(xiàn)在不如多花點(diǎn)時(shí)間學(xué)習(xí)和實(shí)踐一下OO設(shè)計(jì)等更基礎(chǔ)的東西。其實(shí)僅僅熟悉一下工具軟件和交流范式,將來對(duì)你來說只是幾天到個(gè)把月的事情,不用那么在意。而對(duì)于那些現(xiàn)在已經(jīng)決定了UML實(shí)踐中的項(xiàng)目,要想獲得成功,我的建議如下:
第一,項(xiàng)目周期至少延長(zhǎng)通常計(jì)劃的50%至100%。你必須跟所有人解釋說,只有這樣才能讓UML本身有意義,才能切實(shí)提高項(xiàng)目的設(shè)計(jì)質(zhì)量。
第二,在項(xiàng)目開始集中提供一段時(shí)間的UML開發(fā)培訓(xùn)。貫穿項(xiàng)目始終,都要經(jīng)常進(jìn)行全方位面向?qū)ο笤O(shè)計(jì)思想的交流(當(dāng)然是結(jié)合UML的),力圖通過交流提高設(shè)計(jì)質(zhì)量。
第三,頂住客戶和公司領(lǐng)導(dǎo)方面的壓力,堅(jiān)持把盡可能多的設(shè)計(jì)問題在最初的設(shè)計(jì)階段解決,而不要被迫匆匆完成形式主義的UML設(shè)計(jì),然后把設(shè)計(jì)丟在一邊,開始編碼。
第四,妥善處理部分“精英”程序員的抵觸情緒。能疏導(dǎo)就疏導(dǎo),不能疏導(dǎo)應(yīng)考慮壓服甚至將他徹底排除在項(xiàng)目組外。UML量級(jí)的團(tuán)隊(duì)開發(fā)并不鼓勵(lì)個(gè)人英雄主義,不下狠心將根本沒機(jī)會(huì)推進(jìn)下去。
第五,對(duì)項(xiàng)目的期望不要太高。無論是面對(duì)急于驗(yàn)收向上級(jí)邀功的政府客戶,還是公司里不懂技術(shù)只懂蠻干的領(lǐng)導(dǎo),都要保持低調(diào),把它當(dāng)做一個(gè)并不見得立竿見影的實(shí)驗(yàn)……
【編輯推薦】
- UML實(shí)踐----UML活動(dòng)圖、順序圖、狀態(tài)圖、協(xié)作圖
- UML實(shí)踐--UML用例圖和類圖解析
- UML組成及其全稱解析
- 解析UML類圖符號(hào)意義
- 經(jīng)驗(yàn)總結(jié) UML實(shí)踐指南