1. 程式人生 > >《C#敏捷開發實踐》讀書整理

《C#敏捷開發實踐》讀書整理

《C#敏捷開發實踐》是一本相當不錯的良心之作。本書分為兩個部分:

第一部分:講了敏捷開發的一些原則,書中列舉了一些很不錯的實現例子。本書主要使用的是Scrum的敏捷開發流程 
第二部分:通過一個具體開發過程中的實踐,講了如何應用這些模式。

對於本書的理解

本書講解了C#敏捷開發,首先我們承認沒辦法做出一個大而全的軟體,沒辦法一次性的完成使用者的需求。所以我們需要去擁抱變化,採用迭代的方式逐步去適應客戶提出的需求。而適應市場,擁抱變化需要做幾方面的改變,首先我們需要採用更加敏捷的開發流程,其次在開發中我們需要一些技術手段,去實現自適應的系統

關於敏捷開發的理解

首先本書中介紹了Scrum敏捷開發的一般流程。個人理解的Scrum是把一個產品通過迭代演化的方式分為若干個階段(衝刺)來開發,在每個開發中,完成一個最小可以演示的單元。把要開發的內容,從使用者的角度去講幾個故事,然後把這些故事去分成開發任務,去一一實現。因為我們承認我們開發的軟體是不完整的,需求會不斷的變化,所以我們採用了迭代開發的方式進行開發,而迭代開發就需要我們去擁抱變化,同時快速的相應市場。

Scrum開發中的角色

  1. 專案負責人 主要是負責和客戶進行溝通,把客戶的需求轉化為故事,同時組織團隊進行評估、開發和驗收
  2. scrum負責人,負責組織敏捷開發的流程,對開發中的問題,反饋進行記錄
  3. 開發團隊,負責實現故事點的開發,同時完成自己的單元測試
  4. 測試團隊,負責測試開發人員完成的開發工作。

scrum的一些基本的流程

  • 首先要進行開發大會,對開發進行評審。
  • 把使用者對產品的需求進行拆分,按照階段進行迭代。從最小的可演示單元到最小可市場化的產品,再到逐步豐滿,完善的產品。
  • 然後把若干個可形成第一次的可以演示的故事挑選出來。同時對故事的開發難易程度進行評估,評估的結果以故事點的形式進行呈現出來。
  • 然後挑選可以在1-2周可以實現的故事,分解成開發任務。
  • 開發人員進行開發,在開發的過程中努力的分析可能存在的變化,去開發一個可以擁抱變化的自適應系統。
  • 開發人員在開發過程中,需要測試驅動開發,測試說明了功能意圖和實現的邊界,能滿足測試需求的功能點,才可以滿足需求
  • 在開發過程中,要逐步優化和重構。
  • 開發完成後,交付測試人員,完成測試
  • 組織演示,讓利益相關人員進行參與,提出需求和意見,行程擠壓工作。
  • 開敏捷總結大會,找出什麼是做的好的,什麼是做的不好的,那些需要改進,那些需要堅持,那些實出乎意外的。
  • 然後再次進入這個迴圈,同時敏捷開發的負責人需要把進度記錄到scrum板上。

    scrum的一些名詞

  • 豬:全身心參與開發的人
  • 雞: 參與開發,但是非全身心
  • Scrum板:記錄scrum的一些開發過程
  • 衝刺:把若干故事點進行羅列,進行一個階段的開發,完成一個最小的可演示產品
  • 擠壓工作: 待開發完成的故事點
  • 每日站立會議:需要在每天,站立說明自己做過的工作和將要計劃的工作,以及遇到的問題

    自適應系統的一些概念

    軟體工程的SOLID原則

    1. 單一職責原則
    2. 開閉原則
    3. Liskv置換原則
    4. 介面分離原則
    5. 依賴注入原則

原則自適應的一個特徵

應該儘量減少軟體的依賴,同時避免無需的依賴,軟體應該依賴於抽象,而不是依賴於實現。所以在軟體開發中,儘可能的靈活使用介面,隔離變化是做好自適應系統的主要難點。
而多種設計模式都是為了更好的做出自適應系統。

依賴介面而非依賴實現的好處

  1. 方便隔離變化,軟體的實現和細節無關
  2. 方便單元測試
  3. 有利於軟體的重構和優化
  4. 可能會降低軟體的可讀性

書中講到的集中常用的設計模式

  1. 括謂語修飾器
  2. 分支修飾器
  3. 延遲修飾器
  4. 日誌記錄修飾器
  5. 效能修飾器
  6. 非同步修飾器
  7. 屬性和事件修
  8. 空物件模式
  9. 策略模式

學會的幾個新的詞語和方法

  1. 程式碼味道
  2. 模式和反模式
  3. scrum開發
  4. 修飾器的詳細模式
  5. 逆變和協變
  6. 空物件模式
  7. 階梯模式和隨從反模式
  8. 縱切關注點

下一步如何深入學習和研究

  1. 把修飾器模式的程式碼,認證的自己敲打一遍,增加印象
  2. 把書中第二部分的程式碼從Github上下載下來,自己研究一遍,同時敲打一遍
  3. 買幾本Scum的書,認真的學習,並且在實踐中去貫徹。
  4. 抽點時間搜尋和研究學習下逆變和協變。
  5. 抽點時間,再認真的下載幾個開源專案學習下。