作者:徐建祥( netpirate@gmail.com )
時間:
來自: http://www.anymobile.org
1、軟件過程
?????? 隨著軟件系統(tǒng)的規(guī)模和復(fù)雜性的增加,其開發(fā)成本和風(fēng)險隨之增加,軟件的質(zhì)量問題已成為制約軟件發(fā)展的關(guān)鍵因素之一。
?????? 所謂軟件過程,即軟件項目的開發(fā)過程,是指軟件生命周期中,用于開發(fā)和維護軟件產(chǎn)品的一系列過程,它與團隊的組織管理以及開發(fā)技能相輔相成,全面提升軟件產(chǎn)品的質(zhì)量。
?????? 近年來,軟件過程日益得到重視,國際軟件界的敏捷、統(tǒng)一熱也在持續(xù)升溫。 與傳統(tǒng)的開發(fā)過程相比,敏捷過程更強調(diào)快速靈活反應(yīng),主動迎接和適應(yīng)變化,主張更緊密的客戶與開發(fā)商協(xié)作,以人為本的可持續(xù)發(fā)展,典型的有 XP (極限編程)、 FDD (特征驅(qū)動開發(fā))等;統(tǒng)一軟件過程以 RUP 為代表,采用 OO 技術(shù)對軟件開發(fā)過程本身進行業(yè)務(wù)建模,集成了迭代開發(fā)、用例驅(qū)動、 UML 可視化建模、 OOAD 、架構(gòu)設(shè)計、項目管理等許多主流先進的當代軟件工藝。
?????? 在軟件項目開發(fā)過程中,應(yīng)該能夠識別、分析不同軟件項目的特點,采用相對適合的開發(fā)實踐來適應(yīng)軟件開發(fā)過程,保證對軟件開發(fā)的有效支持,如 RUP 與 XP 的融合。
2、 XP ,極限編程
極限編程( eXtreme Propgramming , XP )是由 Kent Beck 在 1996 年開創(chuàng),是一種演進式的原型化方法,以最大化發(fā)揮人的能量為核心目標,以“小步快走”的邏輯指導(dǎo)開發(fā),具有溝通高效、設(shè)計簡單、反饋迅速等特點,是一種輕量級、敏捷的過程方法。
極限編程基于四個價值目標:溝通( communication )、簡化 (simplicity) 、反饋 (feedback) 和勇氣 (courage) ,由 12 個最佳實踐為這四個價值提供支持。
極限編程的生命周期包括 4 個基本活動:編碼 (coding) 、測試 (testing) 、聆聽 (listening) 、設(shè)計 (designing) 。
2.1 4 個價值目標
?????? 溝通:讓開發(fā)人員集體負責(zé)所有代碼并結(jié)隊工作,鼓勵與客戶及團隊內(nèi)部保持溝通。
簡化:鼓勵只開發(fā)當前的功能,避免過多的文檔,專注于最小化解決方案,做好為為新特性改變設(shè)計,在系統(tǒng)隱喻和代碼規(guī)范下不斷重構(gòu)的準備。
反饋:通過單元測試和功能測試獲得快速反饋。
勇氣:提倡積極面對現(xiàn)實和處理問題的勇氣,擁抱變化。
2.2 12
個最佳實踐
?
(圖片1 XP最佳實踐)
?????????????
有計劃的開發(fā):通過結(jié)合使用優(yōu)先級“故事”和技術(shù)估算,確定下一版本的功能。
小型發(fā)布:以小的增量版本經(jīng)常向客戶發(fā)布軟件。
系統(tǒng)隱喻:隱喻是一個高層次的系統(tǒng)構(gòu)想;需要不斷的細化架構(gòu),來指導(dǎo)全部開發(fā)。
簡單設(shè)計:通過保持代碼簡單從而保證設(shè)計簡單。不斷的在代碼中尋找復(fù)雜點并且立刻進行移除。
測試驅(qū)動:“先測試,后編碼”。用戶編寫測試內(nèi)容以對 " 故事 " 進行測試。程序員編寫測試內(nèi)容來發(fā)現(xiàn)代碼中的任何問題。在編寫代碼前先編寫測試內(nèi)容。
重構(gòu):這是一項簡化技術(shù),用來移除代碼中的重復(fù)內(nèi)容和復(fù)雜之處。
結(jié)對編程:團隊中的兩個成員使用同一臺計算機開發(fā)所有的代碼。一個人編寫代碼或者驅(qū)動,另一個人同時審查代碼的正確性和可理解性。
集體代碼所有權(quán):任何人都擁有所有的代碼。提高代碼透明度,增強團隊合作精神。
持續(xù)集成:每天按任務(wù)多次創(chuàng)建和集成系統(tǒng),隨著需求變化,進行不斷的回歸測試。
每周 40 小時工作制:程序員在疲勞時無法保證最高效率。連續(xù)兩周加班是絕對不允許的,否則會影響工作效率。
現(xiàn)場客戶:至少有一名真實的客戶全天候工作于開發(fā)環(huán)境中,幫助定義系統(tǒng)、編寫測試內(nèi)容并回答問題。
編碼規(guī)范:程序員采用統(tǒng)一的編碼規(guī)范。
總體來說, XP 部分滿足了 CMM2~3 級關(guān)鍵過程域 (KPA) 的要求, XP 側(cè)重與過程和技術(shù), CMM 更注重組織和管理。
3、 ? FDD ,特征驅(qū)動開發(fā)
特征驅(qū)動開發(fā)( Feature Drive Develop , FDD ), Together 創(chuàng)始人 Peter Coad 所創(chuàng)。通過特征來制定開發(fā)計劃,以每日構(gòu)建為核心,強調(diào)按特征分步開發(fā)和交付。一個特征就是一個小的、具有客戶價值的功能,通常表示為 <action><result><object> 。
4、 ? RUP , Rational 統(tǒng)一過程
迭代軟件開發(fā)的發(fā)展背景:軟件的不確定和高風(fēng)險等特性,使得傳統(tǒng)的瀑布式開發(fā)力不從心;迭代有助于盡快發(fā)現(xiàn)和解決風(fēng)險;迭代有助于控制項目的節(jié)奏,加快反饋,增強項目的控制力度,實現(xiàn)過程的有序化;迭代符合人們對事物的認識逐步加深,解決問題的能力隨經(jīng)驗逐步提高。
?????? Rational 統(tǒng)一過程( Rational Unified Process , RUP ),是用例驅(qū)動、以體系結(jié)構(gòu)為中心,迭代、增量的軟件開發(fā)過程。適合大、中型項目。
RUP 強調(diào)采用現(xiàn)代軟件開發(fā)的一些最佳實踐,作為一種降低開發(fā)新軟件所帶來的內(nèi)在風(fēng)險的方式。這些最佳實踐包括:
1) 迭代開發(fā);
2) 管理需求;
3) 使用基于組件的構(gòu)架;
4) 可視建模;
5) 持續(xù)的質(zhì)量驗證;
6)
控制變更。
RUP 是一個迭代過程,確定了任何軟件開發(fā)項目的四個階段:初始階段、精化階段、構(gòu)建階段和交付階段。每個階段包括一次或多次迭代;每一次迭代都會生成更加接近最終產(chǎn)品的可執(zhí)行版本。?
a 、初始階段:識別和規(guī)避項目的主要風(fēng)險,建立用例模型框架,并制定里程碑日期的階段計劃;
b 、精化階段:分析問題領(lǐng)域,建立健全的體系結(jié)構(gòu)基礎(chǔ),編制項目計劃,淘汰項目中最高風(fēng)險的元素,完成部分優(yōu)先級最高的用例開發(fā);
c 、構(gòu)建階段:分為多個迭代,逐步完成不同優(yōu)先級的用例開發(fā),核心 Case-> 高風(fēng)險 Case-> 次核心 Case-> 其它 Case ;
d
、交付階段:進行各種功能、性能測試,進行產(chǎn)品化、部署,完成整個系統(tǒng)的開發(fā)工作。
(圖片2 RUP概述圖)
RUP 迭代開發(fā)過程:
a 、第一次迭代
1)?? 捕獲需求
2) ? 建立初始的領(lǐng)域模型
3)?? 建立用例模型框架
4)?? 制定開發(fā)計劃
b 、第二次迭代
1)?? 關(guān)鍵用例的 Robustness 分析與交互建模
2)?? 體系結(jié)構(gòu)設(shè)計
3)?? 建立類模型
4)?? 關(guān)鍵用例的開發(fā)與測試
5)?? 完善用例模型
c 、第 n 次迭代
完成所有用例的分析、設(shè)計與開發(fā)。
d 、最后的迭代
1)?? 整體測試:進行各種功能、性能和壓力測試。
2)?? 部署與安裝:生成相應(yīng)的部署圖。
3)?? 產(chǎn)品化:進行一些產(chǎn)品化的包裝。
注:每一次迭代之后,都應(yīng)該交付一個可以運行的中間版本。
(圖片3 RUP迭代流)
5、? SPP ,精簡并行過程
精簡并行過程(
Simplified Parallel Process
,
SPP
),對
CMMI 3
級以內(nèi)各過程域的內(nèi)容和要求作了“精簡”處理,包括
19
個過程域、
40
余個規(guī)程和近
60
個文檔模板
。強調(diào)在產(chǎn)品生命周期之內(nèi),項目管理過程、項目研發(fā)過程和機構(gòu)支撐過程“并行”開展。
(圖片4 SPP)
軟件過程改進解決方案( SPIS )――林銳發(fā)明。
核心組成部分
1) 軟件過程改進咨詢服務(wù);
2) 軟件工程與項目管理培訓(xùn);
3) 基于 Web 的集成化項目管理工具, Future 。
Future 采用 CMMI 和 SPP 為參考標準。主要功能包括項目規(guī)劃、項目監(jiān)控、質(zhì)量管理、配置管理、需求管理、日常工作管理等。
網(wǎng)站: http://www.chinaspis.com