當(dāng)你開始著手組織一個(gè)企業(yè)級Java項(xiàng)目的時(shí)候,就如同開始同時(shí)輪回地扔好幾個(gè)魔術(shù)小球: 業(yè)主關(guān)系處理、持續(xù)而漫長的設(shè)計(jì)開發(fā)過程,以及保持健全與完整性,等等。每一個(gè)“小球”都會帶來其固有的風(fēng)險(xiǎn),有些顯而易見,有些則不易發(fā)現(xiàn)。盡管如此,所有這些風(fēng)險(xiǎn)都是完全可以避免的。本文作者Humphrey Sheil分析了威脅到企業(yè)級Java項(xiàng)目成功的10大風(fēng)險(xiǎn), 并一一列出了風(fēng)險(xiǎn)規(guī)避的策略方法。
在過去這段時(shí)期里,我擔(dān)任過程序員、高級設(shè)計(jì)師以及架構(gòu)設(shè)計(jì)師等工作,見識過很優(yōu)秀的企業(yè)級Java項(xiàng)目,也見識過不好的,甚至很"丑陋"的項(xiàng)目。有時(shí)候我會自己問自己,為什么一個(gè)項(xiàng)目可以取得成功,而另一個(gè)卻走向失???很難定義出某種規(guī)則或標(biāo)準(zhǔn)來表明各個(gè)不同的項(xiàng)目應(yīng)該如何成功,J2EE項(xiàng)目也并不例外。但與此相反的是,我們可以從各個(gè)角度和層次上去考察項(xiàng)目失敗的原因,如果很好地避開了這些風(fēng)險(xiǎn),項(xiàng)目就可以取得成功。在本文中,我將提出排名前10位的企業(yè)級Java項(xiàng)目風(fēng)險(xiǎn),供讀者參考。
在各種各樣的風(fēng)險(xiǎn)中,有些風(fēng)險(xiǎn)只是延緩了項(xiàng)目的進(jìn)度,有些帶來了一些不必要的工作,而另一些則會把成功的可能性徹底地消除。不過,如果預(yù)先有了足夠的準(zhǔn)備和清醒的認(rèn)識,那么并沒有不可避免的事情。這好比如果你是一名旅行者,你清楚地知道前面的道路在什么方向,做了充分的準(zhǔn)備,又有一位清楚知道哪里有危險(xiǎn)的向?qū)?,這樣就會比較順利地到達(dá)自己的目的地。
本文采用了以下結(jié)構(gòu)來描述風(fēng)險(xiǎn):
風(fēng)險(xiǎn)名稱:風(fēng)險(xiǎn)的標(biāo)題(使用粗體)
項(xiàng)目階段:在哪個(gè)項(xiàng)目階段會發(fā)生風(fēng)險(xiǎn)情況
影響階段:會影響到以后的哪些階段
癥狀: 風(fēng)險(xiǎn)產(chǎn)生時(shí)的癥狀
規(guī)避方案:如何規(guī)避風(fēng)險(xiǎn)或者把其對項(xiàng)目的影響降低到最小程度
備注: 風(fēng)險(xiǎn)相關(guān)的補(bǔ)充說明和提示
通過對企業(yè)級Java項(xiàng)目的仔細(xì)考察,本文將J2EE項(xiàng)目過程分解為以下幾個(gè)階段:
提供商選擇: 在開始你的J2EE項(xiàng)目之前,要選擇最合適的提供商,從應(yīng)用服務(wù)器到開發(fā)工具組合,一直至工作期間享用的咖啡的廠商。
設(shè)計(jì): 在遵照一系列嚴(yán)格的規(guī)范和軟件工程方法的前提下,可以開始進(jìn)行足夠充分的設(shè)計(jì),然后再很自然地進(jìn)入開發(fā)階段。在開發(fā)之前,要周全地考慮好正在做什么,以及如何往下做的問題。另外,我使用了一些設(shè)計(jì)模板來確信在進(jìn)入開發(fā)之前,已經(jīng)想到了所有的問題和可能的解決方案。但是,我有時(shí)也在該階段做一些編碼,有時(shí)候這樣做可以回答一些問題,有效地判斷出性能上和模塊劃分上的問題。
開發(fā): 也就是程序開發(fā)階段,選擇一些好的開發(fā)工具,進(jìn)行精良的設(shè)計(jì)等等,在這個(gè)階段將顯示其優(yōu)越性,并且可以給開發(fā)帶來很大的幫助。
穩(wěn)定性/負(fù)載測試:在該階段,系統(tǒng)架構(gòu)師和項(xiàng)目經(jīng)理應(yīng)該凍結(jié)住產(chǎn)品特性,并把焦點(diǎn)放在質(zhì)量以及產(chǎn)品參數(shù)(允許的并發(fā)用戶數(shù)量,故障恢復(fù)情況,等等)上。質(zhì)量和性能在該階段應(yīng)得到足夠的重視。當(dāng)然,最好應(yīng)該避免在前階段寫出不良的運(yùn)行緩慢的代碼而到本階段來作很多的修改。
成熟期:這不是一個(gè)真正的項(xiàng)目階段,而是一個(gè)固定的準(zhǔn)備階段。過去潛伏的錯誤(來自于糟糕的設(shè)計(jì)和開發(fā)、錯誤的廠商選擇)可能出現(xiàn)并影響你的系統(tǒng)。
風(fēng)險(xiǎn)1:沒有真正理解 Java, EJB, 和J2EE
這個(gè)問題可以分解為3個(gè)部分,以便于分析。
描述: 沒有真正理解Java
項(xiàng)目階段:開發(fā)
影響階段:設(shè)計(jì)、穩(wěn)定性測試、成熟期
對系統(tǒng)性能的影響:可維護(hù)性、可擴(kuò)展性、性能
癥狀:
重復(fù)開發(fā)了JDK核