架構(gòu),設(shè)計,模式,框架

架構(gòu)

軟件架構(gòu)師對系統(tǒng)的高層視角,或是對系統(tǒng)的抽象。它關(guān)注的是某些對完成這個系統(tǒng)有最大幫助的方面,例如,可用性、穩(wěn)定性,以及靈活性。同時,架構(gòu)對如何達(dá)到這些目的給出了指導(dǎo)和約束。

雖然我們常常把“架構(gòu)”和“設(shè)計”放在一起,總稱為“架構(gòu)設(shè)計”,其實從嚴(yán)格意義上來說,“架構(gòu)”和“設(shè)計”是兩個概念,這兩者的關(guān)注點是不一樣的。

設(shè)計主要是指思考和求證的過程。在這個思考的過程中,針對某個需要解決的問題,提出一些可行的方案,同時給出相應(yīng)的計劃。

一般來說,軟件就是用來解決某個問題的,因為這個問題比較大,或是比較復(fù)雜,所以往往不得不分解,“分而治之”。大的問題不斷被分解,最終成為一個個可以解決的小問題。設(shè)計則指明了如何解決這一個個問題,并提出了方案和計劃。只有這樣,才能最后確保整個軟件的問題被解決,也才能確保軟件按照計劃來進(jìn)行。

架構(gòu)和設(shè)計是兩個不同的概念,它們也出現(xiàn)在不同的階段。當(dāng)軟件系統(tǒng)的架構(gòu)確定后,設(shè)計就開始了。

架構(gòu)與系統(tǒng)的業(yè)務(wù)需求往往是緊密聯(lián)系的,理論上,架構(gòu)不是很關(guān)注系統(tǒng)最后搭建在哪個技術(shù)平臺上(例如,J2EE,.NET),但實際上,很多時候我們在思考架構(gòu)創(chuàng)建的同時,也會考慮系統(tǒng)將要運行的技術(shù)平臺。

設(shè)計是與系統(tǒng)的實現(xiàn)相關(guān)。設(shè)計將架構(gòu)所關(guān)注的那些高層抽象的需求與具體的技術(shù)實現(xiàn)聯(lián)系起來,從而考慮如何實現(xiàn)系統(tǒng)所需要的穩(wěn)定性、安全性,甚至考慮采用哪種模式等。在設(shè)計階段,還要決定在以后開發(fā)過程中應(yīng)采用哪種實現(xiàn)方法論進(jìn)行開發(fā)(例如,TDD,DDD,BDD)。

架構(gòu)與框架

盡管架構(gòu)和設(shè)計都非常重要,但是并非每次創(chuàng)建軟件項目都要經(jīng)歷這個過程。我們可能會把架構(gòu)和設(shè)計固化在可重用的代碼中,以便在創(chuàng)建其他新的項目時重復(fù)使用。那么,我們此時需要的就是一個“框架”:它以編碼的方式實現(xiàn)架構(gòu)和設(shè)計,更利于提高重用性和生產(chǎn)效率。

一般的開發(fā)過程會從收集和分析需求開始,然后是架構(gòu)討論和決策,接下來就是設(shè)計。首先是用低級別的概念設(shè)計支持架構(gòu),然后是真正對最終用戶有用的業(yè)務(wù)概念設(shè)計。設(shè)計完成之后,開發(fā)者通常會花費相當(dāng)長的時間來實現(xiàn)低級別的代碼以支持稍后的業(yè)務(wù)代碼的編寫。

在軟件世界中,將架構(gòu)和設(shè)計寫到框架里面是降低開銷、提高重用性的最好方式,所以可以把框架看成是架構(gòu)和設(shè)計得一種積累,經(jīng)過多個項目的開發(fā),不斷地修改和完善,最后使得整個框架在 性能、伸縮性、安全性等方面都能滿足需求。

架構(gòu)與模式

每次談到架構(gòu),冒出的第一反應(yīng)是:架構(gòu)就是設(shè)計模式,架構(gòu)就是企業(yè)架構(gòu)模式等諸如此類的想法。相信通過上面的講述,大家已經(jīng)清楚了架構(gòu)和模式的關(guān)系。模式是經(jīng)驗得重用,模式對軟件開發(fā)中出現(xiàn)的一些問題給出了比較好的解決方案。模式的決定和使用,常常是涉及階段考慮的問題,當(dāng)然在架構(gòu)創(chuàng)建的時候它也可以給一些問題提供指導(dǎo),在這些指導(dǎo)中可能就包含了可以采用什么模式達(dá)到什么目的等。在架構(gòu)和設(shè)計中,有時采用了合適的模式,就可以快速地解決某些問題,但是兩者絕對不是等同的關(guān)系,也不是多多益善的關(guān)系。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容