趙悅 杜俏俏
摘要摘要:領域驅動設計是一種基于模型驅動開發思想的嶄新的開發方式,其核心是領域模型,相較之前基于數據庫驅動的開發方法,更強調領域的概念,且架構清晰、對象職責明確、可復用性好。基于領域驅動設計對專利申報系統進行架構設計,讓申報系統在實現時對專利申報系統業務過程準確建模并根據其業務過程而調整,使得整個系統層次分明,具有良好的可擴展性、可移植性。
關鍵詞關鍵詞:領域驅動設計;領域模型;專利申報系統
DOIDOI:10.11907/rjdk.162881
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2017)005006303
0引言
隨著計算機科學技術的飛速發展,軟件開發質量和后期維護越來越受到各行各業的重視,傳統的 Web 平臺開發工作趨向于一種以技術為先導的開發方式,這些軟件開發的指導原則依然是基于數據庫設計,然而傳統以數據庫為核心的開發方式并不能很好地滿足要求。 目前,很多系統都存在過分依賴數據庫的現象,無形中給數據庫造成了相當大的壓力,隨著系統負載的不斷增加,數據庫的壓力將越來越大,最終數據庫因不堪重負而宕掉[1]。
領域驅動設計方法拋棄了分裂分析模型與設計的做法,它強調以業務邏輯為核心,進行領域模型的構建,并將注意力放在領域的模型構建與代碼匹配上。領域驅動設計思想旨在通過使用統一協作的編程語言,來消除領域專家與開發人員之間的隔閡,從而使用領域模型來滿足兩者的要求,完成軟件開發工作。同時,領域模型的研究又為軟件復用提供了良好的支持,通過領域分析,確定需求中的共性與變化性,從而構造出可復用的業務語義及構件,不僅能夠實現代碼的復用,也能實現功能模塊和領域模型的復用[2]。
專利申報報系統具有業務過程復雜,以及開發過程的規范性、集成性等特點,若采用傳統數據庫驅動的設計方式,很難將需求信息完整地表達,同時也會陷入過程化編程的困境中。為了避免這些問題,將領域驅動設計這一思想引入到專利申報系統中,根據專利申報系統的業務進行
領域模型的建立,搭建系統分析與設計的良好溝通橋梁,實現系統開發目的的同時實現軟件復用。基于領域驅動設計對專利申報系統進行架構設計,使系統分層架構更清晰,提高了軟件開發的可維護性和可擴展性,促進了專利申報系統平臺的構建。
1系統功能架構
1.1功能架構設計
專利業務管理系統功能主要包括:基礎信息、案件管理、專利申請管理、專利托管管理、財務管理、個人工作臺六大模塊。功能模塊如圖1所示。
1.2系統建設特點
(1)技術先進。采用業界先進的J2EE架構開發,采用主流的框架Spring、Mybatis、Srping MVC,通過領域建模的方式對系統進行分析和設計,以實現最大的適應性和單元選擇的自由度,以及在企業發展時具有改變和增加系統的能力,提高系統的可擴展性。
(2)易用性。系統為B/S結構,客戶端不需要安裝任何軟件。界面通過Bootstrap前臺框架能對各類設備的屏幕進行自適應調整,方便用戶操作。系統將避免代理部通過國家專利局申報系統編輯CPC包時速度過慢的問題,專利撰寫人員可以像正常使用Word文檔一樣進行專利文檔編輯,極大提高了編輯速度。
(3)靈活的權限控制。通過角色設置,用戶可以擁有不同的操作權限。
(4)高集成度。所有功能模塊在設計時通盤考慮,無縫聯接,數據交換無障礙。
(5)柔性化系統設計。本系統采用柔性化設計,對可能變化的功能和需求部分,比如國家專利模板管理和CPC壓縮包生成模塊,以后如果需要修改,只需要根據接口重新開發特定的類或更新配置文件即可,不影響其它模塊的功能。
(6)信息安全。對于關鍵敏感數據,比如密碼、金額,采用國際標準加密算法對數據進行加密,數據庫中存放密文或檢驗碼,防止從數據庫直接查看或修改。
2領域驅動架構設計
2.1領域驅動設計優勢
領域驅動設計(DomainDriven Design,DDD)是領域驅動設計大師 Eric Evans[3]在2004提出的軟件開發概念,是一種基于模型驅動開發(MDD)思想的嶄新的開發方式,目的是讓軟件系統在實現時準確地基于對真實業務過程的建模并根據真實業務過程的調整而調整。
本文采用業內領先的領域模型驅動設計方法,基于領域模型的設計思想,業務邏輯不再集中在幾個大型的類上,而是由大量相對小的領域對象(類)組成,這些類具備自己的狀態和行為,每個類是相對完整的獨立體,并與現實領域的業務對象映射。領域模型就是由許多細粒度的類組成。基于領域驅動設計,保證了系統的可維護性、擴展性和復用性。
領域驅動設計的專注點在于領域模型的研究,它是以模型驅動設計為根基,以軟件領域為著眼點,專注于領域模型的構建與代碼匹配,并將模型作為領域專家和軟件開發人員交流的一種開發方式[4]。
領域驅動的核心應用場景就是解決復雜業務的設計問題,其特點與這一核心主題息息相關。
(1)分層架構與職責劃分。領域驅動設計很好地遵循了關注點分離的原則,提出了成熟、清晰的分層架構。同時對領域對象進行了明確的策略和職責劃分,讓領域對象和現實世界中的業務形成良好的映射關系,為領域專家與開發人員搭建了溝通的橋梁[5]。
(2)復用。在領域驅動設計中,領域對象是核心,每個領域對象都是一個相對完整的內聚的業務對象描述,所以可以形成直接的復用。同時設計過程是基于領域對象而不是基于數據庫的映射,因而整個設計是可以復用的。
(3)使用場景。適合具備復雜業務邏輯的軟件系統,對軟件的可維護性和擴展性要求比較高。
領域驅動設計將系統整個架構分為4層,其核心就是領域層,所有業務邏輯都應在領域層實現,具體描述如下:①用戶界面/展現層。負責向用戶展現信息以及解釋用戶命令;
②應用層。很薄的一層,用來協調應用的活動。它不包含業務邏輯,不保留業務對象的狀態,但保有應用任務的進度狀態;
③領域層。本層包含關于領域的信息,這是業務軟件的核心所在,保留業務對象的狀態,業務對象及其狀態的持久化被委托給基礎設施層;
④基礎設施層。本層作為其它層的支撐庫存在,提供層間的通信,實現對業務對象的持久化,包含對用戶界面層的支撐庫等作用。
2.2專利申報系統領域驅動架構設計
本系統中對領域模型驅動進行了具體設計,其框架如圖2所示。
基于專利申報系統的業務需求,對每層的設計進行詳細說明如下:①存儲層:采用SQL Server2003以上版本為數據庫管理軟件,數據庫獨立使用,不與其它系統共享;②數據層:按領域模型對專利申報業務進行建模,保證業務的獨立性,當某一個業務模塊因為需求改變而修改時,盡量不會引起其它業務模塊的變動,從而提高軟件的可維護性;③應用層:系統將各模塊統一功能獨立出來,采用統一的模塊或框架進行開發,分為定時任務、報表服務、郵件服務、短信服務、工作流服務等,各業務模塊接口可以在此基礎上按模塊進行裝配和升級;④表示層:本次系統只開發Web客戶端程序,頁面將采用Bootstrap技術,可根據不同的瀏覽器和機器的屏幕,自動調整頁面的布局和樣式,提高用戶的瀏覽體驗。
系統服務層將采用目前主流的開發框架(Spring+Spring Mvc+Mybatis)開發,以提高項目的質量和可維護性。為了適應管理對軟件功能的變更,系統服務層采用柔性設計,業務模塊可通過組裝的方式搭建,通過高內聚、低耦合的方式進行迭代式開發。
2.3專利申報系統領域模型設計
專利業務管理系統功能主要分為六大功能模塊,下面以案件管理模塊為例進行領域模型設計。
案件管理模塊主要業務是先登記新案件,案件類型分為:專利(發明專利、實用新型專利、外觀設計專利)、軟件著作權、高新技術企業認證、知識產權貫標。案件啟動后,案件分配人指定案件代理人,代理人聯系客戶,登記案件進展和客戶聯系信息。對于專利類申請,代理人直接利用Word對專利等文檔進行編輯,編輯完成后,上傳所有文檔,系統自動生成CPC壓縮文件并導出。代理人辦理
3結語
本文基于領域驅動設計,針對專利申報系統完成了整個系統的架構設計,并根據案件管理模塊具體的業務邏輯進行領域模型設計。運用領域驅動設計可以解決復雜的業務邏輯問題,讓領域對象和現實世界中的業務形成良好的映射關系,對領域對象進行明確的策略和職責劃分。后續會對其它模塊進行領域模型設計,以完成整個系統設計。
參考文獻參考文獻:
[1]丁濤.基于領域驅動設計的物流平臺系統實現[D].成都:電子科技大學,2010.
[2]張金松.領域驅動設計在航務海事系統中的應用研究[D].大連:大連海事大學,2010.
[3]鄭家茂.開放-創新-實驗教學新模式[M].北京:高等教育出版社,2009.
[4]梁慧軍,張新剛.計算機網絡實驗教學的改革與創新型人才的培養[J].南陽師范學院學報,2010(12):107108.
[5]黃光芳,金義富.基于領域驅動設計構建企業級Web平臺的應用[D].湛江:湛江師范學院,2013.
責任編輯(責任編輯:孫娟)