軟件項(xiàng)目管理的思考項(xiàng)目管理論文
隨著計(jì)算機(jī)硬件水平的不斷提高,計(jì)算機(jī)軟件的規(guī)模和復(fù)雜度也隨之增加。軟件項(xiàng)目中一些問題也應(yīng)運(yùn)而生:項(xiàng)目無法按期完成、項(xiàng)目合作方的工作難以協(xié)調(diào)、用戶需求經(jīng)常變動(dòng)、工作質(zhì)量難以保證。為了避免愈來愈多的“項(xiàng)目黑洞”給企業(yè)帶來的損失,各個(gè)軟件企業(yè)都將軟件項(xiàng)目管理引入到開發(fā)活動(dòng)中來,對(duì)開發(fā)實(shí)行有效的管理。
一、軟件項(xiàng)目引入項(xiàng)目管理的必要性
軟件項(xiàng)目即軟件開發(fā)項(xiàng)目,是一個(gè)用計(jì)算機(jī)程序和相關(guān)技術(shù)文檔把思想表達(dá)出來的過程。軟件項(xiàng)目所涉及到的內(nèi)容大多是無形的東西,既看不到質(zhì),也看不到量,從而使軟件項(xiàng)目的管理難度加大。
隨著信息技術(shù)的飛速發(fā)展,軟件產(chǎn)品的規(guī)模也越來越大,完全由個(gè)人完成一個(gè)軟件項(xiàng)目幾乎是不可能的,軟件項(xiàng)目的開發(fā)都是以項(xiàng)目組為單位完成的,這必然涉及到對(duì)軟件項(xiàng)目的管理。一個(gè)軟件項(xiàng)目的成敗,不在于其項(xiàng)目組的技術(shù)人員的技術(shù)水平,而在于是否采用合適的管理方式。好的管理方式不一定能使項(xiàng)目完全成功,但是一個(gè)不合適的管理模式肯定會(huì)導(dǎo)致軟件項(xiàng)目的失敗。
項(xiàng)目管理是指在一定資源如時(shí)間、資金、人力和設(shè)備等約束條件下,對(duì)一個(gè)有既定目標(biāo)(質(zhì)量、投資、進(jìn)度)要求的任務(wù)進(jìn)行計(jì)劃和控制的過程。項(xiàng)目管理以系統(tǒng)的觀點(diǎn)來對(duì)一個(gè)項(xiàng)目進(jìn)行全程的控制,同樣也可以用此來完成對(duì)軟件項(xiàng)目的管理,而且由于軟件項(xiàng)目的特殊性,項(xiàng)目管理在應(yīng)用于軟件項(xiàng)目的管理時(shí),也會(huì)有其獨(dú)特的一面。在項(xiàng)目管理應(yīng)用于軟件項(xiàng)目的管理方面,已經(jīng)有了不少成功的案例。
二、影響軟件項(xiàng)目管理的關(guān)鍵要素
(一)可靠的軟件需求
軟件需求是軟件項(xiàng)目的根本所在,需求不明確,工作就沒有方向,因此影響軟件項(xiàng)目的第一個(gè)因素就是項(xiàng)目要有一個(gè)可靠的需求。軟件需求應(yīng)當(dāng)是項(xiàng)目有關(guān)的人員一致同意的、清楚的、完整的、詳細(xì)的、可實(shí)現(xiàn)的和可測試的。
需求的確定,開發(fā)者應(yīng)該認(rèn)真聽取用戶的意見,并進(jìn)行記錄,反復(fù)和用戶溝通,不能想當(dāng)然地把自己的想象當(dāng)作用戶的需求。在確定用戶需求的時(shí)候,應(yīng)該盡可能從專業(yè)的角度發(fā)掘用戶的潛在需求,以達(dá)到最大限度地滿足用戶的目標(biāo),只有這樣才能可能開發(fā)有價(jià)值的軟件項(xiàng)目。一定要強(qiáng)調(diào)的是,在項(xiàng)目開始以后,應(yīng)該盡最大可能不更改需求,要與用戶進(jìn)行很好地溝通,以確保開發(fā)工作能按照需求進(jìn)行,也就是說,只有有了可靠的需求,項(xiàng)目開發(fā)才有基本保證。
(二)可行的項(xiàng)目計(jì)劃
凡事預(yù)則立,不預(yù)則廢。這里的預(yù)就是指計(jì)劃。明確了項(xiàng)目目標(biāo),還必須有一個(gè)切實(shí)可行的計(jì)劃。軟件項(xiàng)目計(jì)劃的目的是為完成軟件工程和管理軟件項(xiàng)目。制定合理的計(jì)劃,它包括以下步驟:估計(jì)軟件
產(chǎn)品規(guī)模及所需的資源,制定時(shí)間表,鑒別和評(píng)估軟件風(fēng)險(xiǎn)和協(xié)商約定,而且要標(biāo)志出幾個(gè)階段性的里程碑,這是極為關(guān)鍵的一點(diǎn)。對(duì)于軟件企業(yè)來說,一個(gè)可行的計(jì)劃的重要性是不言而喻的。但是在一些單位,很多人都聽過這樣的一句話一“計(jì)劃趕不上變化”。這種變化對(duì)某些行業(yè)來說也許并不會(huì)產(chǎn)生太大的影響,但是對(duì)于軟件企業(yè)來說,卻會(huì)對(duì)軟件產(chǎn)品的保證帶來嚴(yán)重的負(fù)面影響。造成這種現(xiàn)象的原因很多,主要是因?yàn)閷?duì)計(jì)劃的重視程度不夠,計(jì)劃過于籠統(tǒng)、粗糙,導(dǎo)致可執(zhí)行性差,再加上一些人為因素的影響,必然會(huì)產(chǎn)生一些不良的影響。因此,要想成功進(jìn)行項(xiàng)目管理,就要對(duì)計(jì)劃高度重視,周密制定,嚴(yán)格執(zhí)行。只有嚴(yán)格進(jìn)行計(jì)劃,才能使項(xiàng)目管理得以成功實(shí)施。
(三)規(guī)范的操作流程
軟件開發(fā)流程非常規(guī)范和系統(tǒng)化,其流程的可執(zhí)行性很高,并且能在實(shí)踐過程中不斷改進(jìn)。流程是保證項(xiàng)目成功的一個(gè)關(guān)鍵因素。由優(yōu)秀的項(xiàng)目成員按照規(guī)范的操作流程進(jìn)行項(xiàng)目開發(fā),才能最大限度地保證項(xiàng)目的成功。一個(gè)規(guī)范的流程可以保證不是很出色的人開發(fā)出來的,產(chǎn)品不至于太差,但不能保證做出精品,而一個(gè)不規(guī)范的流程很難做出好的產(chǎn)品。
通過流程可以實(shí)現(xiàn)一種規(guī)范化、流水線、工業(yè)化的軟件,從而最終實(shí)現(xiàn)成功的項(xiàng)目管理。對(duì)于軟件項(xiàng)目的每一個(gè)階段均要做出工作計(jì)劃并交有關(guān)部門監(jiān)督執(zhí)行,在階段結(jié)束之后,要對(duì)該階段的工作活動(dòng)進(jìn)行評(píng)價(jià),并對(duì)后續(xù)階段的時(shí)間、人員、資金方面的需求做出估計(jì)。每個(gè)階段的工作成果需經(jīng)項(xiàng)目的技術(shù)管理部門審查合格后,方能開始下一階段的工作。
(四)有效的人員溝通
軟件項(xiàng)目的實(shí)施對(duì)人的依賴性比其他行業(yè)更為突出,它是一項(xiàng)知識(shí)性極強(qiáng)的工作,因此對(duì)人的管理相當(dāng)復(fù)雜,如何加強(qiáng)人員之間的有效溝通,是軟件項(xiàng)目成功的一個(gè)非常關(guān)鍵的因素。這里的溝通包括兩個(gè)方面:一個(gè)是軟件項(xiàng)目組開發(fā)人員與用戶的溝通;另一個(gè)是軟件項(xiàng)目組內(nèi)人員的溝通。只有對(duì)用戶的需求非常明確,軟件項(xiàng)目的實(shí)施才有一個(gè)堅(jiān)實(shí)的基礎(chǔ)。對(duì)用戶的需求不明確,開發(fā)出的軟件根本沒法用,所以這樣的項(xiàng)目在一開始就是失敗的。組內(nèi)人員的溝通有助于在明確了用戶需求后,使得項(xiàng)目能按計(jì)劃進(jìn)展,最后才有可能完成該軟件項(xiàng)目。
沒有最好的溝通方式,只有最有效的溝通。因此溝通因人因事而采用不同的溝通方式,才可以達(dá)到良好的效果。有時(shí)項(xiàng)目組需要和用戶溝通,面談是一種較為花時(shí)間的方式,而用戶方常常以忙來說明自己沒有時(shí)間,這時(shí)候可以采用電話溝通的方式,這樣馬上就可以得到答復(fù)。有時(shí)可以將項(xiàng)目進(jìn)展情況用郵件的方式發(fā)給對(duì)方,使得軟件開發(fā)的`工作也成為用戶的一種工作,只有這樣才能正確把握用戶的真正需求,才能使得開發(fā)出的軟件真正是滿足用戶需求的軟件。而在內(nèi)部的溝通形式就可以多樣,如定期的項(xiàng)目溝通會(huì)議、項(xiàng)目進(jìn)展文檔等。
總之,只有加強(qiáng)溝通,才能使得軟件項(xiàng)目順利實(shí)施,溝通是成功軟件項(xiàng)目管理的很重要的因素。
(五)健全的項(xiàng)目文檔
軟件項(xiàng)目的文檔在整個(gè)生命周期中的地位和作用尤為重要,無論怎樣強(qiáng)調(diào)都不過分。文檔作為軟件產(chǎn)品的主要形式,集中體現(xiàn)了軟件人員的勞動(dòng)成果,沒有文檔就稱不上軟件。但是實(shí)際情況是許多軟件開發(fā)人員從一開始就不注重文檔的寫作,尤其是當(dāng)軟件項(xiàng)目的工期又很緊張時(shí),在沒有任何文檔或只有少量文檔的情況下就開始了具體的開發(fā)工作。有的寫了文檔,但是在開發(fā)過程中需求發(fā)生了變更,也沒有及時(shí)在文檔中體現(xiàn)出來,使得過一段時(shí)間后開發(fā)者對(duì)所開發(fā)的內(nèi)容也記得不清了,當(dāng)項(xiàng)目出現(xiàn)問題時(shí),沒有有效的文檔可查,致使軟件項(xiàng)目延期或失敗。
軟件開發(fā)過程中各階段的文檔不健全,往往在項(xiàng)目接近尾聲時(shí)為了驗(yàn)收才補(bǔ)寫文檔。最常見的是有系統(tǒng)分析與概要設(shè)計(jì)文檔,但是沒有詳細(xì)設(shè)計(jì)文檔,在程序開發(fā)過程中,開發(fā)人員往往最大限度地發(fā)揮著自己高超的編程技巧,以至于在后期維護(hù)時(shí),因?yàn)闆]有詳細(xì)的設(shè)計(jì)文檔,給項(xiàng)目的后期維護(hù)帶來困難。
編寫文檔的工作量是很大的。有時(shí)會(huì)占整個(gè)項(xiàng)目的40%,所以文檔的編寫會(huì)花費(fèi)大量的時(shí)間和精力,但是有了好的文檔,會(huì)對(duì)后期的開發(fā)工作帶來很多的便利。健全的文檔管理是軟件項(xiàng)目成功實(shí)施的一個(gè)重要因素。
三、軟件項(xiàng)目管理的方法
軟件項(xiàng)目管理有階段化管理,量化管理和優(yōu)化管理三個(gè)層面。
(―)階段化管理
階段化管理指的是從立項(xiàng)之初直到系統(tǒng)運(yùn)行維護(hù)的全過程,將項(xiàng)目分成小的階段。比如,通常分為問題定義、可行性研究、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、狽彳試和維護(hù)等幾個(gè)階段。每個(gè)階段都有明確的目標(biāo)和成果驗(yàn)收,以及必要的監(jiān)督回饋,這樣就能夠很好地減少項(xiàng)目負(fù)責(zé)人和客戶的分歧,增加項(xiàng)目風(fēng)險(xiǎn)的可控性。在項(xiàng)目負(fù)責(zé)人提交給客戶的需求分析和初始報(bào)告里,就已經(jīng)把每個(gè)階段要完成的工作,可出的成果,甚至具體到有多少個(gè)界面,都能清晰的描述出來。這樣,在每個(gè)階段完成后,客戶和項(xiàng)目負(fù)責(zé)人都能夠比較清楚地了解項(xiàng)目的進(jìn)展、完成情況,以及客戶對(duì)項(xiàng)目完成部分的滿意程度。同時(shí),也方便進(jìn)行項(xiàng)目組成員的績效評(píng)估。
(二)量化管理
把項(xiàng)目的方方面面盡可能地進(jìn)行數(shù)量化,做到責(zé)任清楚。給客戶做軟件,時(shí)常碰到這種問題:某階段成果A(比如說,包括A1、A2、A3等不同部分)出來了,客戶看了以后,可能認(rèn)為A1完全符合要求,A2根本就不對(duì),A3雖然有毛病但改改還可用,等等。那么,這其中的問題出在哪里?責(zé)任該由誰負(fù)?責(zé)任又有多大呢?為此,必須把各種目標(biāo)、投入、成果等分類量化。比如,用明確的模塊或子系統(tǒng)表達(dá)客戶需求,精確計(jì)算A1、A2、A3每部分花費(fèi)人工、物力、財(cái)力等等。把各種量化指標(biāo)存入數(shù)據(jù)庫,就能夠輕而易舉地解決上述的問題了。而且,每個(gè)階段都有清晰的量化管理,也非常有利于整個(gè)項(xiàng)目進(jìn)程的推進(jìn)。
(三)優(yōu)化管理
優(yōu)化管理就是分析項(xiàng)目每部分所蘊(yùn)涵的知識(shí)、經(jīng)驗(yàn)和教訓(xùn),更好地發(fā)揚(yáng)項(xiàng)目進(jìn)程中的經(jīng)驗(yàn),吸取教訓(xùn),在全公司傳播有益的知識(shí)。再如前面例子,通過分析發(fā)現(xiàn)A1部分的領(lǐng)頭人能力強(qiáng),就可以讓他以后多帶幾個(gè)人,使他的知識(shí)和經(jīng)驗(yàn)更好地發(fā)揮成效。A2、A3部分為什么不成功?是客戶的需求沒提清楚,是理解的錯(cuò)誤,還是有設(shè)計(jì)的問題?通過這些分析后,有利于進(jìn)一步優(yōu)化項(xiàng)目管理。
四、軟件項(xiàng)目管理過程中的幾個(gè)誤區(qū)
(一)對(duì)需求的修改是必然的,具體細(xì)節(jié)可在以后的開發(fā)過程中填充
在軟件項(xiàng)目的需求分析階段,軟件開發(fā)人員和項(xiàng)目負(fù)責(zé)人通常認(rèn)為開發(fā)方與客戶方在各種問題的基本輪廓上達(dá)成一致即可,具體細(xì)節(jié)可以在以后填充。理由是無論開始時(shí)多么細(xì)致,以后對(duì)需求的修改幾乎是必然的。但在實(shí)際操作中,由于需求階段對(duì)問題的描述不夠細(xì)致,導(dǎo)致后來預(yù)算超支或者時(shí)間進(jìn)度達(dá)不到要求的情況并不少見。正確的做法應(yīng)該是:在項(xiàng)目需求分析階段,雙方必須全面地、盡可能細(xì)致地討論項(xiàng)目的應(yīng)用背景、功能要求、性能要求、操作界面要求、與其他軟件的接口要求,以及對(duì)項(xiàng)目進(jìn)行評(píng)估的各種評(píng)價(jià)標(biāo)準(zhǔn)。在需求分析結(jié)束以后,雙方還要建立可以直接聯(lián)系的渠道,以便盡早地對(duì)需求變動(dòng)進(jìn)行溝通。
(二)軟件項(xiàng)目的需求可以持續(xù)不斷地改變,并且可以很容易地得以實(shí)現(xiàn)
在需求分析階段,還有一個(gè)經(jīng)常出現(xiàn)的問題,就是認(rèn)為軟件項(xiàng)目的需求可以持續(xù)不斷地改變,而且這些改變可以很容易地實(shí)現(xiàn)。在具體實(shí)際中由于種種原因,客戶方很難在需求分析階段就能全面而準(zhǔn)確地描述所有問題。隨著開發(fā)進(jìn)度的推進(jìn),往往會(huì)有一些需求的改變。現(xiàn)代軟件工程理論也利用軟件的靈活性特點(diǎn)通過各種方式來適應(yīng)這種情況。實(shí)踐表明:隨著開發(fā)進(jìn)度的推進(jìn),實(shí)現(xiàn)軟件需求更改所需要的代價(jià)呈指數(shù)形式增長。假定在需求分析階段實(shí)現(xiàn)需求更改要花費(fèi)1倍的代價(jià),那么,在系統(tǒng)設(shè)計(jì)和編碼階段,則需要花費(fèi)1.5~6倍的代價(jià);在系統(tǒng)測試階段需要花費(fèi)10~20倍的代價(jià),在軟件版本發(fā)布以后,甚至要花費(fèi)60~100倍的代價(jià)。由此可見,在項(xiàng)目開展過程中,軟件需求的改變應(yīng)當(dāng)盡早提出。這樣才能做到既節(jié)省開銷,又較容易實(shí)現(xiàn)。
(三)在系統(tǒng)詳細(xì)設(shè)計(jì)階段,必須寫出所有程序的偽碼
在詳細(xì)設(shè)計(jì)階段,起初為了便于代碼的維護(hù)修改,要求文檔工作應(yīng)該做到寫出所有程序的偽碼。偽碼的最大作用是對(duì)程序的算法流程進(jìn)行描述,便于人們深入了解程序的功能和實(shí)現(xiàn)過程。因此,偽碼在一定程度上的確有利于對(duì)程序代碼的維護(hù)和修改。但在實(shí)際工作中,這種做法卻很難實(shí)施。為了保證項(xiàng)目文檔和程序代碼的一一對(duì)應(yīng)關(guān)系,維護(hù)程序代碼的同時(shí)也需要對(duì)項(xiàng)目文檔進(jìn)行維護(hù)。偽碼和程序代碼非常接近,對(duì)偽碼進(jìn)行維護(hù),就相當(dāng)于進(jìn)行了加倍的程序代碼維護(hù)。為了趕進(jìn)度,這種方法在實(shí)踐中往往會(huì)流于形式。所以,切合實(shí)際的方式應(yīng)該是對(duì)一般的程序文檔做到程序流程圖即可,對(duì)涉及了較復(fù)雜算法的程序才需要偽碼。
(四)編碼階段是整個(gè)軟件項(xiàng)目中最重要的階段
在軟件開發(fā)階段,項(xiàng)目負(fù)責(zé)人往往認(rèn)為軟件程序主要由代碼組成,因此編碼階段是整個(gè)軟件項(xiàng)目中最重要的階段,應(yīng)該給予大量時(shí)間,集中主要資源。與編碼階段相比,需求分析、詳細(xì)設(shè)計(jì)以及測試時(shí)間較少,容易造成測試不完全及軟件上線后的先天不足,給今后的工作造成被動(dòng)。如今,由于軟件的規(guī)模和復(fù)雜度都較以前有較大的增加,再加上半自動(dòng)化軟件代碼開發(fā)平臺(tái)的出現(xiàn),現(xiàn)代軟件項(xiàng)目管理的中心已經(jīng)發(fā)生了轉(zhuǎn)移一不是著重編碼階段,而是著重系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段。一般,系統(tǒng)總體/詳細(xì)設(shè)計(jì)階段應(yīng)占整個(gè)軟件開發(fā)時(shí)間的一半。這樣才能充分考慮系統(tǒng)將會(huì)出現(xiàn)的各種問題及其解決辦法,為以后的編碼、測試工作爭取主動(dòng)。
(五)軟件所有的內(nèi)部測試工作應(yīng)由測試人員完成
在軟件測試階段,由于在項(xiàng)目人員配置中設(shè)置了專門的測試人員,人們通常認(rèn)為軟件所有的內(nèi)部測試工作應(yīng)該由測試人員完成。但這種做法往往會(huì)造成測試不全面,軟件交付后經(jīng)常出現(xiàn)問題的情況。在實(shí)際工作中,由于使用“白盒法”對(duì)測試人員各方面素質(zhì)有著較高的要求,進(jìn)行程序測試時(shí),測試人員總是優(yōu)先使用“黑盒法'狽j試沒有通過才會(huì)考慮對(duì)程序代碼進(jìn)行“白盒法”測試。顯然,這種對(duì)“白盒法,有意無意的“逃避”,對(duì)軟件的可靠性和穩(wěn)定性構(gòu)成了威脅。要解決這個(gè)問題,一方面需要提高對(duì)測試人員的要求;另一方面也需要讓程序員完成部分的“白盒法”測試。
(六)軟件項(xiàng)目管理只是相關(guān)技術(shù)部門的事,與公司其他部門無關(guān)
在競爭日益激烈的今天,軟件項(xiàng)目規(guī)模大、復(fù)雜度高,而且時(shí)間要求緊迫。要想提高公司的軟件項(xiàng)目管理水平,就需要提高公司的整體參與意識(shí),需要公司各個(gè)部門協(xié)同作戰(zhàn)。例如,需要會(huì)計(jì)部門協(xié)助進(jìn)行項(xiàng)目預(yù)算、財(cái)務(wù)管理和費(fèi)用控制;需要研究部門(技術(shù)委員會(huì))指派專家協(xié)助進(jìn)行各種風(fēng)險(xiǎn)評(píng)估,提供技術(shù)指導(dǎo);需要后勤部門提供各種保障。
(七)開發(fā)進(jìn)度滯后時(shí),可以聘請(qǐng)更多的程序員加入到開發(fā)團(tuán)隊(duì)中,通過增加人力資源追趕開發(fā)進(jìn)度
如今,在注重團(tuán)隊(duì)開發(fā)的時(shí)代,開發(fā)方應(yīng)該根據(jù)目前的軟件項(xiàng)目管理水平慎重考慮這個(gè)做法。如果新加入的程序員對(duì)目前軟件項(xiàng)目的應(yīng)用行業(yè)有一定了角解并且可以很快地適應(yīng)開發(fā)方的項(xiàng)目管理方式、軟件開發(fā)風(fēng)格、團(tuán)隊(duì)協(xié)作氛圍,那么“新人”的加入是有益的。否則,可能會(huì)“好心卻辦了壞事”。因?yàn)楸M管新人的個(gè)人能力很高,但為了使其與大家一起協(xié)同工作,開發(fā)團(tuán)隊(duì)不得不分出人手對(duì)新人進(jìn)行與項(xiàng)目有關(guān)的技術(shù)、業(yè)務(wù)培訓(xùn)。更重要,也是難度最大的是,還要引導(dǎo)新人融入到整個(gè)開發(fā)團(tuán)隊(duì)中。這可能需要花費(fèi)開發(fā)團(tuán)隊(duì)大量的時(shí)間和精力,很有可能使項(xiàng)目進(jìn)度更慢。
五、結(jié)論
軟件項(xiàng)目的管理問題,幾乎是決定軟件項(xiàng)目成敗的關(guān)鍵。本文結(jié)合實(shí)踐開發(fā)經(jīng)驗(yàn),分析了軟件項(xiàng)目的特點(diǎn)并探討了影響軟件項(xiàng)目管理的幾個(gè)較關(guān)鍵的因素,實(shí)踐證明在項(xiàng)目管理過程中注意了這幾個(gè)關(guān)鍵因素,才能對(duì)軟件項(xiàng)目進(jìn)行有效管理,并使軟件項(xiàng)目最終獲得成功。
【軟件項(xiàng)目管理的思考項(xiàng)目管理論文】相關(guān)文章:
2.軟件項(xiàng)目管理實(shí)踐教學(xué)應(yīng)用論文的項(xiàng)目論文