Ruddy Lee 分享空間

Emergent Design 演化設計

精實原則: 崁入完整性 Build Integrity In

leave a comment »

沒錯! 這正是我需要的東西。

— 客戶

這是一個多變的時代,許多東西的定義也跟著一直在改變。也就是說放諸四海皆準的東西越來越少了。例如:App 的好壞改變了品質的定義。當你安裝了一個讓你恨不得立刻推薦給所有朋友知道的App時,不管他有多少缺點,你在推薦的時候一個都不會去提到,因為他已經滿足你真正的需求了,所以你只會注意到它做了些什麼,而不會在乎他的缺陷,也就是所謂的情人眼裡出西施,此時的品質就是西施。

如何造就這樣的產品呢?

Mary & Tom poppendieck將上面這種感知稱之為感知完整性 Perceived Integrity 和 概念完整性Conceptual Integrity。你一定也有過這種感覺,例如:運用 Google 來做搜尋。Google 的搜尋引擎就是最典型感知完整性的例子,只要有東西要找的時候,你一定先打開Google 來,原因可能是他很快,讓你覺得找東西一點也不煩。還有就是打錯字了,他照樣找給你。就是這些特徵讓大家持續使用他。換句話說,就是他打動了人心。這種特徵也稱為外部完整性。 另外一個例子來自微軟office系列的 OneNote 產品,他則兼具感知完整性和概念完整性(又可稱之為內部完整性)這二者。不論你在採用哪一個Office 產品做PPT或是WORD、EXCEL進行工作,只要想到要把資料記錄下來,你就會點擊工作列上的 OneNote圖示,啟動它來作筆記,原因是: 它甚麼都可以記錄,沒有特定格式限制。不管要放進去的東西是甚麼格式,放進去就對了,太符合人類想儲存東西時的想法,你不會想先去做分類再來記錄的。因為方便使用(外部完整性)而它又能融合office 多種工具的存取能力的一致性(內部完整性)所以就成為了Office最受喜愛的工具程式。以Mary & Tom的論點,認為要構建具有高度感知完整性和概念完整性的系統,應該在客戶與開發團隊之間以及開發團隊的上下游過程之間形成出色的資訊流(information flow)。而此資訊流必須考慮到系統當前和潛在的用途。具體上怎麼做呢?

  • 增加全體開發人員在應用領域方面的知識。

  • 接受變更,並將變更看成是一件正常的過程和容納新設計及決策的能力。

  • 營造提高通訊能力的環境,以便對人員、工具和訊息進行整合。

成就感知(外部)完整性

每天都能持續的把客戶的價值觀變換成細部設計給開發團隊,不斷累積開發單位在感知完整性的決策能力上頭。但是容忍過多的變化容易讓開發團隊不斷在做返工的動作,成本也會不斷的增加,如何是好? 這一點可以參考Scrum的迭代開發模式,也就是短衝Sprint的作法。在一個短的開發周期內盡量讓開發人員不受到干擾,能夠以全力去開發產品直到Sprint結束時在對客戶進行展示的行為,並運用這個時間點來接受客戶的回饋,作為納入未來開發的依據。

成就概念(內部)完整性

概念完整性表示系統的核心概念是否能穩定的內聚而發揮整體的作用。這是架構性的問題;它牽扯到各個元件之間是否匹配並可以發揮作用。也就是說架構是否能有足夠的靈活性、可維護性、有效性和響應的平衡能力。說穿了就是能有效回應客戶需求的架構設計。這是賦予概念完整性的能力。它有著一種天生的複雜性,為了讓團隊能夠克服其中的複雜性,必須建立良好及有效的溝通機制來適度降低複雜性。有一種看似重復工做但又像是設計的行為,我們稱它"重構"。

重構 Refactoring

改進不僅僅是為了滿足客戶需求,改進之所以必要,是因為複雜系統的某些效果在設計時未能夠受到很好的理解。它是一種按部就班的設計方式,就是先設計讓它能起作用,了解它的缺點,然後再來對設計加以改進。這便是重構式的設計。他是屬於浮現式設計的一環。一般的工程師只是把重構當成重新整理程式,在重整的過程中盡量讓輸出入的結果不變,而只是改善程式碼的正確性跟簡潔度。這是基於測試開發的理論所發展出來的重構方式,他的目的與基於浮現式設計所做的重構是不同的,他是用來改善設計用的。

當你是基於測試開發的重構,你第一個重構的動作應該是重新命名變數或是函數。如果基於設計所做的重構,你第一個重構的動作應該是拿解決了的問題去套用現有的設計模式,看看是否能找到合用的模式,然後進行延伸式的套用方式讓模式融入的現有環境中。

二種不同目的的重構:

  • 為了解決程式穩定性及增加可維護性的重構。

  • 基於浮現式設計所做的重構。

一般採用敏捷迭代開發方式時都會害怕這種累進式的開發方法會把架構設計弄得支離破碎,許多的設計一直被需求變更弄得失去效用或成了壘罪。請注意一點;出色的設計本來就應該隨著時間的改變而能持續演進的。因此重構式的設計正好能夠符合這個現象。重構不是一種浪費,當我們在向客戶提供商業價值時,重構反倒是避免浪費的方法之一。

Written by ruddyllee

2014 年 10 月 06 日 於 21:30:59

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: