《資訊話題》
細說「軟體工廠」概念(四)
吳信輝
(文續第2201期第8頁)
在前(2201)期的文章之中,我們談到了錯誤層級的抽象化(Working
at the Wrong Level of Abstraction)、瞭解什麼叫做抽象化、軟
體發展中的精緻化與軟體發展中的抽象化、由上往下以及由下往上
的開發手法以及滿足非功能性的需求。接下來,本期將繼續討論如
何在限制條件之下,可以達到兩全其美的目標。
滿足限制條件(Satisfying Constraints)
上一期所說的精緻化、抽象化與由上往下以及由下往上的開發手
法是無法滿足軟體開發的所有需求,因為滿足了一般化的需求後,
軟體開發人員還需要滿足非功能性的需求,而非功能性的需求常常
是隨機產生的,並沒有一定的規則,軟體開發人員不容易掌握,軟
體開發人員只有在軟體的設計程序開始之後,才可以逐步收斂掌握。
我們以軟體工廠一書中所舉的例子:假設有兩個網路系統,使用
同樣的硬體設備,理論上這兩個網路系統的速度應該會是相同的,
但是事實上,兩個網路系統會因為各自所使用的軟體演算法的差異,
導致個別的網路中,整體速度的差異,這就是一個很好的例證。也
就是說,就算是兩個需求功能完全一模一樣的軟體,會因為使用者
在不同情境下的反應,而產生不同的非功能性需求。例如:某個專
案之中,今天該使用者遇到了駭客的攻擊,因此今天開進度會議的
時候,他會特別注重安全性這一類的非功能性需求;兩週後該使用
者遭遇到上司對於系統效能的質疑,因此在新的進度會議中,又針
對系統效能提出了非功能性的需求,這一個就是非功能需求的特性。
除非軟體已經經過設計定案,否則,軟體的需求還是會持續處於變
動的狀態之中。因此該書中提到:「在軟體設計過程中,一旦決定
了軟體的設計型態,就會決定了解決方案的架構。」
在軟體工廠一書中,作者利用決策樹【註一】的概念來做為軟體
設計決策(design decision【註二】)的方法。如何利用決策樹來
協助軟體設計決策呢?簡單地說就是在決策樹所列出的解決方案之
中,找尋合適的解決方案。「軟體設計決策將解決方案區分為好幾
個部份,這些部份都是由元件所組成,軟體設計決策再去配置這些
元件所應該有的相關權責。」例如:我們在一般的軟體開發工具
(IDEs)中都會看到一些拖拉式元件,這些元件都具備兩大特性:
第一個特性是該元件的屬性;第二個特性就是該元件的行為。而軟
體開發人員就是利用軟體開發工具去定義元件之間的互動行為。
當然,在解決方案中,還有許多議題需要處理,例如:安全性、
多執行緒的問題等。因為將需求問題解構的方法很多,因此決策樹
的方法將這些方法,組合成軟體設計決策的組合集,然後再將組合
集轉換為樹狀的結構,如【圖一】所示。樹的根(root),就是問
下一页