1. 程式人生 > >《構建之法》的讀後感

《構建之法》的讀後感

開篇就講到一個概念即:軟體=程式+軟體工程。
書中說到,程式指的是源程式,也就是基於資料結構上的實現演算法,這是我們軟體學生的基本功。程式設計師需要對程式碼不斷編寫,程式越來越龐大,就需要原始碼管理。程式是要正確執行的,就需要軟體測試。我們寫的程式需要讓別人的看得懂,就得運用程式理解。程式總會出現BUG,就需要軟體維護。掌握一系列過程需要一個專案經理,稱為專案管理。
 所以,構建管理(資料結構+演算法),原始碼管理,軟體測試,軟體維護,專案管理,需求分析這些環節構成了軟體工程。
          我們在學校做一些小專案的時候,往往沒有用到軟體工程去進行開發,運營,維護。甚至有的不經過需求分析,就一邊打程式碼一邊構造需求,軟體工程是把系統的,有序的,可量化的方法應用到軟體的開發,運營,維護過程中。學習高軟很難,難在哪裡?我想有以下幾點:1.軟體複雜型,安卓開發專案中,定義了10個20個類我們都很好理解整個程式的執行過程,類與類之間的呼叫關係,但是一旦到了上百上千個類,模組之間的依賴幾何級上升。2.不可見性,有些錯誤如JAVA執行時異常的BUG是很難調的。        現在的開發往往是很多人合作完成一款軟體應用,不同的開發人員之間就存在依賴關係。我需要呼叫你寫的程式碼模組,你也需要呼叫我寫的程式碼模組,但是因為不瞭解模組的變化,模組沒有達到高內聚低耦合造成了對其他模組的影響,往往會產生錯誤。在確定釋出這個模組的時候,要經過完整的單元測試,為了達到事半功倍的效果,我們可以把規格說明說寫得詳細一些,詳細到各項要求都可以表示為一個單元測試用例。
       卡耐基梅隆有一套個人開發流程,很適用於我們做個人開發。接到專案之後我們可以按照以下幾個步驟來進行,        估算時間--->需求分析--->生成設計文件--->設計複審--->程式碼規範--->具體設計--->編寫程式碼--->程式碼複審--->程式碼測試--->記錄用時--->測試報告--->計算工作量--->總結--->討論改進。隨著工作年限的增長,編碼所佔的比例會越來越小,因為開發不再是一味地編碼,測試所佔的比重會越來越高,保證質量要求。        那麼,我們為什麼要用軟體工程呢?因為軟體工程把開發,運營,維護的過程中的技術,做法,習慣和思想結合到一起(軟體開發流程)提高了軟體開發,運營,維護的效率。同時,運用軟體工程,也減輕了我們的工作量,避免不必要的返工。       怎麼提高技能?通過不斷的努力,把那些低層次的問題都解決了,變成不用經過大腦的自動操作,然後才有時間和腦力來解決較高層次的問題。我們要精通低層次問題
(int[] arr還是int arr[],ArrayList 還是 Array<T>),中層次問題(使用何種架構),高層次問題(效能優化。。。。。。).