想象本身不需要什么前提,三歲的孩子也會展開豐富的想象。問題是,當你要針對一個特定目標展開想象的時候,必須具備一些特定的前提條件。換句話說,由于隱喻適用于定制軟件開發(fā)等,所以在轉換視角來觀察軟件時,設計者必須具備一定的生活閱歷。為什么呢?因為,只有生活本身,才能為隱喻提供取之不竭的素材。例如,經歷過農村生活的人,會了解在合適的季節(jié)種植合適的作物,他們會購買種子和化肥、在合適的土壤中播種、在秧苗長到一定的階段除草、遭受蟲害時去尋找合適的農藥、在成熟的季節(jié)去收割、對作物進行簡單加工后去售賣。熟悉這個過程并對它進行一些泛化的思考,你就會發(fā)現(xiàn),這個過程完全可以作為另一個過程的隱喻。由于隱喻的靈感通常來自生活實踐中的常識,所以從這個角度上來看,
生活閱歷是必須具備的前提條件。除了生活閱歷之外,一定的知識積累也是建立隱喻的必要條件。 由于隱喻要為定制軟件開發(fā)所用,因此有必要使用相關的知識對想象進行修正。相關的知識其實都是一些基于隱喻的元素,掌握一項技術有點像在大腦中添加一個隱喻,例如,觀察者模式。而使用一項技術,就是在應用一個隱喻。
架構模式是對架構的進一步抽象。由于抽象進入了較高的層次,架構模式逐漸成為軟件行業(yè)中的語言元素。類似于自然語言,當我們大連軟件開發(fā)提到天空、海洋、陸地、山川、森林、河流時,沒有人再會去探究這些詞匯的含義,因為這些詞匯本身構成了我們的主觀世界。同樣,當我們提到三層架構、分布計算、點對點、插件、SOA、MVC時,也很少需要過多解釋,除非我們還處在企業(yè)應用領域軟件的語言入門期。仔細回想一下,我們在討論架構設計場景時,那些架構模式是我們進行溝通的基本語言。這非常像談論房子時的場景,我們總是會使用一些基本語言來進行溝通,例如,我們會說自己的房子是磚混結構還是鋼筋混凝土框架結構等。
架構模式,為定制軟件開發(fā)架構設計指定了范圍。不過,它對于軟件開發(fā)的約束,也僅限于此。有時候,我們需要反省內心,體驗這些模式是否已經成為我們思維的一部分;有時候,我們致遠軟件開發(fā)www.soft8.com.cn需要遠觀,觀察這些模式是否已經自然地融入了我們的系統(tǒng)。