? ? ? ? 隨著信息技術的發展,軟件已經深入到人類社會生產和生活的各個方面。軟件工程是將工程化的方法運用到軟件的開發、運行和維護之中,以達到提高軟件質量,降低開發成本的目的。軟件工程已經成為當今最活躍、最熱門的學科之一。
? ? ? ? 本次軟件工程MOOC課程是一門導論性課程,我們將全面介紹軟件工程所涉及的各方面知識,包括軟件過程、軟件需求、結構化分析和設計方法、面向對象分析和設計方法、敏捷開發方法、軟件測試、軟件項目管理、軟件開發工具和環境。通過課程講授,讓大家初步了解軟件開發和維護的方法學,為進一步深入學習各專題打下基礎。
? ? ? ? 軟件工程的目的是以工程的原理、原則和方法進行軟件開發,以解決軟件危機。所以軟件工程的總目標不是尋求最優解。而系統工程的目標是尋求最優解。但軟件開發中的軟件需求分析、軟件體系結構設計、軟件的集成測試和軟件的系統測試等活動,已經可以看作軟件系統工程的工程活動。
? ? ? ? 希望軟件工程未來能真正發展到像目前制造業那樣流水線生產組裝制造軟件的模式,但即使到這一步,由于用戶需求的千差萬別,定制化應用也是需要的。我個人認為,定制化應用開發中,會復用一些滿足部分需求的軟件構件,同時還要開發一些新需求的軟件構件,然后組裝集成為最終的定制化應用。做產品設計需要考慮低耦合的功能,只有這樣,產品本身以及構成產品的軟件構件才能有更長的生命周期。
? ? ? ? 課程還包含了實踐環節,通過一個小型軟件項目,大家可以體驗軟件開發的各個環節,并形成項目管理的意識。幫助讀者系統而完整地梳理了軟件工程的經典、現代和前沿理論、方法和技術,通過案例分析讓讀者了解其運用,并以淺顯易懂的方式講授業界廣泛使用的方法和技術如敏捷開發方法、群智化開發方法-開源和眾包、DevOps方法等,讓讀者理解和掌握現代業界使用的方法和技術。而且,作者結合北京大學和浙江大學在軟件工程前沿的研究成果,首次在國內外軟件工程教材中,系統化地介紹了人工智能(AI)、區塊鏈(Blockchain)、云計算(Cloud?Computing)、大數據(Big?Data)、物聯網(IoT)等新型技術驅動的前沿軟件工程理論和方法,以此拓展讀者的軟件工程視野。
? ? ? ? “人月神話”的意思,是指在軟件開發過程中,人們往往以“人月”作為估計工作量的單位,并認為通過增加人手就能以同等比例縮短所需的開發時間,比如說10個人預計10個月的開發工作量,100個人應該可以在一個月內完成。這種想當然的意見往往與事實天差地別,因此被稱為“神話”。
? ? ? ? “人月神話”不能成立的原因,一是`當任務由于次序上的限制不能分解時,人手的添加對進度沒有幫助。`二是`對于可以分解,但子任務之間需要相互溝通和交流的任務,必須在計劃工作中考慮溝通的工作量。`
? ? ? ? ?理論上說,一對一的情況下,三個人之間的溝通量是兩個人之間溝通量的3倍,四個人之間的溝通量是兩個人之間溝通量的6倍,考慮到多個人或者多個團隊之間開會協商、一起解決問題的需要,增加人手的作用往往要大打折扣,甚至可能起到負面的作用。
? ? ? ? ?以盡量精簡的團隊完成任務當然是最佳選擇。但小團隊畢竟無法承擔大型軟件開發任務,因為軟件開發有其時效性,再高的效率,以大型軟件的工作量計,也要十數年才能完成開發——這在商業上是沒有意義的。
? ? ? ? ? 因此,就展開了本書討論的主題:如何管理大型軟件項目開發。
主教材
孫艷春,?黃罡,?鄧水光. 軟件工程:經典、現代和前沿.
北京大學出版社,2024.2, ISBN?978-7-301-34801-7.
軟件工程_北京大學_中國大學MOOC(慕課)
北京大學出版社
北京大學-軟件工程(國家級精品課)課堂錄播–孫艷春老師_嗶哩嗶哩_bilibili
愛課程 軟件工程 北京大學信息科學技術學院
人月神話(紀念典藏版)【美】小弗雷德里克·P.布魯克斯 清華大學出版社
?