1 軟件開發(fā)項(xiàng)目管理的應(yīng)用現(xiàn)狀
近些年來,信息技術(shù)和互聯(lián)網(wǎng)技術(shù)在各行各業(yè)中發(fā)展迅速,軟件產(chǎn)業(yè)隨之興起。人們?yōu)榱俗非蟾叩墓ぷ餍?,開發(fā)出許多功能強(qiáng)大的軟件產(chǎn)品用以替代傳統(tǒng)的工作方法,從簡單的成品軟件,到復(fù)雜的定制開發(fā),越來越多的人開始接觸到軟件開發(fā)工作,軟件開發(fā)工具層出不窮,軟件開發(fā)企業(yè)也如雨后春筍般快速成長。在軟件開發(fā)項(xiàng)目執(zhí)行過程中,無論是用戶還是開發(fā)人員常常會(huì)遇到各種各樣的問題,使得軟件開發(fā)工作停滯不前甚至面臨失敗。這是因?yàn)檐浖_發(fā)是一項(xiàng)復(fù)雜的系統(tǒng)工程,它要求軟件開發(fā)工作的參與人員要全面系統(tǒng)的了解軟件開發(fā)項(xiàng)目的運(yùn)作特點(diǎn)和關(guān)鍵要素,并在整個(gè)軟件開發(fā)項(xiàng)目周期內(nèi)保持對項(xiàng)目的控制,當(dāng)遇到問題時(shí)給出合理的解決措施,將重復(fù)工作、錯(cuò)誤工作的概率降到最低,需要有一整套完善合理的方法對一個(gè)軟件開發(fā)項(xiàng)目進(jìn)行管控。
工程公司各項(xiàng)工作的開展離不開專業(yè)軟件的支撐,用戶對軟件的功能、適用性、開發(fā)周期的要求越來越高,軟件產(chǎn)品的標(biāo)準(zhǔn)化已經(jīng)成為趨勢,開發(fā)模式也必然向著模塊化、流程化等具有典型工業(yè)化特征的方式轉(zhuǎn)變。近些年來,工程公司在軟件開發(fā)項(xiàng)目方面的投資越來越多,時(shí)間跨度越來越久,涉及的技術(shù)越來越復(fù)雜,隨之而來的多種不確定因素對軟件項(xiàng)目的開發(fā)周期、質(zhì)量、效益等帶來巨大影響,軟件開發(fā)項(xiàng)目的參與者們也越來越多的意識到軟件開發(fā)項(xiàng)目過程管理的重要性,“管理”變成軟件開發(fā)項(xiàng)目的重中之重。
軟件開發(fā)項(xiàng)目管理簡單來說就是運(yùn)用一系列的知識、工具和技術(shù),整合各種資源,通過項(xiàng)目參與各方的協(xié)作達(dá)到項(xiàng)目的建設(shè)目標(biāo),其根本就是對時(shí)間、質(zhì)量和成本的管理。一些企業(yè)通過制定軟件管理相關(guān)規(guī)定來規(guī)范開發(fā)過程,但是在實(shí)際運(yùn)行過程中與理想情況還相差甚遠(yuǎn),軟件產(chǎn)品的開發(fā)進(jìn)度滯后、質(zhì)量不穩(wěn)定、后期運(yùn)維量大是困擾開發(fā)者和用戶的難題,不但對使用造成了麻煩,也直接影響了企業(yè)的效益。產(chǎn)生問題的原因多種多樣,總得來說是因?yàn)橐恍╅_發(fā)人員在項(xiàng)目管理的過程中有著許多誤區(qū):首先缺乏專業(yè)的項(xiàng)目管理人員,軟件項(xiàng)目負(fù)責(zé)人實(shí)施管理主要依靠技術(shù)和經(jīng)驗(yàn)積累,缺少項(xiàng)目管理專業(yè)知識;其次在項(xiàng)目的規(guī)劃階段缺少綱領(lǐng),制定的項(xiàng)目計(jì)劃隨意性大,細(xì)節(jié)考慮不周,無法進(jìn)行有效的進(jìn)度控制管理,這是出現(xiàn)許多未知問題導(dǎo)致工作進(jìn)度滯后的重要原因;溝通渠道和機(jī)制不完善或者執(zhí)行不到位,項(xiàng)目進(jìn)行中的重要信息沒有進(jìn)行有效的流轉(zhuǎn)和溝通,成員間各行其是,出現(xiàn)重復(fù)甚至無效的工作,造成了不必要的損失;項(xiàng)目團(tuán)隊(duì)分工和時(shí)間分配不合理,在不同項(xiàng)目階段由于團(tuán)隊(duì)內(nèi)部角色或工作流程的變化導(dǎo)致責(zé)任分工不明確,出現(xiàn)互相推諉或者越權(quán)工作的現(xiàn)象,造成項(xiàng)目組內(nèi)部資源的損耗,從而影響項(xiàng)目進(jìn)展;不重視風(fēng)險(xiǎn)管理,項(xiàng)目負(fù)責(zé)人沒有充分意識到風(fēng)險(xiǎn)管理的重要性,甚至為了盡早開始實(shí)施項(xiàng)目而刻意淡化風(fēng)險(xiǎn),面對已經(jīng)可見的風(fēng)險(xiǎn)時(shí)缺少對策,使得原本可控的風(fēng)險(xiǎn)演變成導(dǎo)致項(xiàng)目受損甚至失敗的事件。現(xiàn)階段,隨著專業(yè)軟件供應(yīng)商和大量高技術(shù)人才的參與,在技術(shù)層面和人力投入層面上的難題都不再難以逾越,反而是我們組織運(yùn)用技術(shù)和人力的能力需要提高,這就是強(qiáng)化軟件開發(fā)項(xiàng)目管理的意義。
2 軟件開發(fā)項(xiàng)目管理的目標(biāo)
項(xiàng)目管理,應(yīng)用在軟件開發(fā)項(xiàng)目中,最終的目標(biāo)是使軟件開發(fā)取得成功,既要滿足使用者提出的需求,又要實(shí)現(xiàn)開發(fā)人員的效益最大化。這就要求對軟件項(xiàng)目的開發(fā)需求、資源配置、實(shí)施成本、進(jìn)度節(jié)點(diǎn)、存在的風(fēng)險(xiǎn)等做到心中有數(shù)。在整個(gè)管理過程中要保證軟件開發(fā)項(xiàng)目的必要信息始終被管理和開發(fā)人員所掌握。
3 立項(xiàng)階段的管理
一個(gè)軟件開發(fā)項(xiàng)目,最初都是由一個(gè)特定的需求引出的,需求就是指這個(gè)軟件應(yīng)該“做什么”而不是“怎么做”,需求確定與否,直接影響著項(xiàng)目后續(xù)的所有進(jìn)程,甚至關(guān)系項(xiàng)目成敗。工程公司很多大型軟件的引進(jìn)與二次開發(fā),根本需求在于工程項(xiàng)目的使用需要,這些項(xiàng)目往往進(jìn)展比較順利,是因?yàn)樾枨蠓浅C鞔_,時(shí)間節(jié)點(diǎn)比較清晰,應(yīng)用的目標(biāo)也非常明確,這些都對開發(fā)人員制定開發(fā)計(jì)劃提供很好的指引。反觀一些由設(shè)計(jì)部門獨(dú)立立項(xiàng)開發(fā)的項(xiàng)目,往往存在較大的不確定性,開發(fā)進(jìn)度容易滯后,軟件成品質(zhì)量不穩(wěn)定,這些跟立項(xiàng)初期軟件需求的不確定不完善有很大關(guān)系。
要想確定需求,一般要做好兩個(gè)階段的工作:需求定義與需求分析。
廣義上,需求定義階段主要包括以下工作:收集用戶的需求并提交需求說明書的草稿;與用戶一起驗(yàn)證收集到的需求;對需求進(jìn)行跟蹤,及時(shí)發(fā)現(xiàn)變更。在收集需求的過程中,開發(fā)負(fù)責(zé)人面對的往往是眾多的實(shí)際用戶,其中有高層管理人員也有基層操作人員,各人的立場不同,對軟件功能的需求也不盡一致,有時(shí)還會(huì)將管理制度的缺陷夾雜其中,這是軟件本身無法解決的問題,這時(shí)就需要對他們提出的需求進(jìn)行過濾、篩選。最好的辦法就是請用戶指定一名項(xiàng)目負(fù)責(zé)人,將需求匯總后再反饋,這名項(xiàng)目負(fù)責(zé)人要有一定的權(quán)威,不但對本專業(yè)的工作較熟悉,也要對軟件開發(fā)技術(shù)有所了解,必要時(shí)可以由專業(yè)軟件開發(fā)團(tuán)隊(duì)對其進(jìn)行一定的培訓(xùn),這樣既使海量的需求得到匯總,又可在用戶層級對需求進(jìn)行過濾。
在需求分析階段主要包括以下工作:分析需求,確保收集的需求是明確、可用的;建立技術(shù)人員與用戶之間的聯(lián)系,使技術(shù)需求能有效覆蓋用戶需求;對需求進(jìn)行分級,制定需求說明書;由用戶來審核、批準(zhǔn)需求說明書。需求說明書作為需求確定階段的最終產(chǎn)物,體現(xiàn)的是用戶的最終意志,因此應(yīng)使用用戶易懂的自然語言,清晰明確的闡述軟件開發(fā)項(xiàng)目的目標(biāo)。特別要注意的是,在需求確定階段,要注意需求與項(xiàng)目計(jì)劃是否相匹配,現(xiàn)有技術(shù)是否能夠滿足實(shí)現(xiàn)需求,并且對于某些可能會(huì)發(fā)生變化的需求要格外注意,為需求變更預(yù)留一定的進(jìn)度。
這就要求所有項(xiàng)目的進(jìn)入審批流程前,要先提交立項(xiàng)報(bào)告,以立項(xiàng)報(bào)告為審批的依據(jù)。立項(xiàng)報(bào)告是一份描述項(xiàng)目可行性的正式文檔,是立項(xiàng)評審、決策的依據(jù),一般需要包括項(xiàng)目目標(biāo)、軟件概述、可行性分析、軟件定位、關(guān)鍵技術(shù)、難點(diǎn)與解決方法、進(jìn)度與成本估算等內(nèi)容,立項(xiàng)報(bào)告作為項(xiàng)目的指導(dǎo)性綱領(lǐng),在軟件驗(yàn)收階段需作為存檔內(nèi)容與軟件開發(fā)項(xiàng)目的成果一起歸檔。
風(fēng)險(xiǎn)管理同樣是軟件開發(fā)項(xiàng)目立項(xiàng)階段的重要工作。軟件項(xiàng)目的風(fēng)險(xiǎn)主要包括軟件開發(fā)的過程中可能產(chǎn)生的損失,軟件開發(fā)項(xiàng)目制造出一個(gè)軟件產(chǎn)品是一個(gè)逐步推進(jìn)過程,在每一個(gè)階段都有大量的未知要素,這些未知要素就構(gòu)成了風(fēng)險(xiǎn)。風(fēng)險(xiǎn)具有不確定性,因此風(fēng)險(xiǎn)管理從項(xiàng)目初始階段就要開始,管理過程從風(fēng)險(xiǎn)識別評估、風(fēng)險(xiǎn)預(yù)防、風(fēng)險(xiǎn)管理直到風(fēng)險(xiǎn)化解。風(fēng)險(xiǎn)識別階段要盡可能的預(yù)估軟件項(xiàng)目的需求收集、技術(shù)難度、資源儲備等方面是否存在不確定因素,通過開發(fā)成員與用戶之間的溝通和資料收集感知風(fēng)險(xiǎn),形成風(fēng)險(xiǎn)識別成果,明確的指出每個(gè)風(fēng)險(xiǎn)的來源、類型和解決預(yù)案,為風(fēng)險(xiǎn)評估和管理提供基礎(chǔ)數(shù)據(jù)。風(fēng)險(xiǎn)評估要對已知的風(fēng)險(xiǎn)進(jìn)行分析,計(jì)算出風(fēng)險(xiǎn)對進(jìn)度、經(jīng)費(fèi)、產(chǎn)品質(zhì)量可能造成的損害,評定這些損害是否在可承受的范圍內(nèi),這樣就可以對風(fēng)險(xiǎn)進(jìn)行分級管理。風(fēng)險(xiǎn)預(yù)防是從規(guī)章制度、組織決策和管理手段上提高整個(gè)軟件開發(fā)過程防御風(fēng)險(xiǎn)的能力,通過一些預(yù)留措施減少風(fēng)險(xiǎn)發(fā)生的概率,如使用冗余網(wǎng)絡(luò)連接、數(shù)據(jù)定期備份等。在一個(gè)軟件開發(fā)項(xiàng)目比較常見的風(fēng)險(xiǎn)包括:需求變更導(dǎo)致功能無限擴(kuò)展;系統(tǒng)設(shè)計(jì)不規(guī)范導(dǎo)致開發(fā)難度大;計(jì)劃進(jìn)度不符合實(shí)際進(jìn)度;人力不足或技術(shù)水平不夠;項(xiàng)目預(yù)算因商業(yè)問題出現(xiàn)變動(dòng)等。實(shí)施風(fēng)險(xiǎn)控制管理,要制定風(fēng)險(xiǎn)管理計(jì)劃,包含風(fēng)險(xiǎn)的發(fā)生時(shí)間、損失及應(yīng)對措施,指定項(xiàng)目風(fēng)險(xiǎn)管理者,執(zhí)行風(fēng)險(xiǎn)管理計(jì)劃并監(jiān)控更新風(fēng)險(xiǎn)狀態(tài)。開發(fā)人員之間、項(xiàng)目組與用戶之間要建立風(fēng)險(xiǎn)反饋渠道,關(guān)注高概率的風(fēng)險(xiǎn),確定風(fēng)險(xiǎn)間的交互關(guān)系和因果關(guān)系,通過消除產(chǎn)生風(fēng)險(xiǎn)的根源來避免風(fēng)險(xiǎn),在軟件開發(fā)項(xiàng)目團(tuán)隊(duì)內(nèi)部創(chuàng)建長效風(fēng)險(xiǎn)管理體制,樹立風(fēng)險(xiǎn)管理意識。
因此,在風(fēng)險(xiǎn)控制方面重要的是兩點(diǎn),一是對開發(fā)人員的投入進(jìn)行合理分配,人力投入多不代表著高效率,各盡其用才能有效推進(jìn)項(xiàng)目開展。二是做好立項(xiàng)軟件的前瞻性評估,在立項(xiàng)之初就研究該軟件是否與企業(yè)在用的核心軟件產(chǎn)生功能重復(fù)、不兼容的現(xiàn)象,避免生產(chǎn)出重復(fù)產(chǎn)品和信息孤島產(chǎn)品。
4 實(shí)施階段的管理
軟件開發(fā)項(xiàng)目的實(shí)施過程階段首先要制定項(xiàng)目計(jì)劃書,包含軟件開發(fā)項(xiàng)目的成本投入估計(jì)、進(jìn)度計(jì)劃、人力資源配置評估等。項(xiàng)目計(jì)劃書作為項(xiàng)目管理的依據(jù),是指導(dǎo)項(xiàng)目全過程的可操作的文件,是項(xiàng)目全面發(fā)展的路標(biāo)。它既體現(xiàn)了用戶的需求,又是軟件開發(fā)項(xiàng)目活動(dòng)的基礎(chǔ),軟件開發(fā)項(xiàng)目的預(yù)算規(guī)劃是控制項(xiàng)目整體成本的尺度,是項(xiàng)目計(jì)劃書的依托。一個(gè)好的項(xiàng)目計(jì)劃書往往要經(jīng)過不斷完善和評審,通過資源調(diào)整、優(yōu)化工期、降低預(yù)算等方式,才能具有強(qiáng)大的可執(zhí)行力。項(xiàng)目計(jì)劃各個(gè)分項(xiàng)的制訂都不是獨(dú)立的,要從全局出發(fā),實(shí)現(xiàn)統(tǒng)一管理。
軟件開發(fā)項(xiàng)目管理要嚴(yán)格按照項(xiàng)目計(jì)劃書執(zhí)行,確保在預(yù)算范圍內(nèi),項(xiàng)目可以按照用戶需求和時(shí)間進(jìn)度執(zhí)行。在這個(gè)過程中要制訂實(shí)際進(jìn)度的測量節(jié)點(diǎn),將測量所得的實(shí)際進(jìn)度與計(jì)劃進(jìn)度對比后,如出現(xiàn)滯后,就需要分析影響項(xiàng)目進(jìn)度的因素,及時(shí)對人力和其他資源進(jìn)行調(diào)整,必要時(shí)也可對預(yù)算進(jìn)行調(diào)整,對項(xiàng)目運(yùn)行全周期進(jìn)行有效的掌控。在這個(gè)過程中,需要隨時(shí)掌握確定已完成的工作,對下一步工作進(jìn)行評估,看是否存在技術(shù)、預(yù)算的風(fēng)險(xiǎn)點(diǎn),對于項(xiàng)目計(jì)劃中的關(guān)鍵節(jié)點(diǎn)要制訂專門的進(jìn)度計(jì)劃。軟件開發(fā)項(xiàng)目在實(shí)際運(yùn)行中總會(huì)出現(xiàn)意外問題,例如人員變動(dòng)、預(yù)算縮減等等,問題是在項(xiàng)目過程中提出的,是未能預(yù)料到的延緩項(xiàng)目進(jìn)展的障礙,這也是任何項(xiàng)目都不可避免的,一個(gè)合格的項(xiàng)目負(fù)責(zé)人在面對問題時(shí)要客觀、冷靜,不糾結(jié)于劃分責(zé)任,對問題進(jìn)行主次分級,利用現(xiàn)有資源及時(shí)解決問題。
預(yù)算制,是軟件開發(fā)項(xiàng)目管理的核心制度之一,在專業(yè)軟件開發(fā)企業(yè),預(yù)算控制著軟件開發(fā)項(xiàng)目的整個(gè)過程,預(yù)算分配是否合理直接影響著軟件開發(fā)的進(jìn)度和參與者的積極性,按期完成項(xiàng)目的關(guān)鍵節(jié)點(diǎn)才能達(dá)到預(yù)算給付的條件。工程公司實(shí)施的軟件開發(fā)項(xiàng)目過程管理,主要是中間檢查、人工時(shí)填報(bào)以及獎(jiǎng)酬金的發(fā)放。中間檢查實(shí)際上就是項(xiàng)目關(guān)鍵節(jié)點(diǎn)的測量工作,是對項(xiàng)目進(jìn)度和質(zhì)量的檢驗(yàn),人工時(shí)填報(bào)則是對中間檢查的輔助審核手段,而獎(jiǎng)酬金則在前兩者的基礎(chǔ)上進(jìn)行核算。引入預(yù)算制度,能夠較好的控制軟件開發(fā)獎(jiǎng)酬金的發(fā)放比例和額度,每個(gè)開發(fā)項(xiàng)目的獎(jiǎng)酬金可分為預(yù)支獎(jiǎng)金和考核獎(jiǎng)金兩部分,預(yù)支獎(jiǎng)金作為每季度的固定額度納入全年固定預(yù)算,考核獎(jiǎng)金則屬于浮動(dòng)預(yù)算范圍,需要軟件開發(fā)項(xiàng)目負(fù)責(zé)人進(jìn)行申請,由信息化管理部門和開發(fā)負(fù)責(zé)人進(jìn)行對接評審,在完成中間成果評審的情況下才能進(jìn)行考核獎(jiǎng)金的結(jié)算,獎(jiǎng)勵(lì)金額合理的向進(jìn)度良好、成果明顯的項(xiàng)目傾斜。
5 交付階段的管理
軟件開發(fā)項(xiàng)目的產(chǎn)品交付,是整個(gè)項(xiàng)目過程結(jié)果的最終檢驗(yàn),交付階段的重要環(huán)節(jié)就是驗(yàn)收。驗(yàn)收是保障軟件質(zhì)量并對項(xiàng)目管理成敗給予評價(jià)的重要節(jié)點(diǎn)。
軟件產(chǎn)品正式交付前必須要經(jīng)過測試。測試的基本目標(biāo)是檢驗(yàn)軟件產(chǎn)品是否按照原定的方式運(yùn)行,在模擬的使用環(huán)境中是否存在可能的缺陷以及長期使用的可靠性。測試不僅僅是簡單的程序運(yùn)行,而是需要大量的真實(shí)數(shù)據(jù)來構(gòu)成測試用例,為了達(dá)到盡可能暴露產(chǎn)品錯(cuò)誤的目標(biāo),測試用例的數(shù)據(jù)內(nèi)容應(yīng)當(dāng)具有普遍性和特殊性,這些數(shù)據(jù)都是在長期工作中累積起來的,軟件測試人員很難獲得眾多行業(yè)內(nèi)容的真實(shí)數(shù)據(jù),這就要求更多的用戶要深入的參與到測試當(dāng)中,給出使用體驗(yàn)并進(jìn)行結(jié)果校驗(yàn)。要指出的是,測試并不是只在項(xiàng)目末期,而是貫穿于整個(gè)項(xiàng)目周期,使測試和程序開發(fā)同步進(jìn)行,這樣會(huì)提高發(fā)現(xiàn)錯(cuò)誤的概率,及時(shí)對產(chǎn)品質(zhì)量進(jìn)行修正。測試的最終結(jié)果要形成完善的測試文檔,這些文檔是度量和評定軟件質(zhì)量的依據(jù),也是項(xiàng)目團(tuán)隊(duì)最重要的工作成果匯報(bào),為下一階段軟件產(chǎn)品的修改、發(fā)布和維護(hù)提供支持。
當(dāng)軟件測試完成后,就可以進(jìn)行軟件產(chǎn)品的發(fā)布。發(fā)布階段要建立完善的版本控制體系,要確保所有的程序都被集中存放并凍結(jié),所有測試中發(fā)現(xiàn)的缺陷都已被修復(fù),程序打包并通過測試,編碼和文檔(包含源代碼文件、需求分析文檔、測試文檔、安裝手冊、使用手冊、二次開發(fā)手冊、產(chǎn)品信息文檔等)全部集中入庫,形成一個(gè)完整的交付物,由軟件開發(fā)項(xiàng)目負(fù)責(zé)人按照規(guī)定方式交付用戶使用。達(dá)到交付條件后,要根據(jù)用戶的需求提供培訓(xùn)及維護(hù),要及時(shí)反饋用戶的使用體驗(yàn),
軟件開發(fā)項(xiàng)目的驗(yàn)收歸檔,不能只局限于設(shè)計(jì)說明書和用戶操作手冊,為了提高軟件開發(fā)的正規(guī)化,為今后的升級和遷移提供保障,應(yīng)當(dāng)適當(dāng)增加存檔內(nèi)容,將立項(xiàng)報(bào)告和測試驗(yàn)收報(bào)告納入存檔范圍,歸檔流程審批施行網(wǎng)絡(luò)化,對整個(gè)歸檔過程進(jìn)行跟蹤管理。
6 結(jié)語
軟件開發(fā)項(xiàng)目管理并不能替代軟件工程,項(xiàng)目管理與軟件工程有一定的交集,軟件工程的知識領(lǐng)域并不包括項(xiàng)目管理,但與其息息相關(guān)。軟件工程的生命周期、技術(shù)方法及工具是軟件開發(fā)項(xiàng)目管理的基礎(chǔ)?!爸圃煊杏玫能浖a(chǎn)品”是軟件項(xiàng)目的根本,軟件項(xiàng)目與其他工程項(xiàng)目相比,有很多獨(dú)有特點(diǎn),經(jīng)過長期的知識積累,已經(jīng)總結(jié)出軟件產(chǎn)品制造過程中的許多規(guī)律,形成了成熟的工業(yè)化方法,因此,當(dāng)我們把項(xiàng)目管理應(yīng)用到軟件項(xiàng)目中的時(shí)候,必須遵循這一規(guī)律。在管理論中,十分重視管理者在相關(guān)領(lǐng)域中的專業(yè)知識,在執(zhí)行管理的不同階段,強(qiáng)調(diào)利用相應(yīng)的資源、采用適當(dāng)?shù)墓芾矸椒▉磉m應(yīng)產(chǎn)品的要求,軟件開發(fā)項(xiàng)目管理體系也同樣如此。管理的水平高低將成為衡量工程公司信息化工作成效的重要標(biāo)準(zhǔn),我們需要更多的軟件開發(fā)專業(yè)人士去學(xué)習(xí)項(xiàng)目管理理論,參與到項(xiàng)目管理之中,對于用戶和開發(fā)者而言,這是一種變革,高效的管理將為工程公司節(jié)約成本和時(shí)間,促進(jìn)各類應(yīng)用軟件為工程公司創(chuàng)造更多的效益,從而帶動(dòng)工程公司信息化應(yīng)用水平的整體提升。歡迎聯(lián)系無錫小禾呈科技-軟件開發(fā)專家(15358092238,電話微信同號)。