l

2015年1月6日 星期二

敏捷架構的8個原則(中)

Jan. 05 14:34~15:27

image

 

今天繼續介紹《Agile Software Requirements》這本書提到的8個敏捷架構原則的第4~6點。

***

原則4:They build it, they test it(他們建構它,他們測試它)

設計、實作、測試,原本就是軟體開發一體的三面,在〈敏捷架構的8個原則(上)〉介紹的原則1:The teams that code the system also design the system(負責撰寫系統的團隊也負責系統設計),反映了設計、實作一體,而原則4則是反映實作、測試一體如果開發人員無法測試一個系統,就要假定這個系統不能正常工作。唯有隨時讓系統保持在可測試的狀態,才有可能讓軟體變軟。換句話說,軟體架構才能夠在測試這道安全網的支撐之下,逐步進行演化。

由這一點可以看出一個重點,就是軟體開發人員的測試的能力,將會決定他的賺錢能力。

***

原則5:The bigger the system, the longer the runway(越大的系統需要越長的跑道)

「跑道」這個比喻在敏捷開發中用到的地方很多,凡是需要建構基礎設施的工作,都可以比喻為「鋪設跑道」。敏捷開發強調「價值驅動」,功能要交付給客戶使用才有可能產生價值。從這個角度來看,架構設計工作並不直接對客戶產生價值。但是沒有這些架構的支持,開發功能的活動又可能產生很大的風險。所以有些人就把構建架構的工作比喻為「鋪設跑道」,雖然旅客是藉由搭乘飛機來到目的地(交付價值),但是沒有跑到飛機也起飛不了。

越大的飛機起飛前需要越長的跑道,軟體系統也是同樣的道理,規模越大的系統需要越長的跑道(較複雜的架構)。因此,對於一個大型系統必須要持續投資時間與資源在鋪設跑道的活動上。

***

原則6:System architecture is a role collaboration(系統架構是角色合作)

從物件導向設計的角度來看,一個系統借由物件與物件之間透過清楚定義的介面合作,來提供使用者所需的服務。系統架構設計也是同樣的道理,它是產品經理、產品擁有者、系統架構師、開發人員等一群人彼此合作之下的產物。

螢幕截圖 2015-01-05 15.20.08

節錄自《Agile Software Requirements》

***

友藏內心獨白:直升機不需要跑道,所以很敏捷啊。

4 則留言:

  1. 但直升機沒辦法像飛機載重物及飛不遠啊 XD

    回覆刪除
  2. 有幾點疑問:
    1. 這些原則好像與agile不完全相關對應(如果以agile宣言內容為準),反而和scrum的規範比較像, e.g., scrum要求cross-functional team,這篇規範4則是說設計、開發、測試一體。

    2. 原則5也很常聽到,但她和user story之間如何平衡就比較少看到有人談了。

    回覆刪除
    回覆
    1. 敏捷宣言之後還有12條原則,裡面的確是沒提到cross-functional team,算是我自己套Scrum延伸解釋 XD。

      刪除