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