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