1. 程式人生 > >第四周讀書筆記

第四周讀書筆記

pan 程序出錯 技術 若是 出現 int 發現 轉變 軟件開發

第一章 概論

本章主要介紹了軟件工程是什麽?軟件工程的目標是什麽?為了解決前一個問題,作者首先提出了兩個等式:

程序 = 數據結構 + 算法
軟件 = 程序 + 軟件工程

為了解釋軟件行業賴以生存的“軟件”,程序員安身立命的“程序”是什麽?作者舉了移山公司程序員編寫一個自動生成加減法題目的軟件的故事,生動形象地闡述了程序就是指源程序,就是一行行的代碼,是建立在數據結構上的一些算法。若是擴充功能,就轉變成了一個應用軟件。在此基礎上,若能保證維修,則轉變成軟件服務。作者還提到了軟件的商業模式,於是得到一個推廣的公式:

軟件企業 = 軟件 + 商業模式

緊接著,作者談到了軟件開發的過程,過程包括玩具階段、業余愛好階段、探索階段、成熟的產業階段。在討論商業軟件和愛好者的程序時,作者舉了一個有趣的例子,如果有一個航班沒有配置安全設備,你會去乘坐嗎?我比較喜歡旅遊,每年都坐飛機,雖然在航行過程中確實沒有用到任何安全設備,但是這樣的飛機我不敢乘坐,上面這個例子說明了,愛好者開發的軟件,很少會考慮給軟件加上“安全功能”。從而在軟件高速運行的過程中,如果出現異常,不能保證安全退出,並且不破壞用戶數據。由此可見,對於真正的軟件開發我還有很長的一段路要走,

接下作者談到了本章的一個重點,軟件工程究竟是什麽?這和計算機科學有什麽區別?看了作者的論述,再結合自己的理解我覺得計算機理論的進展會幫助軟件工程(例如對程序正確性的分析),軟件工程的進展(包括更好的工具,更廣的應用領域)會幫助計算機科學家更有效的進行試驗和探索。

最後作者提到了軟件工程的目標是什麽?軟件工程的目標是創造“足夠好”的軟件,好的軟件指沒有“bug”的軟件,bug的多少可以直接衡量一個軟件開發的效率,用戶滿意度,可靠性,可維護性。但這也不是絕對的,例如買車,瑪莎拉蒂從各個角度上講都是優於五菱宏光的,然而仍然有不少人會買五菱宏光,為什麽呢?這是因為五菱宏光已經滿足了他們的需求,沒有必要買瑪莎拉蒂。況且有實際用處,且無bug的軟件是不存在的,我們要做的僅僅是滿足客戶的需求,在客戶規定的時間內,完成開發,bug要盡可能的少,同時這個程序要有可靠性和可維護性。

第二章 個人技術和流程

本章主要講了單元測試、回歸測試、效能分析、PSP。由於我沒有用vsts寫單元測試,更不要說建立在單元測試上的回歸測試,頁沒有用performance進行過效能分析,所以對本章內容理解不深。但從總體上講,單元測試的目的是為了確保我們所寫的模塊能被他人調用,並且代碼清晰易懂,不影響其他模塊。回歸測試是指程序出錯時能回退到正常運行的狀態。效能分析為了發現程序性能瓶頸,提高程序運行的速度。在將效能分析的過程中,作者舉例一個例子說明在for循環中的判斷不要調用函數,因為這個函數在每輪循環結束之後都會被調用一次。如 for(int i = 0; i < num.count(); i++)在這行代碼中沒輪循環結束之後都會調用一次num.count()浪費了很多時間。

第三章 軟件工程師的成長

本章主要講了軟件工程師的個人能力的衡量與發展、職業發展著兩個方面,對於一個軟件工程師,個人能力尤為重要,如果個人能力不足,何談團隊協作,以及項目開發呢?個人能力包括,軟件開發的相關知識、經驗,軟件工程思想,職業技能和實際成果。在談職業發展時,說明了考級,公司以及自我評估三個大方向的發展。其中讓我比較在意的是微軟軟件工程師的職業等級,從表格中可以看出從低級工程師到高級工程師不僅僅是個人能力的提高,更要註重身份的轉變,即從執行者轉變成決策者,低級工程師僅僅是完成上級布置下來的任務,而高級工程師要參與到項目的決策中。

第四周讀書筆記