《系統架構設計師教程(第2版)》第10章-軟件架構的演化和維護-07-軟件架構維護

文章目錄

  • 1. 軟件架構知識管理
    • 1.1 概念
    • 1.2 架構知識的獲取
    • 1.3 作用
    • 1.4 架構知識管理的現狀
  • 2 軟件架構修改管理
  • 3 軟件架構版本管理
  • 4. 示例
    • 4.1 背景
    • 4.2 數據獲取
    • 4.3 數據計算
    • 4.4 結果分析
      • 4.4.1 圈復雜度 (CCN)
      • 4.4.2 扇入扇出度 (FFC)
      • 4.4.3 模塊間耦合度 (CBO)
      • 4.4.4 模塊的響應 (RFC)
      • 4.4.5 模塊間內聚度TCC和 LCC

軟件架構維護過程設計以下內容:架構知識管理、架構修改管理、架構版本管理

1. 軟件架構知識管理

1.1 概念

  • 架構知識 = 架構設計 + 架構設計決策

即,需要說明在進行架構設計時采用此種架構的原因

  • 涵蓋內容:
    • 架構的解決方案
    • 產生該方案的架構設計決策、設計依據

1.2 架構知識的獲取

  • 側重于架構靜態演化
  • 從架構文檔等信息來源中捕捉架構知識

1.3 作用

  • 有助于架構進一步的演化
  • 為其他軟件架構的相關活動提供參考

1.4 架構知識管理的現狀

  • 架構相關利益者因為動機不足,不會使用文檔記錄架構知識
    • 相對成本高
    • 利益相關者對工程短期興趣大于架構知識重用的興趣
    • 開發者對創造性工作的興趣大于反思設計決策長遠影響的興趣。
  • 即使實現了文檔化,通常架構知識也不能在整個組織中得到充分的分享

如果不進行管理,關鍵的設計知識就會“沉沒”在軟件架構之中,人員發生變動,將會使“沉沒”的架構知識“腐蝕”

2 軟件架構修改管理

  • 思路:
    • 是建立一個隔離區域 (Rcgion of Quiescence)
    • 保障該區域中任何修改對其他部分的影響比較小,甚至沒有影響
  • 做法:
    • 為此,需要明確修改規則、修改類型,可能的影響范圍、副作用等

3 軟件架構版本管理

  • 作用:
    • 為版本演化的控制、使用、評價等提供了可靠的依據
    • 為架構演化量化度量奠定了基礎

4. 示例

4.1 背景

  • 待評估的 Web讀寫系統的組件圖如下:
    在這里插入圖片描述

4.2 數據獲取

  • 操作:
    • 將組件圖轉換為XML文件
    • 將XML文件輸入架構評估系統
    • 解析出可維護度量所需的數據,如下:

在這里插入圖片描述

在這里插入圖片描述

上表說明:

  • L:組件圖數目
  • totalN :外部組件數目
  • totalE :與外部組件相連的邊的數據
  • S:組件內部組件數目
  • E:依賴出邊數目
  • X:依賴入邊數目
  • R:使用接口數目
  • W:提供接口數目

4.3 數據計算

根據可維護性的6個子度量指標的度量公式,利用解析得到的架構評估數據分別進行度量

  • 圈復雜度 (CCN)
    度量整個架構的獨立執行路徑的條數,直接得出最終度量結果
  • 扇入扇出度 (FFC)、 模塊間耦合度 (CBO)、 模塊的響應 (RFC)、 緊內聚度 (TCC)、 松內聚度 (LCC)
    針對每個組件進行度量,最終度量結果取所有組件的平均值
  • 組件Client Application為各個子度量指標的計算方法:
    在這里插入圖片描述
  • 其他組件的度量方法:
    • 與Client Application相同
    • 由于均沒有子組件,P(S) 的果為0, 無法計算該組件模塊的內聚度,以 “not applied” 表示(即,沒有子組件,內聚度最小)
  • 度量結果如圖所示:
    在這里插入圖片描述

4.4 結果分析

4.4.1 圈復雜度 (CCN)

  • 目的:
    • 對整個系統的復雜程度做出初步評估
    • 并預測待評估系統的測試復雜度
    • 及早規避風險,提高軟件質量
  • 標準: CCN≤10 為宜。

