(3) 持續(xù)集成
持續(xù)集成能夠把終的一次大規(guī)模的集成調(diào)試過程分散到項(xiàng)目開發(fā)時(shí)間表的每一周、每、甚至每個(gè)小時(shí)。讓項(xiàng)目中的各個(gè)人員都能夠隨時(shí)掌握當(dāng)前的整體進(jìn)度,并迅速發(fā)現(xiàn)集成過程中出現(xiàn)的問題并進(jìn)行解決[1]。
開發(fā)小組應(yīng)制定持續(xù)集成的制度,一般情況下每日構(gòu)建一次,可以利用Ant等構(gòu)建工具進(jìn)行Java應(yīng)用程序的構(gòu)建。小組成員應(yīng)在每個(gè)功能開發(fā)完成后,及時(shí)向版本控制系統(tǒng)(如CVS)提交代碼,而且不應(yīng)該向版本控制系統(tǒng)提交有問題(編譯通不過)的代碼。
每日構(gòu)建、持續(xù)集成,讓項(xiàng)目進(jìn)度跟蹤工作更加容易。當(dāng)項(xiàng)目小組每天重新編譯系統(tǒng)時(shí),已完成與未完成的功能清楚可見,小組成員能夠簡單地從軟件的表現(xiàn)知道距離整體完成還有多遠(yuǎn)。
4.新技術(shù)引入
技術(shù)創(chuàng)新是一種具有探索性、創(chuàng)造性的技術(shù)經(jīng)濟(jì)活動(dòng)。在開發(fā)過程中引入新技術(shù),不可避免地要遇到各種風(fēng)險(xiǎn)。通過T形軟件開發(fā)、充分論證、多階段評審、同行經(jīng)驗(yàn)等措施可降低新技術(shù)風(fēng)險(xiǎn)。
(1) T形軟件開發(fā)
在項(xiàng)目開發(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ù)存儲(chǔ)、異構(gòu)平臺(tái)互連等關(guān)鍵問題,應(yīng)該優(yōu)先處理這些問題;對開發(fā)所涉及到的EJB3、JSF、JBoss Seam、Eclipse RCP等技術(shù),要做深度探索。
圖1 在第一階段以“T”形開發(fā)系統(tǒng)骨架[2]
越是技術(shù)復(fù)雜度高的項(xiàng)目,越應(yīng)該早地處理技術(shù)難題。如果在項(xiàng)目開發(fā)的中期或后期才發(fā)現(xiàn)架構(gòu)有問題或是關(guān)鍵技術(shù)難題不能解決,則為時(shí)已晚。
(2) 充分論證
新技術(shù)開發(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)也相對減少;反之,承擔(dān)的風(fēng)險(xiǎn)會(huì)增大。
(3) 同行經(jīng)驗(yàn)
針對新技術(shù),由于沒有經(jīng)驗(yàn)可借鑒,因此在探索過程中要充分利用互聯(lián)網(wǎng),通過搜索同行經(jīng)驗(yàn),往往事半功倍。要充分利用世界日益平坦化的優(yōu)勢,對于不能盡快解決的問題,可以先放一放,可能過不了幾天,網(wǎng)上有相類似問題的解決方案了。
5.技術(shù)兼容性風(fēng)險(xiǎn)
硬件產(chǎn)品之間、系統(tǒng)軟件(操作系統(tǒng)、中間件、數(shù)據(jù)庫管理系統(tǒng))與主機(jī)設(shè)備之間、系統(tǒng)軟件之間、應(yīng)用軟件與系統(tǒng)軟件之間以及應(yīng)用軟件之間,都可能存在兼容性問題。往往系統(tǒng)集成的項(xiàng)目越復(fù)雜,兼容性問題越有可能存在。
(1) 設(shè)計(jì)先行
在做系統(tǒng)的總體設(shè)計(jì)方案時(shí),務(wù)必把好相關(guān)產(chǎn)品的選型關(guān),確保網(wǎng)絡(luò)、主機(jī)、系統(tǒng)軟件與應(yīng)用軟件之間不要存在較大的技術(shù)兼容性問題。在網(wǎng)絡(luò)平臺(tái)建設(shè)方案中,明確相關(guān)設(shè)備的技術(shù)參數(shù)和配置要求。
(2) 售前產(chǎn)品測試
在做項(xiàng)目招投標(biāo)工作時(shí),要求投標(biāo)方在售前提供產(chǎn)品兼容性測試,以避免在項(xiàng)目實(shí)施過程中才暴露技術(shù)兼容性問題。涉及應(yīng)用軟件開發(fā)的集成項(xiàng)目,要在開發(fā)工作的早期,做技術(shù)兼容性測試,以避免在項(xiàng)目開發(fā)后期才暴露技術(shù)兼容性問題。
例如,我們在開發(fā)深圳市汽車客運(yùn)站售票及站務(wù)聯(lián)網(wǎng)調(diào)度系統(tǒng)時(shí),為了確保技術(shù)兼容,在做硬件招標(biāo)時(shí)要求小型機(jī)設(shè)備廠商提供售前技術(shù)兼容性測試工作,并將測試結(jié)果做為評標(biāo)指標(biāo)。在深圳市軟件測試中心對IBM、SUN、HP三家公司提供的小型機(jī)進(jìn)行測試時(shí),暴露了許多應(yīng)用軟件、應(yīng)用服務(wù)器、數(shù)據(jù)庫和操作系統(tǒng)之間的技術(shù)兼容性問題,如果這些問題在系統(tǒng)實(shí)施時(shí)才暴露或處理,勢必會(huì)拖延項(xiàng)目進(jìn)度。