軟件研發(fā)流程(CMM-敏捷-DevOps)

未來的企業(yè)都離不開軟件,不做軟件也得用軟件,不用軟件的企業(yè)就少之又少了;現(xiàn)在開個小店都得有收銀系統(tǒng)。
我做軟件多年,作為華為軟件產(chǎn)品線第一個CMM大項目經(jīng)理,參與了軟件產(chǎn)品線cmm認證華為工作組成員;軟件產(chǎn)品線第一個敏捷項目項目經(jīng)理;企業(yè)云devops推行責任人,還真是見證了華為公司軟件研發(fā)流程的變遷,也是隨著軟件行業(yè)研發(fā)流程變遷的升級打怪。
通過合適的研發(fā)流程管理軟件研發(fā)組織的工作,以達到可控的的軟件交付件,不同的流程適合研發(fā)不同種類的軟件,不同的組織可以選擇不同的研發(fā)流程。
我今天分享一下我對各種流程的個人見解,供軟件企業(yè)參考。
1、CMM:
1)CMM是由美國卡內(nèi)基梅隆大學軟件工程研究所1987年研制成功的,是國際上最流行最實用的軟件生產(chǎn)過程標準和軟件企業(yè)成熟度等級認證標準。被很多組織接納,成為軟件企業(yè)產(chǎn)品準入的門檻。
2)強調(diào)研發(fā)的過程的管理,堅信好的過程會帶來好的結果,詳細的定義個軟件開發(fā)過程的各個階段,每個階段的輸入、輸出標準、評審、交付件模板、收集的度量數(shù)據(jù)、嚴格的各階段的總結和度量數(shù)據(jù)收集。
3)適合強質(zhì)量控制、需求變化小、強進度要求的項目,尤其軟硬件結合的研發(fā)項目。
4)按照功能劃分組織,組織之間有嚴格的分工,有嚴格的交付件接收標準,需求-方案設計、開發(fā)、測試、服務分屬不同的部門。
2、敏捷軟件開發(fā):
1)是一種從1990年代開始逐漸引起廣泛關注的新型軟件開發(fā)方法,是一種能應對快速變化需求的軟件開發(fā)能力。它們的具體名稱、理念、過程、術語都不盡相同,相對于“非敏捷”,更強調(diào)程序員團隊與業(yè)務專家之間的緊密協(xié)作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發(fā)過程中人的作用。
2)強調(diào)敏捷理念和實踐,強調(diào)擁抱變化,強調(diào)最終交付件代碼,強調(diào)溝通和反饋;“show me your code”;強調(diào)自動化工具,通過持續(xù)構建、持續(xù)集成?持續(xù)交付來提高效率和快速交付;擁抱變化,認為不變的是變化,要通過快速迭代出產(chǎn)品,讓用戶體驗(show case)。
3)適合需求變化快的軟件研發(fā)過程,適合互聯(lián)網(wǎng)這種創(chuàng)新和試錯性的軟件研發(fā),通過快速的迭代開發(fā),來適配需求的變化和創(chuàng)新的不斷試錯,而不是強調(diào)需求問題、需求明確的開發(fā)流程,這是跟CMM的核心區(qū)別。
4)強調(diào)全功能的組織、打破部門邊界、研發(fā)是一個組織需求-設計、開發(fā)、測試一體化團隊。
3、devops:
1)敏捷的延續(xù)和擴展,敏捷的多功能團隊里面沒有包括運維人員,這就造成了一個鴻溝,研發(fā)人員目標研發(fā)盡量多的特性,盡快上線獲得用戶反饋;運維人員目標是系統(tǒng)運行穩(wěn)定,避免網(wǎng)上問題;兩者目標的沖突導致很多問題,DevOps就是來調(diào)和這樣一種合作關系的。
2)DevOps(Development和Operations的組合詞)是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術運營和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。
3)它是一種重視“軟件開發(fā)人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。透過自動化“軟件交付”和“架構變更”的流程,來使得構建、測試、發(fā)布軟件能夠更加地快捷、頻繁和可靠。
4)它的出現(xiàn)是由于軟件行業(yè)日益清晰地認識到:為了按時交付軟件產(chǎn)品和服務,開發(fā)和運維工作必須緊密合作。打通研發(fā)和服務,服務能力前置到軟件開發(fā)中,減少手工的維護,能自動化的都自動化,減少網(wǎng)工的需要;強調(diào)服務化和共享重用。“吃自己的狗糧”,“自己做的降落傘自己跳”。
5)建立研發(fā)流水線,為了落實流程,靠管理、靠模板、靠項目經(jīng)理,可控度低,太依賴個人能力;因此出現(xiàn)了利用工具鏈,把研發(fā)流程工具化;同時研發(fā)過程工具打通串聯(lián),形成一致化的工具;重用工具、降低研發(fā)門檻,提高研發(fā)效率。
6)適合互聯(lián)網(wǎng)服務,云服務這類在線服務的軟件類研發(fā)企業(yè);因為服務的實時在線,所以要爆炸產(chǎn)品的試錯迭代能夠高效進行,又能避免網(wǎng)上問題,減少問題對于用戶的影響,盡量做到問題用戶無感知和新特性友好知會到用戶選擇。