4.4.2 扇入扇出度 (FFC)

  • 概念:
    • 扇入:指直接調用該模塊的上級模塊的個數
    • 扇出:指該模塊直接調用的下級模塊的個數
  • 目的:綜合評估組件主動調用以及被調用的頻率
    • 扇入扇出度越大,表明該組件與其他組件間的接口關聯或依賴關聯越多

在這里插入圖片描述

4.4.3 模塊間耦合度 (CBO)

  • 目的:度量模塊與其他模塊交互的頻繁程度

CBO越大可維護性越差,風險越高

在這里插入圖片描述

4.4.4 模塊的響應 (RFC)

  • 目的:度量組件執行所需的功能的數量
    • 包括:接口提供的功能、依賴的其他模塊提供的功能、子模塊提供的功能
      在這里插入圖片描述

DB、RemoteDB、LocalDB等沒有對其他模塊的依賴和調用,且不包含子模塊,因而其 RFC度量值為0

4.4.5 模塊間內聚度TCC和 LCC

只有組件ClientApplication 具有子模塊,因而對該組件進行度量,并將該組件的度量值作為待評估系統的最終結果


在這里插入圖片描述

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

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

相關文章

mysql group by 細節介紹

mysql中group by的用法是配合聚合函數,利用分組信息進行統計,語句如“select name,sum(id) from test group by name,number”。 先來看下表1,表名為test: 執行如下SQL語句: SELECT name FROM test GROUP BY name 你…

OFDM802.11a的FPGA實現(十四)data域的設計優化,擠掉axi協議傳輸中的氣泡

原文鏈接(相關文章合集):OFDM 802.11a的xilinx FPGA實現 目錄 1.前言 2.data域的時序要求 3.Debug 1.前言 前面12篇文章詳細講述了,OFDM 802.11a發射部分data域的FPGA實現和驗證,今天對data域的設計做一個總結。在…

electron 多窗口 vuex/pinia 數據狀態同步簡易方案(利用 LocalStorage)

全局 stroe 添加 mutations 狀態同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…

springboot306基于Java的民宿管理系統(源碼+包運行+配套LW+技術指導)

項目描述 臨近學期結束,開始畢業設計制作,你還在做java程序網絡編程,期末作業,老師的作業要求覺的困難嗎?不知道畢業設計該怎么辦?網頁功能的數量是否太多?沒有合適的類型或系統?等等。今天給大家介紹一篇基于Java的民宿管理…

python篇-cmd 執行pip命令失敗,但執行pyhon命令正常

