1. 程式人生 > >「4+1視圖」學習與理解

「4+1視圖」學習與理解

uml

聲明:部分內容摘錄了簡書「橘色對白」作者的文章片段。

之前經常看到文章中提到「4+1視圖」,對其也有片面的理解,但一直沒有實踐過,不清楚其真正的作用,這兩天在業務需求分析中運用了其中的一部分,想談談自己的粗淺理解。

最近在調研「多租戶」實現方案時,看到簡友「橘色對白」的3篇關於多租戶架構的文章,其中一篇「以CRM系統為例,淺析初級SaaS架構的構建方法」,以「4+1視圖」的形式,覆蓋了分析、設計、開發、部署等階段,如何一步一步遞進,形成最終的實施方案。

所謂「4+1視圖」,是從5個不同視角來描述軟件體系結構,包括場景視圖、邏輯視圖、開發視圖、過程視圖、物理視圖,每個視圖只關系系統的一個側面,5個視圖結合起來,才能反映系統的全部內容。

好吧,語氣還是有點官方了,本來想根據自己項目再分析一遍,有人又在催我睡覺了,同時覺得「橘色對白」的這篇文章寫的很不錯了,決定整理下分享出來。

在分享之前,說說我的實踐,通過場景視圖、邏輯視圖,分析出了「多租戶」改造時,需要的功能列表。場景視圖站在使用系統的角度,分析各個角色的用例。 邏輯視圖站在業務對象的角度,表達了業務對象和對象間的關系。兩個視圖相互遞進和補充,幫助我更完整的梳理出系統的功能點。

下面分享下「橘色對白」的這篇文章,如何一步步構建CRM系統

一、場景視圖

負責從用戶角度,識別業務需求,描述業務場景,是架構設計的起點和終點。

場景描述

老板角度:了解客戶增減數量;了解客戶增減變化趨勢;商務行程管理。

員工角度:保存和隨時查閱客戶資料;通過郵件、IM、IP電話與客戶保持及時溝通;商務行程管理。

場景抽象

客戶管理:增、刪、改、查,客戶資料;
行程管理:商務形成安排(客戶拜訪、合同談判);
訂單管理:已簽訂單的管理;

二、邏輯視圖

從對象角度,構建對象模型,用以確立邏輯分層、模塊劃分、模塊功能、模塊間依賴關系等。其中,模塊功能,既包括可見的業務功能,也包括不可見的系統功能(日誌、權限、事務等)。

模塊劃分及功能

客戶模塊、行程模塊、訂單模塊、報表模塊

模塊依賴關系

技術分享圖片

模塊包含的業務對象
  • 客戶模塊 — 客戶分組、客戶、聯系人;
  • 行程模塊 — 時間、事項等;
  • 訂單模塊 — 時間、客戶、訂單等;
  • 報表模塊 — ……

三、開發視圖

從開發角度,描述軟件在開發環境下的靜態組織(程序包、應用的統一框架、引用的類庫、SDK和中間件等),並規範和約束開發環境的結構。

開發環境
  • 開發語言:Java、JavaScript、Html
  • 數據庫類型:MySQL 5.0
  • 應用服務器類型:Apache+JBOSS
  • 其他軟件:Ant、JUnit 等
  • 相關硬件:略
技術框架

開源框架:Struts+Spring+Hibernate框架結構
技術分享圖片

分層策略

技術分享圖片

目錄結構

根據分層,制定目錄結構如下
技術分享圖片

  • Api: 存放service的接口定義源文件;
  • Action: 存放action的源文件和配置文件;
  • Biz: 存放各模塊的業務邏輯組件和DAO組件;
  • Bundle: 存放JSP和HTML文件;
  • deploy:存放構建後待部署的jar文件;
  • biz目錄下根據模塊再分為dao和service目錄,以及它們的實現類目錄impl;

四、過程視圖

從過程角度,描述系統的並發和同步設計。旨在解決進程、線程、並發、同步、通信等方面的問題;

五、物理視圖

負責從部署角度,描述軟硬件的映射關系,以及系統在分布/部署上的設計。旨在解決系統安裝、系統部署、網絡分布等問題。

至此,CRM系統已基本成型。

理論很重要,更重要的是去實踐,在實踐的過程中,才能夠真正理解理論中每個字的精華。
我理解的還很淺,先欠個賬,後續項目開發過程中,完整應用「4+1視圖」後,我在做個實踐總結。

技術分享圖片

「4+1視圖」學習與理解