網頁

2014年6月9日 星期一

[有關軟體設計] 什麼是架構 ?

主題: 什麼是架構 ? 

應該問說,怎樣的東西在設計上應該被列為架構而非細節 ?

會問這個問題,是因為我認為在軟體設計中辨識架構是一件非常重要的事情。
 如果架構錯了,那麼可能要全部砍掉重來。
因此,如果能夠辨識架構和之微末節之間的差異,
那們我們就能在一個project kick 之初就能略過那些之微末節,並且花更多的時間反覆思考這樣的設計是否符合需求。 

我個人對於架構的理解如下: 

這個'個別'部份的設計和規劃對於整體的其他部分的影響,

1. Hard to inverse
     不可逆(或是很難reverse,也就是必須某個flow從來,某個部分必須先取消然後從新做)

2. Design dependency
     必須先決定這個設計,才能決定其它設計

3. Implement dependency
        如果這個設計改變了,其它很多的設計也全需要改變
       舉一個簡單的例子,要決定買了幾個衣櫥,要釘在牆壁上,衣櫥裡面的空間也需要規劃。        而你家的空間,放衣櫥的位置是固定的。

那以這個例子來說什麼是架構 ? 
           我個人認為是
                 1. 衣櫥的長寬高(放起來必須視覺上一致)
                 2. 衣櫥的顏色和外觀 (很少買了還可以退貨)
                 3. 衣櫥要釘的位置 (可能衣櫥深度和高度要一樣,才不會突兀)
                 4. 衣櫥的整體容量

 而什麼是枝微末節
                 1. 衣櫥內部每一層的高度規劃
                        因為目前大部分的內部都是可微調的,並且這部分幾乎不會影響到其他部分)

結論:

如果我們真的能夠更理解什麼是架構而什麼是枝微末節,
那麼我們可以花更多一點時間在架構上而少花一些時間在之微末節上,也許就可以做出更良好的軟體。

沒有留言:

張貼留言