軟考系統架構設計師之軟件風格篇

一、軟件架構風格-數據流風格

數據-》第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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96992.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初始QML

由于項目原因,最近要進行qml相關開發,我之前也沒有搞過qml,因此開一個qml系列的專欄,記錄自己關于qml的相關學習新建第一個qml工程按如下圖所示方法新建一個最簡單的qml工程:編譯運行可以看到是一個標題為“hello word…

Coze源碼分析-資源庫-創建知識庫-基礎設施/存儲/安全

6. 基礎設施層 基礎設施層為知識庫創建功能提供底層技術支撐,包括數據存儲、緩存、消息隊列、文檔處理、向量化等核心服務。 6.1 數據存儲服務 6.1.1 MySQL數據庫 文件位置: backend/infra/rdb/mysql.go // MySQLConfig MySQL配置 type MySQLConfig struct {Host …

【iOS】設計模式復習

目錄 觀察者模式 通知機制 基本使用 注冊觀察者 創建一個通知 發送通知 通知與多線程 使用異步發送通知 NSNotificationQueue通知隊列 在子線程中運行觀察者函數 實現原理 named表 nameless表 wildcard表 添加觀察者 發送通知 移除通知? KVO機制 基本使用 …

RK3568 NPU :RKNN-ToolKit2環境搭建

1. 安裝Miniconda3 下載 Linux 64 位 Miniconda 最新版安裝腳本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh安裝 Miniconda bash Miniconda3-latest-Linux-x86_64.sh -u安裝完成后會自動設置環境變量。打開新的終端,發現用戶名前…

Ubuntu 24.04 Server 版系統安裝及配置

Ubuntu 24.04 Server 版安裝及配置 文章目錄Ubuntu 24.04 Server 版安裝及配置一、獲取安裝文件二、虛擬機配置三、安裝界面四、配置網絡五、擴容根分區 一、獲取安裝文件二、虛擬機配置三、安裝界面 選擇English(US)問是否升級內核配置鍵盤手動配置ipv4…

Java 事務失效場景全解析

在 Java 開發中,事務管理是保證數據一致性的核心機制,尤其是在 Spring 框架中,Transactional注解的使用極大簡化了事務配置。然而,在實際開發中,事務常常會因為一些細節問題而失效,導致數據異常。本文將詳細…

【Coze搞錢實戰】14. 抖音直播間自動回復機器人實戰教程:三小時搭建智能客服,互動率提升150%(保姆級無代碼指南)

