01《構建之法》閱讀筆記01

2022-03-23 06:17:15 字數 2680 閱讀 2135

個人感受:

我過去的做法:

1、寫程式以實現功能為主要目的,所以有時候為了功能的保證,會不太注重演算法的使用。

2、在團隊專案中,習慣了個人程式設計,和團隊成員溝通偏少。

為什麼這樣不好:

1、不注重演算法的使用,會無端的浪費空間和執行時間,使程式效率大大降低。

2、團隊成員之間交流過少時,**融合會經常出現問題,這是必然的。

解決方法:

1、在執行程式前不斷比較各種演算法的差距,擇優使用。

2、兩天進行一次團隊**合併,防止出現差異過多難以融合的問題。

重點記錄:

《構建之法》,是一本非常接地氣的講《軟體工程》的書,它的作者鄒欣有長達20年的一線軟體開發經驗,他利用業餘時間在數所高校進行了長達

6年的軟體工程教學實踐,總結出了在

16周的時間內讓 我們通過 「做中學」 ,來掌握實用的軟體工程技術的教學計畫。

第一章《概論》,旨在說明軟體工程的概念。

軟體工程可以定義為: 把系統的、有序的、可量化的方法應用到軟體的開發、運營和維護上的過程。它包括以下領域:源**管理

+需求分析

+程式設計

+軟體構建

+軟體測試

+軟體維護

+生命週期管理等,廣泛意義的軟體工程。還包括使用者體驗、使用者介面設計等, 軟體工程決定了軟體質量。

軟體工程和電腦科學的關係,這也是容易讓人迷糊的兩個概念,像我們去年在高考填志願的時候就不清楚他們的區別,到學校後發現學的東西差異也不是很大。而實質上,這是兩個側重點差異很大的概念:從知識領域上說,電腦科學包含計算機體系結構、作業系統、圖形學、人工智慧等,而軟體工程包含軟體需求、軟體設計、軟體維護、軟體測試等。

我印象較深的一句話是:軟體=程式

+軟體工程。在我的理解中,程式、演算法、資料結構是基本功,但是在演算法和資料結構之上,軟體工程決定了軟體的質量,商業模式決定了乙個軟體企業的成敗。

說到軟體工程的目標,自然就是:創造足夠好的軟體。這個足夠好的定義,可不僅僅是沒有bug,評價軟體的維度包括:使用者滿意度、可靠性、軟體流程的質量、可維護性等。

關於軟體流程的質量,指的是軟體團隊和開發流程的問題太多,導致團隊成員無法良好協作,按時交付。換句話說也是軟體團隊的bug, 流程的質量往往是我們的研發過程中最容易忽視的地方,反思目前我們的現狀,很多研發團隊的研發流程實質是處於真空狀態,開發人員甚至不知道怎樣才是軟體開發的正確姿勢。

書中點的很明確,理解軟體工程,無非三點:研發出符合使用者需求的軟體、通過一定的軟體流程,在預計的時間內發布「足夠好」的軟體、通過資料和其他方式展現所開發的軟體是可以維護和繼續發展的。

第二章《個人技術和流程》,旨在說明乙個合格的軟體工程師是應該具備哪些技能。

合格的工程師,開發時需要同時考慮質量和效率,與之同時需要具備的技能包括:單元測試、效能分析、個人研發流程。在書中,作者也為我們羅列出了關於單元測試的正確做法:

① 單元測試應該在最低的功能/

引數上驗證程式的正確性。

② 單元測試必須由最熟悉**的人來寫。

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

④ 單元測試要快。

⑤ 獨立性—測試的執行/通過/

失敗不依賴於別的測試。

⑥ 覆蓋所有**路徑

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

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

效能分析往往是開發人員容易忽視的步驟,這也是為什麼我們不停做效能優化的原因。

個人開發流程要著眼的是整個軟體開發的流程,輸出高質量的產品,需要從個人開發流程上去找bug,然後不斷修正,工程師才會成長,產品質量才會不斷提高。

第三章《軟體工程師的成長》,旨在個人能力的衡量與發展。

軟體系統的絕大部分模組都是由個人開發或維護的,這些單個的成員在團隊中的流程,以開發人員為例,流程如下:

1、通過交流、實驗、快速原型等方法,理解問題、需求或任務。

2、提出多種解決辦法並估計工作量。

3、其中包括尋找以前的解決方案,因為很多任務作是重複性的。

4、與相關角色交流解決問題的提案,決定乙個可行的方案。

5、執行,把想法變成實際中能工作的**,同時驗證方案的可行性和其他特性。

6、和團隊的其他角色合作,在測試環境中測試實現方案,修復

bug,如果此方案有嚴重的問題,那麼就考慮其他方案。

7、在解決方案發布出去之後,對結果負責每個人的工作質量直接影響最終軟體的質量。

軟體開發的工作量和質量的衡量標準,無非就是:專案/任務有多大?花了多少時間?質量如何?交付的**中有多少缺陷?是否按時交付?

而對於交付這個定義,還有以下兩種情況:

1、在**完成時,交付給測試人員的軟體。

2、最終發布時,交付給顧客可以用缺陷的數量來除以專案的大小。

初級軟體工程師成長階段,需要掌握有以下幾點:

1、積累軟體開發相關的知識,提公升技術技能。

2、積累問題領域的知識和經驗。

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

4、提公升職業技能。

5、實際成果。

我的感受:

我們作為軟體工程系的一名學生,要努力向這個方向發展,從而為以後成為一名多方面盡相完善的工程師打下堅實的專業基礎。

構建之法閱讀筆記01

從第一章概論中提到,軟體工程要創作足夠好的軟體。而有一些同學認為,所謂好軟體,就是沒有bug的軟體,所謂軟體工程,就是把軟體中的bug都消滅掉的過程,這確實抓住了軟體工程中的乙個要素,和軟體打交道的專業人士都知道軟體有bug,軟體團隊的很多人都整體和bug打交道,bug的多少可以直接衡量乙個軟體的開...

構建之法閱讀筆記01

構建之法 01 書中的1.2.4中dug問題讓我感觸頗深,bug是我們日常生活中常說的乙個詞,哪怕是非專業的人也是隨口說來。但在軟體工程中的bug其實和日常的bug是有很大區別的,我們習以為常的bug就是影響乙個正常軟體執行的錯誤 其實不然,bug真正的含義是 軟體的行為和使用者的期望值不一樣就叫b...

構建之法閱讀筆記01

乙個產品的產生從最開始也許只是為了方便人們的生活,例如由油燈到電燈,從結繩記事到書簡到紙筆的誕生,書中具體說了飛機的產生過程,從最開始的玩具階段,只是孩子們對於天空的嚮往,滿足孩子們對於天空的好奇,當興趣達到一定程度後我們開始更進一步的發展。肯特 柯西用幾十個氫氣球將他和沙灘椅帶上天空,這就進入了實...