架構(gòu)設(shè)計,一直就是軟件業(yè)界中顯得高深的名詞之一,會造成很多的人對于它都充滿了神秘感,但接觸過幾年軟件業(yè)的人很多時候又會覺得軟件架構(gòu)原來不過如此,特別是看到一些架構(gòu)設(shè)計文檔后更是得出如此的感想,但真的是如此嗎?也許是因為那些架構(gòu)設(shè)計文檔并沒有起到它們真正的作用,只是拿來糊糊人的吧,架構(gòu)設(shè)計文檔最重要的是要能對系統(tǒng)的軟件設(shè)計做出指導(dǎo),做出規(guī)范性的約束,不談這些,重點還是談架構(gòu)設(shè)計。
首先我們想想為什么要做架構(gòu)設(shè)計呢?可能很多人會說在他們的系統(tǒng)中就是沒做架構(gòu)設(shè)計的,但其實不管你有沒有做架構(gòu)設(shè)計,你的腦海中或多或少都是已經(jīng)考慮過的,只是也許沒有變的那么的正規(guī),首先,我們來看看什么是架構(gòu),架構(gòu)作為系統(tǒng)的骨架而存在,正因為這個原因才說所有的系統(tǒng)都是有架構(gòu)的,有架構(gòu)自然就有設(shè)計,盡管它也許只是浮在你腦海中的某個東西而已,從架構(gòu)中我們可以看到對于整個系統(tǒng)的支持,包括系統(tǒng)的各個方面,業(yè)務(wù)需求、用戶需求以及功能需求的滿足,架構(gòu)設(shè)計能幫助你站在高的角度來看待、分析整個系統(tǒng),在架構(gòu)設(shè)計中通常采用OOAD的方法來幫助完成架構(gòu)設(shè)計,想想沒有架構(gòu)設(shè)計的系統(tǒng)是什么系統(tǒng)呢?是一個沒有骨架的系統(tǒng),一個人沒有骨架會怎么樣呢?那么,同樣,一個系統(tǒng)呢?一個系統(tǒng)沒有骨架甚至比一個人沒有骨架更為嚴(yán)重。
那么我們怎么去做架構(gòu)設(shè)計呢?架構(gòu)來源于需求,是在對需求進行分析、設(shè)計的情況下產(chǎn)生出來的,一個系統(tǒng)的需求通常非常的復(fù)雜,那么怎么樣去產(chǎn)生它的架構(gòu)呢?我們知道軟件設(shè)計中最重要的就是抽象,其實說的更為專業(yè)應(yīng)該是采用OO的思想,在過去采用的是面向過程的思想,這里就不再去討論為什么要采用OO了,OO中幾個重要的思想就是抽象、繼承、封裝,在分析和設(shè)計時我們同樣要進行遵循,分析過程是對需求進行分析,產(chǎn)生出概念模型,此概念模型和設(shè)計的模型是不同的,概念模型停留于業(yè)務(wù)層面,而設(shè)計模型則為對此概念模型提出技術(shù)級別的解決實現(xiàn)方案,在經(jīng)歷了分析、設(shè)計過程后我們的系統(tǒng)架構(gòu)就得以誕生,系統(tǒng)架構(gòu)作為系統(tǒng)的一部分,同樣要面臨需求變化所帶來的影響,而同時系統(tǒng)架構(gòu)作為系統(tǒng)最為基礎(chǔ)的部分,是要盡量減少變化所帶來的影響的,要解決這個矛盾,在做架構(gòu)設(shè)計時就要多多的考慮,可以采用使用模式、接口化等多種方式。
大家也許也看出,在寫這篇blog我表達(dá)的并不是很清楚,確實,因為我自己都還有不少迷惑的地方,雖然寫過那么幾篇架構(gòu)設(shè)計文檔,做過那么幾次架構(gòu)設(shè)計,但一直以來就覺得以前做的架構(gòu)設(shè)計不是那么的到位,通常有些部分還是平白無故就誕生出來了,而這些主要是依據(jù)的自己的經(jīng)驗,而不是對需求的分析,這對于系統(tǒng)架構(gòu)而言是致命的,覺得現(xiàn)在也是靜下心來好好考慮的時候了,同時也會多多的參看架構(gòu)設(shè)計理論方面的書籍,結(jié)合實踐提升自己在架構(gòu)設(shè)計上的水平,所以將這篇blog的標(biāo)題定位了思考之一,在思考的有些進展的時候會將這個繼續(xù)的寫下去,也希望能得到更多的做過架構(gòu)設(shè)計的同仁、前輩的指點。