注“目標程序及其依賴的運行庫和系統(tǒng)軟件”最終如何安裝或部署到物理機器,以及如何部署機器和網(wǎng)絡(luò)來配合軟件系統(tǒng)的可靠性、可伸縮性等要求。物理視圖和處理視圖的關(guān)系:處理視圖特別關(guān)注目標程序的動態(tài)執(zhí)行情況,而物理視圖重視目標程序的靜態(tài)位置問題;物理視圖是綜合考慮軟件系統(tǒng)和整個IT系統(tǒng)相互影響的架構(gòu)視圖。
設(shè)備調(diào)試系統(tǒng)案例概述
本文的以下部分,將研究一個案例:某型號設(shè)備調(diào)試系統(tǒng)。
設(shè)備調(diào)試員通過使用該系統(tǒng),可以察看設(shè)備狀態(tài)(設(shè)備的狀態(tài)信息由專用的數(shù)據(jù)采集器實時采集)、發(fā)送調(diào)試命令。
經(jīng)過研制方和委托方的緊密配合,最終確定的需求可以總括地用表2來表示。
非功能需求 |
功能需求 |
約束 |
運行期質(zhì)量屬性 |
開發(fā)期質(zhì)量屬性 |
程序的嵌入式部分必須用C語言開發(fā)
一部分開發(fā)人員沒有嵌入式開發(fā)經(jīng)驗 |
高性能 |
易測試性 |
察看設(shè)備狀態(tài)
發(fā)送調(diào)試命令 |
表2 設(shè)備調(diào)試系統(tǒng)的需求
下面運用RUP推薦的4+1視圖方法,從不同視圖進行架構(gòu)設(shè)計,來分門別類地將不同需求一一滿足。
邏輯視圖:設(shè)計滿足功能需求的架構(gòu)
首先根據(jù)功能需求進行初步設(shè)計,進行大粒度的職責劃分。如圖5所示。
應(yīng)用層負責設(shè)備狀態(tài)的顯示,并提供模擬控制臺供用戶發(fā)送調(diào)試命令。
應(yīng)用層使用通訊層和嵌入層進行交互,但應(yīng)用層不知道通訊的細節(jié)。
通訊層負責在RS232協(xié)議之上實現(xiàn)一套專用的“應(yīng)用協(xié)議”。
當應(yīng)用層發(fā)送來包含調(diào)試指令的協(xié)議包,由通訊層負責按RS232協(xié)議將之傳遞給嵌入層。
當嵌入層發(fā)送來原始數(shù)據(jù),由通訊層將之解釋成應(yīng)用協(xié)議包發(fā)送給應(yīng)用層。
嵌入層負責對調(diào)試設(shè)備的具體控制,以及高頻度地從數(shù)據(jù)采集器讀取設(shè)備狀態(tài)數(shù)據(jù)。
設(shè)備控制指令的物理規(guī)格被封裝在嵌入層內(nèi)部,讀取數(shù)采器的具體細節(jié)也被封裝在嵌入層內(nèi)部。
開發(fā)視圖:設(shè)計滿足開發(fā)期質(zhì)量屬性的架構(gòu)
軟件架構(gòu)的開發(fā)視圖應(yīng)當為開發(fā)人員提供切實的指導(dǎo)。任何影響全局的設(shè)計決策都應(yīng)由架構(gòu)設(shè)計來完成,這些決策如果“漏”到了后邊,最終到了大規(guī)模并行開發(fā)階段才發(fā)現(xiàn),可能造成“程序員碰頭兒臨時決定”的情況大量出現(xiàn),軟件質(zhì)量必然將下降甚至導(dǎo)致項目失敗。
其中,采用哪些現(xiàn)成框架、哪些第三方SDK、乃至哪些中間件平臺,都應(yīng)該考慮是否由軟件架構(gòu)的開發(fā)視圖確定下來。圖6展示了設(shè)備調(diào)試系統(tǒng)的(一部分)軟件架構(gòu)開發(fā)視圖:應(yīng)用層將基于MFC設(shè)計實現(xiàn),而通訊層采用了某串口通訊的第三方SDK。
在說說約束性需求。約束應(yīng)該是每個架構(gòu)視圖都應(yīng)該關(guān)注和遵守的一些設(shè)計限制。例如,考慮到“一部分開發(fā)人員沒有嵌入式開發(fā)經(jīng)驗”這條約束情況,架構(gòu)師有必要明確說明系統(tǒng)的目標程序是如何編譯而來的:圖7展示了整個系統(tǒng)的桌面部分的目標程序pc-moduel.exe、以及嵌入式模塊rom-module.hex是如何編譯而來的。這個全局性的描述無疑對沒有經(jīng)驗的開發(fā)人員提供了實感,利于更全面地理解系統(tǒng)的軟件架構(gòu)。
處理視圖:設(shè)計滿足運行期質(zhì)量屬性的架構(gòu)
性能是軟件系統(tǒng)運行期間所表現(xiàn)出的一種質(zhì)量水平,一般用系統(tǒng)響應(yīng)時間和系統(tǒng)吞吐量來衡量。為了達到高性能的要求,軟件架構(gòu)師應(yīng)當針對軟件的運行時情況進行分析與設(shè)計,這就是我們所謂的軟件架構(gòu)的處理視圖的目標。處理視圖關(guān)注進程、線程、對象等運行時概念,以及相關(guān)的并發(fā)、同步、通信等問題。圖8展示了設(shè)備調(diào)試系統(tǒng)架構(gòu)的處理視圖。
可以看出,架構(gòu)師為了滿足高性能需求,采用了多線程的設(shè)計:
應(yīng)用層中的線程代表主程序的運行,它直接利用了MFC的主窗口線程。無論是用戶交互,還是串口的數(shù)據(jù)到達,均采取異步
項目經(jīng)理勝任力免費測評PMQ上線啦!快來測測你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html