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