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