系統級設計。 第 1 部分:從想法到系統

大家好。我經常在工作中應用系統工程原理,並希望與社區分享這種方法。

系統工程 - 沒有標準,但簡單地說,它是將系統開發為相當抽象的組件的過程,而不參考特定的設備範例。在此過程中,系統組件的屬性及其之間的連接被建立。此外,還需要使系統保持一致和最佳化,並確保系統符合要求。在本教程中,我將使用設計相當簡單的存取控制系統 (ACS) 的範例來展示系統工程技術。

形成初始架構

不管怎樣,當一個系統剛開始發展時,帶箭頭的矩形就會出現在我們的腦中或紙上。這樣的矩形是 組件 系統。箭頭是 連接 組件之間。很多時候,我們沒有時間坐下來思考我們定義的所有組件如何相互協作,最終我們開始創建一堆拐杖,提出冗餘的設計。

重要的是要記住,從系統及其體系結構的角度來看,元件是一個相當抽象的東西。例如,如果我們的系統有一個微控制器,那麼在架構層面上,對我們來說只重要的是它是一個微控制器,而不是它是 STM32、Arduino 或 Milander。此外,我們通常根本不清楚系統中到底有什麼,我們求助於系統工程來開發設備、軟體等的要求。

對於我們的 ACS 範例,我們將嘗試闡明其目的。這將幫助我們識別其組成部分。因此,門禁系統的任務是允許有限範圍的人進入房間。也就是說,它是一把智慧鎖。因此,我們有了第一個組件 - 某種可以鎖定和解鎖門的設備!我們就這樣稱呼他吧 門鎖

我們怎麼知道一個人可以進去?我們不想派一名看守並檢查護照,不是嗎?讓我們為人們提供帶有 RFID 標籤的特殊卡片,我們將在上面記錄唯一的 ID 或其他數據,以便我們能夠準確地識別一個人。然後,我們需要一些可以讀取這些標籤的設備。太好了,我們還有一個組件, RFID讀寫器

讓我們再看看我們得到了什麼。 RFID讀寫器 讀取一些數據,存取控制系統用它做一些事情,並在此基礎上控制一些東西 門鎖。讓我們問以下問題 - 在哪裡儲存具有訪問權限的人員清單?資料庫中最好的。因此,我們的系統必須能夠發送請求並處理來自資料庫的回應。所以我們還有一個組件 - 資料庫處理程序。因此,我們收到了一個極其抽象但足夠開始的系統描述。我們了解它應該做什麼以及它是如何工作的。

我將使用 System Composer(在 Simulink 環境中對系統架構進行建模的特殊工具)而不是一張紙,並建立 3 個元件。上面我描述了這些組件之間的聯繫,那麼我們立即將它們連接起來:

系統級設計。 第 1 部分:從想法到系統

擴充架構

讓我們看看我們的圖表。看似一切都很好,但實際上並非如此。從使用者的角度來看這個系統 - 使用者將卡帶到讀卡機上然後......?使用者如何知道他們是否被允許或拒絕存取?有必要以某種方式通知他這件事!因此,我們再增加一個元件-使用者通知, 用戶通知:

系統級設計。 第 1 部分:從想法到系統

現在讓我們進入較低的抽象層次。讓我們嘗試更詳細地描述一些組件。讓我們從元件開始 RFID讀寫器。在我們的系統中,該元件負責讀取 RFID 標籤。它的輸出應該包含一些資料(UID、使用者資料...)。但是等等,RFID 和 NFC 一樣,主要是硬件,而不是軟體!因此,我們可以假設我們單獨擁有 RFID 晶片本身,它將「原始」資料傳輸到某種預處理器。因此,我們有一個可以讀取 RFID 標籤的抽象硬件,以及可以將資料轉換為我們需要的格式的抽象軟體。讓我們稱呼他們為 RFID感測器 и RFID解析器 分別。如何在 System Composer 中顯示它?您可以刪除一個組件 RFID讀寫器 並放置兩個元件,但最好不要這樣做,否則我們將失去架構的可讀性。相反,讓我們進入 RFIDReader 並添加 2 個新元件:

系統級設計。 第 1 部分:從想法到系統

太好了,現在讓我們繼續通知用戶。系統將如何通知使用者他被拒絕或允許進入該場所?人最能感知聲音和閃爍的東西。因此,可以發出一定的聲音訊號以吸引使用者註意,並使LED閃爍。讓我們添加適當的組件 用戶通知:

系統級設計。 第 1 部分:從想法到系統

我們已經創建了系統的架構,但是它有一些問題。什麼?讓我們看看連接名稱。 總線 и 輸出總線 - 不太正常的名稱對開發人員有幫助。它們需要重命名:

系統級設計。 第 1 部分:從想法到系統

因此,我們研究瞭如何在最粗略的近似中應用系統工程方法。問題出現了:為什麼要使用它們?系統很原始,看起來所做的工作是不必要的。您可以立即編寫程式碼、設計資料庫、編寫查詢或焊接。問題是,如果你不思考整個系統,不理解它的組件是如何相互連接的,那麼系統組件的整合將花費很長時間並且相當痛苦。

這部分的主要內容是:

在系統開發中使用系統工程方法和體系結構建模可以降低整合組件的成本並提高所開發系統的品質。

來源: www.habr.com

添加評論