IT項目管理的方法分享-項目管理軟件
發(fā)布時間:2022/6/30 9:43:00
作為一名從事應(yīng)用軟件開發(fā)很多年頭的IT老兵,從個人編程、開發(fā)小軟件,到組織開發(fā)大大小小的各類應(yīng)用系統(tǒng),從最傳統(tǒng)的瀑布模型開始入門,在實踐中又接觸、使用過不少的軟件工程模型、開發(fā)過程方法、組織級成熟度模型、管理體系等等,近幾年敏捷開發(fā)又成為熱門?各種各樣的新鮮名詞和套路也是應(yīng)接不暇。項目管理軟件
面對層出不窮的新生事物,回顧自己多年來的開發(fā)經(jīng)歷,發(fā)現(xiàn)很多東西確實在不斷變化著,而有些東西其實并沒有發(fā)生根本的改變,而且各自有各自的適用場合。現(xiàn)將有關(guān)的觀點歸納如下,拋磚引玉,與大家探討:
1、不變的是工程過程,變化的是管理過程。
在所有的軟件開發(fā)活動中,各種活動可以被歸為兩大類,一類是工程類活動,一類是管理類活動。這是借用了美國項目管理學會(PMI)在PMBOK中的概念。工程類活動是指那些直接制造產(chǎn)品的活動,這類活動是受到產(chǎn)品生產(chǎn)工藝約束的,是產(chǎn)品制造中的“硬邏輯”,最典型的就是蓋樓必須先打地基。管理類活動則是指其他那些輔助性活動,是用來保障工程類活動高效實施的,可以根據(jù)各方面因素的實際條件而靈活掌握的,是生產(chǎn)過程當中的“軟邏輯”,比如施工工期和資源如何安排、是三人干兩個月還是兩人干三個月等等。
按照類似的概念,在軟件開發(fā)當中也存在著這樣兩種不同的活動——具有硬邏輯特征的軟件工程活動和具有軟邏輯特征的軟件開發(fā)管理活動。仔細推敲就會發(fā)現(xiàn),雖然現(xiàn)在各種開發(fā)方法名目繁多,但其核心的工程過程并沒有發(fā)生變化——就是最基本的瀑布式軟件工程過程。
2、需求、設(shè)計、編碼、測試、發(fā)布。
無論是那種開發(fā)方法,無論開發(fā)的是大型軟件還是一個小功能,無論開發(fā)項目組人數(shù)多與少,上述這個過程都是始終有效的,這個就是應(yīng)用軟件開發(fā)中的“硬邏輯”。但是,圍繞這樣一個工程過程,在具體實施過程的管理方式上,卻可以是千差萬別:
A、按照上述這個工程過程,一步一個腳印的穩(wěn)步前行,就是常說的“瀑布式”方法(瀑布式工程過程并不等同于瀑布式管理過程,不能混為一談,必須加以區(qū)分);項目管理軟件
B、先根據(jù)粗略的需求快速實現(xiàn)一個原型系統(tǒng),然后在此基礎(chǔ)上進一步導出正式的需求,再嚴格按照上述的工程過程實現(xiàn),就是所謂的“原型法”;
C、將整體需求分成許多個部分,反復使用上述工程過程,每一次只實現(xiàn)一部分目標功能,使之能夠快速投入使用,從而形成“快速迭代”;
D、在互聯(lián)網(wǎng)速度的推動下,進一步細分需求,并極力促成技術(shù)、業(yè)務(wù)等相關(guān)人員的密切溝通,進一步加速迭代,縮短開發(fā)周期,大幅提升應(yīng)用開發(fā)的響應(yīng)速度,這就是“敏捷”;
因此,縱觀這些年來軟件開發(fā)方法的變化,軟件產(chǎn)品的制造工藝并沒有發(fā)生根本性改變,更多的變化則是在制造過程的組織管理方式上不斷尋求新的出路,以適應(yīng)不斷提高的快速響應(yīng)的要求。
既然不同的是管理方式,那么不同的開發(fā)管理模式下,開發(fā)過程的組織方式自然也就應(yīng)該有所不同。如果采用傳統(tǒng)的瀑布式開發(fā)管理過程,那么軟件工廠的管理方式可能較為合適,而如果采用敏捷方法,那么軟件工作室的組織方式也許更適應(yīng)(請參見《軟件工廠、軟件作坊、軟件工作室》一文)。
這里順便說一下對CMMI的看法。作為一個組織級的、系統(tǒng)化的模型,是許多專家的經(jīng)驗教訓的結(jié)晶,具有非常高的參加價值。在這個模型中試圖把各方面相關(guān)工作的實質(zhì)、必須的關(guān)鍵點都識別出來并建立起有機的聯(lián)系。但是它并沒有給出在某個實際環(huán)境中的具體操作要求,這是實施者需要解決的問題。有些企業(yè)實施CMMI之后叫苦不迭,我認為問題不是出在CMMI本身,而是出在實施環(huán)節(jié),沒有能夠掌握CMMI的實質(zhì),沒有能夠結(jié)合實際條件活學活用,很多情況下是在操作層面上機械照搬了別人的“成功模板”,結(jié)果削足適履,這樣結(jié)果當然會難受。我認為的正確姿勢是,把CMMI模型的內(nèi)容看做組織級能力中的“硬邏輯”,然后根據(jù)自身條件的實際情況,設(shè)計相應(yīng)的“軟邏輯”,因地制宜制定各種制度流程,來推動那些“硬邏輯”的實現(xiàn)。在這些軟邏輯當中,前面提及的各種管理方式都是可以根據(jù)實際需要而采用的。
從這個角度來說,與其從敏捷出發(fā)考慮如何解決組織級“大敏捷”的問題,不如考慮在類似CMMI的組織級模型中如何運用“敏捷”的管理思路和管理方法,也許會有意想不到的收獲。
無論是“傳統(tǒng)”的瀑布方法,還是“現(xiàn)代”的敏捷方法,目標只有一個,就是以最優(yōu)的效率完成軟件開發(fā)任務(wù)。沒有必要為了敏捷而敏捷,而是應(yīng)該掌握敏捷的思想、方法、技巧,活學活用;谏鲜鲞@樣的認識,不同的軟件開發(fā)管理方法,都有各自的特點和適用場景,并非存在絕對的優(yōu)劣。作為軟件開發(fā)的管理者,在具體的軟件開發(fā)項目中,始終牢牢抓住軟件工程過程的基本規(guī)律,結(jié)合實際條件,靈活運用不同的管理方式。