淺談持續集成在軟件項目管理中的作用
發(fā)布時(shí)間:2011/12/5 9:31:00
【摘 要】:軟件項目管理涉及到九大知識領(lǐng)域,貫穿于軟件過(guò)程的始終,目的是為了讓軟件項目的整個(gè)軟件生命周期(從分析、設計、編碼到測試、維護全過(guò)程)都能在管理者的控制之下,以預定成本按期,按質(zhì)的完成軟件交付用戶(hù)使用。持續集成這種軟件開(kāi)發(fā)實(shí)踐,對于軟件項目管理的各個(gè)領(lǐng)域的管理有著(zhù)積極的作用。
關(guān)鍵詞:持續集成;軟件項目管理;構建
一、引言
軟件項目經(jīng)理不但要用管理知識管理整個(gè)項目,還要為他們的團隊選擇更好的技術(shù)實(shí)踐。在軟件開(kāi)發(fā)的眾多技術(shù)實(shí)踐中持續集成已經(jīng)被越來(lái)越多的團隊所采用,持續集成對于軟件項目管理的各個(gè)領(lǐng)域的管理有著(zhù)積極的作用。持續集成的使用會(huì )給開(kāi)發(fā)尉隊的管理帶來(lái)很多的好處,做為管理者的項目經(jīng)理以及團隊成員都可以從中受益。
二、持續集成與軟件項目管理
1、什么是持續集成
“持續集成”起源于極限編程開(kāi)發(fā),是它的12個(gè)基本原則之一!俺掷m集成”是一種軟件開(kāi)發(fā)實(shí)踐,它要求開(kāi)發(fā)小組的每個(gè)成員頻繁的集成他們的工作成果,這個(gè)頻度通常是至少每天一次有時(shí)甚至每天多次。開(kāi)發(fā)團隊的成員頻繁的整合他們之問(wèn)的工作,這種整合不是簡(jiǎn)單的組裝軟件,每次的集成通過(guò)一個(gè)包含測試的構建去盡快的探測潛在的錯誤,保證軟件現有的功能不被破壞,自動(dòng)分析現有代碼的狀態(tài)(有無(wú)重復邏輯,代碼的復雜度等)并發(fā)布相關(guān)的報告。通過(guò)快速反饋,開(kāi)發(fā)人員可以了解軟件集成的情況,對不成功的集成進(jìn)行快速的修改,從而提高軟件開(kāi)發(fā)的效率和質(zhì)量。
2、什么是軟件項目管理
軟件項目管理是為了使軟件項目能夠按照預定的成本、進(jìn)度、質(zhì)量順利完成,而對人員(People)、產(chǎn)品(Product)、過(guò)程(Protess)和項目(Project)進(jìn)行分析和管理的活動(dòng)。
為使軟件項目開(kāi)發(fā)獲得成功,關(guān)鍵問(wèn)題是必須對軟件項目的工作范圍、可能風(fēng)險、需要資源(人、硬件/軟件)、要實(shí)現的任務(wù)、經(jīng)歷的里程碑、花費工作量(成本)、進(jìn)度安排等做到心中有數,掌握整個(gè)軟件的開(kāi)發(fā)進(jìn)程。
三、持續集成對軟件項目管理的作用
l、對項目目標管理的作用
軟件項目的目標是開(kāi)發(fā)出可運行的、客戶(hù)滿(mǎn)意的軟件系統持續集成有統一的代碼庫。要求開(kāi)發(fā)人員定期地、不斷地向代碼庫提交代碼。新近提交的代碼會(huì )經(jīng)過(guò)編譯與測試,與代碼庫中舊有的代碼相整合,形成安全穩定運行的代碼庫,既軟件系統。這樣。能夠在最快、最短的時(shí)問(wèn)內形成結果代碼,逐步實(shí)現項目目標。這樣的代碼提交形式對軟件項目的目標管理有利,項目經(jīng)理能夠最快速度地得到項目的最新代碼庫,并且新提交代碼的問(wèn)題也會(huì )及早地暴露出來(lái),在最短的時(shí)間內得到解決。
持續集成已經(jīng)被證明對于小到中型規模的項目目標的實(shí)現是有價(jià)值的,對于大的項目,仍然是有用的。
2、對項目時(shí)間管理的作用
生產(chǎn)力的發(fā)展過(guò)程是不斷采用物化勞動(dòng)取代人自身的勞動(dòng)的過(guò)程,是不斷自動(dòng)化的過(guò)程。開(kāi)發(fā)的構建過(guò)程中如果大量的采取手動(dòng)過(guò)程不僅降低了團隊的生產(chǎn)率,更嚴重的是它將許多不確定的因素引入到產(chǎn)品的構建過(guò)程,這使得發(fā)現以及解決問(wèn)題變得異常困難。這樣會(huì )更加地降低了團隊的開(kāi)發(fā)效率。持續集成的構建都是使用構建工具自動(dòng)化地進(jìn)行的通過(guò)使用持續集成工具將構建過(guò)程自動(dòng)化,便于分析并找出問(wèn)題,大大提高了團隊的開(kāi)發(fā)效率。
穩定而高效的開(kāi)發(fā)效率保證了開(kāi)發(fā)團隊在一個(gè)輕松愉快的環(huán)境中工作,同時(shí)團隊成員可以有更多的時(shí)問(wèn)和精力學(xué)習新技術(shù)并將其應用在軟件開(kāi)發(fā)中,自動(dòng)化測試,集成將開(kāi)發(fā)人員從簡(jiǎn)單、繁瑣的低級腦力勞動(dòng)中解放出來(lái),從而進(jìn)行更高層次的思考持續集成的自動(dòng)構建過(guò)程,極大的提高了軟件的開(kāi)發(fā)效率,對項目經(jīng)理的項目時(shí)間管理有利。
3、對項目質(zhì)量管理的作用
持續集成過(guò)程要求編程人員事先編寫(xiě)好很多的測試用例,在代碼的提交過(guò)程中就對代碼進(jìn)行測試,這樣的及早測試能夠最快速地發(fā)現軟件代碼中的錯誤和缺陷,及時(shí)修改,從而提高軟件的質(zhì)量。
持續集成的測試包括:?jiǎn)卧獪y試、功能測試、集成測試,進(jìn)行部署等等持續集成要求有一個(gè)全面的單元測試驗證集,使持續集成能夠獲得短集成周期。在一般的項目中,編寫(xiě)測試代碼都至少會(huì )額外增加30%的工作量。初看,在時(shí)間和資金上這也許是很大的開(kāi)銷(xiāo),然而,在持續集成過(guò)程中,編寫(xiě)測試代碼是必要的,而且這樣也省去了人工測試的時(shí)間,確保了軟件產(chǎn)品的質(zhì)量,對軟件項目的質(zhì)量管理有利。
4、對項目風(fēng)險管理的作用
持續集成過(guò)程通常在開(kāi)發(fā)人員提交代碼后開(kāi)始,服務(wù)器自動(dòng)更新代碼,編譯,運行單元測試、功能測試、集成測試,進(jìn)行部署這個(gè)持續集成的過(guò)程可以幫助開(kāi)發(fā)人員快速發(fā)現并解決問(wèn)題(編譯失敗,測試失敗等)。與開(kāi)發(fā)人員的機器相比,持續集成服務(wù)器運行在相對穩定、干凈的環(huán)境中減小跟蹤調試的難度,持續集成過(guò)程的失敗通常意味著(zhù)最近一次更新破壞了軟件現有功能或引入了新的缺陷。在持續集成過(guò)程結束后,除了構建結果(War,Jar等),通常會(huì )生成代碼分析報告(測試覆蓋率等),幫助項目管理人員更好的了解并改善項目。
這種快速反饋集成結果,并進(jìn)行快速修改的工作方式,在第一時(shí)間消除了代碼中的Bug,極大地減小了系統發(fā)生錯誤、不能在用戶(hù)環(huán)境中運行、系統集成時(shí)涌現大量問(wèn)題的風(fēng)險。這樣使整個(gè)的項目進(jìn)度完全掌握在項目經(jīng)理手中,減少了項目的風(fēng)險,有利于項目經(jīng)理的風(fēng)險管理。
5、對項目人力資源管理的作用
軟件開(kāi)發(fā)過(guò)程最終表現為人與人之間各種形式的合作。安全感與信心是合作最基礎也是最重要的部分通過(guò)使用持續集成工具,開(kāi)發(fā)人員可以了解到新的代碼是否引人了缺陷。管理人員可以通過(guò)使用各種形式的報告對項目進(jìn)行評估。不斷發(fā)布的構建結果,使測試人員得以自始至終的參與到整個(gè)開(kāi)發(fā)過(guò)程中,而不是在軟件開(kāi)發(fā)的最后階段才加入團隊。
持續集成所做的一切加強了團隊成員的溝通,項目中的所有人都知道系統現在的狀態(tài),目前已經(jīng)做了那些變動(dòng)。溝通中最重要的一件事是主線(xiàn)的構建狀態(tài)。使用持續集成服務(wù)器。這上面有個(gè)構建,它會(huì )告訴你構建的狀態(tài)和上次主線(xiàn)構建的狀態(tài)。將構建的結果反饋的形式很多,比如構建成功則綠燈亮,失敗就出現紅燈。還可以使用網(wǎng)站發(fā)布構建結果,這樣那些不在一起工作的人也能看到目前項目的狀態(tài)這樣的工作方式使團隊成員及時(shí)了解項目情況。得到及時(shí)、準確的溝通,可以增強團隊成員的安全感和信心,使團隊在一個(gè)好的氛圍中工作。這樣利于項目經(jīng)理管理項目團隊中的成員。
6、對項目客戶(hù)關(guān)系管理的作用
從客戶(hù)和用戶(hù)的角度看,一個(gè)可以穩定運行的軟件系統才是最重要的。在使用持續集成工具的環(huán)境中,開(kāi)發(fā)人員對源文件進(jìn)行修改、提交,持續集成服務(wù)器會(huì )將這部分修改與其他的代碼進(jìn)行整合、測試。并重新生成最終產(chǎn)品fWar’Jar’exe文件等。如果在其中任何一個(gè)環(huán)節出現了問(wèn)題,相關(guān)人員可以很快的得到反饋在沒(méi)有使用持續集成工具的環(huán)境中,大量的問(wèn)題只有在產(chǎn)品發(fā)布前進(jìn)行最終集成的時(shí)候才會(huì )出現,開(kāi)發(fā)團隊往往在發(fā)布前承受著(zhù)巨大的壓力,并導致產(chǎn)品延遲發(fā)布或者在進(jìn)行集成的過(guò)程中引入更多、更嚴重的缺陷。而持續集成的使用有效地避免了這些問(wèn)題。
客戶(hù)看到通過(guò)持續集成的頻繁部署的結果,很快的看到軟件系統的新特性,然后針對這些特性迅速反饋,開(kāi)發(fā)者可以根據這些反饋進(jìn)行后續的開(kāi)發(fā)在這樣的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者和客戶(hù)得到很好的溝通,客戶(hù)能夠經(jīng)常地看到實(shí)現的產(chǎn)品,融洽了客戶(hù)關(guān)系,增強了客戶(hù)的滿(mǎn)意度客戶(hù)的滿(mǎn)意是項目最終成功的重要標志之一,使用持續集成.提高了客戶(hù)的滿(mǎn)意度,為項目的成功打下了基礎。
7、對項目軟件配置管理的作用
代碼庫把一個(gè)項目所有的源代碼都保存在一個(gè)倉庫里系統的當前狀態(tài)始終是最新提交的代碼,我們叫它主線(xiàn)(Main—Iine),任何時(shí)候開(kāi)發(fā)者都能把這個(gè)主線(xiàn)上的代碼更新到自己機器上,我們叫它檢出。開(kāi)發(fā)者機器上的代碼叫做工作拷貝(WorkingCopy)。
持續集成項目組都使用代碼倉庫,而且代碼倉庫中不僅有代碼,還要求要把什么都放在代碼倉庫里,構建唯一的代碼倉庫。把用于構建的東西都放到里面去:測試腳本、屬性文件、數據庫、安裝腳本和第三方庫等等。甚至有的項目團隊把編譯器也檢人(Checkin)代碼倉庫的。這樣做的好處是保證了代碼倉庫的完整性和有效性,為持續集成的構建做好準備。這樣的代碼庫的工作方式,為軟件的配置管理提供了極大的方便。
軟件項目管理包括九大管理領(lǐng)域.這種管理在技術(shù)工作開(kāi)始之前就應開(kāi)始,在軟件從概念到實(shí)現的過(guò)程中繼續進(jìn)行,當軟件工程過(guò)程最后結束時(shí)才終止軟件的復雜性也決定了軟件項目管理的復雜性,軟件項目管理的根本目的是為了讓軟件項目尤其是大型項目的整個(gè)軟件生命周期(從分析、設計、編碼到測試、維護全過(guò)程)都能在管理者的控制之下,以預定成本按期、按質(zhì)的完成軟件交付用戶(hù)使用持續集成做為軟件開(kāi)發(fā)過(guò)程的一種實(shí)踐,為軟件項目管理提供了更好的保證,軟件的項目經(jīng)理可以考慮在你們的開(kāi)發(fā)團隊中使用持續集成進(jìn)行軟件開(kāi)發(fā)。(資料來(lái)源:項目管理者聯(lián)盟)
更多內容敬請訪(fǎng)問(wèn):http://www.firg8.com/active38.html