一次精化迭代,其間將為穩(wěn)定的構(gòu)架劃定基線;
一次構(gòu)建迭代,其間將實現(xiàn)用例并充實構(gòu)架;
幾次產(chǎn)品化迭代,將產(chǎn)品轉(zhuǎn)移到用戶群。
每次迭代,都要充分接收用戶的評審意見,以便為自我糾正。漸近式的功能交付,有利于降低開發(fā)人員的壓力,增加用戶的滿意度,有利于增強項目的可見性,是最好的進展報告。
(2) 技術(shù)評審
技術(shù)評審是確保軟件質(zhì)量的重要環(huán)節(jié),技術(shù)評審包括代碼走查、會議評審和同行專家評審。代碼走審可以是開發(fā)人員之間的交叉審查,或者是高級開發(fā)人員對普通開發(fā)人員的審查;會議評審一般應(yīng)至少每兩周進行一次,每次評審時間不宜太長;同行專家評審包括技術(shù)和業(yè)務(wù)兩個方面的專家,經(jīng)常性地讓精通業(yè)務(wù)的用戶專家參與項目評審,是項目成功的重要保證。
另外,充分利用質(zhì)量審查的工具軟件,也有利于提高代碼質(zhì)量。例如:在Eclipse開發(fā)環(huán)境中,可以集成Findbug、Checkstyle、PMD插件檢查代碼編寫質(zhì)量。
(3) 持續(xù)集成
持續(xù)集成能夠把最終的一次大規(guī)模的集成調(diào)試過程分散到項目開發(fā)時間表的每一周、每一天、甚至每個小時。讓項目中的各個人員都能夠隨時掌握當(dāng)前的整體進度,并迅速發(fā)現(xiàn)集成過程中出現(xiàn)的問題并進行解決[1]。
開發(fā)小組應(yīng)制定持續(xù)集成的制度,一般情況下每日構(gòu)建一次,可以利用Ant等構(gòu)建工具進行Java應(yīng)用程序的構(gòu)建。小組成員應(yīng)在每個功能開發(fā)完成后,及時向版本控制系統(tǒng)(如CVS)提交代碼,而且不應(yīng)該向版本控制系統(tǒng)提交有問題(編譯通不過)的代碼。
每日構(gòu)建、持續(xù)集成,讓項目進度跟蹤工作更加容易。當(dāng)項目小組每天重新編譯系統(tǒng)時,已完成與未完成的功能清楚可見,小組成員能夠簡單地從軟件的表現(xiàn)知道距離整體完成還有多遠。
3、新技術(shù)引入
技術(shù)創(chuàng)新是一種具有探索性、創(chuàng)造性的技術(shù)經(jīng)濟活動。在開發(fā)過程中引入新技術(shù),不可避免地要遇到各種風(fēng)險。通過T形軟件開發(fā)、充分論證、多階段評審、同行經(jīng)驗等措施可降低新技術(shù)風(fēng)險。
(1) T形軟件開發(fā)
在項目開發(fā)早期,開發(fā)小組應(yīng)該建立系統(tǒng)的架構(gòu),解決關(guān)鍵技術(shù)難題、開發(fā)系統(tǒng)的基礎(chǔ)構(gòu)件,并對系統(tǒng)所需要應(yīng)用的技術(shù)做深度探索。例如:基于JavaEE5構(gòu)建全國聯(lián)網(wǎng)售票系統(tǒng),涉及到分布式事務(wù)處理、海量數(shù)據(jù)存儲、異構(gòu)平臺互連等關(guān)鍵問題,應(yīng)該優(yōu)先處理這些問題;對開發(fā)所涉及到的EJB3、JSF、 JBoss Seam、Eclipse RCP等技術(shù),要做深度探索。越是技術(shù)復(fù)雜度高的項目,就越應(yīng)該早地處理技術(shù)難題。如果在項目開發(fā)的中期或后期才發(fā)現(xiàn)架構(gòu)有問題或是關(guān)鍵技術(shù)難題不能解決,則為時已晚。
(2) 充分論證
新技術(shù)開發(fā)是探索性很強的工作,潛在著許多失敗的風(fēng)險。在可行性分析階段,要廣泛搜集相關(guān)信息,設(shè)計多種可行方案,進行充分論證。在制定決策時,情報的數(shù)量和質(zhì)量致關(guān)重要。掌握的信息越多、越準確,才能作出正確的的決策,項目失敗的風(fēng)險也就相對減少;反之,承擔(dān)的風(fēng)險就會增大。
(3) 同行經(jīng)驗
針對新技術(shù),由于沒有經(jīng)驗可借鑒,因此在探索過程中要充分利用互聯(lián)網(wǎng),通過搜索同行經(jīng)驗,往往事半功倍。要充分利用世界日益平坦化的優(yōu)勢,對于不能盡快解決的問題,可以先放一放,可能過不了幾天,網(wǎng)上就有相類似問題的解決方案了。
4、技術(shù)兼容性風(fēng)險
硬件產(chǎn)品之間、系統(tǒng)軟件(操作系統(tǒng)、中間件、數(shù)據(jù)庫管理系統(tǒng))與主機設(shè)備之間、系統(tǒng)軟件之間、應(yīng)用軟件與系統(tǒng)軟件之間以及應(yīng)用軟件之間,都可能存在兼容性問題。往往系統(tǒng)集成的項目越復(fù)雜,兼容性問題就越有可能存在。
(1) 設(shè)計先行
在做系統(tǒng)的總體