軟體工程導論/導論
本書是軟體工程藝術的入門書。它旨在作為大學本科課程的教科書。
軟體工程是關於團隊的。要解決的問題過於複雜或龐大,以至於單個開發人員無法再解決它們。軟體工程也關乎溝通。團隊不僅包括開發人員,還包括測試人員、架構師、系統工程師、客戶、專案經理等等。軟體專案可能非常龐大,因此我們必須進行周密的計劃。實現不再僅僅是編寫程式碼,還包括遵循指南、編寫文件以及編寫單元測試。但僅僅靠單元測試是不夠的。不同的部分必須組合在一起。我們必須能夠使用指標來識別問題區域。它們告訴我們我們的程式碼是否遵循特定標準。一旦我們完成編碼,並不意味著我們完成了專案:對於大型專案而言,維護軟體可能會讓很多人忙上很長時間。由於有許多因素影響著專案的成功或失敗,我們還需要學習一些關於專案管理及其陷阱的知識,但最重要的是瞭解哪些因素可以使專案取得成功。最後但並非最不重要的一點是,優秀的軟體工程師,就像任何工程師一樣,都需要工具,你需要了解這些工具。
在你的初級學期,你是作為個人進行編碼的。你所解決的問題足夠小,一個人可以掌握它們。在現實世界中,情況有所不同:- 問題規模和時間限制要求只有團隊才能解決這些問題。
為了有效地工作,團隊需要一種溝通語言(UML)。團隊不僅包括開發人員,還包括測試人員、架構師、系統工程師,最重要的是客戶。因此,我們需要了解什麼構成了良好的團隊,如何與客戶溝通,以及如何記錄原始碼以及與軟體專案相關的所有內容。
在之前的課程中,我們學習了 Java 或 C++ 等語言,以及如何將想法轉化為程式碼。但這些想法獨立於語言。藉助統一建模語言 (UML),我們將看到一種獨立於語言描述程式碼的方法,更重要的是,我們學會以更高的抽象級別進行思考。UML 可以成為寶貴的溝通和文件工具。
我們將學習如何看到全域性:模式。這為我們提供了更高一級的抽象級別。這再次擴充套件了我們的詞彙量,使我們能夠更有效地與同事交流。此外,它是一種從資深人士那裡學習的絕佳方式。這對於設計大型軟體系統至關重要。
同樣,僅僅能夠編寫軟體並不意味著軟體就很好。因此,我們將探索什麼構成了良好的軟體,以及如何衡量軟體質量。一方面,我們應該能夠透過靜態分析和度量指標來分析現有原始碼,但我們如何才能保證我們的程式碼符合特定的質量標準?測試在這個背景下也很重要,它保證了高質量的產品。
到目前為止,你可能已經瞭解了 IDE、編譯器和偵錯程式。但軟體工程師還有許多其他工具可以使用。有一些工具可以讓我們進行團隊合作、記錄我們的軟體、協助和監控整個開發工作。有一些工具是為軟體架構師準備的,還有一些工具用於測試和分析、自動化和重構。