目前實(shí)施項(xiàng)目規(guī)范的考慮
由于目前軟件開發(fā)實(shí)際情況的約束,完全按照RUP實(shí)施項(xiàng)目管理是一個(gè)理想化思路。在實(shí)際實(shí)施中會(huì)受多方面的影響(如客戶要求、小組成員素質(zhì)等),這種盲目的追求標(biāo)準(zhǔn)只會(huì)做成項(xiàng)目的阻礙,基于這種考慮,我認(rèn)為根據(jù)實(shí)際情況采用分步實(shí)現(xiàn)的方式,逐步建立起一支穩(wěn)定的、技術(shù)分工合理的開發(fā)TEAM,才能采?UP管理規(guī)范實(shí)現(xiàn)省時(shí)、合理的軟件開發(fā)。
下面我根據(jù)自身對(duì)項(xiàng)目管理的認(rèn)識(shí),對(duì)原有項(xiàng)目管理中的問題進(jìn)行總結(jié),并對(duì)目前如何實(shí)現(xiàn)軟件工程,及對(duì)本項(xiàng)目管理規(guī)范的實(shí)施進(jìn)行了相應(yīng)說(shuō)明。
4.1. 對(duì)項(xiàng)目管理的幾點(diǎn)感受
目前我們的軟件開發(fā)多為瀑布式開發(fā),項(xiàng)目管理可以說(shuō)是沒有。所有的管理與軟件設(shè)計(jì)都是由項(xiàng)目經(jīng)理一個(gè)人來(lái)負(fù)責(zé),這樣對(duì)項(xiàng)目經(jīng)理的要求較高。項(xiàng)目開發(fā)主要依賴于個(gè)人能力,開發(fā)中又總是依靠程序員高手來(lái)支撐,好是要有一批“快槍手”。而高手又因?yàn)槎喾N因素不能集中在一個(gè)項(xiàng)目中,同時(shí)高手的流動(dòng)會(huì)給項(xiàng)目致命的打擊。以上等等只是項(xiàng)目管理中的一部分問題。我對(duì)項(xiàng)目管理中之不足歸納為以下幾個(gè)方面:
4.1.1.人員素質(zhì)
項(xiàng)目開發(fā)人員的個(gè)人素質(zhì)不同,根據(jù)素質(zhì)進(jìn)行角色與行為劃分是項(xiàng)目管理中的一個(gè)非常重要的環(huán)節(jié)。
責(zé)任心
我在項(xiàng)目管理中曾遇過這樣一種情況,有個(gè)項(xiàng)目成員技術(shù)不錯(cuò),但是在開發(fā)的關(guān)鍵時(shí)期為個(gè)人的一點(diǎn)小事而不顧整個(gè)項(xiàng)目的進(jìn)度,而其在項(xiàng)目中擔(dān)任了比較重要的職務(wù),在他看來(lái),項(xiàng)目不如自己個(gè)人的小事(可做可不做)重要,所以造成項(xiàng)目進(jìn)度的延誤,我不得不去物色另外一個(gè)人來(lái)代替他。但后果已成。
還有一種情況,安排了某人工作,工作量在你的估算內(nèi),但是到了檢查時(shí),他對(duì)你說(shuō)“我不會(huì)做”,“我不知如何做”之類的話,而同時(shí)他還在上網(wǎng)或做其他的事,但作為已有計(jì)劃的你來(lái)說(shuō),則是項(xiàng)目進(jìn)度被打亂的后果。
這種人當(dāng)然在下一個(gè)項(xiàng)目不會(huì)被用,但是如何避免這種情況的發(fā)生呢?我認(rèn)為應(yīng)當(dāng)將工作量細(xì)化到天甚至于小時(shí),遇到這種員工則可立即開除,同時(shí)損失的工作時(shí)間是可控的。從而減輕了對(duì)項(xiàng)目開發(fā)的影響。
個(gè)人能力
程序員的領(lǐng)悟力各不相同。對(duì)不同的人要采用不同的方法來(lái)工作。
對(duì)個(gè)人能力高的人你可以務(wù)虛的談工作任務(wù),他在接受任務(wù)的同時(shí)可以提出這樣那樣的問題,甚至想到你沒有想到的問題,直到把問題搞清楚。這樣的人你可以放心的讓他去做,因?yàn)樗呀?jīng)完全理解了你的意圖。
對(duì)個(gè)人能力一般的人,你講什么他不能理解的很清楚,有的為了面子不懂也不說(shuō),但是在做的時(shí)候出了問題,在你指著他做的程序大罵的同時(shí),你的項(xiàng)目進(jìn)度在拖延。對(duì)于這種情況,你只能寫出對(duì)他工作的要求,寫出你的意圖,明確工作目標(biāo)。
對(duì)個(gè)人能力差的人你不能說(shuō)只是寫個(gè)要求行的,那樣的話他寫的程序依然會(huì)讓你忍無(wú)可忍,怎么辦,把系統(tǒng)中技術(shù)要求較低的部分分出來(lái),然后按1,2,3,4步驟寫出來(lái)。有人說(shuō)這樣還不如自己寫完算了,但是這種工作往往是重復(fù)量很大。如做界面等。
當(dāng)然,RUP的實(shí)施方針希望是淡化個(gè)人力量,而注重流程與大家的協(xié)作,同時(shí)細(xì)化了系統(tǒng)的每一部分。但是的實(shí)施不能教條化,在實(shí)行中還要根據(jù)項(xiàng)目實(shí)際情況而變化。
自我約束能力
自我約束能力主要是指對(duì)管理者而言的。因?yàn)轫?xiàng)目成員工作基本是由項(xiàng)目管理者來(lái)監(jiān)督實(shí)施的,那管理者呢,可能沒有人來(lái)管理,如果管理者的自我約束能力不強(qiáng),那樣建立什么樣的軟件工程規(guī)范都無(wú)法實(shí)施。
在實(shí)施項(xiàng)目管理規(guī)范時(shí),由于條件限制,不可能一下完備軟件工程所需的各個(gè)機(jī)構(gòu)部門,從而也可能不存在與項(xiàng)目組平行的流程管理機(jī)構(gòu),質(zhì)量審批機(jī)構(gòu)等。由于采用逐步實(shí)現(xiàn)的方法,所以提高約束力只能采用其他方法。
針對(duì)這種情況,可以采用各種提醒方式:電子系統(tǒng)如掌上電腦;人員提醒如部門技術(shù)秘書等。
4.1.2. 工作流程
4.1.2.1 工作流程中的多重循環(huán)
用戶需求的不斷變化是令項(xiàng)目開發(fā)中頭痛的問題了。我們?cè)谧鲰?xiàng)目時(shí)傳統(tǒng)的做法是,新需求來(lái)了,趕快叫程序員們改,在這里加一塊,那里補(bǔ)幾行代碼,只要實(shí)現(xiàn)行。結(jié)果是項(xiàng)目做完了,再看自己設(shè)計(jì)的系統(tǒng)已面目全非。還談什么可重用性,可定義性,產(chǎn)品化,甚至下一個(gè)差不多的項(xiàng)目還要花費(fèi)同樣的時(shí)間。
RUP中強(qiáng)調(diào)的循環(huán)概念 是針對(duì)于這種情況提出的,通過項(xiàng)目小組之間各種角色的循環(huán),實(shí)現(xiàn)對(duì)用戶需求變化的問題解決。如下圖
這樣采用迭代法開發(fā)可以實(shí)現(xiàn)此問題,是的,但是要有所犧牲,那是時(shí)間。時(shí)間充足我們自然可以按照標(biāo)準(zhǔn)的RUP思路來(lái)進(jìn)行。而實(shí)際上呢,又是我們犧牲不起的。現(xiàn)在國(guó)內(nèi)大多數(shù)項(xiàng)目具有這樣一個(gè)共同點(diǎn):用戶要求急。如我們做一個(gè)基金的核心業(yè)務(wù)系統(tǒng),用戶說(shuō)開發(fā)時(shí)間為兩個(gè)月。而由于基金是個(gè)新行業(yè),無(wú)可用之部件,兩個(gè)月的時(shí)間是不可能進(jìn)行迭代開發(fā)的。同時(shí)我們還要在一定程度上避開需求不斷變化。我建議采用的方式如下:
按階段地進(jìn)行循環(huán)
實(shí)現(xiàn)階段性的循環(huán),并且存在多個(gè)循環(huán)的并發(fā)。如業(yè)務(wù)需求循環(huán)在一個(gè)階段內(nèi)將生成相應(yīng)的模型與業(yè)務(wù)需求文檔,并得到用戶的認(rèn)可,然后轉(zhuǎn)入系統(tǒng)需求循環(huán),在系統(tǒng)需求轉(zhuǎn)入另一個(gè)循環(huán)時(shí),再繼續(xù)業(yè)務(wù)需求循環(huán),但此時(shí)只是記錄用戶需求,而不進(jìn)行下一個(gè)循環(huán)。待根據(jù)初需求制作的版本生成后,再根據(jù)新的業(yè)務(wù)需求及與用戶協(xié)商結(jié)果再?zèng)Q定是否開發(fā)下一個(gè)版本。
采用快速原型法
快速原型法的作用是為了讓用戶在感性上了解系統(tǒng)的概貌,通過與用戶的交流,從而固定了相應(yīng)的元素(如輸入?yún)?shù)、跳轉(zhuǎn)順序等),通過快速原型法與用戶進(jìn)行交流,能很好的理解用戶的意圖與需求,是縮短開發(fā)周期的良好途徑。
生成一個(gè)版本
用戶需求是不斷變化的,而且任意性很大,如果一個(gè)項(xiàng)目根據(jù)用戶需求的變化而變化,那么開發(fā)周期是無(wú)法估量的。一個(gè)三個(gè)月開發(fā)周期的項(xiàng)目做了六個(gè)月,還沒有一個(gè)象樣的系統(tǒng)出來(lái),用戶則不斷的埋怨開發(fā)力度不夠,管理不好等,項(xiàng)目組又認(rèn)為是用戶隨意性太大,導(dǎo)致了這種后果。結(jié)果是雙方互不滿意。
根據(jù)這種情況,我認(rèn)為在業(yè)務(wù)需求循環(huán)到一個(gè)階段,生成正式的業(yè)務(wù)需求文檔與模型,并得到用戶的認(rèn)可后,則進(jìn)入下一個(gè)循環(huán)。以至于生成一個(gè)版本。這樣由于存在這樣的版本,用戶則不能將項(xiàng)目的延遲歸于項(xiàng)目組。而項(xiàng)目組也存在一個(gè)完整的版本管理體系。