1. 程式人生 > >軟工網絡個人閱讀作業2(201521123098 孫慧君)

軟工網絡個人閱讀作業2(201521123098 孫慧君)

ati 沖突 優化 測試 豆瓣 IT 全局 一位 ron

▲由於上周天我臨時請假匆匆買了車票回家鄉看病了,當時還沒發布作業,只帶了電腦回去,沒有帶課本,然後返校是周六晚上才返校的,為了完成作業就在家裏下載了電子版《構建之法》看,所以沒有標上頁碼,望理解。

提出問題

快速通讀教材《構建之法》,並參照提問模板,提出5個問題。
如何提出有價值的問題? 請看這個文章:*http://www.cnblogs.com/rocedu/p/5167941.html* ,以及 在互聯網時代如何提問題。 還有這些要點:

  • 在每個問題後面,請說明哪一章節的什麽內容引起了你的提問,提供一些上下文
  • 列出一些事例或資料,支持你的提問。
  • 說說你提問題的原因,你說因為自己的假設和書中的不同而提問,還是不懂書中的術語,還是對推理過程有疑問,還是書中的描述和你的經驗(直接經驗或間接經驗)矛盾?

一個模板可以是這樣:

我看了這一段文字 (引用文字),有這個問題(提出問題)。 我查了資料,有這些說法(引用說法),根據我的實踐,我得到這些經驗(描述自己的經驗)。 但是我還是不太懂,我的困惑是(說明困惑)。

或者這樣:

我反對作者的觀點(提出作者的觀點,自己的觀點,以及理由)。

大學生應該能寫出自己的思考, 而不是摘抄書本內容。

提示:編程經驗不多的同學,建議看16章 “創新”, 提出自己的問題。


  • 一、結對編程不是“平等”的
    4.5.2 為什麽要結對編程中,作者提到:

    在結對模式下,一對程序員肩並肩、平等地、互補地進行開發工作。

    既然說到結對編程中這一對程序員是平等、互補的,那麽,這對程序員的能力,我覺得應該是勢均力敵的,才能實現真正意義上的平等互補。
    在百度百科[1]中也有說到:“其實結對編程做起來很簡單也很有趣,找個水平差的不太遠的程序員和自己配成一對……”
    所以我認為,這種和諧合作的前提是水平相當,這裏就涉及了一個結對編程拍檔的選擇原則或標準的問題。但若所有的結對編程都如此嚴格要求,這將會使項目的起步存在難題。
    在我看來,這個平等應該是心態上的平等,是一個虛心合作的態度所贏得平等。並不是真正意義上的平等。雖說“三人行必有我師”,但人的能力終歸有高低之分。
    所以,我覺得結對編程是一個“不平等”的有傾倒向的過程,但是可以是一個互補的過程,在結對編程的過程中兩人相互學習相互監督以達到項目完成的最優。這個可能有點過於牛角尖了,但是我覺得還是有必要說一說的。

[1]參考自:結對編程 百度百科


  • 二、程序各方面的質量並不是取決於一對程序員中各方面水平較高的那一位的
    同樣的一章節,作者在後文又寫到:

    在結對編程中,因為有隨時的復審和交流,程序各方面的質量取決於一對程序員中各方面水平較高的那一位。

    這裏也說到了“取決於各方面水平較高的那一位”,這裏就在某種角度和上面的觀點有所沖突。既然有處於相對決定性地位的一者就不應該說是“平等”的。
    另外,我認為這句話相對片面。既然說了,結對編程是一個互補的過程,那麽就存在各方面水平較低的一位在某一方面相對突出的可能。就好比兩個廚師做一道菜,A在刀工、調味等方面都優於B,控制火候的能力卻沒有B好。而有些肉質菜品對於火候控制的要求是相對高的,那麽最後完成這一道肉(咕嚕嚕~)的決定性因素除了調味就是火候,火候的適當調控會使肉質更好地體現出來,也許火大了就太硬太老了,火小了就煮不熟煮不透。那麽,你說這道菜的成功是取決於A麽,不能這麽說吧。
    emmm這麽說應該吃貨都會懂我的意思了吧=w=,所以我認為不能寫得這麽果斷。
  • 三、敏捷流程是否等同於敏捷開發?
    6.1 敏捷的流程裏作者沒有給出一個明了的定義,只是提出:

    在軟件工程的語境裏,“敏捷流程”是一系列價值觀和方法論的集合。

    由此我對敏捷流程的定義產生了疑惑,於是查閱網頁,沒有查到“敏捷流程”這個概念,而看到了“敏捷開發”這個詞匯,裏面說到:敏捷開發是以用戶的需求進化為核心,采用叠代、循序漸進的方法進行軟件開發。[2]
    我到目前為止看書所得到的對“敏捷流程”的理解,我認為他們應該是同一個概念。但轉而又覺得開發是一個“動態性”的過程,而“流程”一詞在百科的定義是這樣的:“基本意思是指水流的路程;事物進行中的次序或順序的布置和安排;或指由兩個及以上的業務步驟,完成一個完整的業務行為的過程。”[3]是一個“靜態性”的過程,由此我又認為他們並不是等同,希望得到解答。

    [2]參考自:敏捷開發 百度百科
    [3]參考自:流程 百度百科


  • 四、還有哪些敏捷開發方法論
    在書中,作者一直在強調敏捷這個字眼,而在書中也點到了幾個經典的方法論:

    問敏捷的方法論有哪些?
    答:比較有名的是:
    愛撫弟弟(FDD – Feature Driven Design)
    史克朗姆(SCRUM)
    極限編程(XP)

    我查詢網絡稍微了解了一下這些方法論,並且得知了另外的幾個方法:
    ①水晶方法
    ②DSDM-動態系統開發方法
    ③測試驅動開發(也就是TDD)
    ④Lean軟件開發(精益軟件開發)[4]
    不知道能不能把這些方法論理解為一些原則的集合,就比如lean軟件開發的準則是:消除浪費、增強學習、盡量延遲決定、盡快發布、下放權力、嵌入質量、全局優化,是不是說明它是這些準則的集合,符合這些準則的方法就稱為LEAN軟件開發?
    對書本也是粗略掃了一遍,有點雲裏霧裏不明所以QAQ。

    [4]參考自:FakerWang:敏捷開發方法簡介


  • 五、學生的個人能力衡量與發展?

    在課本3.1 個人能力衡量與發展裏由職業籃球選手入手點到了軟件開發的工作量和質量怎麽衡量:

    a . 項目/任務有多大?說明項目的大小,一般用代碼行數(Line Of Code,LOC)來表示;也可以用功能點(Function Point)來表示。
    b . 花了多少時間?可以用小時、天、月、年來表示。一組人所花費的時間可以用(人數×時間)來表示,例如某項目花費了10個人×月。
    c . 質量如何?交付的代碼中有多少缺陷?

    這樣子看來是沒錯的,但學生的個人能力似乎不能這樣子衡量,畢竟作為一名學生,不會像一個職業人員一樣守著一個項目鉆研上一整天,學生還是由每天的學習進度需要去跟上,這樣子零散的編程時間或者說是完成一個項目的時間很難得到捕捉並截取下來作為一個數據來衡量,而且學生目前的項目一般不會大哪裏去。那麽要如何去衡量呢。

【附加題】
請將問題提交至豆瓣:*https://book.douban.com/subject/27069503/*, 並在博客中給出鏈接
在豆瓣頁面的最下方 “讀書筆記” 那裏發言, 《構建之法》的作者會親自答復問題
豆瓣提交鏈接
技術分享圖片

軟工網絡個人閱讀作業2(201521123098 孫慧君)