前言:
在沒有閱讀《構建之法》的之前,以為這本書會和其它軟體工程教材一樣,內容枯燥乏味,然而,在做好心理準備開始閱讀的時候卻被它吸引了,鄒欣老師的這本《構建之法》有強大的實用性和趣味性,語言幽默,條理清晰,舉的例子也都很形象生動!相信自己可以通過閱讀本書能大獲裨益。
第一章 概 論
此章節主要實在闡述軟體工程的幾個概念:
1. 軟體 = 程式 + 軟體工程
幾乎所有程式設計師都知曉 「 程式 = 資料結構 + 演算法 」,但實際中 「 軟體 = 程式 +軟體工程 」更適用,前一句(程式)是基本功。
2. 軟體工程是什麼?把系統的、有序的、可量化的方法應用到軟體的開發、運營和維護上的過程。
軟體工程包括下列領域:軟體需求分析、軟體設計、軟體構建、軟體測試和軟體維護。
3. 軟體的特殊性:複雜性(complexity)、不可見性(invisibility)、易變性(changeability)、服從性(comformity)和非連續性(discontinuity)
4. 文中還提到軟體工程和電腦科學的關係,這也是容易讓人迷糊的兩個概念,很多同學在高考填志願的時候不知道他們的區別,到學校後發現學的東西差異也不是很大;而實質上這是兩個側重點差異很大的概念;從知識領域上說,電腦科學包含計算機體系結構、作業系統、圖形學、人工智慧等,而軟體工程包含軟體需求、軟體設計、軟體維護、軟體測試等。
5. 軟體工程的目標——創造「足夠好」的軟體。
那麼什麼是足夠好?不僅僅是沒有bug;評價軟體的維度包括:使用者滿意度、可靠性、軟體流程的質量、可維護性等。關於軟體流程的質量,指的是軟體團隊和開發流程的問題太多,導致團隊成員無法良好協作,按時交付,也可以說是軟體團隊的bug; 流程的質量往往是我們的研發過程中最容易忽視的地方,反思目前我們的現狀,很對研發團隊的研發流程實質是處於真空狀態,開發人員甚至不知道怎樣才是軟體開發的正確姿勢。
總之,從三點去理解軟體工程:
1 研發出符合使用者需求的軟體
2 通過一定的軟體流程,在預計的時間內發布「足夠好」的軟體
3 通過資料和其他方式展現所開發的軟體是可以維護的繼續發展的
第二章 個人技術和流程
本章的實質是在說明,乙個合格的軟體工程師是怎樣的,他應該具備哪些技能。
答:乙個合格的工程師在開發時需要同時考慮質量和效率,與之同時需要具備的技能包括:單元測試、效能分析、個人研發流程(psp)。
好的單元測試的標準:
1 單元測試應該在最基本的功能/引數上驗證程式的正確性
2 單元測試必須由最熟悉**的人(程式的作者)來寫
3 單元測試過後,機器狀態保持不變
4 單元測試要快(乙個測試用例的執行時間是幾秒鐘,而不是幾分鐘)
5 單元測試應該產生可重複、一致的結果
6 獨立性——單元測試的執行/通過/失敗不依賴於別的測試,可以人為構造資料,以保持單元測試的獨立性
7 單元測試應該覆蓋所有**路徑
8 單元測試應該整合到自動化測試的框架中
9 單元測試必須和產品**一起儲存和維護
效能分析:
效能分析往往是開發人員容易忽視的步驟,這也是為什麼我們一年一年的不停做優化的原因,大部分人對嵌入式的實時性和效能要求沒有概念。
visual studio實際上提供了效能分析工具(tools\performancetools\performance wizard),其中有兩種分析方法:抽樣(sampling)和 **注入(instrumentation)。
抽樣的原理比較簡單,就是用比較短的週期去採用pc指標,看看是在哪個函式在執行,並把當前週期的時長累計為該函式的執行時長,此方法的優點是不需要改動程式,執行較快,可以很快找到瓶頸,但是不能得出精確的資料,也不能準確表示**中的呼叫關係樹(call tree); **注入,相當於打點,是將檢測的**加入到每個函式中,程式的各個效能資料都可以被精確地測量,此方法唯一的缺點是執行時間大大加長,還會產生很大的資料檔案,相應增加了資料分析的時間,同時,注入的**也影響了程式的真實的運**況。
一般進行效能分析的做法是,先用抽樣的方法找到效能瓶頸所在,然後對特定的模組用**注入的方法進行詳細分析。
注意:如果我們不經分析就盲目優化,也許會事倍功半。
個人開發流程:
我們熟知cmm和cmmi,軟體行業的國際通用標準,這兩種能力成熟度模型,他們是用來衡量乙個團隊能力的模型,由卡內基梅隆大學(cmu)制定推出。其實cmu的專家針對軟體工程師也有一套模型,叫personal software process(psp),即個人開發流程的標準。
psp特點
·不侷限於某種軟體技術(如程式語言),而是著眼於軟體開發的流程
·不依賴於考試,而主要靠工程師自己收集資料,然後分析,提高
·在小型、初創的團隊中,很難找到高質量的專案需求,這意味著給程式設計師的輸入質量不高。在這種情況下,程式設計師的輸出(程式/軟體)往往質量也不高,然而這並不能全部由程式設計師負責。
·psp依賴於資料
·psp的目的是記錄工程師如何實現需求的效率,而不是記錄顧客對產品的滿意度
總結:個人開發流程要著眼的是整個軟體開發的流程,輸出高質量的產品,需要從個人開發流程上去找bug,然後不斷修正,工程師才會成長,產品質量才會不斷提高。
構建之法讀書筆記1
寒假期間利用自己的部分時間閱讀了 構建之法 這本書的前幾章,感覺受益匪淺。對於這本書可以簡單地有兩個詞語來概括 專業 接地氣 這本書的開頭就是給我解釋什麼事軟體 什麼是軟體工程。上大學將近三年,說實話還沒有一次真正的去了解過什麼是軟體,什麼是軟體工程,說來還是有些慚愧的。首先,這是一本全景式圖書,會...
構建之法讀書筆記
場景 故事 版權 版本 維護人 1.背景 a.典型使用者 姓名 性別 年齡 職業等 b.使用者需求 痛點 c.假設 2.場景 關於這個場景的文字描述角色 與軟體互動的角色,如使用者等其他實體,甚至時間 主要成功場景 一系列步驟 步驟 描述每一步的互動 擴充套件場景 描述一些意外情況 軟體功能說明書 ...
《構建之法》讀書筆記
乙個軟體除了穩定 功能強大,使用者體驗也很重要。程式開發人員和測試人員在強調其功能和效能的同時,還有一點很注重的就是使用者體驗。在我們學習的最初階段老師們就強調對於軟體開發來說使用者體驗的重要性,無論軟體還是硬體,都有很多功能部件,各個部件還要郵寄的結合起來,才能滿足使用者的需求。其中有一點特別,就...