軟件體系結(jié)構(gòu)(筆記整理)
簡(jiǎn)單的說(shuō),軟件體系結(jié)構(gòu)就是一個(gè)軟件系統(tǒng)的構(gòu)建方法和內(nèi)部運(yùn)轉(zhuǎn)工作機(jī)制。它涉及總體組織、全局控制、通訊協(xié)議、同步、數(shù)據(jù)存儲(chǔ)、算法等問(wèn)題。
體系結(jié)構(gòu)描述了軟件系統(tǒng)基本的結(jié)構(gòu)化組織方案,它們提供了一套預(yù)先定義好的子系統(tǒng)來(lái)制定它們的職責(zé),包括用于組織它們之間的規(guī)則和指南。
研究軟件體系結(jié)構(gòu)的目的:
1) 避免軟件危機(jī):項(xiàng)目延期、費(fèi)用超支、系統(tǒng)難以修改……
2) 提高軟件的可復(fù)用性
常用的軟件體系結(jié)構(gòu):層體系結(jié)構(gòu)、模型—視圖—控制(MVC)、代理者
層:有助于構(gòu)建這樣的應(yīng)用程序,它能分解成幾組子任務(wù),每組子任務(wù)處于一個(gè)特定的抽象層。
MVC:把一個(gè)交互式應(yīng)用程序分成三個(gè)組件:核心功能、表示和控制。變更—傳播機(jī)制確保這三個(gè)部分的一致性。
代理者:能用于構(gòu)建這樣的分布式軟件系統(tǒng),它有著分離組件,而這些組件彼此通過(guò)遠(yuǎn)程服務(wù)調(diào)用進(jìn)行交互。
模式類(lèi)別:
什么是模式:當(dāng)專(zhuān)家在求解某一特殊問(wèn)題時(shí),他們一般不會(huì)發(fā)明一種和以有解決方案完全不同的方案來(lái)處理問(wèn)題。他們往往想起已解決過(guò)的相似問(wèn)題,并重用其解決的精華來(lái)解決問(wèn)題。模式既是一個(gè)過(guò)程,又是一個(gè)事物。
一些模式有助于把一個(gè)軟件系統(tǒng)分解成子系統(tǒng)。另一些模式支持子系統(tǒng)和組件的細(xì)化或它們之間關(guān)系的細(xì)化。我們可以把模式分為兩種模式:
體系結(jié)構(gòu)模式
設(shè)計(jì)模式
體系結(jié)構(gòu)模式:它是高層的模式,用于建立整體的軟件框架和作為具體軟件結(jié)構(gòu)的模板。
設(shè)計(jì)模式:是中等規(guī)模的模式,它們?cè)谝?guī)模上比體系結(jié)構(gòu)模式小,但獨(dú)立于特定編程語(yǔ)言。它提供了一個(gè)用于細(xì)化軟件系統(tǒng)的子系統(tǒng)或組件,或它們之間關(guān)系的模板。它是概念、思維方式上的抽象和重用。
設(shè)計(jì)模式類(lèi)型:
創(chuàng)建型(creational)解決如何創(chuàng)建對(duì)象的問(wèn)題
結(jié)構(gòu)型(structural)解決如何正確的組合類(lèi)或?qū)ο蟮膯?wèn)題
行為型(behavioral)解決類(lèi)或?qū)ο笾g如何交互和如何分配職責(zé)的問(wèn)題
重構(gòu)
所謂重構(gòu)是這樣一個(gè)過(guò)程:在不改變代碼外在行為的前提下,對(duì)代碼做出修改,以改進(jìn)程序內(nèi)部的結(jié)構(gòu),提供起可理解性,降低其修改成本。重構(gòu)是一種有紀(jì)律的,經(jīng)過(guò)訓(xùn)練的程序整理方法。從本質(zhì)上說(shuō),重構(gòu)就是在代碼寫(xiě)好之后改進(jìn)它的設(shè)計(jì)。
posted on 2008-03-31 22:42
Macaulish 閱讀(756)
評(píng)論(0) 編輯 收藏 引用