談過RUP原則,也搞定了客戶需求,一個軟件開發(fā)項目總算從客戶端轉(zhuǎn)由開發(fā)團隊掌控。
「太好了,案子終于進來了,大家開始動手做吧!」項目領(lǐng)導人宣布。于是辦公室燈火通明,準備與開發(fā)工程進行長期抗戰(zhàn)。但是等一等!不是要先做分析嗎?「分析?沒問題,我們當然也做分析?!鬼椖款I(lǐng)導人如此回答,同時對某人喊道:「喂,給你三天時間…不,兩天內(nèi)把分析做好,大家等著趕工呢!」
這樣的形容或許有些夸張,不過許多開發(fā)團隊看待「前置階段」(程序撰寫之前的階段)的態(tài)度大概是如此。因為大部分人認為:反正分析又不是真正的「生產(chǎn)」,何必投入太多人力與時間在這種沒有實際貢獻的事情上?
分析不事生產(chǎn)嗎?其實并非如此。您是否對在前兩篇文章中不斷提到的「1:200」成本概念記憶猶新?同樣一個問題,當它發(fā)生在前面階段與后面階段時,所需要投入的解決成本平均比例大約是一比兩百,所以您應該不難理解在「前置階段」中分析的重要性。
相信絕大多數(shù)的開發(fā)人員都知道分析很重要,因為它位居承先啟后的戰(zhàn)略位置,任何一個小小的錯誤,都可能導致開發(fā)大業(yè)功虧一簣。因此,分析并非「不事生產(chǎn)」;相反的,我認為從分析階段開始就是一種生產(chǎn)。
分析的目的
「分析」在RUP的定義是:「正確理解問題,把需求陳述轉(zhuǎn)換成軟件概念,并開始對所欲建置的系統(tǒng)發(fā)展出一個可視化模型,以便快速、毫無銜接障礙地進入程序設計等后續(xù)階段?!篂榱诉_到這個目標,我建議采用以下作法:
在RUP里,這個階段的工作稱為「對象導向分析」(Object Oriental Analysis),又名「視覺塑型分析」(Visualizing Modeling Analysis)?!笇ο髮蚍治觥勾韽姆治鲭A段就開始建立正確的對象導向概念,而「視覺塑型分析」則彰顯分析在此是一種可視化與模型化的過程?!笇ο髮颉梗∣bject Oriented,簡稱OO)是許多教科書都會介紹的程序語言概念,因此不再贅述。至于強調(diào)視覺感的「塑型」(modeling)則是一種新的觀念與作法,在此特別說明。
Model是什么?
什么是Model?Model就是對真實物品的簡化呈現(xiàn),它可以是汽車模型、飛機模型等實體模型,也可以是一份設計藍圖。不論如何,其目的都是利用「視覺」來代表真實物品。對RUP而言,「視覺塑型分析」也同時擁有上述兩種意涵。希望把藍圖畫出來,也期望透過這個過程創(chuàng)造「產(chǎn)品雛形」。
為何要做Modeling?理由很簡單:因為「視覺圖像」遠較「文字陳述」更容易被理解,也更接近真實物品。所以,當開發(fā)過程與產(chǎn)品都被「視覺塑型化」之后,就產(chǎn)生以下幾個好處:
首先,開發(fā)成員可以按照實際模型或藍圖進行討論,避免各自以文字或想象進行溝通而可能產(chǎn)生的誤解。第二,可以讓客戶驗證產(chǎn)品雛形是否符合真正需求,避免需求被扭曲。第三,可以預先了解及檢測產(chǎn)品的特色、行為與功能等,進一步掌控質(zhì)量。最后,可以據(jù)此發(fā)展成為最終產(chǎn)品。
不過,你可能會問:「可視化?做模型?哪有那么多時間?干脆直接寫程序算了!」當然,如果做模型也要一頭鉆入實際的程序代碼撰寫工作,確實是蠻累人的。不過,幸好有個叫做「UML語言」的好東西,可以幫助我們完成這些工作。
UML的威力
UML(Unified Modeling Language)是一種可以把軟件開發(fā)過程中的各種產(chǎn)物予以可視化、特定化、建構(gòu)化與文件化的語言。是由Rational的Gardy Booch、Jim Rumbaugh與Ivar Jacobson三位對象導向領(lǐng)域的大師級人物于1994年所發(fā)展與公布的語言,隨后并經(jīng)全球各程序語言專家,以及包括IBM、HP、Microsoft