提出問題
快速通讀教材《構建之法》,並參照提問模板,提出5個問題。
如何提出有價值的問題? 請看這個文章:http://www.cnblogs.com/rocedu/p/5167941.html ,以及 在互聯網時代如何提問題。 還有這些要點:
- 在每個問題后面,請說明哪一章節的什么內容引起了你的提問,提供一些上下文
- 列出一些事例或資料,支持你的提問。
- 說說你提問題的原因,你說因為自己的假設和書中的不同而提問,還是不懂書中的術語,還是對推理過程有疑問,還是書中的描述和你的經驗(直接經驗或間接經驗)矛盾?
一個模板可以是這樣:
我看了這一段文字 (引用文字),有這個問題(提出問題)。 我查了資料,有這些說法(引用說法),根據我的實踐,我得到這些經驗(描述自己的經驗)。 但是我還是不太懂,我的困惑是(說明困惑)。
或者這樣:
我反對作者的觀點(提出作者的觀點,自己的觀點,以及理由)。
大學生應該能寫出自己的思考, 而不是摘抄書本內容。
提示:編程經驗不多的同學,建議看16章 “創新”, 提出自己的問題。
問題一:
d. 進一步說,“覆蓋率”有下面幾個層次:
- 1.函數的覆蓋,這個模塊的每一個函數都覆蓋了么?
- 2.語句的覆蓋,這個模塊的每一個語句都覆蓋了么?
- 3.分支的覆蓋,這個模塊的每一個條件分支都覆蓋了么?
- 4.條件的覆蓋,這個模塊的每一個布爾表達式的TURE|FALSE都覆蓋了么?
在讀2.1.2 好的單元測試的標准時,在P27中讀到了上文,作者說代碼覆蓋率需要考慮到每個模塊是否覆蓋到了每個函數,是否覆蓋到了每個語句,是否覆蓋到了每個條件分支,是否覆蓋到了每個布爾表達式的TURE|FALSE。但是在實際的軟件工程中,在進行單元測試時,我們真的要保證有100%的代碼覆蓋率嗎?是否只要保證了單元測試覆蓋了所有的代碼路徑之后,像是語句覆蓋之類的就可以不用全部代碼覆蓋了呢?就像如果出現了《100%代碼覆蓋率的悲劇》中提到的情況那樣,某段代碼功能看起來很簡單,沒有條件,沒有循環,沒有轉換,沒有任何復雜的東西,只是一段簡單的老膠水代碼。那么這時候我們也需要對它們進行代碼覆蓋,進行測試嗎?這類的代碼我們是否也要對它們保證完全覆蓋呢?
問題二:
在結對編程中,因為有隨時的復審和交流,程序各方面的質量取決於一對程序員中各方面水平較高的那一位。
在讀4.5.2 為什么要結對編程時,在P85頁讀到了上文的內容,作者說兩人結對編程時,程序的質量將取決於水平較高的一位,也就是說在編程過程中是由水平較高的程序員作為主導。但是這樣的話,在進行編程的過程中,是否會出現水平較高的程序員長時間的掌控着鍵盤,而水平較低的程序員是否也會覺得由水平高的寫代碼能夠更好地完成項目或者課設,然后自己基本上沒有做什么核心任務這種情況呢?那么到項目結束時,就會出現不會的人還是不會,會的人更加會了的情況。像這樣的情況在我們的課設中也是可以看到的。如果我們想要避免出現這樣的情況,那么在編程初期我們應該怎么樣分配工作才能夠保證即有質有量地完成編程任務,不會出現代碼來不及寫的情況,又能夠讓兩個人都能夠都參與到主要代碼的編程中?怎么樣的工作量才能夠讓結對編程的兩個人都能夠有所收獲呢?
問題三:
得到了需求之后,軟件團隊就要考慮實現這些需求。一個公司可能有多種軟件產品和服務,它們各有不同的戰略意義。一個軟件或服務也由很多功能組成,它們有機地結合起來,才能解決用戶的問題,產生效益。
在讀8.5 功能的定位和優先級時,在P171頁讀到了上文的內容,作者說開發一款軟件需要在需求分析時將所收集到的用戶的需求按照不同的着重點來開發不同的功能。但是我們要如何來確定每項功能的優先級呢,如何確定那種功能是這款軟件的殺手功能呢?是根據市場上其他軟件的使用情況來決定,還是根據對目標人群的調查來決定?而且根據書上P174—P175中的三幅圖來看,我們是不是不僅僅要將殺手功能決定好定位,並做好它,還需要在這基礎上添加一些市面上同款軟件沒有的功能呢?就像我們在去餐廳就餐時,如果有一家餐廳衛生又好吃,還不時有些小活動,我們一般都愛去那吃,那么在開發軟件上也應該要做到這樣的吧,這樣才能夠產生效益。
問題四:
好的用戶體驗當然是所有人都想要的,如果它和產品的質量有沖突,怎么辦?犧牲質量去追求用戶體驗么,用戶能接受嗎?
在讀12.1.6 用戶體驗和質量時,在P269頁讀到了上文的內容。確實,在開發軟件時或者是更新軟件時,難免會遇到上述的情況。如果用戶的需求,用戶的體驗和我們的優化的功能或者軟件起沖突了,那么我們是該顧着用戶的需求呢,還是繼續推出優化軟件?作者在這段話后面引用了一個案例來說明了作者自己的答案,但是似乎太片面了,並不是所有的情況都可以是顧用戶的需求,舍功能的優化的。並且當兩者利弊都差不多時,我們該怎么選擇呢?是否能有個准則來讓我們衡量呢?
問題五:
可以看出,在算法和數據庫領域,創新的想法一開始往往不被接受,而那些建立在前人基礎上的“線性擴展”則往往有着更好的命運。
在讀16.1.2 迷思之二:大家都喜歡創新時,在P349-P350頁讀到了上文的內容,結合前文的內容,不難看出作者認為更新升級往往比起創新更容易讓人們接受。確實,就像是如果你還不容易學會了某種常用的編程語言,例如C語言,java等,結果一段時間后,開始使用某種新的編程語言進行編程了,又只能從頭學起了,這樣的話,確實只是更新會比創新更讓人接受。但是,如果僅僅只是更新換代,不進行技術的創新的話,那么科技的發展就只能停留不前了。我們現在的社會不也是一步步從原來的創新中建立起來的嗎?如果我們否定了創新,那么我們是不是也否定了現在呢?那么我們該如何打破人們對於創新的偏見呢?
【附加題】:請將問題提交至豆瓣:https://book.douban.com/subject/27069503/, 並在博客中給出鏈接
在豆瓣頁面的最下方 “讀書筆記” 那里發言, 《構建之法》的作者會親自答復問題
https://book.douban.com/annotation/54352057/

