0、引言
項目管理是伴隨著項目進行而進行的,是一種為了滿足甚至超越項目所有者對項目的期望而將理論知識、技能、工具和技巧應用到項目中的管理活動,是一門關(guān)于項目資金、時間、人力等資源控制的管理科學。
顧名思義,軟件項目管理是項目管理在軟件領(lǐng)域的應用,是一種為了能夠按照預定的工期、質(zhì)量順利完成軟件項目而對成本、人員、進度、質(zhì)量、風險等進行控制管理的活動。其核心在于通過有效的管理,明確項目范圍,合理調(diào)配人力資源,提高項目團隊的整體開發(fā)能力,優(yōu)化項目執(zhí)行過程,控制項目成本,為用戶提供滿意的軟件產(chǎn)品。
1、軟件項目管理的特點
軟件是一種特殊的產(chǎn)品,這種產(chǎn)品的特殊性之一是它的生產(chǎn)活動是以項目的形式進行的,因此,項目管理對軟件生產(chǎn)具有決定性的意義。軟件項目管理除了具有一般項目管理的特點外,還有其獨特之處,主要表現(xiàn)在:
(1)軟件產(chǎn)品缺乏硬性度量指標。
軟件的大特點在于一個“軟”字,它不像建筑項目,終可以有一個實物,可以用某一個標準去剛性的度量評價。而軟件產(chǎn)品客觀上具有“不可見性”,表現(xiàn)在它沒有一個可見的實物,還表現(xiàn)在其度量指標也不能像度量實物那樣具有明確性。有效的項目管理是要使軟件及其生產(chǎn)過程由不可見、不可度量變成可見和可度量。
(2)重視應用領(lǐng)域的業(yè)務(wù)知識。
對于計算機應用軟件來說,它并不單純是計算機技術(shù)問題,更多地表現(xiàn)在它所服務(wù)的業(yè)務(wù)領(lǐng)域的知識技能。如企業(yè)ERP、SCM等應用軟件項目,計算機只是它的載體,計算機技術(shù)往往并不起決定作用,而與之相關(guān)的業(yè)務(wù)知識、管理知識顯得更加重要。
(3)管理比技術(shù)本身更重要。
軟件項目是一項計算機技術(shù)、信息技術(shù)、管理科學等多學科交叉的系統(tǒng)工程。隨著信息技術(shù)的發(fā)展,軟件項目應用領(lǐng)域不斷擴張、項目規(guī)模不斷擴大、項目業(yè)務(wù)日趨復雜,一個軟件從構(gòu)想到完成,需要大量的從事不同工作的人共同努力,個人單打獨斗的作坊式開發(fā)方式顯然已經(jīng)無法適應這種信息技術(shù)發(fā)展的需要。在一個大型信息系統(tǒng)工程項目里,需要系統(tǒng)策劃人員、分析設(shè)計人員、編程人員、測試人員和用戶等眾多人員的共同參與和密切配合,如何將可用資源有效地結(jié)合在一起,并使之發(fā)揮大效率,如何保證項目按照預定的時間將預先約定的軟件產(chǎn)品提交給客戶是軟件項目管理的核心任務(wù)。項目管理往往成為決定軟件項目成敗的重要因素。
(4)強調(diào)文檔的重要性。
文檔是軟件產(chǎn)品的重要組成部分,軟件項目管理以工程化的管理方法,強調(diào)規(guī)范文檔的重要性,在軟件生命周期的各個階段,強調(diào)對里程碑文檔的評審,并把文檔作為階段成果的重要體現(xiàn)和下階段的基礎(chǔ)。
(5)重視培訓與服務(wù)的價值。
培訓與服務(wù)是發(fā)掘軟件產(chǎn)品價值的重要手段。一個軟件產(chǎn)品,如果沒有人使用不能形成價值,如果不會使用,可能降低軟件的價值。服務(wù)的優(yōu)劣已經(jīng)直接影響軟件的使用價值并決定軟件產(chǎn)品的生命周期?傊,軟件項目管理重視培訓與服務(wù)在軟件增值中的意義。
2、管理架構(gòu)矩陣模型
規(guī)范化的管理體現(xiàn)在:有完整的基于軟件開發(fā)標準(如CMM、ISO等)的開發(fā)流程;有基于這個流程的完整詳細的開發(fā)計劃;有基于開發(fā)計劃的成本預算和成本控制方法;有明確的階段檢查措施和評價標準;有明確的質(zhì)量管理體系和質(zhì)量保證實施手段,保證項目在可控狀態(tài)下進行。而這一切都需要有一個組織有效的管理團隊和運作規(guī)范的管理架構(gòu)。
在軟件項目管理過程中,項目經(jīng)理起著至關(guān)重要的作用。對于項目經(jīng)理,目前有兩種觀點:一種認為軟件項目經(jīng)理應該是計算機某方面的應用專家,能夠?qū)椖拷M成員給予技術(shù)指導,如此才有能力合理安排工作。另一種觀點則認為,項目經(jīng)理應該是職業(yè)經(jīng)理,他可以不是計算機技術(shù)專家,但應該是管理專家,具備輕松調(diào)配各部門資源的技巧和有效地組織、管理開發(fā)隊伍、協(xié)調(diào)溝通的能力,他的作用主要體現(xiàn)在協(xié)調(diào)、管理、合理安排成員的工作,控制項目進度和費用,與用戶溝通,等等。事實上,在一般意義上,不管是技術(shù)型專家還是管理型專家都無法滿足現(xiàn)代軟件項目管理的需要。在傳統(tǒng)的垂直型管理模式中,項目經(jīng)理要直接管理到具體的程序員,一般只適用于不太復雜的技術(shù)型項目,它忽視了中間層的作用,不便于發(fā)揮員工的積極性。而扁平化管理意味著要面對很多的直接下級,對管理者提出了很高的管理要求,特別對于大型項目來說,可能涉及到很多業(yè)務(wù)領(lǐng)域知識,他都要面面俱到,這對于一個不管是技術(shù)型還是管理型項目經(jīng)理來說似乎都很難做到,即使對于所謂既懂專業(yè)又懂管理的全才專家來說,也不可能要求他在各個方面都是的。
眾所周知的事實是,找一個既懂專業(yè)又有項目管理經(jīng)驗的專家往往比較困難,但如果找?guī)讉或懂專業(yè)或懂項目管理的專家也許并不困難。一個好的軟件項目團隊應該是它可以有效整合各成員的能力,使集體的能量達到大化。因此,與其找一個所謂全才的項目經(jīng)理,還不如構(gòu)建規(guī)范的管理架構(gòu)。根據(jù)筆者多年的軟件開發(fā)、項目管理的實踐和經(jīng)驗,提出了“矩陣式”軟件項目管理模型。在這個模型中,項目經(jīng)理也只是其中的一個角色而已。他并不需要面面俱到,也不需要掌握項目的全部細節(jié),他要做的全部工作是按管理規(guī)范要求完成項目經(jīng)理這個角色所特有的工作。在這個架構(gòu)下,更便于發(fā)揮項目團隊中備人所長,使集體的智慧得以充分張揚。每個人所做的工作(包括他的知識)都已經(jīng)留存下來了,即使項目經(jīng)理因故離職,接任者也可以從容接手,從而降低了因為人員流動可能對項目造成的風險。
每個業(yè)務(wù)子系統(tǒng)有一個業(yè)務(wù)專家負責,他們一般都精通某一個方面的業(yè)務(wù),由他們直接面對用戶,可以與用戶業(yè)務(wù)人員有更多的共同語言,便于交流,更容易捕獲用戶需求。而在軟件開發(fā)的每個階段,按軟件工程生命周期,各階段由具有技術(shù)專長的技術(shù)人員負責。所以,整體上可以充分發(fā)揮各業(yè)務(wù)負責人精通業(yè)務(wù)領(lǐng)域知識和階段負責人精通相關(guān)技術(shù)的優(yōu)勢,使項目團隊整體成為名副其實的既懂專業(yè)又懂管理的專家。
矩陣管理可以更好地發(fā)揮各專業(yè)人員的業(yè)務(wù)專長,又能更好地發(fā)揮各技術(shù)層面技術(shù)人員的特長,項目經(jīng)理重要的工作是協(xié)調(diào),重點在于如何結(jié)合眾多資源控制整個開發(fā)進程。矩陣模型也有利于軟件公司人才戰(zhàn)略,有利于組織內(nèi)部人才的培養(yǎng),充分展現(xiàn)個人的發(fā)展空間。大多數(shù)軟件企業(yè)也許都很難有精通所有專業(yè)的全才,但都擁有為數(shù)眾多精通某一類業(yè)務(wù)的系統(tǒng)分析師,或精通某一類專門技術(shù)的專門人才。根據(jù)矩陣模型,公司可以培養(yǎng)員工向不同方向發(fā)展,有技術(shù)特長的,培養(yǎng)他發(fā)展技術(shù)的深度,有其他專業(yè)特長的,比如精通稅務(wù)、金融、企業(yè)管理等,則培養(yǎng)成業(yè)務(wù)專家。這樣,在人盡其才的同時,又有利于留住人才,穩(wěn)定了軟件開發(fā)隊伍。
3、計劃與過程控制
項目計劃包括風險管理計劃、質(zhì)量管理計劃、人力資源計劃、環(huán)境資源計劃等。軟件項目計劃和過程控制為消除或削弱軟件的“不可見”帶來的不確定性提供了很好的保障措施;谌蝿(wù)分解(WBS)的工作分配和項目組織結(jié)構(gòu),明確每個項目開發(fā)人員的責任以及他們之間的連接,把整個項目周期劃分為若干個小的階段,每個階段都有明確的目標和階段成果及其確認準則。由于把每個階段要完成的工作、預期的成果都清晰地描述出來了,一方面,可以使用戶不斷看到一個個階段成果,而不是在項目全部完工后才看到一個大的成果,增強了用戶的信心;另一方面。通過明確的階段結(jié)果,隨時收集有關(guān)項目進程數(shù)據(jù),按計劃規(guī)定進行進度管理,使開發(fā)過程和階段成果都是可見的,也便于發(fā)現(xiàn)問題、控制開發(fā)過程,不至于什么問題都要到后才一次暴露,減少了項目風險。
當然,如果僅僅有好的項目計劃而缺乏有效的執(zhí)行機制和監(jiān)督措施,項目仍然可能失去控制。成功項目的標志是在規(guī)定的時間、合理開支的條件下,完成約定的需求,實現(xiàn)系統(tǒng)的終目標。有效實施項目進度控制是項目成功的重要保障,是每一個項目經(jīng)理必須非常重視的工作。實現(xiàn)有效項目過程控制的方法主要是通過定期和不定期的檢查體現(xiàn)的。
(1)階段檢查。
不定期的階段性檢查,一般在關(guān)鍵任務(wù)或里程碑任務(wù)的計劃完成時進行的,即在項目的每個階段結(jié)束時都要經(jīng)過詳細的評估。檢查的重點是該階段里程碑任務(wù)是否完整地實現(xiàn)了,是否可以轉(zhuǎn)入下階段的工作。
(2)定期檢查。
為了隨時掌控項目進度執(zhí)行情況,建立定期信息報告制度是一個行之有效的措施。定期的檢查一般分周例會和月例會,例會檢查的重點是:需求列表、風險列表、計劃執(zhí)行情況、質(zhì)量保證情況等。通過周報月報,溝通并掌握各方信息,對存在的問題和困難進行匯總,提交例會處理解決,降低不確定性因素對項目工期的影響,保證項目順利進行。
定期或不定期地對項目進度計劃表進行檢查,對于不合格的項目進度計劃表或未按照項目進度計劃表執(zhí)行的項目給予相應處理,及時發(fā)現(xiàn)問題,盡早調(diào)整計劃偏差,大限度地避免損失。這樣,在項目進行過程中比較容易把握每個階段項目的進展情況,方便對項目組成員的績效進行階段性評估,便于統(tǒng)一項目經(jīng)理和客戶的認識。增加項目風險的可控性。
4、需求管理矩陣模型
軟件項目的大難點往往在于需求的不確定性,所以,有人認為好的需求是軟件項目成功的一半。需求的困難主要表現(xiàn)在計算機技術(shù)人員與用戶業(yè)務(wù)人員由于不同的語境,存在溝通困難。用戶業(yè)務(wù)人員可能不清楚計算機系統(tǒng)實現(xiàn)細節(jié),或并不知道需求人員到底需要了解什么,而計算機技術(shù)人員可能由于不熟悉業(yè)務(wù),往往又缺乏引導用戶表達需求的業(yè)務(wù)素質(zhì)和技巧,所以,影響了雙方溝通和交流,造成的結(jié)果可能是用戶往往不能清楚地描述自己的需求或計算機人員不能準確地理解需求,從而影響了需求的終描述。另一方面,對于管理信息系統(tǒng)來說,需求的不確定還表現(xiàn)在業(yè)務(wù)流程的變化上,特別對于現(xiàn)階段還處于不斷變革時期的我國企業(yè)來說,情況更是如此。
一般來說,用戶在看到終系統(tǒng)以后,通過不斷地應用實踐,激發(fā)了用戶的聯(lián)想,可能提出新的或改進的需求。所以,在項目一開始,技術(shù)人員必須對此有充分的認識,既要盡可能全面了解現(xiàn)有需求,也要充分預計到可能的需求變更,為系統(tǒng)設(shè)計留有變更或擴充的余地。另一方面,應該盡可能讓用戶盡早介入,直接參與階段評審和驗收,以便及時發(fā)現(xiàn)需求執(zhí)行偏失,不至于什么都等到全部完工后才發(fā)現(xiàn)問題,才一并解決問題。在項目的后期改正一個錯誤的代價往往是在前期的數(shù)倍。所以,需求管理成為軟件項目成敗的另一個關(guān)鍵因索之一。
根據(jù)筆者的經(jīng)驗,建立需求矩陣跟蹤表是進行需求管理很好的工具。通過跟蹤表,項目涉眾可以隨時了解關(guān)于軟件需求的實現(xiàn)過程。用戶可以從中隨時看到階段性成果,方便用戶及時測試、確認已實現(xiàn)的需求,便于用戶積極參與,便于及時發(fā)現(xiàn)問題,改正問題。
5、結(jié)束語
當代信息技術(shù)正以超乎尋常的速度發(fā)展,軟件項目規(guī)模不斷擴大,應用日趨復雜,失敗的案例屢見不鮮,人們逐漸把眼光聚焦到關(guān)于軟件項目管理方法的研究,項目管理正逐漸成為當今世界解決軟件危機的一種主流管理方法。矩陣模型已在大量的工程實踐中被證明是行之有效的。