11 26 構建之法2

2022-09-08 03:36:15 字數 2137 閱讀 8685

2.1 單元測試

①重要的單元測試:有效解決程式設計師對模組功能的誤解、疏忽或不了解模組的變化之類的問題,使自己負責的模組功能定義盡量明確,模組的質量得到穩定的、量化的保證。

②好的單元測試的標準:

在最基本的功能/引數上驗證程式的正確性

單元測試必須由最熟悉**的人(程式的作者來寫)

單元測試過後,機器的狀態保持不變

單元測試要快(乙個測試的執行時間是幾秒鐘,而不是幾分鐘)

單元測試應該產生可重複、一致的結果

獨立性——單元測試的執行/通過/失敗不依賴於別的測試,可以人為構造資料,以保持單元測試的獨立性

單元測試應該覆蓋所有**路徑

單元測試應該整合到自動測試的框架中

單元測試必須和產品**一起儲存和維護

③單元測試的基礎上能夠建立關於這一模組的回歸測試,目的是:

(1)驗證新的**的確改正了缺陷

(2)同時驗證新的**有沒有破壞模組的現有功能,有沒有regression

2.2 效能分析工具

效能分析方法:抽樣和**注入

2.3 個人開發流程

個人開發流程psp(personal software process)

特點:(1)不侷限於某一種軟體技術,而是著眼於軟體開發的流程,這樣,開發不同應用的軟體工程師可以互相比較。

(2)不依賴於考試,而主要靠工程師自己收集資料,然後分析、提高。

(3)在小型、初創的團隊中,很難找到高質量的專案需求,這意味著給程式設計師的輸入質量不高。在這種情況下,程式設計師的輸出(程式/軟體)往往質量也不高,然而這並不能全部由程式設計師負責。

(4)psp依賴於資料(工程師輸入資料的時間代價、資料可能遺失或者不準確的風險、可能會出現一些資料不利於工程師本人的情況)

(5)psp目的是記錄工程師如何實現需求的效率,而不是記錄顧客對產品的滿意度,工程師有可能很高效地開發出乙個顧客不喜歡的軟體。

3.1 個人能力的衡量與發展

①軟體工程包括了開發、運用、維護軟體的過程中的很多技術、做法、習慣和思想。軟體工程把這些相關的技術和過程統一到乙個體系中,叫「軟體開發流程」,軟體開發流程的目的是為了提高軟體開發、運營和維護的效率,以及提公升使用者滿意度、軟體的可靠性和可維護性。

②初級軟體工程師的成長包括以下幾種:

(1)積累軟體開發相關的知識,提公升技術技能(如對具體技術的掌握,動手能力)。例如:對j**a、c/c++、c#的掌握,診斷/提高效能的技術,對裝置驅動程式、核心偵錯程式的掌握,對於某一開發平台的掌握

(2)積累問題領域的知識和經驗(例如對醫療或金融行業的了解)

(3)對通用的軟體設計思想和軟體工程思想的理解

(4)提公升職業技能(區別於技術技能),包括:自我管理的能力、表達交流的能力、與人合作的能力、按質按量完成任務的執行力

(5)實際成果——最重要的評價標準

3.2 軟體工程師的職業發展

自我評估,自我評價清單:

軟體工程師能力自我評價表

4.1 **規範

包括**風格規範和**設計規範

4.2 **風格規範

**風格原則:簡明、易讀、無二異性

縮排:4個空格,而不是tab

行寬:限定為100字元

括號斷行與空白的{}行

分行命名:匈牙利命名法

下劃線:分隔變數名字中的作用域標註和變數語義

大小寫(pascal形式和camel形式)

注釋4.3 **設計規範

函式:只做一件事,並且要做好

goto:有助於程式邏輯的清晰體現

錯誤處理:引數處理、斷言

類的處理

4.4 **複審

①形式:自我複審、同伴複審、團隊複審

②目的:找出**錯誤、發現邏輯錯誤、發現演算法錯誤、發現潛在的錯誤和回歸性錯誤、發現可能需要改進的地方、傳授經驗

(1)更正明顯的錯誤

(2)記錄無法很快更正的錯誤

(3)把所有的錯誤記在自己的乙個「我常犯的錯誤」表中,作為以後自我複審的第一步

4.5 結對程式設計

①角色:

駕駛員:控制鍵盤輸入

②好處:(1)在開發層次,可以提供更好的設計質量和**質量,兩人合作解決問題的能力更強。

(2)對開發人員,帶來更多的信心,高質量的產出帶來更高的滿足感。

(3)企業管理層次上,有效地交流,相互學習和傳遞經驗,分享知識,取得更高的投入產出比。

構建之法2

團結就是力量 善於運用團隊,發現無限潛能。前幾周老師提出結對作業的時候,我覺得只是這麼乙個小小的程式,沒有結對的必要性吧。可越到後來越發現結對的好處,隊友可以找到網盤想不到的問題。尤其是看完書後覺得,結對不是單純的從乙個人變成2個人寫。而是從乙個角色變成另外乙個角色,就像是領航員與駕駛員,在不同的位...

Book Review 《構建之法》 2

敏捷流程包括了幾大原則 backlog burn down sprint scrum.敏捷開發注重個人之間的交流,提倡盡早的交付有價值的軟體滿足顧客的需求,在開發過程中不斷與客戶進行互動,變化.第一步就是要找出完成產品需要做的事情 product backlog 估計每一項工作的完成時間.再決定當前...

構建之法筆記2

鄒老師在針對這些教學的弊病以及學生所展現出的問題,他也給出了一些解決方法,而在我校本課程的實際教學中,也大量應用了鄒老師所給的方法,自身也從中頗有獲益。當然,更多的是 書中所提到的很多概念和理論方法等都將我引入了乙個全新的世界,這些在以往的學習中從未遇到 從未想到 從未經歷的事,隨著課程的學習,個人...