無(wú)論什么過程都不能適用于任何項(xiàng)目,我們應(yīng)該根據(jù)項(xiàng)目的特點(diǎn)去選擇合適的過程。只有這樣才能在過程一級(jí)保證項(xiàng)目的成功。
地稅部門對(duì)項(xiàng)目的組織采用rup及xp結(jié)合的方式,根據(jù)項(xiàng)目的特點(diǎn)來決定對(duì)rup及xp的側(cè)重。但一個(gè)至高無(wú)上的目標(biāo)是必須遵守的,就是以最快的速度向客戶提交可執(zhí)行的版本,而要做到這一點(diǎn)則必須堅(jiān)持小步驟迭代及測(cè)試自動(dòng)化。
屬于重量級(jí)的開發(fā)過程,強(qiáng)調(diào)分析設(shè)計(jì)及迭代開發(fā)。對(duì)于研發(fā)型項(xiàng)目,前期沒有基礎(chǔ),在形成穩(wěn)定的框架之前應(yīng)該走一段分析設(shè)計(jì)的過程。形成穩(wěn)定的開發(fā)框架之后,則應(yīng)該轉(zhuǎn)向敏捷過程。
屬于輕量級(jí)開發(fā)過程,強(qiáng)調(diào)重構(gòu)(編程中的設(shè)計(jì))及測(cè)試自動(dòng)化。對(duì)于有一定基礎(chǔ)的項(xiàng)目應(yīng)該是首選。
l 每個(gè)開發(fā)人員必須將服務(wù)器上的weblogic拷貝至本地,對(duì)程序的修改基于vss在本地進(jìn)行修改測(cè)試,數(shù)據(jù)庫(kù)配置成開發(fā)專用數(shù)據(jù)庫(kù)。
l 單元測(cè)試由開發(fā)人員自己負(fù)責(zé),發(fā)布后的功能測(cè)試由測(cè)試組負(fù)責(zé)并將啟用butterfly進(jìn)行缺陷跟蹤。
l 發(fā)布專用數(shù)據(jù)庫(kù)由DBA單獨(dú)負(fù)責(zé)。任何人不得更改。
l 開發(fā)過程中發(fā)現(xiàn)問題隨時(shí)提出來,不要有事后諸葛亮得做法。
l 開發(fā)之前搞清楚需求,不要出現(xiàn)大的反工。
每天走之前簡(jiǎn)單描述自己的當(dāng)前的工作成果,發(fā)送給開發(fā)負(fù)責(zé)人并抄送項(xiàng)目組所有成員,作為每天的工作周報(bào)。
ant
vss
jdk
junit
checkStyle
數(shù)據(jù)庫(kù)同步腳本(劉明開發(fā))
rational rose
visio
butterfly
l 盡快提交版本
l 每日創(chuàng)建
l 持續(xù)集成
l 簡(jiǎn)單設(shè)計(jì)
l 自動(dòng)化單元測(cè)試與重構(gòu)
l 基于模型進(jìn)行工作,自動(dòng)化生成文檔
l 自動(dòng)化檢查代碼規(guī)范
l 自動(dòng)化生成javadoc
衡量進(jìn)度最直接的方法是可運(yùn)行的軟件。所以開發(fā)過程一個(gè)終極目標(biāo)是持續(xù)快速的提交版本。開發(fā)組以最快的速度提交版本,提供測(cè)試人員進(jìn)行測(cè)試。經(jīng)過項(xiàng)目組測(cè)試人員測(cè)試的版本,同樣以最快的速度提交客戶測(cè)試人員進(jìn)行測(cè)試。為達(dá)到這個(gè)目標(biāo),必須建立相應(yīng)的機(jī)制,達(dá)到版本的快速持續(xù)發(fā)布。通過測(cè)試得到反饋,而這些反饋能夠驅(qū)動(dòng)開發(fā)
盡快提交版本包括:
l 開發(fā)人員盡快的將代碼提交到配置管理開發(fā)庫(kù)中,最長(zhǎng)不能超過一天
l 開發(fā)人員提交的代碼必須是編譯通過的
l 開發(fā)人員本地代碼與配置開發(fā)庫(kù)代碼盡量保持一致
開發(fā)組每天的工作成果,在每天發(fā)布的版本中充分體現(xiàn)。每天晚上進(jìn)行全版本的編譯發(fā)布,第二天測(cè)試人員進(jìn)行測(cè)試,將結(jié)果反饋給開發(fā)組。每日創(chuàng)建的實(shí)現(xiàn)完全基于ant實(shí)現(xiàn),通過定時(shí)任務(wù)每日進(jìn)行。
步驟:
l 取得vss中最新源代碼
l 取得vss中數(shù)據(jù)庫(kù)操縱腳本并運(yùn)行
l 生成ormap
l 編譯最新源代碼
l 停服務(wù)器
l 完全刪除老系統(tǒng)
l 部署新系統(tǒng)
l 啟動(dòng)服務(wù)器
詳細(xì)內(nèi)容參見自動(dòng)發(fā)布腳本
具備了每日創(chuàng)建的機(jī)制后,每天開發(fā)組完成的新功能或修改的bug將在當(dāng)天晚上集成發(fā)布到測(cè)試服務(wù)器上。這樣,開發(fā)組可以得到測(cè)試結(jié)果的快速反饋,又促進(jìn)了下一輪的迭代。
目前整個(gè)系統(tǒng)已經(jīng)具備穩(wěn)定的開發(fā)框架,所以我們的業(yè)務(wù)實(shí)現(xiàn)可以設(shè)計(jì)拖后,開始進(jìn)行簡(jiǎn)單設(shè)計(jì),明確接口及xml格式,在編程中通過重構(gòu)進(jìn)行設(shè)計(jì),時(shí)刻把握一點(diǎn)就是最快的發(fā)布版本。
為了達(dá)到最快速度的發(fā)布版本,我們可能會(huì)產(chǎn)生一個(gè)拙略的實(shí)現(xiàn),這可以通過重構(gòu)來在以后的版本中改進(jìn),當(dāng)然,必須通過單元測(cè)試提供重構(gòu)過程中的質(zhì)量保證。
維護(hù)模型比維護(hù)文檔更輕松,在維護(hù)一致性方面也更有效。所以我們必須基于模型工作,而文檔可以隨時(shí)根據(jù)模板自動(dòng)生成。
通過rational rose建立一套分析設(shè)計(jì)模型,將rose與vss進(jìn)行集成,整個(gè)項(xiàng)目組可以在整個(gè)模型上進(jìn)行協(xié)作。通過定義rose模板實(shí)現(xiàn)文檔的自動(dòng)化。
代碼規(guī)范的檢查我們基于checkstyle進(jìn)行,目前采用的檢查模板是J2EE標(biāo)準(zhǔn)模板,我們可以開發(fā)自己的模板進(jìn)行檢查。
Checkstyle對(duì)程序命名規(guī)范,縮進(jìn)規(guī)范等,通過與ant集成可以自動(dòng)化,并生成結(jié)果報(bào)告。
對(duì)于框架穩(wěn)定的軟件,目前rup與xp相結(jié)合的軟件開發(fā)過程,整個(gè)過程經(jīng)歷:
1. 發(fā)布計(jì)劃、迭代計(jì)劃及任務(wù)分配
2. 用例(素材)分析
3. 簡(jiǎn)單設(shè)計(jì)
4. 測(cè)試驅(qū)動(dòng)開發(fā)
5. 重構(gòu)與持續(xù)集成
6. 版本迭代
7. 配置、版本管理貫串整個(gè)過程
角色包括:
需求分析人員:確認(rèn)需求,理解需求,明示需求
開發(fā)人員:設(shè)計(jì)、編碼、單元測(cè)試
測(cè)試人員:功能測(cè)試,一般與需求分析人員公用,客戶人員進(jìn)行驗(yàn)收測(cè)試更佳
配置人員:開發(fā)環(huán)境的配置,包括配置管理、服務(wù)器配置等
dba:數(shù)據(jù)庫(kù)管理員
發(fā)布計(jì)劃:作為一次大的發(fā)布,一般給客戶或測(cè)試人員一個(gè)完整的階段性版本
迭代計(jì)劃:開發(fā)組內(nèi)部迭代,可以每天多次,至少每天一次
原則:
l 任務(wù)細(xì)分:細(xì)化到每個(gè)功能模塊的各個(gè)階段,包括
n 需求人員分析
n 需求人員向開發(fā)人員講解(內(nèi)部評(píng)審)
n 開發(fā)人員簡(jiǎn)單設(shè)計(jì)
n 開發(fā)人員多個(gè)版本迭代,尤其明確第一個(gè)提交測(cè)試的版本發(fā)布時(shí)間
l 責(zé)任到單個(gè)人:?jiǎn)稳素?fù)責(zé),杜絕多人負(fù)責(zé)同一項(xiàng)任務(wù)
l 明確第一個(gè)提交測(cè)試的迭代版本的時(shí)間點(diǎn):明確第一個(gè)版本的發(fā)布時(shí)間至關(guān)重要,這也是測(cè)試驅(qū)動(dòng)開發(fā)的起點(diǎn)
l 每個(gè)小版本迭代不超過一天,整個(gè)功能模塊開發(fā)的迭代次數(shù)不超過一周
l 任務(wù)接受制:計(jì)劃宣布,沒有異議,視為接受任務(wù),則嚴(yán)格按計(jì)劃執(zhí)行
l 計(jì)劃中各任務(wù)的含義要當(dāng)面說清楚,確保任務(wù)負(fù)責(zé)人明擺任務(wù)的具體含義
用例分析部分采用rational rose,整個(gè)小組在rose模型上協(xié)同工作,共同維護(hù)模型的一致性,通過建立“單元”以及rose與vss的集成保證模型完整性及一致性。實(shí)現(xiàn)對(duì)需求的統(tǒng)一管理。通過定義rose模板,實(shí)現(xiàn)文檔的隨時(shí)自動(dòng)生成。
需求人員組織內(nèi)部評(píng)審時(shí)將分析的結(jié)果與開發(fā)人員進(jìn)行交流,確保開發(fā)人員正確理解需求。需求人員完成的內(nèi)容包括:
l 業(yè)務(wù)邏輯分析
l 界面設(shè)計(jì)
目前開發(fā)框架基本穩(wěn)定,具體業(yè)務(wù)的設(shè)計(jì)可以拖后,開發(fā)人員可以通過簡(jiǎn)單設(shè)計(jì)明確接口并快速進(jìn)入版本迭代,在迭代過程中通過不斷重構(gòu)及持續(xù)集成來達(dá)到最佳設(shè)計(jì)。
前置條件:開發(fā)人員正確理解需求分析的結(jié)果
后置條件:
l 明確包結(jié)構(gòu)
l 明確類的職責(zé)
l 明確接口定義
l 明確參數(shù)的格式定義及其內(nèi)在含義
l 內(nèi)部評(píng)審?fù)ㄟ^
測(cè)試的功效在測(cè)試之外,測(cè)試優(yōu)先的原則,除了在實(shí)現(xiàn)前先寫測(cè)試能夠明確業(yè)務(wù)外,還可以促使開發(fā)人員在設(shè)計(jì)結(jié)構(gòu)上進(jìn)一步優(yōu)化。每天運(yùn)行的單元測(cè)試程序還能夠盡早的發(fā)現(xiàn)程序中的錯(cuò)誤,避免錯(cuò)誤曝露延后帶來的維護(hù)成本,也就在開發(fā)方法上保證了效率的提高。
前置條件:
簡(jiǎn)單設(shè)計(jì)后,明確了接口定義及參數(shù)格式定義,對(duì)業(yè)務(wù)理解基本清楚
后置條件:
l 根據(jù)接口定義實(shí)現(xiàn)JUNIT測(cè)試代碼,徹底明確業(yè)務(wù)
l 在沒有具體實(shí)現(xiàn)的條件下,搭出業(yè)務(wù)實(shí)現(xiàn)框架,盡快發(fā)布版本
l 實(shí)現(xiàn)業(yè)務(wù)邏輯,頻繁運(yùn)行測(cè)試程序
l 進(jìn)行多次版本迭代
重構(gòu)能夠改善既有代碼的設(shè)計(jì),重構(gòu)的過程是設(shè)計(jì)的過程,優(yōu)化的過程。
測(cè)試程序給重構(gòu)提供了質(zhì)量保證。
重構(gòu)結(jié)果通過持續(xù)集成體現(xiàn)在各版本中
前置條件:
基本實(shí)現(xiàn)了業(yè)務(wù)框架,已經(jīng)發(fā)布了第一個(gè)版本。也可以隨時(shí)重構(gòu),但不能影響版本發(fā)布
后置條件:
l 優(yōu)化了程序結(jié)構(gòu)
l 優(yōu)化代碼質(zhì)量
l 修改了bug
代碼review的過程通過版本迭代快速準(zhǔn)確的體現(xiàn)目前的項(xiàng)目進(jìn)度。給管理人員明確的進(jìn)度展示。參考進(jìn)度如下:
階段 | 衡量標(biāo)準(zhǔn) | 完成 確認(rèn)人 | 周期 估計(jì)值 | 完成 百分比 |
需求確認(rèn) | 指根據(jù)需求文檔與需求人員進(jìn)行確認(rèn)后,對(duì)以下內(nèi)容深入理解: 1) 該業(yè)務(wù)的使用場(chǎng)景 2) 業(yè)務(wù)流程 3) 該業(yè)務(wù)與其他業(yè)務(wù)的關(guān)系及交互方式 4) 該業(yè)務(wù)的輸入輸出及業(yè)務(wù)規(guī)則或算法 | 設(shè)計(jì)人員 | 一天 | 10% |
簡(jiǎn)單設(shè)計(jì) | 指明確定義類的名稱及所在包的位置,明確定義業(yè)務(wù)方法的名稱及傳入傳出參數(shù)的類型,明確定義XML格式及數(shù)據(jù)模型。 | 開發(fā)人員 | 半天 | 20% |
迭代版本一 | 指開發(fā)過程中第一次體現(xiàn)在每天發(fā)布的最新版本中的實(shí)現(xiàn),達(dá)到前后臺(tái)根據(jù)接口定義實(shí)現(xiàn)連通,已經(jīng)完成了junit單元測(cè)試程序,但可以不包括具體的業(yè)務(wù)實(shí)現(xiàn);在此版本實(shí)現(xiàn)的過程中,開發(fā)人員徹底明確接口的含義,并在連通過程中徹底理解業(yè)務(wù)邏輯。 | 測(cè)試人員 | 一天 | 40% |
迭代版本二 | 指在迭代版本一的基礎(chǔ)上進(jìn)一步重構(gòu)所得到的版本;該版本應(yīng)該實(shí)現(xiàn)具體的業(yè)務(wù)邏輯,在正常操作的情況下能夠完成業(yè)務(wù),但在程序健壯性(如各種合法性檢查)方面還相對(duì)很差。 | 測(cè)試人員 | 半天 | 60% |
迭代版本三 | 指在迭代版本二的基礎(chǔ)上進(jìn)一步重構(gòu)所得到的版本;該版本應(yīng)該在程序健壯性方面加強(qiáng),增加各種合法性檢查、前后業(yè)務(wù)環(huán)節(jié)的交互等。 | 測(cè)試人員 | 半天 | 80% |
迭代版本四 | 對(duì)結(jié)構(gòu)進(jìn)行重構(gòu),合理分配類的職責(zé),提煉公用的類及方法等,修改bug。 | 測(cè)試人員 | 半天 | 100% |
環(huán)境:
l 開發(fā)環(huán)境:
n 客戶端:rational rose2002、jbuilder10或eclipse30、vss client等
n 應(yīng)用服務(wù)器:weblogic704、ant16、jdk13、junit381、checkstyle、數(shù)據(jù)庫(kù)同步腳本
n 數(shù)據(jù)庫(kù)服務(wù)器:開發(fā)專用數(shù)據(jù)庫(kù)oracle9i
n 配置管理:vss client
l 測(cè)試環(huán)境:
n 應(yīng)用服務(wù)器:weblogic704、ant16、jdk13、junit381、checkstyle、數(shù)據(jù)庫(kù)同步腳本
n 數(shù)據(jù)庫(kù)服務(wù)器:測(cè)試專用數(shù)據(jù)庫(kù)oracle9i
l 版本數(shù)據(jù)庫(kù):
n 用于數(shù)據(jù)庫(kù)腳本抽取
版本管理:
小發(fā)布:開發(fā)人員每天提交代碼到vss開發(fā)庫(kù),開發(fā)環(huán)境每天集成自動(dòng)發(fā)布,提供開發(fā)人員及內(nèi)部測(cè)試人員測(cè)試。測(cè)試后滿足需求則成為產(chǎn)品代碼。不滿足反饋開發(fā)人員修正。
每日創(chuàng)建腳本自動(dòng)執(zhí)行以下功能:
l vss打標(biāo)簽,以便以后可以取到每天的版本
l 自動(dòng)運(yùn)行junit測(cè)試程序并生成測(cè)試報(bào)告
l 自動(dòng)運(yùn)行編碼規(guī)范檢查并生成報(bào)告
l 自動(dòng)生成ormap
l 自動(dòng)編譯部署
l 自動(dòng)完成抽取數(shù)據(jù)庫(kù)腳本并遷入vss
請(qǐng)參考配置庫(kù)中相關(guān)規(guī)范及模板
l ant發(fā)布腳本
l 數(shù)據(jù)庫(kù)版本同步腳本
l 編碼規(guī)范
l 代碼格式檢查模板xml
l 分析設(shè)計(jì)模板
l 項(xiàng)目執(zhí)行規(guī)范
l 《版本發(fā)布增量說明_20040916_發(fā)布人》
l butterfly問題流轉(zhuǎn)規(guī)范
l 數(shù)據(jù)庫(kù)開發(fā)活動(dòng)管理規(guī)范
l 其他
聯(lián)系客服