在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),采取的通常都是逐級(jí)分解的策略,無(wú)論是分層、分模塊都是典型的分而治之的策略,而系統(tǒng)在通過(guò)逐步分解形成架構(gòu)、詳細(xì)設(shè)計(jì)時(shí),輸入、輸出以及擴(kuò)展都是考慮的重點(diǎn)。
在進(jìn)行架構(gòu)設(shè)計(jì)時(shí),首先是需要根據(jù)項(xiàng)目的需求、技術(shù)限制以及性能要求等決定項(xiàng)目采用的架構(gòu)體系,這個(gè)架構(gòu)體系停留在技術(shù)階段,之后通過(guò)對(duì)架構(gòu)體系中的各種層次做出框架的選擇或解決方案的提供形成技術(shù)架構(gòu),在技術(shù)架構(gòu)的基礎(chǔ)上根據(jù)業(yè)務(wù)需求形成系統(tǒng)的業(yè)務(wù)架構(gòu),進(jìn)而形成系統(tǒng)的整體架構(gòu)。
在形成系統(tǒng)的整體架構(gòu)后對(duì)系統(tǒng)進(jìn)行子系統(tǒng)、模塊的劃分,在劃分子系統(tǒng)、模塊時(shí)輸入、輸出以及擴(kuò)展的考慮就構(gòu)成了子系統(tǒng)、模塊的基本而重要的設(shè)計(jì)原則,根據(jù)輸入來(lái)判斷子系統(tǒng)或模塊的耦合性,根據(jù)輸出來(lái)判斷子系統(tǒng)或模塊對(duì)外提供的功能,根據(jù)擴(kuò)展來(lái)判斷子系統(tǒng)或模塊中變化的可能性,以應(yīng)對(duì)需求上的變化。
通過(guò)劃分形成了系統(tǒng)的模塊后,就可以開(kāi)始對(duì)模塊進(jìn)行詳細(xì)的設(shè)計(jì)了,這個(gè)時(shí)候輸入、輸出以及擴(kuò)展的重要性同樣表現(xiàn)的非常明顯,模塊通常由各種各樣的組件或?qū)ο蠼M成,對(duì)于這些組件和對(duì)象,輸入決定了其依賴性,而輸出決定了其對(duì)外提供的功能,擴(kuò)展決定了在將來(lái)需求變化時(shí)這些組件和對(duì)象能否簡(jiǎn)單的實(shí)現(xiàn)。
輸入不僅僅由輸入的參數(shù)構(gòu)成,它還包括了所依賴的服務(wù)、環(huán)境或其他方面的要求,從輸入可以判斷耦合度。輸出代表了對(duì)外提供的服務(wù)。
擴(kuò)展代表了可被擴(kuò)展的功能點(diǎn),類如Eclipse中的擴(kuò)展點(diǎn)、js中的事件,如onClick等等。
對(duì)于輸入、輸出以及擴(kuò)展的慎重考慮決定了從黑盒層面考慮的系統(tǒng)設(shè)計(jì)對(duì)于需求的滿足度,這些在系統(tǒng)設(shè)計(jì)時(shí)都應(yīng)有充足的體現(xiàn)。