我沒有什么敏捷、什么XP編程的概念,所以我這次的格斗沒有套路。
從去年開始我擔(dān)任了項目經(jīng)理一職,已經(jīng)負(fù)責(zé)公司的三個項目的開發(fā)和實施了。
我可以籍以此發(fā)表我的看法。
本主題內(nèi)容是極限開發(fā)
首先說說我概念當(dāng)中的極限開發(fā)。
項目特點:面向應(yīng)用、面向服務(wù)的中小企業(yè)應(yīng)用。
先哆嗦一下業(yè)務(wù)需求:
我們在實際調(diào)研企業(yè)現(xiàn)狀后,最大限度的了解與我們應(yīng)用范圍相關(guān)的實際業(yè)務(wù)。隨后進(jìn)入業(yè)務(wù)需求分析,其實就是抽象實際業(yè)務(wù)到軟件功能設(shè)計。同時考慮到我們應(yīng)用
范圍外的業(yè)務(wù),用戶可以不太關(guān)心這一塊,但是我們必須得做。最終的業(yè)務(wù)需求分析由公司內(nèi)部評審,(盡管我們的管理不完善,但是我有權(quán)力讓什么也不懂的領(lǐng)
導(dǎo)參與),再與客戶去交涉。直到取得最終評審。
極限開發(fā)之前:
我們首先要做概要設(shè)計,其實是對前業(yè)務(wù)需求分析的細(xì)化,當(dāng)然這文檔是面向業(yè)務(wù)的,這個文檔是修改最多的,所以在你開始寫這個文檔以前一定要做好版本管理(包括有效版本的管理)。
概要設(shè)計長話短說吧,就是對企業(yè)實際業(yè)務(wù)管理的理想模型,是盡可能的去理想(理智的想象,而不是單純的想象),同時不能夠把軟件的功能劃分在合同的需求功能之外(這個一定要把握一個度的問題)。
概要設(shè)計是一個相對漫長的過程,這個過程馬虎不得,一定要有耐心說服用戶和有權(quán)力的領(lǐng)導(dǎo),說什么能做,什么不能做,我們?yōu)槭裁催@么做,以及變通的業(yè)務(wù)實現(xiàn)等等。
極限開發(fā)之?dāng)?shù)據(jù)庫設(shè)計篇
大家可能不理解,為什么我首先要對數(shù)據(jù)庫進(jìn)行設(shè)計呀,這個完全和我的習(xí)慣有關(guān)。(我的地盤我做主)
在對以上概要設(shè)計完以后,我的心理就對實際的軟件功能有具體的描述了,當(dāng)然這個是我最清楚了,我在寫概要設(shè)計的時候會把這些映射成軟件的具體實現(xiàn),并且使
用一些工具比如VISIO在寫完概要設(shè)計的實際業(yè)務(wù)時,我會把軟件的實現(xiàn)圖、邏輯圖同時畫出來,害怕以后沒有時間來想這些,呵呵。
所以在其后的工作當(dāng)中,我對軟件的具體實現(xiàn)就胸有成竹了,所以我直接進(jìn)行數(shù)據(jù)庫設(shè)計。
數(shù)據(jù)庫設(shè)計我使用DB Design,這個工具很好用,我在數(shù)據(jù)庫設(shè)計時有兩個準(zhǔn)原則:
原則一:數(shù)據(jù)庫表對應(yīng)程序功能模塊,一個模塊一個前綴,并且如果無太多關(guān)系的業(yè)務(wù)模塊對應(yīng)一張表,并且這些表沒有關(guān)聯(lián)關(guān)系,都是獨立的。
原則二:所有的表如果無復(fù)雜關(guān)系都使用統(tǒng)一的UUID做為主鍵,同樣,如果處理同樣的事務(wù),字段名能夠統(tǒng)一的話就統(tǒng)一命名,或者有統(tǒng)一規(guī)則生成等。
根據(jù)以上原則,我的數(shù)據(jù)庫表沒有想象當(dāng)中的復(fù)雜,所以在程序?qū)崿F(xiàn)時就不用考慮數(shù)據(jù)庫間的關(guān)系。
極限開發(fā)之程序?qū)崿F(xiàn)-統(tǒng)一增加、刪除、修改數(shù)據(jù)庫
數(shù)據(jù)庫設(shè)計完以后,就建立映射成實體,并根據(jù)現(xiàn)行的軟件架構(gòu)實現(xiàn)統(tǒng)一的對數(shù)據(jù)庫的增加、刪除、和修改的操作,比如現(xiàn)在的STRUTS+SRPING+
HIBERNATE的架構(gòu),我根據(jù)數(shù)據(jù)庫表,生成對本數(shù)據(jù)庫表的增加、刪除和修改的類接口,剩下的工作由下面的員工完成,(很想自動生成,但沒有時間來寫
這些東西。以后這個東東肯定會有人發(fā)明)
極限開發(fā)之程序?qū)崿F(xiàn)-封裝業(yè)務(wù)邏輯層
我一般使用VISIO或者現(xiàn)在的WEB FLOW給手下的員工畫出程序?qū)崿F(xiàn)方式,讓他們來完成,我的工作是檢查他們的代碼是不是符合規(guī)范,是不是能夠符合
業(yè)務(wù)需求,所以這個時間我的主要工作是質(zhì)檢和修改程序?qū)崿F(xiàn)的業(yè)務(wù)邏輯,(有些剛剛畢業(yè)的大學(xué)生,你要給他講明實現(xiàn)的業(yè)務(wù)關(guān)系呀,還不如告訴他你應(yīng)該往哪個
表插入什么數(shù)據(jù)來得快,這是一個怪圈)
極限開發(fā)之程序?qū)崿F(xiàn)-關(guān)鍵業(yè)務(wù)實現(xiàn)
關(guān)鍵業(yè)務(wù)的實現(xiàn)是至關(guān)重要的,這個我一個可能是不行,而且可能當(dāng)時用戶的需求在改變或者改進(jìn)等,所以我就要找一個比較實在、能力比較強(qiáng)的員工來擔(dān)任這個職務(wù),要盡可能的給他講明實際的業(yè)務(wù)和用戶需要的效果和目的,說不定他還能幫助你的思維呢。
這個是個重要的環(huán)節(jié),所以生產(chǎn)的重點就是這里,在最復(fù)雜的業(yè)務(wù)邏輯時,對程序的處理,一定要畫個VISIO或者什么圖告訴員工每一步的實現(xiàn)如何做,包括很
多的錯誤處理等。如果你在這里偷懶了,說明你這個項目的有很多的隱患在其中,這個工作比較艱巨,變數(shù)也多,需要多多鼓勵員工。
極限開發(fā)之程序?qū)崿F(xiàn)-單元測試
單元測試不是很嚴(yán)格,由公司相關(guān)人員測試,不過經(jīng)過我質(zhì)檢過的代碼,一般沒有太多問題。
極限開發(fā)之程序?qū)崿F(xiàn)-業(yè)務(wù)測試
根據(jù)項目的實際業(yè)務(wù)來測試,由我和能力很強(qiáng)和人來測試,最后由測試人員來測試,
極限開發(fā)之用戶試運(yùn)行及上線
這個就不用說了,要用服務(wù)的意識來幫助客戶來認(rèn)知這個東東,就好象到理發(fā)店讓小妹妹給你按摩一樣,不要害羞。也好象很累了到冼足浴室一樣,無微不至引導(dǎo)消費。
我的這三個項目分別是庫存管理+財務(wù)管理、EAI項目和CRM+服務(wù)。
用人最多的時候不超過6人,開發(fā)周期沒有超過2個月的。
庫存管理+財務(wù)管理 6人 1.5個月
EAI項目 3人 20個工作日
CRM+服務(wù) 5-6人 不到兩個月
所有項目均是新寫。