知己知彼,百戰(zhàn)百勝。一個軟件項目也一樣,從項目一開始就應(yīng)該分析清楚項目自身的特點,因地制宜,因時制宜的采用不同的方法論和工具技術(shù)來實現(xiàn)。
工欲善其事,必先利其器。而對于一個軟件開發(fā)項目,最重要的器就是方法,工具和技術(shù)。而這三要素中重要的又是方法論,方法是基礎(chǔ),工具和技術(shù)更多是我們根據(jù)方法論選擇的實現(xiàn)手段,是輔助要素。如果這個地方就出現(xiàn)了決策性錯誤,小一點是影響項目的質(zhì)量和團隊效率,大一點就是直接導(dǎo)致項目的失敗。
1、方法論-項目的燈塔。
方法論是我們針對一個行業(yè)或領(lǐng)域提出的分析和解決問題的方法,是我們在總結(jié)和實踐過程中高度抽象出來的理論,是經(jīng)過實踐檢驗和驗證的具有科學(xué)依據(jù)的原理。你的成功是因為你站在前人的肩膀上,我們不應(yīng)該憑空的去發(fā)明和創(chuàng)造,而應(yīng)該根據(jù)項目特點,借鑒前人的經(jīng)驗和教訓(xùn),選擇合適的方法論去指導(dǎo)我們的項目運作。讓我們來分析下軟件項目管理中常使用到的方法論:
2、軟件過程改進-CMM/CMMI,TSP,PSP
過程改進方法論是軟件項目管理中最宏觀的方法論,大中型的組織或機構(gòu)可以實施CMM,而對于小型組織或個人可以采用小組軟件過程或個體軟件過程。軟件過程成熟度指針對軟件過程進行明確定義、管理、度量、控制的程度。它表明軟件過程能力的有效性和增長的潛力,表明組織軟件過程的豐富性及其應(yīng)用于項目的一致性。
軟件過程改進方法論類似于我們在項目中采用PDCA循環(huán)的方法,其重點在于分析和實踐以及持續(xù)的改進。CMM只是告訴你要做哪些事情,但采用何種方法來做并沒有明確的定義,所以CMM更像是高屋建瓴的一個東西。
3、分析和實現(xiàn)方法論-結(jié)構(gòu)化分析,面向?qū)ο螅嫦蚍矫?,特征?qū)動
分析和實現(xiàn)的方法論歸根到底現(xiàn)在常用的就是結(jié)構(gòu)化分析設(shè)計和面向?qū)ο蠓治鲈O(shè)計,結(jié)構(gòu)化方法強調(diào)以實體關(guān)系圖和數(shù)據(jù)流圖分析為核心,通過數(shù)據(jù)流圖的精華和變換事務(wù)映射,進行模塊和單元劃分,接口分析和設(shè)計。而面向?qū)ο蠓治龊驮O(shè)計強調(diào)是對象和類,關(guān)注類的屬性和行為和相互協(xié)作。通過用例建模,對象的結(jié)構(gòu)建模,對象的行為建模,充分考慮封裝,繼承等面向?qū)ο箨P(guān)鍵特征進行分析和設(shè)計。
4、生命周期模型-瀑布,原型,增量,迭代,螺旋
選擇什么樣的生命周期模型是根據(jù)項目自身特點來確定的。每種生命周期模型都有自身的優(yōu)缺點。對于大中型的復(fù)雜系統(tǒng),前面的需求和系統(tǒng)分析沒有搞清楚,后面的設(shè)計和實現(xiàn)根本無法進行,所以這種系統(tǒng)還是適合用瀑布模型按部就班的進行。對于需求多變,項目進度要求緊張,人員配置相對固定,這種情況更適宜于采用增量和迭代的方法進行。
5、工具和技術(shù)-提升效率的關(guān)鍵所在。
如果你不知道去哪里?給你張地圖也沒有用,所以方法論更多的是讓我們走正確的路。但如何在正確的路上走的更快則要借助相關(guān)的工具和技術(shù)來提高我們的生產(chǎn)率?,F(xiàn)在誰用匯編語言去實現(xiàn)MIS系統(tǒng)估計不能尊為天才,而只能尊為傻子了。現(xiàn)在相關(guān)的工具和技術(shù)很多,主要從軟件開發(fā)生命周期模型的各個階段來談下相關(guān)的工具和技術(shù)的使用。
6、需求階段工具:
需求階段主要分為需求收集,需求開發(fā)和需求管理三個方面的內(nèi)容。需求收集主要是如何捕獲和描述清楚用戶需求,可以用Excel來完成需求的收集;需求開發(fā)對于面向?qū)ο笠话悴捎檬褂肦OSE工具采用UML用例建模的方式進行,用例建模一般又分為用例建模,行為建模和界面建模三個層次的內(nèi)容。需求管理一般采用RP工具進行需求的追蹤,采用CQ等工具進行需求變更的控制。
7、技術(shù)+過程方法論-RUP,MSF
把R