關(guān)鍵字:軟件項(xiàng)目管理,需求管理,進(jìn)度管理,成本管理,配置管理,風(fēng)險(xiǎn)管理
前言:現(xiàn)在的市場上充斥著各種各樣的關(guān)于軟件項(xiàng)目管理的書,我不大喜歡看這一類的書本,一方面這些書本都是國外書籍的中譯本,有的地方翻譯的可能也不是很符合中國用語的習(xí)慣,看起來可能會覺得難于理解(大量的晦澀英文學(xué)術(shù)專用語,不翻譯也就算了,翻譯過來了就完全不知道在說什么了),枯燥乏味,二來也覺得看了也不是很實(shí)用,所以我個(gè)人不大看這一類的書。
經(jīng)過幾年的磨練,從編碼開始終于稍微的了解到了一些軟件項(xiàng)目管理的具體內(nèi)容,以及軟件項(xiàng)目管理實(shí)施步驟,如何實(shí)施。以我個(gè)人的理解總結(jié)了下面幾個(gè)部分。
一.需求管理
客戶需求管理
天大地大,需求最大。對于我們軟件開發(fā)人員來說,客戶的需求也應(yīng)該是最大的,不僅僅因?yàn)榭蛻羰俏覀兊囊率掣改?,也是我們軟件開發(fā)人員成長的催化劑。我們不是End-User,所以有的時(shí)候關(guān)于某個(gè)特定系統(tǒng)上的具體細(xì)節(jié)可能是我們沒有辦法考慮到的,是在我們的領(lǐng)域里可能沒有辦法想象得到的,這個(gè)時(shí)候我們就必須要通過實(shí)際應(yīng)用系統(tǒng)的End-User,也就是我們項(xiàng)目的最終客戶來了解具體的客戶需求。對于一個(gè)缺乏需求管理的軟件項(xiàng)目而言,必定會導(dǎo)致系統(tǒng)不能實(shí)現(xiàn)預(yù)期的功能而需要在后期進(jìn)行昂貴的修正,使得項(xiàng)目拖期、產(chǎn)生嚴(yán)重的質(zhì)量問題與超出項(xiàng)目預(yù)算的現(xiàn)象。
了解了客戶的需求,可以讓我們在軟件的開發(fā)過程中少走很多的彎路,縮短軟件開發(fā)的周期,了解了客戶的需求,能夠提高軟件的友好性,易操作性,易用性,從而來提升軟件的質(zhì)量。
需求成本管理
對于客戶的需求,我們要盡量地予以滿足,但也不是一味地不顧技術(shù)實(shí)現(xiàn)上的困難而遷就客戶的無理要求,在需求管理進(jìn)行的同時(shí),我們也不能忽略了成本問題。因?yàn)槊恳粋€(gè)功能的實(shí)現(xiàn)都需要我們花費(fèi)時(shí)間去努力的。做需求管理的人員要和客戶進(jìn)行很好的溝通,在成本和需求之間找到平衡點(diǎn)。這些話說起來是很輕松的,做起來是絕對的不輕松,面對客戶你必須要保持涵養(yǎng),而你說面對的客戶可能是一點(diǎn)都了解什么是軟件,或者說是我做這個(gè)東西需要多少人力物力,而需求管理人員就是要對客戶的需求進(jìn)行必要的補(bǔ)充說明(基本上應(yīng)該站在為減少成本,提高質(zhì)量的立場上)。
需求內(nèi)容傳達(dá)
而在有了具體的需求以后,然后需要和我們的軟件設(shè)計(jì)人員進(jìn)行溝通,務(wù)必做到使他們清楚地知道客戶需要什么,確定我們的航向。
概括所以在項(xiàng)目管理的組成中,需求管理的位置是很重要的,他們有著橋梁的作用,接通了客戶需求和軟件開發(fā)之間的道路。
二.進(jìn)度管理
進(jìn)度管理
在進(jìn)度管理這個(gè)呈面上其實(shí)有兩點(diǎn),一點(diǎn)是總體進(jìn)度,另一點(diǎn)就是個(gè)人進(jìn)度了,而我們的Project 進(jìn)度卻是建立在個(gè)人進(jìn)度的基礎(chǔ)上的。
很多的人可能會以為,進(jìn)度管理就是leader或者說是Project manager(PM)的事情,而與團(tuán)隊(duì)的其他開發(fā)人員毫無關(guān)系,其實(shí),個(gè)人認(rèn)為這樣的認(rèn)識是非常的錯(cuò)誤的。開發(fā)人員和所有過程都應(yīng)該是有關(guān)聯(lián)的,并不存在著什么什么是某某人的事情這樣的說法。
總體的進(jìn)度應(yīng)該由PM來控制和調(diào)整,而個(gè)人的進(jìn)度卻是軟件開發(fā)人員個(gè)人的責(zé)任和職責(zé)所在,有很多時(shí)候軟件的開發(fā)人員可能會抱怨,在原有工作時(shí)間段里,開發(fā)的時(shí)間本來就少,每天又讓我們寫這種毫無意義的個(gè)人進(jìn)度報(bào)告,這樣難道不是浪費(fèi)了我們更多的時(shí)間嗎!
其實(shí)不然,一個(gè)精英的團(tuán)隊(duì)固然重要,但是沒有良好的管理和溝通,統(tǒng)籌全局的管理,那么擁有再精英的團(tuán)隊(duì)也是白搭。開發(fā)人員在很多時(shí)候都是站在自己的模塊里,或者說是以自己出發(fā)點(diǎn)進(jìn)行思索,他們之間可能存在著相互間的溝通意識,但也只是個(gè)別人員之間的交流,并不能從根本上把握全體進(jìn)度,也無法對進(jìn)度作必要的分析和調(diào)整。而開發(fā)成員的個(gè)人開發(fā)進(jìn)度報(bào)告匯總以后,能夠讓PM清楚的知道什么地方存在著問題,從而從工程整體上調(diào)整進(jìn)度,決定相應(yīng)的對策。
建議在軟件開發(fā)的過程中,不管項(xiàng)目的大小我們都應(yīng)該抽取0.5-1.0小時(shí)的時(shí)間來寫一份個(gè)人的進(jìn)度報(bào)告,而在個(gè)人的進(jìn)度報(bào)告上上面應(yīng)該有清晰的個(gè)人進(jìn)度,存在問題,準(zhǔn)備如何解決等等記述,總之,一句話,報(bào)告要簡明扼要能夠清楚地反映個(gè)人的進(jìn)度狀況以及存在的問題。
進(jìn)度不是個(gè)人的事情,而是整個(gè)開發(fā)團(tuán)隊(duì)的事情。個(gè)人進(jìn)度和全體進(jìn)度只是著眼點(diǎn)不一樣了吧。它所以反映的實(shí)質(zhì)都是一樣的,而個(gè)人進(jìn)度更是全體進(jìn)度的基礎(chǔ),沒有了個(gè)人進(jìn)度何談全體進(jìn)度。同時(shí)個(gè)人進(jìn)度管理也是軟件開發(fā)人員的自我管理,是進(jìn)度控制的最重要組成部分,個(gè)人進(jìn)度的狀況好壞直接影響到團(tuán)隊(duì)全體的進(jìn)度推進(jìn)狀況。
成本管理
作為PM不僅僅要把握全體的進(jìn)度,更加要把握住開發(fā)的成本,如果開發(fā)的成本超過了,那對于我們的開發(fā)來說不能盈利,而不能盈利的開發(fā)也就意味著失敗。
項(xiàng)目上的反反復(fù)復(fù),開發(fā)人員加班費(fèi)的支出,不僅加大了開發(fā)的費(fèi)用,同時(shí)也給員工帶來了身體、精神上的雙重疲憊,直接導(dǎo)致個(gè)人抵抗力、免疫力的下降,更可能會造成員工身體上的隱藏疾病。同時(shí)也帶動(dòng)著相應(yīng)的管理費(fèi)用也隨之增加了。這些都會使得我們軟件的成本增加。
問題管理
問題管理其實(shí)是應(yīng)該包含在進(jìn)度管理里面的,但是它又有點(diǎn)特殊,所以把它單獨(dú)拉出來了。
我們在開發(fā)過程中不可能是一帆風(fēng)順的,可能不時(shí)地會遇到各種各樣的問題,而如何來解決問題,或者說是如何想辦法盡早的解決問題,這個(gè)才是關(guān)鍵。而其中的最關(guān)鍵是不能有了問題而一聲不響,悶頭苦干,結(jié)果幾天下來以后,卻發(fā)現(xiàn)自己還是站在原地,而就算是你通過了幾天的努力完成了這個(gè)難題。但是這樣就是不是意味著你的成功了呢!不時(shí)的,這樣的結(jié)果是不但自己的進(jìn)度沒有辦法完成,更加延誤了整體的開發(fā)進(jìn)度,別的成員或者是小組就可能因?yàn)槟阋宦暡豁懙貨]有成果的努力而不能再繼續(xù)下面的開發(fā)。應(yīng)該說軟件開發(fā)過程中遇到問題一聲不響、埋頭苦干的做法是很愚蠢的,軟件開發(fā)要求的不是個(gè)人英雄主義精神而是團(tuán)隊(duì)的整體合作精神。缺乏團(tuán)隊(duì)的意識的個(gè)人和team必定是一個(gè)失敗的開始。
就開發(fā)人員而言,一旦碰到了難以解決的問題,不僅要自己努力調(diào)查,想辦法解決,一方面也要把存在的問題向PM反映,讓PM能夠知道存在的問題,而PM可以在進(jìn)度會議、或者召開臨時(shí)緊急會議,把問題擺出來,通過大家來尋求解決的方案。一個(gè)人的力量畢竟是有限的,而個(gè)人的英雄主義卻是團(tuán)隊(duì)開發(fā)的極大阻礙。
三.配置管理
是什么
關(guān)于配置管理(Software Configuration Management-簡稱SCM)的概念在各類書籍中都能夠看到,大部分的書籍都是從英文翻譯過來的,而翻譯書籍的人可能并不一定是和計(jì)算機(jī)學(xué)科有關(guān)聯(lián)的,就算是也不一定在配置管理上有一定的經(jīng)驗(yàn)。所以我想并不是每一個(gè)從事軟件開發(fā)的人員都能夠確切的理解它、把握它。概念的東西畢竟都是虛幻的,只有實(shí)際的運(yùn)用了才能夠變成自己的東西。
書上的定義我就不想說了,有興趣的話大家可以去看書。我在這里想說說自己對于配置管理的看法和理解。配置管理可以簡單地一句話說成是版本控制管理。而什么是版本控制,我想在使用計(jì)算機(jī)的人應(yīng)該都會知道軟件版本的概念,而我們的配置管理就是要對軟件的版本進(jìn)行控制管理。這個(gè)就是我們通常意義上說的配置管理了。而真正在團(tuán)隊(duì)開發(fā)中的配置管理并不僅僅是版本的控制管理,還應(yīng)該涉及到代碼協(xié)調(diào)、履歷追蹤、品質(zhì)檢查等等細(xì)節(jié)的問題。
為什么
為什么我們要在軟件的開發(fā)過程中引入配置管理?其實(shí)不為什么,只是我們需要所以我們引入。在個(gè)人軟件開發(fā)中只要你覺得你的水平夠高,肯定不會發(fā)生Rollback,或者你只是在制作1+1=2這一類的簡單程序時(shí)我想你也可能用不到配置管理。
在前面我也曾經(jīng)提到過,軟件的開發(fā)是team行為,是合作,而不是個(gè)人英雄主義的自我表現(xiàn),不可否認(rèn)在小項(xiàng)目上存在著個(gè)人軟件開發(fā),但是我想就算是個(gè)人軟件的開發(fā)(簡稱PSP:Personal Software Programming-英文全稱不知道是不是這樣的,不大記得了)也不得不使用到配置管理。
有人把配置管理稱為軟件開發(fā)的一種藝術(shù),以前在老外寫的一本書上看到過,N多年以前的事情了,具體是什么書名已經(jīng)不記得了。其實(shí)這樣的說法也不算為過,配置管理就是對軟件開發(fā)過程中的產(chǎn)品(這里為什么說產(chǎn)品,而不是代碼,因?yàn)槲覀兊能浖_發(fā)還包括各類文檔,會議記錄等等)進(jìn)行標(biāo)識、追蹤、控制的過程,目的就是為了減少一些不可預(yù)料的錯(cuò)誤,提高生產(chǎn)率。
怎么做
怎么做就是要用到一些軟件開發(fā)過程中使用的配置管理的工具了。大概在七十年代加利福利亞大學(xué)的Leon Presser教授就撰寫了一篇論文,提出控制變更和配置的概念,之后他又成立了一家名為軟件工具的公司,開發(fā)了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。之后,隨著軟件開發(fā)規(guī)模的逐漸增大,越來越多的公司和團(tuán)隊(duì)意識到了軟件配置管理的重要性,而相應(yīng)的軟件配置管理工具也如雨后春筍一般,紛紛涌現(xiàn),早期比較有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),這兩種工具對日后的配置管理工具的發(fā)展做出了重大的貢獻(xiàn),目前絕大多數(shù)廣泛使用的配置管理工具基本上都是基于這兩者的設(shè)計(jì)思想和體系架構(gòu)。而如今我們最為常用的,且使用簡單的要算VSS(Microsoft Virsual Source Safety)、CVS(Configuration Version System)了,此外還有一些價(jià)格昂貴、使用復(fù)雜的,比如:CCC Harvest、ClearCase等(需要一個(gè)專門的配置庫管理員負(fù)責(zé)技術(shù)支持,還需要對開發(fā)人員進(jìn)行較多的培訓(xùn),可以說不適合我國的國情)。
VSS可能是國內(nèi)目前使用的最多的配置管理軟件之一,其實(shí)在國外很多的人都喜歡使用CVS。為什么,因?yàn)镃VS是free的,而微軟的VSS是要money的,為什么國內(nèi)還是有很多人使用VSS,原因我想大家都明白我就不說了。
其實(shí)沒有配置管理工具,我們手工也能對軟件的配置進(jìn)行管理,只不過很繁瑣,浪費(fèi)了大量的人力物力,所以我們使用配置管理工具,而要成為一個(gè)好的配置管理工具應(yīng)該具備什么樣的功能:
并行開發(fā)支持 - 要求能夠?qū)崿F(xiàn)開發(fā)人員同時(shí)在同一個(gè)軟件模塊上工作,同時(shí)對同一個(gè)代碼部分作不同的修改,即使是跨地域分布的開發(fā)團(tuán)隊(duì)也能互不干擾,協(xié)同工作,而又不失去控制。(對于這一點(diǎn)來說可能CVS比VSS做的更好,如果VSS不使用輔助工具SOS(Source Offsite)的話,那個(gè)公司或者是團(tuán)隊(duì)會把自己的VSS庫共享到Internet上)
履歷管理 - 也就是修改的歷史記錄的可追蹤性。能夠明確地知道什么時(shí)候,誰作了什么,為什么怎么做。從而達(dá)到管理和追蹤開發(fā)過程中危害軟件質(zhì)量以及影響開發(fā)周期的缺陷和變化。
版本控制 - 版本控制中最重要的一個(gè)概念就是Rollback,能夠簡單,明確地取得軟件開發(fā)期間的任何一個(gè)歷史版本。
、
過程控制 - 能夠貫徹、實(shí)施開發(fā)規(guī)范,包括訪問權(quán)限控制、開發(fā)規(guī)則的實(shí)施等。
產(chǎn)品發(fā)布管理 - 軟件開發(fā)過程中的一個(gè)關(guān)鍵活動(dòng)是提取工件的相關(guān)版本,以形成軟件系統(tǒng)的階段版本或發(fā)布版本,我們一般將其稱為穩(wěn)定基線。一個(gè)穩(wěn)定基線代表新開發(fā)活動(dòng)的開始,而一系列定制良好的活動(dòng)之后又會產(chǎn)生一個(gè)新的穩(wěn)定基線。有效地利用此項(xiàng)功能,在項(xiàng)目開發(fā)過程中可以至始至終管理、跟蹤工件版本間的關(guān)聯(lián)。
本來談一點(diǎn)關(guān)于VSS和CVS的配置和應(yīng)用的,可是想想寫起來會很多,而且還要貼圖什么的,夠麻煩的所以等以后有興趣了再補(bǔ)上。
二.風(fēng)險(xiǎn)管理
是什么
項(xiàng)目管理中最容易被忽略而且是最難以管理的環(huán)節(jié)。在很多的情況下,許多人都不知道風(fēng)險(xiǎn)管理到底應(yīng)該做些什么。其實(shí)風(fēng)險(xiǎn)是自始至終貫徹整個(gè)軟件的開發(fā)過程的,沒有一個(gè)做項(xiàng)目的team可以自豪地聲稱自己的開發(fā)沒有任何風(fēng)險(xiǎn)。
什么是軟件開發(fā)過程中所謂的風(fēng)險(xiǎn),簡單地理解可以認(rèn)為是對軟件開發(fā)過程中遇到的資金和進(jìn)度等問題對項(xiàng)目的影響。風(fēng)險(xiǎn)的產(chǎn)生常常會使我們的進(jìn)度遲緩,成本增加,甚至是軟件項(xiàng)目無法實(shí)現(xiàn)。
我們可能無法根除風(fēng)險(xiǎn),但是我們?nèi)绻訌?qiáng)對風(fēng)險(xiǎn)產(chǎn)生的認(rèn)識,對項(xiàng)目產(chǎn)生的風(fēng)險(xiǎn)進(jìn)行有效的管理,就可以從最大限度上減少風(fēng)險(xiǎn)的發(fā)生,而這個(gè)就是我們風(fēng)險(xiǎn)管理的主題了。
面對風(fēng)險(xiǎn)的態(tài)度
很多的項(xiàng)目組可能不大注重風(fēng)險(xiǎn)管理,往往是到了風(fēng)險(xiǎn)確確實(shí)實(shí)地發(fā)生了,才回過神來開始面對,采取緊急的補(bǔ)救措施,試圖能夠快速的糾正,而這種被動(dòng)的“救火”模式的風(fēng)險(xiǎn)認(rèn)識存在著極大的危險(xiǎn),就是當(dāng)對于風(fēng)險(xiǎn)的撲救失敗以后可能會使得我們的項(xiàng)目處于水深火熱之中。個(gè)人認(rèn)為這種撲救的行為有點(diǎn)類似于寓言上所說的“亡羊補(bǔ)牢”。這種被動(dòng)的風(fēng)險(xiǎn)策略是不可取的。
既然提到了風(fēng)險(xiǎn)管理,我們就要在風(fēng)險(xiǎn)尚未產(chǎn)生、形成之前,對風(fēng)險(xiǎn)進(jìn)行辨識,并且評估風(fēng)險(xiǎn)出現(xiàn)的概率已經(jīng)它們能夠產(chǎn)生的影響,按風(fēng)險(xiǎn)有高到底排序,有計(jì)劃地管理。這種做法正好和“亡羊補(bǔ)牢”式的被動(dòng)風(fēng)險(xiǎn)管理方式相反,我們在這里采取了主動(dòng)出擊,就是這樣做,我們也并不能從根本上防止未知風(fēng)險(xiǎn)的產(chǎn)生,我們能做的只是減少風(fēng)險(xiǎn)發(fā)生的可能,所以說風(fēng)險(xiǎn)的管理和我們的認(rèn)知以及經(jīng)驗(yàn)有一點(diǎn)的聯(lián)系。
風(fēng)險(xiǎn)管理的要件
在計(jì)劃項(xiàng)目書中寫清如何進(jìn)行風(fēng)險(xiǎn)管理。
在項(xiàng)目的預(yù)算中必須包含風(fēng)險(xiǎn)解決所需要的經(jīng)費(fèi),已經(jīng)它們可能產(chǎn)生的影響。
認(rèn)識到風(fēng)險(xiǎn)在整個(gè)項(xiàng)目中是一個(gè)連續(xù)的過程,需要在項(xiàng)目進(jìn)程中不斷地進(jìn)行。
風(fēng)險(xiǎn)管理計(jì)劃(風(fēng)險(xiǎn)如何識別,量化風(fēng)險(xiǎn),應(yīng)對策略,風(fēng)險(xiǎn)監(jiān)控)
【?發(fā)表評論?0條?】