軟件架構(gòu)
軟件架構(gòu)(軟件架構(gòu)風(fēng)格、常見(jiàn)架構(gòu)模式)
(1)軟件架構(gòu)風(fēng)格:
① 數(shù)據(jù)流風(fēng)格:數(shù)據(jù)流風(fēng)格的軟件架構(gòu)是一種最常見(jiàn),結(jié)構(gòu)最為簡(jiǎn)單的軟件架構(gòu)。這樣的架構(gòu)下,所有的數(shù)據(jù)按照流的形式在執(zhí)行過(guò)程中前進(jìn),不存在結(jié)構(gòu)的反復(fù)和重構(gòu),就像工廠中的汽車流水線一樣,數(shù)據(jù)就像汽車零部件一樣在流水線的各個(gè)節(jié)點(diǎn)上被加工,最終輸出所需要的結(jié)果(一部完整的汽車)包括:批處理序列、管道/過(guò)濾器;
② 調(diào)用/返回風(fēng)格:就是指在系統(tǒng)中采用了調(diào)用與返回機(jī)制。利用調(diào)用 - 返回實(shí)際上是一種分而治之的策略,其主要思想是將一個(gè)復(fù)雜的大系統(tǒng)分解為一些子系統(tǒng),以便降低復(fù)雜度,并且增加可修改性。包括:主程序/子程序、數(shù)據(jù)抽象、面向?qū)ο螅磳?duì)象間相互調(diào)用)、層次結(jié)構(gòu)(分層處理,上層以下層為基礎(chǔ)));
③ 獨(dú)立構(gòu)件風(fēng)格:強(qiáng)調(diào)系統(tǒng)中的每個(gè)構(gòu)件都是相對(duì)獨(dú)立的個(gè)體,它們之間不直接通信,以降低耦合度,提升靈活性。包括:進(jìn)程通信、事件驅(qū)動(dòng);
④ 虛擬機(jī)風(fēng)格:虛擬機(jī)風(fēng)格的基本思想是人為構(gòu)建一個(gè)運(yùn)行環(huán)境,在這個(gè)環(huán)境之上,可以解析與運(yùn)行自定義的一些語(yǔ)言,這樣來(lái)增加架構(gòu)的靈活性。包括:解釋器、基于規(guī)則的系統(tǒng)(即專家系統(tǒng));
⑤ 倉(cāng)庫(kù)風(fēng)格:在倉(cāng)庫(kù)( repository )風(fēng)格中,有兩種不同的構(gòu)件:中央數(shù)據(jù)結(jié)構(gòu)說(shuō)明當(dāng)前狀態(tài),獨(dú)立構(gòu)件在中央數(shù)據(jù)存儲(chǔ)上執(zhí)行,倉(cāng)庫(kù)與外構(gòu)件間的相互作用在系統(tǒng)中會(huì)有大的變化。包括:數(shù)據(jù)庫(kù)系統(tǒng)、黑板系統(tǒng)、超文本系統(tǒng)。
(2)常見(jiàn)架構(gòu)模式:
① 管道/過(guò)濾器模式,典型應(yīng)用包括批處理系統(tǒng)。
② 面向?qū)ο?/strong>模式,典型應(yīng)用基于組件的軟件開(kāi)發(fā)。
③ 事件驅(qū)動(dòng)模式,并不是直接調(diào)用操作,典型應(yīng)用包括各種圖形界面應(yīng)用。
④ 進(jìn)程通信模式:將不同的功能劃分為獨(dú)立進(jìn)程,進(jìn)程之間不直接通信,而是依靠消息傳遞如:點(diǎn)到點(diǎn)(Socket) 、 異步和同步方式及遠(yuǎn)過(guò)程調(diào)用(RPC)等。該設(shè)計(jì)的優(yōu)點(diǎn)是相互之間解耦。
⑤ 分層模式,典型應(yīng)用是分層通信協(xié)議,如ISO/OSI的七層網(wǎng)絡(luò)模型。
⑥ 基于規(guī)則的專家系統(tǒng):以規(guī)則表示知識(shí)的專家系統(tǒng),即把人類的經(jīng)驗(yàn)總結(jié)成一道道的指令輸入給計(jì)算機(jī),遇到什么樣情況就怎么處理。包含五部分:知識(shí)庫(kù),數(shù)據(jù)庫(kù),推理引擎,解釋工具和用戶界面。
優(yōu)點(diǎn):a.自然知識(shí)的描述; b. 統(tǒng)一的結(jié)構(gòu)(IF …THEN); c.知識(shí)與處理過(guò)程分離。
缺點(diǎn):a. 規(guī)則間的關(guān)系不透明; b. 搜索策略的工作效率抵消,因?yàn)橄到y(tǒng)存在大量的窮舉搜索;c.不能自學(xué)習(xí),沒(méi)有能力從經(jīng)驗(yàn)中學(xué)習(xí)
⑦ 客戶/服務(wù)器模式,為了解決C/S客戶端問(wèn)題,形成B/S模式;為了解決C/S服務(wù)器端問(wèn)題,形成了三層C/S模式。