摘要:抖音直播間高頻問題重復回復、觀眾互動不及時是運營痛點。本文針對新手和進階用戶,提供無代碼的自動回復機器人搭建方案:新手1小時完成基礎配置(Coze+抖音對接),進階用戶通過促銷倒計時、粉絲分層、熱點借勢三大策略提升互動率150%。方案基于某女裝直播間實測數據(…

云計算核心知識梳理

云計算作為新一代信息技術的核心,其體系涵蓋特點、定義、技術演進及分類等多個維度,以下是對相關知識的系統整合與解讀。 一、云計算的核心特點 / 優勢 云計算的優勢圍繞資源利用效率、服務靈活性和管理便捷性展開,具體可拆解為五大核心特性: 按需自助服務:用戶無需人工干…

安卓13_ROM修改定制化-----安卓 13 系統 ROM 定制化與低版本系統的核心區別

安卓系統憑借其全球領先的市場占有率,開放特性為廠商和開發者提供了深度定制的空間,形成了豐富的ROM生態圈。從最初的安卓1.0到最新的安卓15,系統在功能、性能和安全方面不斷迭代升級,同時也為ROM定制帶來了新的機遇與挑戰。特別是從安卓11開始,谷歌對系統架構和安全機制進…

【Java后端】Spring Boot 2.7.x 和 Swagger 3.0.x (springfox 3.x) 的兼容性問題

springfox 在 Spring Boot 2.6 開始就有很多兼容性 bug(主要是 Spring MVC PathPatternParser 的引入),導致在 Spring Boot 2.6/2.7 里經常出現 無法啟動 / 無法訪問 swagger-ui.html 的情況。🔎 問題原因Spring Boot 2.6 開始默認…

Vue3+ts使用oidc-client-ts

配置 OIDC 客戶端 在項目中創建 authOptions 對象,定義 OIDC 認證所需的配置項: export const authOptions {authority: https://xxxxxxxxx/UserCenter, // 認證服務器 URLclient_id: xxxx, // 客戶端 IDredirect_uri: http://localhost:3000/callbac…

從 “數據中轉站“ 到 “邊緣智能中樞“:區域網關的技術突圍與開發范式重構

在物聯網架構中,區域網關長期被視為 "邊緣與云端的橋梁"—— 負責協議轉換、數據轉發、設備接入等基礎功能。但隨著邊緣計算興起與 AI 模型輕量化,區域網關正經歷從 "被動轉發" 到 "主動決策" 的范式躍遷。 本文將從開發視角拆解區域網關的三大…

Django全棧班v1.04 Python基礎語法 20250913 早上

print 函數基本用法 print函數會自加換行符,一個print,會打印一行輸出。 print("第一行") print("第二行") print("第三行")輸出結果:print 輸出多個值 一個print可以同時輸出多個值,這多個值會在一…

面試鴨Java八股之Kafka

Kafka是什么?它的主要應用場景有哪些? Kafka是一種分布式流事件處理平臺,最初由 LinkedIn 開發,現在是 Apache 基金會的一部分。它的核心功能主要包括消息隊列、流處理和數據集成。Kafka以高吞吐量、低延遲、可擴展和高容錯性著稱。 Kafka…

ARM32平臺Bus Error深度排查:從調用棧到硬件原理的完整拆解

ARM32平臺Bus Error深度排查:從調用棧到硬件原理的完整拆解 在嵌入式開發中,Bus Error(信號7)是個容易讓人頭疼的問題——它不像SIGSEGV(段錯誤)那樣直觀,常與硬件內存布局、指針破壞等底層問題…

適合工業用的筆記本電腦

在工業領域,生產環境往往復雜多變,從高溫、高濕的車間,到布滿粉塵的礦山,再到震動頻繁的施工現場,普通的筆記本電腦很難在這樣的環境中穩定運行,而工業用筆記本電腦的誕生,完美地解決了這一難題…

在LINUX中常見的文件系統類型

常見文件系統類型對比表文件系統類型作用和特點主要使用場景優缺點ext4Linux標準文件系統,日志式,支持大文件和分區Linux根文件系統、/home、/var等主要分區優點:穩定成熟,支持大文件(16TB),日志功能保證數據安全&…

Unity核心概念⑥:Time

一、Time的主要用途主要用于游戲中參與位移、記時、時間暫停等。二、時間縮放比例1.時間停止:Time.timeScale 0;2.回復正常:Time.timeScale 1;3.二倍速:Time.timeScale 2;三、幀間隔時間幀間隔時間是指最近的一幀用了多少時間。1.用途主要…

Node.js 模塊化規范詳解

在 Node.js 中,模塊化是開發應用程序的核心概念,它使得代碼可以按照功能模塊進行分割,易于維護、復用和擴展。Node.js 支持兩種模塊化規范:CommonJS(CJS):這是 Node.js 最初使用的模塊化規范。E…

前端網絡性能優化實踐:從 HTTP 請求到 HTTPS 與 HTTP/2 升級

在前端性能優化體系中,服務端與網絡層的優化是提升用戶體驗的關鍵環節。本文將圍繞 HTTP 請求優化、Cookie 管理、服務器緩存配置、gzip 壓縮、HTTPS 部署及 HTTP/2 升級等核心內容,系統拆解優化策略與實施方法,為團隊技術分享提供完整的知識…