2025 年軟件體系結構考試試卷
考試學期:2025 考試形式:閉卷 考試時間:120 分鐘
年級:______ 專業:軟件工程 班級:______
一、單選題(每小題 1.5 分,共 24 分)
關于策略模式,下述說法不正確的是:〔 〕
A. 定義一系列算法,將每個算法封裝起來,使它們可以互換
B. 客戶端必須知道所有策略類的存在
C. 上下文類負責維護策略對象的引用
D. 適用于需要動態切換算法的場景
以〔 〕為代表的面向服務的體系結構(SOA),強調服務的封裝和復用。
A. Web Services B. JavaBean C. EJB D. CORBA
軟件工程的基本目標是:〔 〕
A. 提高軟件性能 B. 降低開發成本 C. 實現軟件可維護性 D. 以上都是
軟件配置項不包括:〔 〕
A. 源代碼 B. 測試用例 C. 開發環境 D. 需求文檔
軟件危機的表現不包括:〔 〕
A. 軟件質量難以保證 B. 軟件開發成本失控 C. 軟件維護困難 D. 軟件需求明確
不屬于 “視圖 - 控制器 - 模型”(MVC)模式的是:〔 〕
A. 視圖 B. 控制器 C. 模型 D. 適配器
關于觀察者模式,下述說法不恰當的是:〔 〕
A. 當主題狀態變化時,所有觀察者會被通知
B. 觀察者和主題之間是松耦合的
C. 一個主題可以有多個觀察者
D. 觀察者必須繼承自同一個抽象類
下列哪個不是管道 - 過濾器結構風格的特點?〔 〕
A. 數據通過管道傳輸 B. 過濾器可復用 C. 處理順序固定 D. 支持并行處理
在設計模式中,以下哪種模式屬于結構型模式?〔 〕
A. Singleton B. Adapter C. Observer D. Strategy
關于軟件體系結構描述語言(ADL),下列說法錯誤的是:〔 〕
A. 用于描述軟件體系結構的結構和行為
B. 不支持體系結構的分析和驗證
C. 可定義構件和連接件的接口
D. 是理解和交流體系結構的工具
里氏替換原則的含義是:〔 〕
A. 子類可以替換父類出現在任何地方,且不影響程序正確性
B. 父類可以替換子類出現在任何地方
C. 子類必須實現父類的所有方法
D. 以上都不對
關于接口隔離原則,下述敘述錯誤的是:〔 〕
A. 客戶端不應該依賴它不需要的接口
B. 一個類對另一個類的依賴應該建立在最小的接口上
C. 接口應該盡量細化,避免大而全的接口
D. 接口隔離原則與單一職責原則無關
行為模型不包括以下哪種圖?〔 〕
A. 用例圖 B. 活動圖 C. 狀態圖 D. 類圖
構件交互的基本方式不包括:〔 〕
A. 過程調用 B. 消息傳遞 C. 共享內存 D. 數據拷貝
在體系結構中,用于提高系統可靠性的結構風格是:〔 〕
A. 分層結構風格 B. 容錯結構風格 C. 事件驅動結構風格 D. 客戶端 - 服務器結構風格
以下哪個不是軟件體系結構評估的常用方法?〔 〕
A. 場景 - based 評估 B. 度量 - based 評估 C. 仿真 - based 評估 D. 代碼審查
二、多項選擇題(每小題 2 分,共 16 分)
類圖中包含的元素有:〔 〕
A. 類 B. 接口 C. 關聯關系 D. 依賴關系
下面屬于軟件體系結構風格的是:〔 〕
A. 分層結構 B. 管道 - 過濾器 C. 黑板系統 D. 單例模式
提高軟件可維護性的措施包括:〔 〕
A. 良好的代碼注釋 B. 模塊化設計 C. 嚴格的測試 D. 復雜的算法實現
客戶端 - 服務器(C/S)體系結構的優點有:〔 〕
A. 客戶端響應速度快 B. 服務器負載均衡 C. 數據安全性高 D. 易于擴展
軟件體系結構的質量屬性包括:〔 〕
A. 性能 B. 可靠性 C. 可維護性 D. 安全性
設計模式的分類包括:〔 〕
A. 創建型模式 B. 結構型模式 C. 行為型模式 D. 功能型模式
對軟件體系結構的動態性描述可采用的方法有:〔 〕
A. 狀態轉移圖 B. 時序圖 C. 活動圖 D. 用例圖
體系結構設計的原則包括:〔 〕
A. 關注點分離 B. 接口標準化 C. 松耦合 D. 高內聚
三、填空題(每小題 2 分,共 10 分)
軟件體系結構的核心元素包括構件 連接器、和 配件。
五層參考模型包括物理層、數據鏈路層、 網絡、應用層和用戶層。
“模塊化__” 和 “信息隱藏” 是模塊化設計的基本原則。
數據流圖的四種基本元素是加工、數據源____、數據終點______和數據存儲。
設計模式中的 Singleton 模式屬于___創建_____型模式,其目的是__確保類只有一個實例并提供全局訪問點____。
四、判斷題(正確寫 T,錯誤寫 F,每小題 1 分,共 10 分)
軟件體系結構設計是對系統的高層抽象,不涉及具體實現細節。〔T 〕
管道 - 過濾器結構風格中,過濾器之間需要知道彼此的存在。〔 F〕
軟件重用只能重用代碼,不能重用設計和架構。〔F 〕
體系結構評估可以在系統開發的任何階段進行。〔T 〕
適配器模式用于解決接口不兼容的問題,使不兼容的接口可以協同工作。〔T 〕
面向對象設計中,繼承是實現代碼重用的唯一方式。〔F 〕
軟件體系結構風格一旦確定,不能在開發過程中修改。〔F 〕
狀態圖用于描述對象在其生命周期中的狀態變化及響應的事件。〔 T〕
敏捷開發方法不關注軟件體系結構的設計,只注重代碼實現。〔F 〕
領域特定語言(DSL)可用于更高效地描述特定領域的軟件體系結構。〔 T〕
五、簡答題(每小題 3 分,共 15 分)
簡述管道 - 過濾器結構風格的優缺點。
答:過濾器可復用,便于獨立開發和測試;
支持并行處理,數據可同時流經多個過濾器;
系統擴展性好,可通過添加 / 刪除過濾器修改功能。
缺點:
處理順序固定,難以動態調整數據流路徑;
數據轉換開銷大,需在過濾器間進行格式轉換;
無法處理交互式或實時性要求高的場景。
2.什么是依賴注入原則?其作用是什么?
定義:依賴注入(DI)是一種設計原則,指將組件的依賴關系通過外部注入(而非內部創建)的方式實現。
作用:
降低組件間耦合度,提高代碼可維護性和可測試性;
便于動態替換依賴對象,支持系統靈活擴展;
符合 “控制反轉(IoC)” 思想,使組件專注于核心邏輯。
3.說明軟件體系結構與軟件設計的區別與聯系。
答:區別:
抽象層次:體系結構是系統的高層抽象,關注構件、連接件及整體結構;軟件設計側重具體模塊和算法實現。
關注點:體系結構關注系統質量屬性(如性能、可靠性);軟件設計關注功能實現細節。
聯系:
體系結構是軟件設計的基礎,為設計提供框架和約束;
軟件設計是體系結構的細化,實現體系結構定義的構件和交互。
4.簡述工廠方法模式的核心思想及適用場景。
答: 核心思想:定義一個創建對象的接口(工廠),但由子類決定實例化哪個具體類,將對象創建與使用分離。
適用場景:
當系統需要動態創建對象,且創建邏輯可能變化時;
當子類可能擴展或修改對象創建方式時;
避免客戶端與具體類直接耦合,提高系統靈活性。
5.軟件體系結構評估的主要目標是什么?
答:驗證質量屬性:評估體系結構是否滿足性能、可靠性、可維護性等需求;
發現設計缺陷:識別潛在問題(如耦合度過高、擴展性不足),避免后期返工;
支持決策制定:為體系結構優化、技術選型等提供依據;
確保一致性:驗證體系結構與需求、設計文檔的一致性。
六、計算題(每小題 5 分,共 25 分)
設計一個在線購物系統,要求實現商品展示、購物車管理和訂單處理功能。試用 MVC 模式設計該系統的體系結構,給出類圖和各部分的職責。
類圖核心元素:
模型(Model):
Product(商品):屬性(ID、名稱、價格等),方法(獲取信息);
Cart(購物車):屬性(商品列表、總價),方法(添加 / 刪除商品);
Order(訂單):屬性(訂單號、用戶、商品列表等),方法(創建訂單、支付)。
視圖(View):
ProductView(商品展示界面):顯示商品列表、詳情;
CartView(購物車界面):顯示購物車內容、結算按鈕;
OrderView(訂單界面):顯示訂單信息、支付結果。
控制器(Controller):
ProductController:處理商品查詢、篩選請求;
CartController:處理購物車操作(添加、刪除);
OrderController:處理訂單創建、支付流程。
職責劃分:
模型:管理數據和業務邏輯,不依賴視圖和控制器;
視圖:渲染數據,接收用戶輸入并傳遞給控制器;
控制器:接收用戶請求,調用模型處理數據,更新視圖。
某圖書館管理系統中,圖書狀態包括 “可借”“已借”“預約”“損壞”。讀者可以借閱、歸還圖書,管理員可以處理預約和損壞圖書。繪制圖書狀態的狀態圖。
某大學選課系統包含學生類(Student)、課程類(Course)和選課類(Selection)。學生有學號、姓名、專業等信息,課程有課程號、名稱、學分等信息,選課記錄包括學生、課程和成績。繪制該系統的類圖,包括類的屬性、方法和關聯關系。
某醫院掛號系統的工作流程是:患者先到掛號處登記個人信息,選擇科室和醫生,支付掛號費,獲取掛號單。然后到相應科室候診,醫生診斷后開具處方,患者到收費處繳費,取藥離開。畫出該系統的數據流程圖。
某智能家居系統中,燈光控制器有 “開”“關”“亮度調節” 三種狀態。用戶可以通過手機 APP、語音命令或物理開關控制燈光。繪制燈光控制器的狀態圖,包括狀態、事件和轉換條件。
例題、航空公司會員對象狀態圖:
乘客只要辦理該航空公司的會員卡,即可成為普卡會員,普卡會員可以升級到銀卡會員或金卡會員。非會員不能積累里程數。每年年末,系統根據會員在本年度累積的里程數對下一年會員等級進行調整。普卡會員在一年內累積的里程數若滿25000英里但不足50000英里,則自動升級為銀卡會員;若累積的里程數在50000英里以上,則自動升級為金卡會員。銀卡會員在一年內累積的里程數若在50000英里以上,則自動升級為金卡會員。若一年內沒有達到對應級別要求的里程數,則自動降低會員等級。金卡會員一年內累積的里程數若不足25000英里,則自動降級為普卡會員;若累積的里程數達到25000英里,但是不足50000英里,則自動降級為銀卡會員。銀卡會員一年內累積的里程數若不足25000英里,則自動降級為普卡會員。
在這里插入圖片描述