什麼是模型-視圖-控制器 (MVC) 框架?使用 UML 魯棒性分析模型 MVC

模型-視圖-控制器 (MVC)是一種將用戶界面邏輯與業務邏輯分離的基本設計模式。模型-視圖-控制器 (MVC) 模式是將應用程序劃分為三個不同組件的一種方式;模型、視圖和控制器。

使用 UML 建模的 MVC 框架

這個模型-視圖-控制器可以使用刻板的 UML 表示法中的魯棒性分析來最好地進行可視化描述,這是由 Ivar Jacobson 在他的獲獎著作 Object-Oriented Software Engineering 中首次提出的(參見下面的參考資料),並由 Doug Rosenberg 等人進一步解釋. 在他的用例驅動的 UML 對象建模一書中。

如何使用 UML 序列圖對 MVC 框架進行建模?

這是一個簡單的、假設的 MVC 序列圖。您在上圖中看到的是,Web 用戶啟動查詢並生成事件,該事件由控制器處理以從模型中獲取所需信息、驗證信息並將結果集傳遞回視圖。

實體對象(模型)只不過是您的邊界對象正在尋找的信息或數據。這些可能是數據庫表、Excel 文件或“臨時”會話或緩存數據或類似的東西。

  • 描述隨著時間的推移而存在並且主要關注持久狀態的對象。
  • 通常來自域模型的對象
  • 我們需要跟踪和存儲的東西

邊界對象(視圖)是參與者(例如,用戶)在您的軟件系統中與之通信的對象。這些對象可以是系統中的任何窗口、屏幕、對話框和菜單或其他用戶界面。您可以在分析用例時輕鬆識別它們。

  • 描述系統和通信環境之間的連接。
  • 參與者在與系統通信時使用
  • 只有實體對象可以發起事件
  • (通常是主要的用戶界面元素,例如屏幕)

控制對象(控制器)是業務對像或您的業務 Web 服務。這是您捕獲用於過濾出要呈現給用戶的數據的業務規則的地方,他要求什麼。所以控制器實際上是在控制業務邏輯和數據轉換。

  • 描述特定用例中的行為。
  • 邊界對象和實體對象之間的“粘合劑”
  • 捕獲業務規則和策略
  • (注意:通常作為其他對象的方法實現)

MVC模型中的連接規則

考慮邊界對象和實體對像是名詞,而控制器是動詞。

以下是連接的四個基本規則。

  • Actor 只能與邊界對象交互或通信。
  • 邊界對像只能與控制器和參與者通信。
  • 實體對像只能與控制器交互。
  • 控制器可以與邊界對象和實體對像以及其他控制器進行通信,但不能與參與者通信

請記住,邊界對象和實體對像都是名詞,而控制器是動詞。名詞不能與其他名詞對話,但動詞可以與名詞或動詞對話。

穩健性分析圖一覽

假設我們有以下文本格式的簡單用例描述:

在學生詳情頁面,教師點擊“添加課程”按鈕,系統顯示課程列表。教師選擇課程名稱並按下“註冊”按鈕。系統為學生註冊課程。

現在您可以根據上面的用例創建一個簡單的健壯性圖:

穩健性分析圖

您還可以使用文本標籤將用例描述附加到穩健性圖的右側。

創建穩健性分析的五個步驟

  1. 您通過遍歷用例文本來執行用例的穩健性分析。
  2. 一次一句話,畫出演員、適當的邊界、實體對象和控制器,以及圖表各個元素之間的聯繫。
  3. 您應該能夠將基礎課程和所有替代課程放在一張圖表上。
  4. 任何查看健壯性圖的人都應該能夠閱讀用例文本中的操作過程,跟踪他的手指以及圖上的關聯,並看到文本和圖片之間的清晰匹配。

在執行此操作時,您可能必須重寫用例文本,以消除歧義並顯式引用邊界對象和實體對象。大多數人不會在初稿中編寫完美的用例文本。因此,我們可以使用穩健性分析來彌合用例文本和圖表之間的差距。

穩健性分析圖檢查

使用 MVC 序列圖開髮用例場景

基於穩健性分析,我們可以通過使用一組MVC格式的相關序列圖來開髮用例場景(正常或替代)。同樣,MVC序列圖有接口對象、控制器對象和實體對象:

  • 實體是表示系統數據的對象:客戶、產品、交易、購物車等。
  • 邊界是與系統參與者交互的對象:UserInterface、DataBaseGateway、ServerProxy 等。
  • 控件是介於邊界和實體之間的對象。

MVC 序列圖示例

它們通過邊界對象與實體交互來協調來自邊界的命令的執行。控制器對象通常對應於用例場景,並且通常由序列圖表示。

您可以在 MVC 序列圖中為生命線使用構造型,以直觀地清楚您在 MVC 中使用的對像類型,就像上面的魯棒性分析圖一樣。

魯棒性序列圖

示例 MVC 序列圖

假設有一個應用程序可以讓您搜索人員。UI 必須有一個文本字段,用戶可以在其中輸入搜索字符串,並且它可能有一個按鈕來開始搜索。最後,它必須有一個顯示搜索結果的區域。在我們的例子中,它是用一個列表組件實現的。

“搜索人員”用例場景是:

  • 用戶在文本字段中輸入搜索字符串
  • 用戶單擊搜索按鈕。
  • 搜索結果顯示在結果列表中。

MVC 序列圖示例

上面的序列圖顯示了用戶的按鈕單擊如何在應用程序中移動,直到結果最終顯示在列表組件中。

參考

Leave a Reply

發佈留言必須填寫的電子郵件地址不會公開。