當你在CMD中可以正常執行python命令,但執行pip命令失敗時,這通常意味著pip沒有被正確地添加到系統的環境變量中。這里有一些步驟來解決這個問題: 檢查環境變量: 打開系統的環境變量設置(右擊“此電腦”>“屬性”>…

CoSeg: Cognitively Inspired Unsupervised Generic Event Segmentation

名詞解釋 1.特征重建 特征重建是一種機器學習中常用的技術,通常用于自監督學習或無監督學習任務。在特征重建中,模型被要求將輸入數據經過編碼器(encoder)轉換成某種表示,然后再經過解碼器(decoder&#x…

c/c++對于char*的理解(聯合string容器)

在C和C中,char*是一個指向字符(char)的指針。它經常被用來處理C風格的字符串,這種字符串是以空字符(\0)結尾的字符數組。以下是關于char*的一些關鍵點: C風格的字符串: C風格的字符…

升級Microsoft 365后,SAP GUI中無法打開Excel的解決方案

最近,我們遇到了一個棘手的問題,一位客戶在升級到Microsoft 365后,無法在SAP GUI中打開Excel。這個問題不僅影響了工作效率,也給用戶的日常操作帶來了不便。在本文中,我們將探討問題的成因,并提供一種解決方…

泛微E9開發 添加多個多選框,實現單選框的效果

利用多個多選框實現單選框的效果 1、功能背景2、展示效果3、實現效果 1、功能背景 如下圖所示,在表單中新增四個“選擇框-復選框”類型的字段,并且設置其中的選項,每個多選框都只有一個選項,通過代碼塊實現單選框的效果 1.顯示模…

鄧閑小——生存、生活、生命|真北寫作

人生有三個層次∶生存、生活、生命。 生存就是做必須做的事。生存的模式是鄧,是交易,是買賣。別人需要的東西,你生產出來,賣給他。哪怕這個東西沒啥用,也可以賣,情緒也可以賣。你需要的東西,你花…

分布式與一致性協議之POW算法

POW算法 概述 談起比特幣,你應該并不陌生。比特幣是基于區塊鏈實現的,而區塊鏈運行在因特網上,這就存在有人試圖作惡的情況。有些讀者可能已經發現了,口信消息型拜占庭問題之解、PBFT算法雖然能防止壞人作惡,但只能防…

代碼隨想錄算法訓練營第二十三天 | 530.二叉搜索樹的最小絕對差、501.二叉搜索樹中的眾數、236. 二叉樹的最近公共祖先

目錄 530.二叉搜索樹的最小絕對差 思路 代碼 501.二叉搜索樹中的眾數 思路 代碼 236. 二叉樹的最近公共祖先 思路 代碼 530.二叉搜索樹的最小絕對差 需要領悟一下二叉樹遍歷上雙指針操作,優先掌握遞歸 題目鏈接/文章講解:代碼隨想錄 視頻講解…

Java Spring的定時任務的配置和使用

在Spring框架中,配置和使用定時任務主要涉及Scheduled注解以及Spring的異步任務執行能力。以下是詳細步驟: 1. 引入依賴 對于Spring Boot項目,通常已經包含了Spring框架,因此不需要額外添加定時任務的依賴。如果使用的是Spring框…

AI大模型測評系統opencompass源碼解析

1 注冊器(Registry) 為了管理功能相似的模塊,MMEngine實現了注冊器。注冊器可以被視作這些類或函數的抽象。例如注冊器 MODELS 可以被視作所有模型的抽象。 1.1 什么是注冊器 MMEngine 實現的注冊器可以看作一個映射表和模塊構建方法(build function)的組合。 映射表:…

八、e2studio VS STM32CubeIDE之內存使用情況窗口

目錄 一、概述/目的 二、STM32CubeIDE Build Analyzer 三、e2studio Memory Usage 八、e2studio VS STM32CubeIDE之內存使用情況窗口 一、概述/目的 1、嵌入開發最大特點之一就是資源受限,關注芯片資源使用詳情是優秀工程師的技能之一 2、Keil和IAR都不支持內存…

CTFshow 信息搜集

第一題1 進入靶場 直接看源碼發現flag 第二題 1 按右鍵沒辦法看源碼 按ctrlu可以查看源碼 第三題 0 查看源碼 發現還是什么都沒有 用bp抓包發現flag 第四題1 直接進robots.txt 訪問flagishere.txt獲得flag 第五題 0 提示了phps源碼泄露 用目錄掃描工具沒掃出來 看wp 發現有…

網絡編程套接字詳解

目錄 1. 預備介紹 2.網絡字節序 3.udp網絡程序 4.地址轉換函數 5.udp網絡編程 1.預備介紹 1.1源IP地址和目標IP地址 舉個例子: 從北京出發到上海旅游, 那么源IP地址就是北京, 目標IP地址就是上海. 1.2 端口號 作用: 標識一個進程, 告訴OS這個數據交給那個進程來處理; (1)…

Oracle: 一個用戶多個表空間處理

1.場景描述 今天工作中,同事說建了一個用戶,往里面導入數據時提示表空間不存在,建了表空間后,部分仍然導不進去。期望幫忙創建表空間,并指定默認表空間,成功將數據導入。 (1)創建好的…

K8s:二進制安裝k8s(單臺master)

目錄 一、安裝k8s 1、拓撲圖 2、系統初始化配置 2.1關閉防火墻selinx以及swap 2.2設置主機名 2.3在每臺主機中添加hosts,做映射 2.4調整內核參數,將橋接的ipv4流量傳遞到iptables,關閉ipv6 2.4時間同步 3、部署docker引擎&#xff0…

使用LangChain和Neo4j快速創建RAG應用

大家好,Neo4j 通過集成原生的向量搜索功能,增強了其對檢索增強生成(RAG)應用的支持,這標志著一個重要的里程碑。這項新功能通過向量索引搜索處理非結構化文本,增強了 Neo4j 在存儲和分析結構化數據方面的現…