第一章 概論
軟體工程是什麼?
軟體工程的核心部分(構建管理、原始碼管理、軟體設計、軟體測試、專案管理)和使用者體驗、使用者介面設計等組成了軟體工程,而軟體=程式+軟體工程。
軟體開發過程中的難題有5點: 1、複雜性 2、不可見性 3、易變性 4、服從性 5、非連續性
軟體的其他特性:1、有許多不同的程式設計語言、軟體工具盒軟體開發平臺。 2、存在許多不同的軟體開發流程。 3、軟體團隊中存在許多不同的角色。 4、軟體通 常可以儲存在磁帶上,也可以儲存在CD、DVD上。
第二章 個人技術和流程
個人技術與流程與軟體工程有什麼關係?
軟體是由多人合作完成的,不同人員的工作相互有依賴關係,所以個人技術是會影響整個軟體開發的過程,個人技術主要是軟體開發過程中的細節問題。在開發出軟 件後,必須要經過測試才算是完成了軟體,這就需要一個好的單元測試的標準——1、單元測試應該在最低的功能/引數上驗證程式的正確性。 2、單元測試必須由最 熟悉程式碼的人(程式的作者)來寫。 3、單元測試過後,機器狀態保持不變。 4、單元測試要快(一個測試的執行時間是幾秒鐘,而不是幾分鐘)。 5、單元測試應該產生可重複、一致的結果。 6、獨立性-單元測試的執行/透過/失敗/不依賴於別的測試,可以人為構造資料,以保持單元測試的獨立性。 7、單元測試應該覆蓋所有程式碼路徑。 8、單元測試應該整合到自動測試的框架中。 9、單元測試必須和產品程式碼一起儲存和維護。
第三章 軟體工程師的成長
初級軟體工程師的成長:
1、積累軟體開發相關的知識,提升技術技能(如對具體技術的掌握,動手能力)。例如:對Java、C/C++、C#的掌握,診斷/提高效能的技術,對裝置驅動程式(Device Drive)、核心偵錯程式(Kernel Debugger)的掌握;對於某一開發平臺的掌握.
2、積累問題領域的知識和經驗
第一點和第二點都可以再很多簡歷上都可以看到,也可以比較容易地檢測出來。隨著經驗的增長,一個工程師可以掌握更廣泛、更深入的技術和問題領域的知識。
3、對通用的軟體設計思想和軟體工程思想的理解。
4、提升職業技能(區別於技術技能)
職業技能包括:自我管理的能力,表達和交流的能力,與人合作的能力,按質按量完成任務的執行力,這些能力在IT行業和其他行業都很重要。
5、實際成果
絕大部分軟體工程師的工作成果都是可以公開的,你參與的產品使用者評價如何,市場佔有率如何,對使用者有多大價值?你在其中起了什麼作用?行勝於言,這些實際的工作成果,是最重要的評價標準。