在线借贷平台软件系统设计方案
前言
隨著社會的發展,人民消費需求的旺盛,各路網絡貸款平臺開始像潮水一樣涌出,這給了網絡貸款這一新型貸款方式極大的發展空間,本系統致力于構建一個好的網絡貸款平臺,能夠方便用戶的貸款需求。因為系統的開發工作才進行了一半,因此,這里主要是根據自己的理解來進行下面的編寫。
技術選型說明
SSM框架技術
SSM 框架是目前互聯網公司非常流行的 J2EE 框架,它以更加輕量級、開發速度快、效率高、簡單易學而廣受開發者的喜愛。SSM 是 Spring 框架整合 SpingMVC 和 Mybatis 后的框架技術,是標準的 MVC 模式。
Spring MVC 就是基于 MVC 模式的表現層框架,其核心組件是 DispatcherServlet。
DispatcherServlet 相當于一個分發控制器,負責截獲來自客戶端的 HTTP 請求,并交給處理器進行處理,對于處理器返回的 ModelAndView,交于視圖解析器進行解析,得到視圖對象,經過渲染后返回給頁面。Spring MVC 通過注解的方式讓 POJO 類稱為請求控制器,同時還支持 RESTful 的設計風格。
Spring 是面向企業級應用的開源框架,核心是 IOC(Inverse of Control)和 AOP(Aspect Oriented Programming)。其自身包含表現層框架 Spring MVC、持久層Spring JDBC、任務調度框架 Quartz,同時可以處理業務層事務管理。它可以可以整合 Struts2、Hibernate、Mybatis 等開源框架,它以輕量級、開放源碼、服務免費等優點而廣受企業級開發的青睞。
Mybatis 是一種半自動化的 ORM(Object-Relation Mapping)映射框架,通過 XML文件配置實現 POJO 與數據庫記錄之間的映射關系,相比 Spring JDBC 它封裝了幾乎所有的 JDBC 代碼,使用起來更加方便,開發效率高;相比 Hibernate 它更加輕量級,由于 SQL 代碼全部寫在配置文件里,SQL 的修改不需要重新運行,對于需求經常變動的互聯網項目,其靈活性高、可擴展性強,具有 Hibernate 不可比擬的優勢。
Apache Tomcat服務器環境
Tomcat是由Apache軟件基金會屬下Jakarta項目開發的Servlet容器,按照Sun Microsystems提供的技術規范并提供了作為Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全局管理和Tomcat閥等。由于Tomcat本身也內含了HTTP服務器,因此也可以視作單獨的Web服務器。但是,不能將Tomcat和Apache HTTP服務器混淆,Apache HTTP服務器是用C語言實現的HTTPWeb服務器;這兩個HTTP web server不是捆綁在一起的。Apache Tomcat包含了配置管理工具,也可以通過編輯XML格式的配置文件來進行配置。一般用在Java Web項目中。
因為項目還沒有部署,這里只給出在我們本機IDE上,IDE自動給我們部署的方法。
在IntelliJ IDEA中,當我們安裝完成Tomcat后,使用Edit Configuration配置參數可以將我們的Tomcat配置進入IDE中,此后,IDEA將拷貝一份Tomcat進入項目根目錄,并將為我們自動產生War Exploded包,并存放到此項目的.idea根目錄下。War exploded模式是直接把文件夾、頁面 、classes等等移到Tomcat部署文件夾里面,進行加載部署。因此這種方式支持熱部署,一般在開發的時候也是用這種方式。所謂熱部署,即當我們在開發時即使修改頁面,也是可以即使反饋出來的。
Docker
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
Docker 將應用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔心環境問題。
總體來說,Docker 的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、復制、分享、修改,就像管理普通的代碼一樣。
因為項目才開發了一部分,并沒有開發完成,這里只能給出一個粗略的部署方案。
由于SSM項目中沒有自帶的服務器,所以這里需要將項目打包為War包通過dockerfile上傳至容器中的Tomcat的webapps目錄下,當然,首先要用docker拉取Tomcat服務器和Mysql數據庫。
項目設計方案
B/S和C/S的軟件架構
Client/Server(C/S)和Browser/Server(B/S)是我們常用的對軟件的網絡結構特點的表述方式,但它們背后蘊含著一種普遍存在的軟件架構風格,即客戶-服務模式的架構風格。
在客戶-服務模式中,客戶是主動的,服務是被動的。客戶知道它向哪個服務發出請求,而服務卻不知道它正在為哪個客戶提供服務,甚至不知道正在為多少客戶提供服務。
客戶-服務模式的架構風格具有典型的模塊化特征,降低了系統中客戶和服務構件之間耦合度,提高了服務構件的可重用性。
下面為本項目軟件架構的示意圖:
MVC模式的開發架構
MVC即為Model-View-Controller(模型-視圖-控制器),MVC是一種設計模式,以MVC設計模式為主體結構實現的基礎代碼框架一般稱為MVC框架,如果MVC設計模式決定了整個軟件的架構,不管是直接實現了MVC模式還是以某一種MVC框架為基礎,只要軟件的整體結構主要表現為MVC模式,我們就稱為該軟件的架構為MVC架構。
MVC中M、V和C所代表的含義如下:
Model(模型)代表一個存取數據的對象及其數據模型。
View(視圖)代表模型包含的數據的表達方式,一般表達為可視化的界面接口。
Controller(控制器)作用于模型和視圖上,控制數據流向模型對象,并在數據變化時更新視圖。控制器可以使視圖與模型分離開解耦合。
這里采用了基于MVC的Java Web項目開發架構,因為MVC事實上只是一種設計思想,這種設計思想的目的是為了解耦,因此本項目在實際應用時并非完全只劃分了Model-View-Controller三層,我們在這之上略微有些許延伸,事實上,很多實際的Java Web項目的開發都是這樣做的。本項目的業務邏輯類主要分為以下三大塊:
Dao層:數據庫訪問層,對應數據庫表做增刪改查。
Service層:對Dao層的增刪改查整合,通過這一層來進行解耦,使得Dao層內的變化不會直接影響到Controller層。
Controller層:定義路由訪問,對service層整合。
Restful風格的接口設計
REST(Representational State Transfer),翻譯為表現層狀態轉換,是一種基于命名資源的軟件架構方式。而所謂資源指的是網絡上的一個具體信息,用URI(Universal Resource Identifier)指向它,因此上網就變成了與網上―資進行信息交互,調用它的 URI。由于 HTTP 協議的無狀態性,使得客戶端與服務器端的請求是無狀態的,所有狀態信息都需要在服務器端保存。通常客戶端通過 HTTP 協議的 GET、PUST、PUT 和 DELETE 這四種方法,來操作服務端數據,實現數據在表現層的狀態轉換。
RESTful 架構,是一種軟件設計風格,被廣泛用于互聯網系統,它具有設計簡潔、層次分明、支持緩存、可伸縮性強的特點。其設計理念如下:
用每一個 URI 代表一種資源;
在客戶端與服務器之間有傳遞這種資源的表現層;
客戶端通過 HTTP 的四個方法,對服務器端的資源進行操作,實現表現層的狀態轉換。
采用 RESTful 的架構風格對系統中各個模塊的接口進行設計,將接口數據抽象成資源,以 URI 的方式呈獻給用戶。這種設計方式最大效率的實現資源共享,使得開發出的系統更健壯,對業務流程的變化和技術更新有更好的適應性。用戶在前端頁面的請求會通過 HTTP 方法傳遞到服務接口進行處理,服務接口將數據封裝成 JSON格式的字符返回給前端頁面,表現層經過處理后呈現給用戶。
這是本項目中前端子系統的Restful風格的接口設計:
| 模塊 | 功能 | URI |
|---|---|---|
| 前置模塊 | 用戶登錄 | /api/user/login |
| 用戶注冊 | /api/user/register | |
| 實名認證 | /api/user/certification | |
| 找回密碼 | /api/user/forgetPassword | |
| 借貸模塊 | 提交基本資料 | /api/data/submit |
| 查詢待提交/待審核/審核不通過/審核通過的借款 | /api/borrow/query |
后臺子系統的接口設計:
| 模塊 | 功能 | URI |
|---|---|---|
| 系統設置 | 區域查詢 | /admin/area/view |
| 新增/修改區域 | /admin/area/input | |
| 區域詳情查看 | /admin/area/detail | |
| 查看用戶列表 | /admin/user/view | |
| 新增用戶 | /admin/user/input | |
| 查看角色列表 | /admin/role/view | |
| 新增角色 | /admin/role/input | |
| 刪除角色 | /admin/role/delete | |
| 設置用戶角色 | /admin/role/role_user | |
| 設置角色權限 | /admin/role/role_permission | |
| 日志列表 | /admin/log/view | |
| 財務管理 | 查看打款/收款列表 | /admin/finacial/view/{page}/{state} |
| 打款 | /admin/financial/payment | |
| 收款 | /admin/financial/collection | |
| 獲得打款/收款詳情頁 | /admin/financial/{pageType}/{state}/tab | |
| 貸后管理 | 逾期管理查看 | /admin/loanafter/view |
| 強制收款 | /admin/loanafter/collection |
軟件系統概念原型的不同視圖
分解視圖
具體功能子模塊見上述RESTful api設計,這里不再贅述。
依賴視圖
這里我們的分層是基于MVC的擴展,其中Controller,Dao,Service層之間的依賴如下所示:
表單的提交或者AJAX異步請求,采用Controller層進行轉發到Service層業務處理,這里的NAS即Network Attached Storage:網絡附屬存儲,也就是業務類所調用的一些臨時存儲,并非數據庫存儲,Service之后調用Dao層,Dao層與數據庫之間產生交互。
執行視圖
這里給出本系統中最重要的一個執行視圖作為說明,即借款操作執行視圖:
實現視圖
前置模塊實現視圖:
因為系統開發尚未完成,這里再給出一個重要的借款過程實現視圖:
部署視圖
網上找了一張,比較形象:
工作分配視圖
工作分配視圖將系統分解成可獨立完成的工作任務,以便分配給各項目團隊和成員。工作分配視圖有利于跟蹤不同項目團隊和成員的工作任務的進度,也有利于在個項目團隊和成員之間合理地分配和調整項目資源,甚至在項目計劃階段工作分配視圖對于進度規劃、項目評估和經費預算都能起到有益的作用。
因為我們的項目是我和同學兩個人完成的,前后端分離,一人前端一人后端,每個人都是一個獨立的開發線,每個人的工作非常明確,因此無需進行工作分配。
數據庫設計
數據庫選型
國內市面上常用的主流數據庫包括 Oracle、SQL Server 和 MySQL 等。其中 Oracle 和 SQL Server 多用于大型網站或項目,服務性質為收費昂貴且價格。MySQL 數據庫為免費開源數據庫,適用于中小型網站或項目。三大主流數據庫對照表如下:
可以看到,MySQL 數據庫最為一種輕便易用的免費開源數據庫,被廣泛應用到互聯網項目中,雖然 MySQL 數據庫的性能不及 Oracle 和 SQL Server 優秀,但對于小型互聯網這種對性能要求不是很嚴格的項目已經足夠,加上對項目資金的考慮,MySQL 是最好的選擇。
數據庫內部設計
下面給出本項目所用到的主要數據庫表。
用戶表(通過用戶組和權限來區分三大用戶):
| 字段 | 說明 |
|---|---|
| id | 用戶id |
| user | 用戶名 |
| user_group | 用戶組名 |
| area | 城市碼表 |
| role | 角色 |
| permission | 權限 |
| loan_product_info | 貸款產品信息 |
| loan_product_type | 貸款產品類型 |
| user_loan_basic | 用戶貸款基本信息 |
| user_loan_detail | 用戶貸款明細 |
| user_loan_doc | 用戶貸款資料 |
| user_loan_cost | 用戶貸款費用 |
| op_log | 操作日志 |
貸款產品表:
| 字段 | 說明 |
|---|---|
| id | 貸款產品id |
| product_name | 產品名稱 |
| loan_type | 貸款類型 |
| is_effective | 是否有效 |
| effective_date | 生效日期 |
| ineffective_date | 失效日期 |
| create_time | 記錄創建時間 |
| update_time | 記錄更新時間 |
| create_by | 記錄創建人id |
| update_by | 記錄更新人id |
用戶借款信息表:
| 字段 | 說明 |
|---|---|
| id | 貸款產品id |
| product_name | 產品名稱 |
| apply_user_id | 申請用戶id |
| apply_user_name | 申請用戶名 |
| sales_man_id | 業務員id |
| sales_man_name | 業務員名 |
| apply_time | 申請時間 |
| audit_user_id | 審核人id |
| audit_user_name | 審核人姓名 |
| audit_time | 審核時間 |
| pay_time | 打款時間 |
| create_time | 記錄創建時間 |
| update_time | 記錄更新時間 |
系統概念原型的核心工作機制
概念原型
概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論。
概念原型是一種虛擬的、理想化的軟件產品形式。
核心工作機制
這里簡單地模擬一下三大用戶的工作過程,我們的系統在設計完成后可以模擬以下工作過程進行測試。
普通用戶:
注冊賬戶 => 登錄 => 提交借款
登錄 => 注冊賬戶 => 登錄 => 提交借款
登錄 => 忘記密碼 => 修改密碼 => 登錄 => 提交借款
業務員:
添加借款 => 異常處理 => 上傳失敗 => 添加失敗
添加借款 => 異常處理 => 資料上傳 => 異常處理 => 上傳失敗 => 添加失敗
添加借款 => 資料上傳 => 上傳成功 => 添加成功
添加借款 => 異常處理 => 資料上傳 => 上傳成功 => 添加成功
添加借款 => 異常處理 => 資料上傳 => 異常處理 => 上傳成功 => 添加成功
超級管理員:
用戶管理 => 添加用戶信息
用戶管理 => 更新用戶信息
用戶管理 => 刪除用戶信息
用戶管理 => 導出用戶列表
角色管理 => 新增角色
角色管理 => 調整角色
角色管理 => 刪除角色
區域設置 => 業務員信息設置
區域設置 => 系統信息設置
操作日志 => 導出操作日志
總結
本文主要采用老師上課所講方法對自己所做的系統進行一個類似預算的設計方案,因為項目才開始一點點,還有很多地方沒有想到,很不細致。當然,這次博客的目的還是達到了,就是學習書寫軟件工程的設計方案。
參考資料
https://gitee.com/mengning997/se/tree/master/ppt
《UML教程》
https://www.w3cschool.cn/uml_tutorial/
《三層架構:表示層-業務邏輯層-數據訪問層》
https://blog.csdn.net/m0_37033566/article/details/53787055
《如何設計Service層》
https://blog.csdn.net/qq_34339493/article/details/86479991
《Service層和Controller層的開發》
https://www.jianshu.com/p/553980575709
《數據庫建模三步驟:概念模型->邏輯模型->物理模型》
https://blog.csdn.net/caodongfang126/article/details/90665339
《阿里云安裝Tomcat》
https://blog.csdn.net/aa787282301/article/details/86326605
《Apache Tomcat Introduction》
http://tomcat.apache.org/
《菜鳥教程-Docker教程》
https://www.runoob.com/docker/docker-tutorial.html
總結
以上是生活随笔為你收集整理的在线借贷平台软件系统设计方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一个go程序
- 下一篇: go程序的跨平台编译