一、項目簡介
推薦系統是信息過載所采用的措施,面對海量的數據信息,從中快速推薦出符合用戶特點的物品。本項目主要根據用戶的歷史特征和行為為用戶推薦更適合他們口味的電影。整個系統可以分為統計推薦模塊、離線推薦模塊和實時推薦模塊三個部分。
接下來將依次展示項目的分解視圖、依賴視圖、執行視圖、實現視圖、部署視圖、工作分配視圖、數據庫設計和核心工作機制。
二、分解視圖
分解是構建軟件架構模型的關鍵步驟,分解視圖也是描述軟件架構模型的關鍵視圖,一般分解視圖呈現為較為明晰的分解結構(breakdown structure)特點。本文以UML包圖來展現系統的分解視圖。
三、依賴視圖
依賴視圖在項目計划中有比較典型的應用。比如它能幫助我們找到沒有依賴關系的軟件模塊或子系統,以便獨立開發和測試,同時進一步根據依賴關系確定開發和測試軟件模塊的先后次序。
四、執行視圖
執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件(Component),都是不同於其他組件的執行實體。如果有相同或相似的執行實體那么就把它們合並成一個。
五、實現視圖
實現視圖有助於碼農在海量源代碼文件中找到具體的某個軟件單元的實現。實現視圖與軟件架構的靜態結構之間映射關系越是對應的一致性高,越有利於軟件的維護,因此實現視圖是一種非常關鍵的架構視圖
六、部署視圖
部署視圖是將執行實體和計算機資源建立映射關系。這里的執行實體的粒度要與所部署的計算機資源相匹配,比如以進程作為執行實體那么對應的計算機資源就是主機,這時應該描述進程對應主機所組成的網絡拓撲結構,這樣可以清晰地呈現進程間的網絡通信和部署環境的網絡結構特點。
七、工作分配視圖
工作分配視圖將系統分解成可獨立完成的工作任務,以便分配給各項目團隊和成員。工作分配視圖有利於跟蹤不同項目團隊和成員的工作任務的進度,也有利於在個項目團隊和成員之間合理地分配和調整項目資源,甚至在項目計划階段工作分配視圖對於進度規划、項目評估和經費預算都能起到有益的作用。
八、數據庫設計
1. Movie【電影數據表】
2. Rating【用戶評分表】
3. Tag【電影標簽表】
4. User【用戶表】
5. RateMoreMoviesRecently【最近電影評分個數統計表】
6. RateMoreMovies【電影評分個數統計表】
7. AverageMoviesScore【電影平均評分表】
8. MovieRecs【電影相似性矩陣】
9. UserRecs【用戶電影推薦矩陣】
10. StreamRecs【用戶實時電影推薦矩陣】
11. GenresTopMovies【電影類別 TOP10】
九、核心工作機制
【綜合業務部分】
用戶可視化:主要負責實現和用戶的交互以及業務數據的展示,主體采用AngularJS2 進行實現,部署在 Apache 服務上。
綜合業務服務:主要實現 JavaEE 層面整體的業務邏輯,通過 Spring 進行構建,對接業務需求。部署在 Tomcat 上。
【數據存儲部分】