- 軟件研發行業創新實戰案例解析
- 茹炳晟主編
- 1161字
- 2023-11-17 17:09:59
2.2 軟件工程2.0
在2008年筆者寫的《軟件工程導論》一書中,相對于傳統軟件工程,定義了現代軟件工程,那時,筆者沒能預見到人工智能今天的巨大力量。15年后,筆者將受互聯網、開源軟件運動、敏捷/DevOps 開發模式的影響,最終形成的建立在 SaaS (Software as a Service,軟件即服務)、云之上的軟件工程定義為“軟件工程2.0”。
沒有互聯網,就沒有云和SaaS,我們就不能將軟件部署在自己的數據中心,那么持續交付(Continuous Delivery,CD)就沒有意義,因為我們無法做到將包裝盒形式的軟件產品持續交付到客戶手中,敏捷、DevOps也就難以實施,雖然可以在內部實現持續集成(Continuous Integration,CI),但其價值會大大降低。
之后的開源軟件運動讓我們首先認識到“軟件過程”和“軟件管理”并非非常重要,至少不是第一要素,因為第一要素還是人;其次是軟件架構,簡單且能解耦,如采用SOA(Service-Oriented Architecture,面向服務的架構)、微服務架構來解耦,更具可擴展性;再者是代碼的可讀性、可測試性,使代碼具有可維護性,而流程和管理雖然具有價值,但作用不大。
隨著市場變化越來越快,不確定性增強、市場競爭更加激烈,客戶或用戶始終希望我們能夠按時交付高質量的產品,同時還希望軟件有靈活性,能夠具有隨需應變的能力,也能夠通過及時、必要的修改來滿足業務的新需求。
除了考慮開源軟件運動、市場因素,軟件還是一種知識型產品,軟件開發活動是智力活動,需要很高的創造性,并依賴每個開發人員的創造力、主動性等。所有這些都引導人們對軟件工程進行新的思考并不斷認識軟件工程,從而在2001年17位軟件開發輕量型流派掌門人聯合簽署了《敏捷軟件開發宣言》,如圖2-2所示。

圖2-2 敏捷聯盟官網的《敏捷軟件開發宣言》截圖
之后逐漸形成了敏捷/DevOps 開發模式、精益軟件開發模式等,即軟件工程進入2.0時代。軟件工程2.0的特征可以簡單概括為下列幾點。
(1)SaaS:軟件更多的是以一種服務存在。
(2)強調價值交付:只做對用戶有價值的事情,加速價值流的流動。
(3)以人為本:個體與協作勝于流程和工具,充分發揮個人和團隊的創造性與潛力;擁抱變化,敏捷開發或輕量級過程,加速迭代,以不變應萬變。
(4)自我管理的團隊:像一家初創公司一樣運營,具有主動性并能夠承擔風險,具有自治能力,能自主建立目標和制訂計劃,不斷反思,持續改進。
(5)持續性:階段性不明確,持續構建、持續集成、持續測試、持續交付,以時間換空間,消除市場風險。
(6)開發、測試和運維的融合:強調測試與開發融合,開發與運維融合,推崇全棧工程師等。
(7)真正把用戶放在第一位:用戶、產品經理盡可能參與團隊開發過程,注重用戶體驗,千人千面。
(8)知識管理:將軟件工程納入知識管理的范疇,強調將項目的計劃、估算等工作授權給從事具體工作的開發人員,如任務安排不再由管理者下達任務,而由開發人員自主選擇適合自己的任務。
(9)更有樂趣:“史詩故事”、用戶故事、站會等讓軟件開發工作更有趣、更健康。