一、軟件架構風格-數據流風格
數據-》第1步處理-》數據-》第2步處理-》數據-》第N步處理 【分步處理】
優點:
1、松耦合【高內聚-低耦合】
2、良好的重用性/可維護性;
3、可擴展性【標準接口適配】
4、良好的隱蔽性;
5、支持并行。
缺點
1、交互性較差;
2、復雜性較高;
3、性能較差(每個過濾器都需要解析與合成數據)
典型實例
傳統編譯器、網絡報文處理。
數據流風格:
**批處理序列:**大量整體數據、無需用戶交互
**管道-過濾器:**流式數據弱用戶交互
二、軟件架構風格-調用/返回風格
主函數 -》調用子函數-》子函數-》返回給主函數執行結果
調用/返回風格:
**主程序/子程序:**面向過程
面向對象:對象的方法調用
分層:層與層之間的方法調用 (ISO網絡分層,計算機軟硬件系統)
優點
1、良好的重用性,只要接口不變可用在其它處
2、可維護性好;
3、可擴展性好,支持遞增設計。
缺點
1、并不是每個系統都方便分層;
2、很難找到一個合適的、正確的層次抽象方法;
3、不同層次之間耦合度高的系統很難實現。
特點:
各個層次的組件形成不同功能級別的虛擬機;
多層相互協同工作,而且實現透明。
三、軟件架構風格-獨立構件風格
獨立構件風格:
主函數-》觸發事件-》事件管理機制-》通知執行-》子函數-》返回執行結果
構件之間不直接交互、松耦合
調用返回風格:
主函數-》調用子函數-》子函數-》返回執行結果
構件之間直接交互、緊耦合
優點:
1、松耦合。2、良好的重用性/可修改性/可擴展性。
缺點:
1、構件放棄了對系統計算的控制。一個構件觸發一個事件時,不能確定其他構件是否會響應它。而且即使它知道事件注冊了哪些構件的過程,它也不能保證這些過程被調用的順序。
2、數據交換的問題。3、既然過程的語義必須依賴于被觸發事件的上下文約束,關于正確性的推理就存在問題。
特點:
系統由若干子系統構成且成為一個整體;系統有統一的目標;子系統有主從之分;每一子系統有自己的事件收集和處理機制
四、軟件架構風格-虛擬機風格
C語言代碼=》
編譯=》
機器語言代碼=》
操作系統
Java語言代碼=》
編譯=》
字節碼文件=》
JAVA虛擬機=》
操作系統
基于規則的系統構成:規則集、規則解釋器、規則/數據選擇及工作內存,一般用在人工智能領域和DSS(決策支持系統)中。
五、軟件架構風格-倉庫風格
倉庫風格【以數據為中心】
1、數據庫系統
2、黑板系統:語音識別、知識推理
3、超文本系統
以下是黑板系統:
黑板上信息有變動會觸發更新數據源,可以利用數據庫系統來實現,需要在其上增加觸發機制。
比如IDE也是黑板系統
剪貼板
六、軟件架構風格 -閉環控制架構(過程控制)
開環控制系統:
閉環控制系統:
適合于嵌入式系統,用于解決簡單閉環控制問題
經典應用:空調溫控,定速巡航。
七、軟件架構風格-C2風格
C2架構的基本規則:
- 構件和連接件都有一個頂部和一個底部。
- 構件的頂部要連接到連接件的底部,構件的底部要連接到連接件的頂部,構件之間不允許直連。
- 一個連接件可以和任意數目的其他構件和連接件連接。
- 當兩個連接件進行直接連接時,必須由其中一個的底部到另一個的頂部。
八、軟件架構風格-MDA【Model Driven Architecture模型驅動架構】
Model Driven Architecture
【模型驅動架構】
-Model ?
客觀事物的抽象表示
- Architecture ?
構成系統的部件、連接件及其約束的規約
-Model-Driven ?
使用模型完成軟件的分析、設計、構建、部署、維護等各開發活動
-MDA起源于分離系統規約和平臺實現的思想
-MDA的主要目標:
Portability(可移植性),interoperability(互通性)
Reusability(可重用性)
MDA的核心模型:
- 計算無關模型(CIM):對某具體行業內一個項目的業務需求及其系統功能需求進行分析
- 平合獨立模型(PIM):具有高抽象層次、獨立于任何實現技術的模型。
- 平臺相關模型(PSM):為某種特定實現技術量身定做,讓你用這種技術中可用的實現構造來描述系統的模型。PIM會被變換成一個或多個PSM。
- 代碼Code:用源代碼對系統的描述(規約)。每個PSM都將被變換成代碼。
PIM(UML)=》變換工具=》PSM=》變換工具=》CODE
考試靈活多變,要舉一反三。
例子:
Java程序可以做到“一次編寫,到處運行”,從架構風格上看符合()風格的特點。虛擬機
在網絡通信中,進行包的解析,一般先進行包頭的分離,然后進行報文解析及后續處理根據這一特點,選用()風格最合適。數據流
某公司欲開發一個基于圖形用戶界面的集成調試器。該調試器的編輯器和變量監視器可以設置調試斷點。當調試器在斷點處暫停運行時,編輯程序可以自動卷屏到斷點,變量監視器刷新變量數值。針對這樣的功能描述,采用()的架構風格最為合適。隱式調用
某游戲公司欲開發一個大型多人即時戰略游戲,游戲設計的目標之一是能夠支持玩家自行創建戰役地圖,定義游戲對象的行為和之間的關系。針對該目標,公司應該采用()架構風格最為合適。(四選一:管道-過濾器、隱式調用、主程序-子程序、解釋器)解釋器
某公司承接了一個開發家用空調自動調溫器的任務,調溫器測量外部空氣溫度,根據設定的期望溫度控制空調的開關。根據該需求,公司應采用()架構風格最為合適。(四選一:解釋器、過程控制、分層、管道-過濾器)過程控制
某公司欲開發一個語音識別系統,語音識別的主要過程包括分割原始語音信號、識別音素、產生候選詞、判定語法片斷、提供語義解釋等。每個過程都需要進行基于先驗知識的條件判斷并進行相應的識別動作。針對該系統的特點,采用()架構風格最為合適(四選一:解釋器、面向對象、黑板、隱式調用)黑板
某公司欲開發一個漫步者機器人,用來完成火星探測任務。機器人的控制者首先定義探測任務和任務之間的時序依賴性,機器人接受任務后,需要根據自身狀態和外界環境進行動態調整,最終自動完成任務。針對這些需求,該機器人應該采用()架構風格最為合適。(四選-:解釋器、主程序-子程序、隱式調用、管道-過濾器) 解釋器
Windows操作系統在圖形用戶界面處理方面采用的核心架構風格是()風格。隱式調用
歷年考題例子
“編譯器”是一種非常重要的基礎軟件,其核心功能是對源代碼形態的單個或一組源程序依次進行預處理詞法分析、語法分析、語義分析、代碼生成、代碼優化等處理,最終生成目標機器的可執行代碼。考慮以下與編譯器相關的軟件架構設計場景:傳統的編譯器設計中,上述處理過程都以獨立功能模塊的形式存在,程序源代碼作為一個整體,依次在不同模塊中進行傳遞,最終完成編譯過程。針對這種設計思路,傳統的編譯器采用(1)架構風格比較合適。隨著編譯、鏈接、調試、執行等開發過程的一體化趨勢發展,集成開發環境(IDE)隨之出現。
IDE集成了編譯器、連接器、調試器等多種工具,支持代碼的增量修改與處理,能夠實現不同工具之間的信息交互,覆蓋整個軟件開發生命周期。針對這種需求,IDE采用(2)架構風格比較合適。IDE強調交互式編程,用戶在修改程序代碼后,會同時觸發語法高亮顯示、語法錯誤提示、程序結構更新等多種功能的調用與結果呈現,針對這種需求,通常采用(3)架構風格比較合適。
某公司已經開發了一款針對某種嵌入式操作系統專用編程語言的IDE,隨著一種新的嵌入式操作系統上市井迅速占領市場,公司決定對IDE進行適應性改造,支持采用現有編程語言進行編程,生成符合新操作系統要求的運行代碼,并能夠在現有操作系統上模擬出新操作系統的運行環境,以支持代碼調試工作。針對上述要求,為了使IDE能夠生成符合新操作系統要求的運行代碼,采用基于(4)的架構設計策略比較合適;為了模擬新操作系統的運行環境,通常采用(5)架構風格比較合適。
(1) A.管道-過濾器 B.順序批處理 C.過程控制 D.獨立進程
(2) A.規則引擎 B.解釋器 C.數據共享 D.獨立構件
(3) A.隱式調用 B.顯式調用C.主程序-子程序 D.層次結構
(4)A代理B、適配 C、包裝 D、模擬
(5)A.隱式調用 B.倉庫結構 C.基于規則 D.虛擬機
參考答案:B、C、A、B、D