軟件項目管理是為了使軟件項目能夠按照預(yù)定的成本、進度、質(zhì)量順利完成,而對人員(People)、產(chǎn)品(Product)、過程(Process)和項目(Project)進行分析和管理的活動。
軟件項目管理的根本目的是為了讓軟件項目尤其是大型項目的整個軟件生命周期(從分析、設(shè)計、編碼到測試、維護全過程)都能在管理者的控制之下,以預(yù)定成本按期,按質(zhì)的完成軟件交付用戶使用。而研究軟件項目管理為了從已有的成功或失敗的案例中總結(jié)出能夠指導(dǎo)今后開發(fā)的通用原則,方法,同時避免前人的失誤。 軟件項目管理的提出是在20世紀(jì)70年代中期的美國,當(dāng)時美國國防部專門研究了軟件開發(fā)不能按時提交,預(yù)算超支和質(zhì)量達不到用戶要求的原因,結(jié)果發(fā)現(xiàn)70%的項目是因為管理不善引起的,而非技術(shù)原因。于是軟件開發(fā)者開始逐漸重視起軟件開發(fā)中的各項管理。到了20世紀(jì)90年代中期,軟件研發(fā)項目管理不善的問題仍然存在。據(jù)美國軟件工程實施現(xiàn)狀的調(diào)查,軟件研發(fā)的情況仍然很難預(yù)測,大約只有10%的項目能夠在預(yù)定的費用和進度下交付。 1995年,據(jù)統(tǒng)計,美國共取消了810億美元的商業(yè)軟件項目,其中31%的項目未做完就被取消,53%的軟件項目進度通常要延長50%的時間,只有9%的軟件項目能夠及時交付并且費用也控制在預(yù)算之內(nèi)。 軟件項目管理和其他的項目管理相比有相當(dāng)?shù)奶厥庑?。首先,軟件是純知識產(chǎn)品,其開發(fā)進度和質(zhì)量很難估計和度量,生產(chǎn)效率也難以預(yù)測和保證。其次,軟件系統(tǒng)的復(fù)雜性也導(dǎo)致了開發(fā)過程中各種風(fēng)險的難以預(yù)見和控制。Windows這樣的操作系統(tǒng)有1500萬行以上的代碼,同時有數(shù)千個程序員在進行開發(fā),項目經(jīng)理都有上百個。這樣龐大的系統(tǒng)如果沒有很好的管理,其軟件質(zhì)量是難以想象的。 軟件項目管理的內(nèi)容主要包括如下幾個方面:人員的組織與管理,軟件度量,軟件項目計劃,風(fēng)險管理,軟件質(zhì)量保證,軟件過程能力評估,軟件配置管理等。 這幾個方面都是貫穿、交織于整個軟件開發(fā)過程中的,其中人員的組織與管理把注意力集中在項目組人員的構(gòu)成、優(yōu)化;軟件度量把關(guān)注用量化的方法評測軟件開發(fā)中的費用、生產(chǎn)率、進度和產(chǎn)品質(zhì)量等要素是否符合期望值,包括過程度量和產(chǎn)品度量兩個方面;軟件項目計劃主要包括工作量、成本、開發(fā)時間的估計,并根據(jù)估計值制定和調(diào)整項目組的工作;風(fēng)險管理預(yù)測未來可能出現(xiàn)的各種危害到軟件產(chǎn)品質(zhì)量的潛在因素并由此采取措施進行預(yù)防;質(zhì)量保證是保證產(chǎn)品和服務(wù)充分滿足消費者要求的質(zhì)量而進行的有計劃,有組織的活動;軟件過程能力評估是對軟件開發(fā)能力的高低進行衡量;軟件配置管理針對開發(fā)過程中人員、工具的配置、使用提出管理策略。因為大家對人力資源管理和軟件過程能力比較有興趣,下面就詳細的對這兩方面展開討論。 一.軟件項目的計劃 軟件項目計劃是一個軟件項目進入系統(tǒng)實施的啟動階段,主要進行的工作包括:確定詳細的項目實施范圍、定義遞交的工作成果、評估實施過程中主要的風(fēng)險、制定項目實施的時間計劃、成本和預(yù)算計劃、人力資源計劃等。 軟件項目管理過程從項目計劃活動開始,而第一項計劃活動就是估算:需要多長時間、需要多少工作量、以及需要多少人員。此外,我們還必須估算所需要的資源(硬件及軟件)和可能涉及到的風(fēng)險。 為了估算軟件項目的工作量和完成期限,首先需要預(yù)測軟件規(guī)模。度量軟件規(guī)模的常用方法有直接的方法——LOC(代碼行),間接的方法——FP(功能點)。這兩種方法各有優(yōu)缺點,應(yīng)該根據(jù)軟件項目的特點選擇適用的軟件規(guī)模度量方法。 根據(jù)項目的規(guī)??梢怨浪愠鐾瓿身椖克璧墓ぷ髁?,我們可以使用一種或多種技術(shù)進行估算,這些技術(shù)主要分為兩大類:分解和經(jīng)驗建模。分解技術(shù)需要劃分出主要的軟件功能,接著估算實現(xiàn)每一個功能所需的程序規(guī)?;蛉嗽聰?shù)。經(jīng)驗技術(shù)的使用是根據(jù)經(jīng)驗導(dǎo)出的公式來預(yù)測工作量和時間??梢允褂米詣庸ぞ邅韺崿F(xiàn)某一特定的經(jīng)驗?zāi)P汀?/font> 精確的項目估算一般至少會用到上述技術(shù)中的兩種。通過比較和協(xié)調(diào)使用不同技術(shù)導(dǎo)出的估算值,我們可能得到更精確的估算。軟件項目估算永遠不會是一門精確的科學(xué),但將良好的歷史數(shù)據(jù)與系統(tǒng)化的技術(shù)結(jié)合起來能夠提高估算的精確度。 當(dāng)對軟件項目給予較高期望時,一般都會進行風(fēng)險分析。在標(biāo)識、分析和管理風(fēng)險上花費的時間和人力可以從多個方面得到回報:更加平穩(wěn)的項目進展過程;更高的跟蹤和控制項目的能力;由于在問題發(fā)生之前已經(jīng)做了周密計劃而產(chǎn)生的信心。 對于一個項目管理者,他的目標(biāo)是定義所有的項目任務(wù),識別出關(guān)鍵任務(wù),跟蹤關(guān)鍵任務(wù)的進展情況,以保證能夠及時發(fā)現(xiàn)拖延進度的情況。為此,項目管理者必須制定一個足夠詳細的進度表,以便監(jiān)督項目進度并控制整個項目。 常用的制定進度計劃的工具主要有Gantt圖和工程網(wǎng)絡(luò)兩種。Gantt圖具有悠久歷史、直觀簡明、容易學(xué)習(xí)、容易繪制等優(yōu)點,但是,它不能明顯地表示各項任務(wù)彼此間的依賴關(guān)系,也不能明顯地表示關(guān)鍵路徑和關(guān)鍵任務(wù),進度計劃中的關(guān)鍵部分不明確。因此,在管理大型軟件項目時,僅用Gantt圖是不夠的,不僅難于做出既節(jié)省資源又保證進度的計劃,而且還容易發(fā)生差錯。 工程網(wǎng)絡(luò)不僅能描繪任務(wù)分解情況及每項作業(yè)的開始時間和結(jié)束時間,而且還能清楚地表示各個作業(yè)彼此間的依賴關(guān)系。從工程網(wǎng)絡(luò)圖中容易識別出關(guān)鍵路徑和關(guān)鍵任務(wù)。因此,工程網(wǎng)絡(luò)圖是制定進度計劃的強有力的工具。通常,聯(lián)合使用Gantt圖和工程網(wǎng)絡(luò)這兩種工具來制定和管理進度計劃,使它們互相補充、取長補短。 進度安排是軟件項目計劃的首要任務(wù),而項目計劃則是軟件項目管理的首要組成部分。與估算方法和風(fēng)險分析相結(jié)合,進度安排將為項目管理者建立起一張計劃圖。 二.軟件項目的控制 對于軟件開發(fā)項目而言,控制是十分重要的管理活動。下面介紹軟件工程控制活動中的質(zhì)量保證和配置管理。其實上面所提到的風(fēng)險分析也可以算是軟件工程控制活動的一類。而進度跟蹤則起到連接軟件項目計劃和控制的作用。 軟件質(zhì)量保證(SQA,Software Quality Insurance)是在軟件過程中的每一步都進行的“保護性活動”。SQA主要有基于非執(zhí)行的測試(也稱為評審)、基于執(zhí)行的測試(即通常所說的測試)和程序正確性證明。 軟件評審是最為重要的SQA活動之一。它的作用是,在發(fā)現(xiàn)及改正錯誤的成本相對較小時就及時發(fā)現(xiàn)并排除錯誤。審查和走查是進行正式技術(shù)評審的兩類具體方法。審查過程不僅步數(shù)比走審多,而且每個步驟都是正規(guī)的。由于在開發(fā)大型軟件過程中所犯的錯誤絕大數(shù)是規(guī)格說明錯誤或設(shè)計錯誤,而正式的技術(shù)評審發(fā)現(xiàn)這兩類錯誤的有效性高達75%,因此是非常有效的軟件質(zhì)量保證方法。 軟件配置管理(SCM,Software configuration management)是應(yīng)用于整個軟件過程中的保護性活動,它是在軟件整個生命周期內(nèi)管理變化的一組活動。 軟件配置由一組相互關(guān)聯(lián)的對象組成,這些對象也稱為軟件配置項,它們是作為某些軟件工程活動的結(jié)果而產(chǎn)生的。除了文檔、程序和數(shù)據(jù)這些軟件配置項之外,用于開發(fā)軟件的開發(fā)環(huán)境也可置于配置控制之下。 一旦一個配置對象已被開發(fā)出來并且通過了評審,它就變成了基線。對基線對象的修改導(dǎo)致建立該對象的版本。版本控制是用于管理這些對象而使用的一組規(guī)程和工具。 變更控制是一種規(guī)程活動,它能夠在對配置對象進行修改時保證質(zhì)量和一致性。配置審計是一項軟件質(zhì)量保證活動,它有助于確保在進行修改時仍然保持質(zhì)量。狀態(tài)報告向需要知道關(guān)于變化的信息的人,提供有關(guān)每項變化的信息。 三、軟件項目管理的組織模式 軟件項目可以是一個單獨的開發(fā)項目,也可以與產(chǎn)品項目組成一個完整的軟件產(chǎn)品項目。如果是訂單開發(fā),則成立軟件項目組即可;如果是產(chǎn)品開發(fā),需成立軟件項目組和產(chǎn)品項目(負責(zé)市場調(diào)研和銷售),組成軟件產(chǎn)品項目組。公司實行項目管理時,首先要成立項目管理委員會,項目管理委員會下設(shè)項目管理小組、項目評審小組和軟件產(chǎn)品項目組。 3.1、項目管理委員會項目管理委員會是公司項目管理的最高決策機構(gòu),一般由公司總經(jīng)理、副總經(jīng)理組成。主要職責(zé)如下: 3.2、項目管理小組項目管理小組對項目管理委員會負責(zé),一般由公司管理人員組成。主要職責(zé)如下: 3.3、項目評審小組項目評審小組對項目管理委員會負責(zé),可下設(shè)開發(fā)評審小組和產(chǎn)品評審小組,一般由公司技術(shù)專家和市場專家組成。主要職責(zé)如下: 3.4、軟件產(chǎn)品項目組軟件產(chǎn)品項目組對項目管理委員會負責(zé),可下設(shè)軟件項目組和產(chǎn)品項目組。軟件項目組和產(chǎn)品項目組分別設(shè)開發(fā)經(jīng)理和產(chǎn)品經(jīng)理。成員一般由公司技術(shù)人員和市場人員構(gòu)成。主要職責(zé)是:根據(jù)項目管理委員會的安排具體負責(zé)項目的軟件開發(fā)和市場調(diào)研及銷售工作。 四、軟件項目管理的內(nèi)容 從軟件工程的角度講,軟件開發(fā)主要分為六個階段:需求分析階段、概要設(shè)計階段、詳細設(shè)計階段、編碼階段、測試階段、安裝及維護階段。不論是作坊式開發(fā),還是團隊協(xié)作開發(fā),這六個階段都是不可缺少的。根據(jù)公司實際情況,公司在進行軟件項目管理時,重點將軟件配置管理、項目跟蹤和控制管理、軟件風(fēng)險管理及項目策劃活動管理四方面內(nèi)容導(dǎo)入軟件開發(fā)的整個階段。在20世紀(jì)80年代初,著名軟件工程專家B.W.Boehm總結(jié)出了軟件開發(fā)時需遵循的七條基本原則,同樣,在進行軟件項目管理時,也應(yīng)該遵循這七條原則。它們是: 五、編寫《軟件項目計劃書》 項目組成立的第一件事是編寫《軟件項目計劃書》,在計劃書中描述開發(fā)日程安排、資源需求、項目管理等各項情況的大體內(nèi)容。計劃書主要向公司各相關(guān)人員發(fā)放,使他們大體了解該軟件項目的情況。對于計劃書的每個內(nèi)容,都應(yīng)有相應(yīng)具體實施手冊,這些手冊是供項目組相關(guān)成員使用的。 六、軟件配置管理 是否進行配置管理與軟件的規(guī)模有關(guān),軟件的規(guī)模越大,配置管理就顯得越重要。軟件配置管理簡稱SCM(Software Configuration Management的縮寫),是在團隊開發(fā)中,標(biāo)識、控制和管理軟件變更的一種管理。配置管理的使用取決于項目規(guī)模和復(fù)雜性以及風(fēng)險水平。 6.1、目前軟件開發(fā)中面臨的問題:在有限的時間、資金內(nèi),要滿足不斷增長的軟件產(chǎn)品質(zhì)量要求;開發(fā)的環(huán)境日益復(fù)雜,代碼共享日益困難,需跨越的平臺增多;程序的規(guī)模越來越大;軟件的重用性需要提高;軟件的維護越來越困難。 6.2、軟件配置管理應(yīng)提供的功能: 6.3、版本管理軟件配置管理分為版本管理、問題跟蹤和建立管理三個部分,其中版本管理是基礎(chǔ)。版本管理應(yīng)完成以下主要任務(wù): 七. 人員組織與管理 軟件開發(fā)中的開發(fā)人員是最大的資源。對人員的配置、調(diào)度安排貫穿整個軟件過程,人員的組織管理是否得當(dāng),是影響對軟件項目質(zhì)量的決定性因素。 首先在軟件開發(fā)的一開始,要合理的配置人員,根據(jù)項目的工作量、所需要的專業(yè)技能,再參考各個人員的能力、性格、經(jīng)驗,組織一個高效、和諧的開發(fā)小組。一般來說,一個開發(fā)小組人數(shù)在5到10人之間最為合適,如果項目規(guī)模很大,可以采取層級式結(jié)構(gòu),配置若干個這樣的開發(fā)小組。 在選擇人員的問題上,要結(jié)合實際情況來決定是否選入一個開發(fā)組員。并不是一群高水平的程序員在一起就一定可以組成一個成功的小組。作為考察標(biāo)準(zhǔn),技術(shù)水平、與本項目相關(guān)的技能和開發(fā)經(jīng)驗、以及團隊工作能力都是很重要的因素。一個一天能寫一萬行代碼但卻不能與同事溝通融洽的程序員,未必適合一個對組員之間通訊要求很高的項目。還應(yīng)該考慮分工的需要,合理配置各個專項的人員比例。例如一個網(wǎng)站開發(fā)項目,小組中有頁面美工、后臺服務(wù)程序、數(shù)據(jù)庫幾個部分,應(yīng)該合理的組織各項工作的人員配比。對于一個中型農(nóng)技110網(wǎng)站,對數(shù)據(jù)采集量要求較高,一個人員配比方案可以是2個美工、2個后臺服務(wù)程序編寫、3個數(shù)據(jù)采集整理人員。 可以用如下公式來對候選人員能力進行評分,達到一定分?jǐn)?shù)的則可以考慮進入開發(fā)組,但這個公式不包含對人員數(shù)量配比的考慮。 在決定一個開發(fā)組的開發(fā)人員數(shù)量時,除了考慮候選人素質(zhì)以外,還要綜合考慮項目規(guī)模、工期、預(yù)算、開發(fā)環(huán)境等因素的影響,下面是一個基于規(guī)模、工期和開發(fā)環(huán)境的人員數(shù)量計算公式: 在組建開發(fā)組時,還應(yīng)充分估計到開發(fā)過程中的人員風(fēng)險。由于工作環(huán)境、待遇、工作強度、公司的整體工作安排和其他無法預(yù)知的因素,一個項目尤其是開發(fā)周期較長的項目幾乎無可避免的要面臨人員的流入流出。如果不在項目初期對可能出現(xiàn)的人員風(fēng)險進行充分的估計,作必要的準(zhǔn)備,一旦風(fēng)險轉(zhuǎn)化為現(xiàn)實,將有可能給整個項目開發(fā)造成巨大的損失。以較低的代價進行及早的預(yù)防是降低這種人員風(fēng)險的基本策略。具體來說可以從以下幾個方面對人員風(fēng)險進行控制: a.保證開發(fā)組中全職人員的比例,且項目核心部分的工作應(yīng)該盡量由全職人員來擔(dān)任, 以減少兼職人員對項目組人員不穩(wěn)定性的影響。 八.軟件過程能力評估 軟件過程能力描述了一個開發(fā)組織開發(fā)軟件開發(fā)高質(zhì)量軟件產(chǎn)品的能力?,F(xiàn)行的國際標(biāo)準(zhǔn)主要有兩個:ISO9000.3和CMM。 ISO9000.3是ISO9000質(zhì)量體系認(rèn)證中關(guān)于計算機軟件質(zhì)量管理和質(zhì)量保證標(biāo)準(zhǔn)部分。它從管理職責(zé)、質(zhì)量體系、合同評審、設(shè)計控制、文件和資料控制、采購、顧客提供產(chǎn)品的控制、產(chǎn)品標(biāo)識和可追溯性、過程控制、檢驗和試驗、檢驗/測量和試驗設(shè)備的控制、檢驗和試驗狀態(tài)、不合格品的控制、糾正和預(yù)防措施、搬運/貯存/包裝/防護和交付、質(zhì)量記錄的控制、內(nèi)部質(zhì)量審核、培訓(xùn)、服務(wù)、統(tǒng)計系統(tǒng)等二十個方面對軟件質(zhì)量進行了要求。 CMM(能力成熟度模型)是美國卡納基梅隆大學(xué)軟件工程研究所(CMU/SEI)于1987年提出的評估和指導(dǎo)軟件研發(fā)項目管理的一系列方法,用5個不斷進化的層次來描述軟件過程能力?,F(xiàn)在CMM是2.0版本。 ISO9000和CMM的共同點是二者都強調(diào)了軟件產(chǎn)品的質(zhì)量。所不同的是,ISO9000強調(diào)的是衡量的準(zhǔn)則,但沒有告訴軟件開發(fā)人員如何達到好的目標(biāo),如何避免差錯。CMM則提供了一整套完善的軟件研發(fā)項目管理的方法。它可告訴軟件開發(fā)組織,如果要在原有的水平上提高一個等級,應(yīng)該關(guān)注哪些問題,而這正是改進軟件過程的工作。 CMM描述了五個級別的軟件過程成熟度(初始級,可重復(fù)級,已定義級,已定量管理級,優(yōu)化級),成熟度反映了軟件過程能力的大小。 初始級特點是軟件機構(gòu)缺乏對軟件過程的有效管理,軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,其軟件項目的成功來源于偶爾的個人英雄主義而非群體行為,因此它不是可重復(fù)的;可重復(fù)級的特點是軟件機構(gòu)的項目計劃和跟蹤穩(wěn)定,項目過程可控,項目的成功是可重復(fù)的;已定義級的特點在于軟件過程已被提升成標(biāo)準(zhǔn)化過程,從而更加具有穩(wěn)定性、可重復(fù)性和可控性;已定量管理級的軟件機構(gòu)中軟件過程和軟件產(chǎn)品都有定量的目標(biāo),并被定量地管理,因而其軟件過程能力是可預(yù)測的,其生產(chǎn)的軟件產(chǎn)品是高質(zhì)量的;優(yōu)化級的特點是過程的量化反饋和先進的新思想、新技術(shù)促進過程不斷改進,技術(shù)和過程的改進改進被作為常規(guī)的業(yè)務(wù)活動加以計劃和管理。 CMM是科學(xué)評價一個軟件企業(yè)開發(fā)能力的標(biāo)準(zhǔn),但要達到較高的級別也非常困難,根據(jù)1995年美國所做的軟件產(chǎn)業(yè)成熟度的調(diào)查,在美國的軟件產(chǎn)業(yè)中,CMM成熟度等級為初始級的竟占70%,為可重復(fù)級的占15%,為定義級的所占比例小于10%,為管理級的所占比例小于5%,為優(yōu)化級的所占比例小于l%。而國內(nèi)企業(yè)的水平就更加堪優(yōu),到目前為止,只有東軟一家達到優(yōu)化級,少數(shù)幾家能夠達到可定義級。盡快改變這種局面,科學(xué)化、規(guī)范化、高效的進行軟件開發(fā)活動,從整體提高我國軟件行業(yè)的水平,是國內(nèi)軟件企業(yè)的當(dāng)務(wù)之急,也是專業(yè)人員應(yīng)該為自己制定的目標(biāo)。如果有一天也能指揮一個數(shù)千人的龐大開發(fā)隊伍,操作Windows這樣巨型規(guī)模的軟件項目,并生產(chǎn)出高質(zhì)量的產(chǎn)品,才有理由宣稱自己的軟件項目管理能力達到了一個“自主自足”的水平。 九. 為什么要有項目管理? 沒有項目管理,項目也有可能成功。但沒有管理的項目,很難保證項目的利潤空間,對公司來說,虧損的風(fēng)險就大。所以我們要有項目管理,以保證公司在總體上是盈利的,注意不是每一個項目都要盈利。 另外,有了項目管理,就有了管理改進的基礎(chǔ),無論剛開始的項目管理多么糟糕,只要有管理,就有了改進的可能性,至于能不能得到改進,以及改進的快慢,則取決于兩個因素:一個是人,特別是各級管理者;另一個是利益。關(guān)鍵是"利益",準(zhǔn)確的說是"利益的分配",在權(quán)責(zé)利明確的前提下,人才能充分的發(fā)揮作用。還需要指出的是"利益"是多元的,這里的多元不僅指利益的具體形式,而且指利益的受眾是多元的,包括客戶方相關(guān)人員個人的利益。
專業(yè)化是一個趨勢,因為在專業(yè)化的條件下,可以有效降低成本,提高利潤率。項目經(jīng)理的工作內(nèi)容歸根到底只有一項:識別并管理風(fēng)險。這項工作的目的是控制項目成本。 由于項目的風(fēng)險是多方面的,而且風(fēng)險的表現(xiàn)形式也是多種多樣的。從風(fēng)險范圍上來說,既有公司內(nèi)部風(fēng)險,也有和客戶交流、合作的風(fēng)險;從風(fēng)險的類型上來說,既有管理風(fēng)險,也有技術(shù)風(fēng)險;從風(fēng)險產(chǎn)生的階段來說,包括了從業(yè)務(wù)分析到上線后維護的項目周期各個階段。 我認(rèn)為一個項目經(jīng)理是否優(yōu)秀,主要是看他/她能在多大程度上提前識別并消除風(fēng)險,而不是彌補和解決了多少問題(風(fēng)險未被及時識別或妥善處理,就會轉(zhuǎn)換成問題)。當(dāng)然能彌補和解決問題的項目經(jīng)理也是相當(dāng)合格的,但還不夠優(yōu)秀。 十一. 項目組的范圍界限在哪里? 項目組的范圍界限可以有三種劃分: 1、包括客戶方所有參與該項目的立項、調(diào)研、審批、測試和使用人員,包括開發(fā)商市場開發(fā)、管理審批、商務(wù)談判、后勤保障和具體負責(zé)該項目開發(fā)的人員; 2、包括客戶方項目經(jīng)理、業(yè)務(wù)需求提出人和測試人,包括開發(fā)商具體負責(zé)該項目開發(fā)的人員; 3、僅包括開發(fā)商具體負責(zé)該項目開發(fā)的人員。 大部分人在思想上可以接受范圍1,而在實務(wù)中接受的是范圍3。而我個人認(rèn)為項目經(jīng)理,特別是開發(fā)商方面的項目經(jīng)理應(yīng)該采用的是范圍2。 對項目組范圍理解不同,將影響項目經(jīng)理對工作的處理方式,范圍1實際上是很虛的,在項目管理實務(wù)操作中沒有太大的意義;而范圍3實質(zhì)是把客戶方和該項目有密切關(guān)系的人與開發(fā)商具體負責(zé)該項目開發(fā)的人對立起來,也就是所謂的甲方、乙方。在這種對立的前提下處理項目的分歧和矛盾,效果肯定要打折扣。 而按范圍2來理解,在項目管理實務(wù)中項目經(jīng)理就必須要讓客戶方和該項目有密切關(guān)系的人也接受這一觀點,從而拆除雙方之間的"障礙",達到相互信任、相互尊重、共同協(xié)商解決問題的良性氛圍,以達到降低項目外部風(fēng)險的目的。當(dāng)然,這樣就增大了項目經(jīng)理工作的難度,但對項目的成功則是很重要的。 十二. 怎樣才能算是一個成功的項目? 對"成功項目"的標(biāo)準(zhǔn)解釋為:項目范圍、項目成本、項目開發(fā)時間、客戶滿意度四點達到要求。我認(rèn)為其實只有一點--利益。項目范圍、客戶滿意度主要代表客戶的利益,項目成本主要代表開發(fā)商的利益,項目開發(fā)時間同時影響雙方的利益。但每一個人關(guān)心的"利益"是不同的。 十三. 軟件項目管理的成功原則 1平衡原則 在我們討論軟件項目為什么會失敗時可以列出了很多的原因,答案有很多,如管理問題、技術(shù)問題、人員問題等等,但是有一個根本的思想問題是最容易忽視的,也是軟件系統(tǒng)的用戶、軟件開發(fā)商、銷售代理商最不想正視的,那就是:需求、資源、工期、質(zhì)量四個要素之間的平衡關(guān)系問題。 需求定義了"做什么",定義了系統(tǒng)的范圍與規(guī)模,資源決定了項目的投入(人、財、物),工期定義了項目的交付日期,質(zhì)量定義了做出的系統(tǒng)好到什么程度,這四個要素之間是有制約平衡關(guān)系的。如果需求范圍很大,要在較少的資源投入下,很短的工期內(nèi),很高的質(zhì)量要求來完成某個項目,那是不現(xiàn)實的,要么需要增加投資,要么工程延期;如果需求界定清楚了,資源固定了,對系統(tǒng)的質(zhì)量要求很高,則可能需求延長工期。 對于上述四個要素之間的平衡關(guān)系最容易犯的一個錯誤,就是鼓吹"多快好省"四個字,"多快好省",多么理想的境界???需求越多越好,工期越短越好,質(zhì)量越高越好,投入越少越好,這是用戶最常用的口號。 多:需求越多越好嗎? 軟件系統(tǒng)實施的基本原則是"全局規(guī)劃,分步實施,步步見效",需求可以多,但是需求一定要分優(yōu)先級,要分清企業(yè)內(nèi)的主要矛盾與次要矛盾,根據(jù)PARETO的80-20原則,企業(yè)中的80%的問題可以用20%的投資來解決,如果你要大而全,對不起,你那20%的次要問題是需要你花費80%的投資的!而這一點恰恰是很多軟件用戶所不能忍受的。 快:真能快起來嗎? "快"是用戶、軟件開發(fā)商都希望的。傳統(tǒng)企業(yè)里強調(diào)資金的周轉(zhuǎn)情況,軟件企業(yè)里強調(diào)的是人員的周轉(zhuǎn)情況,開發(fā)人員應(yīng)盡快做完一個項目再做另外一個項目,通過快速的啟動項目、結(jié)束項目來承擔(dān)更多的項目,來獲利。但是"快"不是主觀的拍腦袋定工期就可以完成的,工期的定義一定要基于資源的狀況、需求的多少與質(zhì)量的需求來進行推算的。軟件畢竟需要一行代碼一行代碼的寫出來,他的工作量是客觀的,并非?quot;人有多大膽,地有多大產(chǎn)"式的精神鼓動就可以短期完成的。 ?。菏〉绞裁闯潭龋? "一分錢一分貨",這是中國的俗話,他是符合價值規(guī)律的。甲方希望少投入,乙方希望降低自己的生產(chǎn)成本,省到乙方僅能保本的時候,再省,乙方就虧損了。 正視這四個要素之間的平衡關(guān)系是軟件用戶、開發(fā)商、代理商成熟理智的表現(xiàn),否則系統(tǒng)的成功就失去了一塊最堅實的理念基礎(chǔ)。 企業(yè)實施IT系統(tǒng)的首要目標(biāo)是要成功,而不是失敗,企業(yè)可以容忍小的成功,但不一定容忍小的失敗,所以需要真正理解上述四個要素的平衡關(guān)系,確保項目的成功。 2高效原則 在需求、資源、工期、質(zhì)量四個要素中,很多的項目決策者是將進度放在首位的,現(xiàn)在市場的競爭越來越激烈,"產(chǎn)品早上市一天,就早掙一天錢,掙的就比花的多,所以一定要多掙",基于這樣一個理念,軟件開發(fā)越來越追求開發(fā)效率,大家從技術(shù)、工具、管理上尋求更多更好的解決之道。 基于高效的原則,對項目的管理需要從幾個方面來考慮: 3分解原則 "化繁為簡,各個擊破"是自古以來解決復(fù)雜問題的不二法門,對于軟件項目來講,可以將將大的項目劃分成幾個小項目來做,將周期長的項目化分成幾個明確的階段。 項目越大對項目組的管理人員、開發(fā)人員的要求越高,參與的人員越多,需要協(xié)調(diào)溝通的渠道越多,周期越長,開發(fā)人員也容易疲勞,將大項目拆分成幾個小項目,可以降低對項目管理人員的要求,減少項目的管理風(fēng)險,而且能夠充分地將項目管理的權(quán)力下放,充分調(diào)動人員的積極性,目標(biāo)會比較具體明確,易于取得階段性的成果,使開發(fā)人員有成就感。 作者主管過的一個產(chǎn)品開發(fā)項目代號為SB,該項目前期投入了5人做需求,時間達3個多月,進入開發(fā)階段后,投入了15人,時間達10個月之久,陸續(xù)進行了3次封閉開發(fā),在此過程中經(jīng)歷了需求的裁剪、開發(fā)人員的變更、技術(shù)路線的調(diào)整,項目組成員的壓力極大,大家疲憊不堪,產(chǎn)品上市時間拖期達4個月。項目完工后總結(jié)下來的很致命的一個教訓(xùn)就是應(yīng)該將該項目拆成3個小的項目來做,進行階段性版本化發(fā)布,以緩解市場上的壓力,減少項目組成員的挫折感,提高大家的士氣。 4實時控制原則 在一家大型的軟件公司中,有一位很有個性的項目經(jīng)理,該項目經(jīng)理很少談起什么管理理論,也未見其有什么明顯的管理措施,但是他連續(xù)做成多個規(guī)模很大的軟件項目,而且應(yīng)用效果很好。作者一直很奇怪他為什么能做的如此成功,經(jīng)過仔細觀察,終于發(fā)現(xiàn)他的管理可以用"緊盯"2字來概括,即每天他都要仔細檢查項目組每個成員的工作,從軟件演示到內(nèi)部的處理邏輯、數(shù)據(jù)結(jié)構(gòu)等,一絲不茍,如果有問題,改不完是不能去休息的。正是在他這種簡單的措施下,支撐他完成了很多大的項目,當(dāng)然他也是相當(dāng)?shù)男量?,通常都是在凌晨才去休息。我們并非要推崇這種做法,這種措施也有他的問題,但是,這種實踐卻說明了一個很樸實的道理:如果你沒有更好的辦法,就要辛苦一點,實時控制項目的進展,要將項目的進展情況完全的實時的置于你的控制之下。 上述的方法中對項目經(jīng)理的個人能力、犧牲精神要求是很高,我們需要有一種進行實時控制項目進度的機制,依靠一套規(guī)范的過程來保證實時監(jiān)控項目的進度。如在微軟的管理策略中強?quot;每日構(gòu)建",這確實是是一種不錯的方法,即每天要進行一次系統(tǒng)的編譯鏈接,通過編譯鏈接來檢查進度、檢查接口、發(fā)現(xiàn)進展中的問題、大家互相鼓勵互相監(jiān)督。 實時控制確保項目經(jīng)理能夠及時發(fā)現(xiàn)問題、解決問題,保證項目具有很高的可見度,保證項目的正常進展。 5分類管理原則 對于不同的軟件項目其項目目標(biāo)差別很大,項目規(guī)模也是不同的,應(yīng)用領(lǐng)域是不同的,采用的技術(shù)路線差別也很大,因而,針對每個項目的不同特點,其管理的方法、管理的側(cè)重點應(yīng)該是不同的。就像古人講的,"因材施教","對癥下藥"。對于小項目你肯定不能象管理大項目那樣去做,對于產(chǎn)品開發(fā)類的項目,你也不可能象管理系統(tǒng)集成類的項目那樣去做,項目經(jīng)理需要根據(jù)項目的特點,制訂不同的項目管理的方針政策。如,下表是作者為一家應(yīng)用軟件公司制訂的項目管理的方針: 在該案例中,將項目分成了訂單類項目與非訂單類項目,非訂單類項目是指由公司根據(jù)市場的需求開發(fā)一個標(biāo)準(zhǔn)產(chǎn)品的項目,而訂單類是指針對某個具體的客戶定制軟件的項目,訂單類的項目根據(jù)需要協(xié)調(diào)的資源的范圍有劃分成了公司級、部門級、個人級三類,非訂單類根據(jù)估算的工作量的大小也分成了A、B、C三類,估算的工作量超過720人天的為A類,超過360人天的為B類,360人天以下的為C類。不同類的項目管理的側(cè)重點是不同的,從立項手續(xù)的完備性、計劃的嚴(yán)格層度、周報的完備層度、規(guī)范的嚴(yán)格層度、跟蹤的實時性、是否進行階段總結(jié)、是否核算項目成本、是否嚴(yán)格進行階段評審等多個方面來考慮,以確保管理的可行性。 6簡單有效原則 項目經(jīng)理在進行項目管理的過程中,往往會得到開發(fā)人員這樣的抱怨"太麻煩了,浪費時間,沒有用處",這是很普遍的一種現(xiàn)象。當(dāng)然這樣的抱怨要從2個方面來分析,一方面從開發(fā)人員本身可能存在不理解,或者逆反心理的情況,另一方面,項目經(jīng)理也要反思:我所采取的管理措施是否簡單有效?搞管理不是搞學(xué)術(shù)研究,沒有完美的管理,只有有效的管理,而項目經(jīng)理往往試圖堵住所有的漏洞,解決所有的問題,恰恰是這種理想,會使項目的管理陷入一個誤區(qū),作繭自縛,最后無法實施有效的管理,導(dǎo)致項目的失敗。 7規(guī)??刂圃瓌t 該原則是和上面提到的其他原則相配合使用的,即要控制項目組的規(guī)模,不要人數(shù)太多,人數(shù)多了,進行溝通的渠道就多了,管理的復(fù)雜度就高了,對項目經(jīng)理的要求也就高了。在微軟的MSF中,有一個很明確的原則就是要控制項目組的人數(shù)不要超過10人,當(dāng)然這不是絕對的,也和項目經(jīng)理的水平有很大關(guān)系。但是人員"貴精而不貴多",這是一個基本的原則,這和我們上面提到的高效原則、分解原則是相輔相成的。 空白1:為效益而實施項目管理 空白2:考慮所處環(huán)境 空白3:合理評判軟件項目管理 空白4:心理學(xué)的必要性 空白5:尊重常識,系統(tǒng)性考慮問題 空白6:學(xué)會思考 空白7:學(xué)會計劃 |
|