1. 程式人生 > 其它 >閱讀《構建之法》

閱讀《構建之法》

《構建之法》的學習

第一章概論的知識點:

電腦科學的領域 偏理論的領域(計算機理論 Theoretical Computing)(資訊和編碼理論 Information and Coding Theory)(演算法和資料結構 Algorithm and Data Structure)(形式化方法 Formal Methods)(成序設計語言 Programming Language),偏實踐的領域 (計算機體系結構 Computer Architecture)(平行計算和分散式系統 Concurrent , Parallel and Distributed System)(實時系統和嵌入式系統 Real Time and Embedded System)(作業系統 Operating System)(計算機網路 Networking)(科學計算 Scientific Computing)(安全和密碼學 Security and Cryptography)(人工智慧 Artificial Intelligence)人工智慧有涵蓋了許多相關的領域,如模式識別(Pattern Recognition )、機器學習(Machine Learning)、資料探勘(Data Mining)、資訊提取等。(計算機圖形學Computer Graphics)(計算機視覺 Computer Vision)(多媒體 Multimedia)(資料庫和大規模資料處理 Database and Large Scale Data Processing)(全球資訊網 World

Wide Web)(自然語言處理和語音 Natural Language Processing and Speech)(人機互動 Human Computer Interaction)(軟體工程 Software Engineering)。理論領域多與數學、離散數學、數理邏輯密切相關;實踐領域都與資料和其它學科發生關係。

軟體工程與電腦科學的關係:

計算機理論的進展會幫助軟體工程(例如對程式正確性的分析);軟降工程的進展(更好的工具、更多的應用領域)會幫助電腦科學家更有效地進行實驗和探索。

軟體的特性(軟體開發過程的難題):

複雜性:軟體是人類創造最複雜的系統型別,大型軟體有超過上百萬行原始碼、上萬個不同的檔案,軟體的各個模組之間有各種顯性或者隱形的依賴關係系統的成長和模組的增多,這些關係的數量以幾何級數的速度增長,但是理解運用這些複雜性的人沒有發生變化。

不可見性:軟體工程師能看見原始碼,但軟體出現錯誤,工程師可以看到出錯瞬間留下的痕跡(錯誤代號、大致的目的碼位置、錯誤資訊)但幾乎無法完整重現程式出了什麼問題。

易變性:修改軟體比修改硬體較為容易,但人們期待下面兩種改變 a)讓軟體做新的事情b)讓軟體適應新的硬體。但是在此同時,正確地修改軟體是一件困難的事情。

服從性:軟體總是執行在硬體上,他要服從系統中其他組成部分的要求,同時還要服從使用者的要求,行業系統的要求。

非連續性:人們總是容易理解連續的系統,輸入的增加能夠看到輸出上相應地增加。但是輸入上極小的變化會引起輸出極大的變化。

軟體工程的定義與組成部分:

軟體工程是把系統的、有序的、可量化的方法應用到軟體開發、運營和維護上的過程。軟體工程包括以下領域:軟體需求分析、軟體設計、軟體構建、軟體測試和軟體維護。軟體工程和下列的學科相關:電腦科學、計算機工程、管理學、數學、專案管理學、質量管理、軟體人體工學、系統工程、工業設計和使用者介面設計。人們在開發、運營、維護軟體的過程中有很多技術、做法、習慣和思想體系。軟體工程把這些相關的技術和過程統一到一個體系中,叫軟體開發流程,軟體開發流程的目的是為了提高軟體開發運營維護的效率,並提高軟體的質量、使用者滿意度、可靠性和軟體的可維護性