2008年10月19日 星期日

R19 設計在於管理(2)──應付改變能力

在設計時曾說過系統要能應付不同需要的話,必須可以自由地在不同的面向作乾淨的切割。這種結果也必須精確地先定義每一個可切割的層次,再精確地定義每一個元件與函式放在應該存放的那個小格子裡。

業務曾問我目前維護的系統是否可以獨立出某個特定模組出來販售,我很直接地回答不行。否定的原因主要有兩個:一是層次與元件定義的不明確、另一是元件使用資源的模糊。層次與元件沒有理想定義造成想取出一些元件時,使用關聯的混亂迫使一堆不必要的元件也必須被選用;使用資源沒有界定範圍會讓元件取出時,無法得知實際使用到的資料到底有什麼。

改變是無所不在的,曾有同事說過讓客戶需求定案而不輕易改變會是讓系統品質提升的好方法,我反問他不久前才說過的經驗:要是架構師在最底層的功能就選錯了實作的技術的話呢?客戶時常改變需求沒錯,但是在不違背設計精神的前提下是允許加減功能劇本的動作的。然而更重要的是要讓自己的設計作好應付各種變化的可能。

精確的定位與關聯的最小化是必要的努力,事物與元件一對一的對應也是不可忽視的重點。唯有在設計時致力於這兩者的實現,才有機會讓設計的元件像積木一般靈活地分解組合與替換,卻不會花費過多的時間與造成過多的影響。

沒有留言:

張貼留言