胡世港 田櫻
摘要:領域模型是指軟件領域中具有靜態(tài)特征和動態(tài)行為的事物。該文首先講述領域驅動建模的相關內容,然后具體描述如何使用領域驅動建模方法完成物業(yè)管理系統(tǒng)的分析與設計,最后闡述建立系統(tǒng)領域模型的過程。
關鍵詞:領域驅動設計;物業(yè)管理系統(tǒng);面向對象分析;SSH框架
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)31-7354-04
Abstract: The domain model is the static characteristics and dynamic behavior of things in the software field. This paper first describes the domain driven modeling, and then described in detail how to use the domain driven modeling method to complete the property management system analysis and design, and finally elaborated the process of establishing a system domain model.
Key words: domain driven design; property management system; OOA; SSH
對于大多數(shù)軟件項目而言,領域驅動設計應該是基于模型的,而且其根本點應著眼于軟件領域及業(yè)務邏輯。軟件系統(tǒng)復雜之處的根本原因在于領域本身,在于用戶及其參與的業(yè)務活動,而不在于技術。只有在設計時深刻理解了軟件領域,并以模型概念和元素的形式清晰地描述出復雜的領域邏輯,才能保證軟件項目的真正成功。
軟件項目開發(fā)速度的有效提升依賴于領域驅動設計。領域驅動設計可以大大提高我們所能解決的問題的復雜度,引導我們從混亂和復雜的軟件領域中找出業(yè)務規(guī)則,提取出一套描述語言,并運用相應的模式和策略來發(fā)揮這種描述語言的強大作用。這是一個相當需要技巧和經驗的過程。能夠真正深入地理解、掌握和運用這些技巧和經驗就已經非常不易,而將這么技巧和經驗總結和整理出來就顯得尤為珍貴。
問題領域本身的復雜性是造成軟件開發(fā)復雜性的核心。任何軟件不可能避開這種復雜企業(yè)中的復雜性問題,它所能做的僅僅是控制好復雜問題。
一個好的領域模型是控制復雜問題的關鍵,它能夠透過問題域的表象看本質,為軟件開發(fā)人員提供一個參考模型,便于溝通和理解問題域。一個好的領域模型有非常重要的價值,但建立它卻不是一件容易的事情。很少有人能夠出色地完成,并且建立的方法也很難傳授。
首先,在進行領域建模的時候,不能夠將概念和實現(xiàn)分離。一個高效的領域建模人員不應該只會使用記事本和計算器,還要能夠編寫Java程序。一部分原因是離開對于實現(xiàn)問題的考慮,便無法建立一個有用的概念模型。然而概念與實現(xiàn)不可分割的主要原因是:領域模型最重要的價值在于提供一種通用的語言,將領域專家與技術人員聯(lián)系在一起。
真正有效的領域模型是隨著時間慢慢發(fā)展得來的,即使最有經驗的建模人員也會發(fā)現(xiàn)總是在系統(tǒng)的初始版本實現(xiàn)后才會找到他們的最佳想法。領域模型會對管理軟件開發(fā)起到重大的影響——不管軟件開發(fā)使用何種語言或環(huán)境實現(xiàn)。
1 建模過程
1.1需求描述
康正物業(yè)公司是我市一家專業(yè)的物業(yè)管理公司,其下轄六個物業(yè)服務處,每個物業(yè)服務處管理多個小區(qū),公司的主要業(yè)務即對各小區(qū)進行日常物業(yè)管理工作。
公司物業(yè)管理軟件的建設,是為了更好的跟進小區(qū)物業(yè)的管理工作,實現(xiàn)物業(yè)服務處工作網絡化,提高工作效率,及時掌握公司的經營狀況,提高管理水平。
物業(yè)管理系統(tǒng)的建設將圍繞對業(yè)主各項收費進行管理,根據(jù)各項報表與查詢信息,公司管理層可以實時了解公司業(yè)務運營情況,監(jiān)督各物業(yè)服務處的日常工作。
本文最終確定的系統(tǒng)功能目標如下:
1) 業(yè)務辦理。包括房產登記、水電報表上傳、系統(tǒng)自動計費、物業(yè)收費、臨時收費、減免收費、預收費用和退還押金等功能。
2) 參數(shù)設置。包括樓棟類型、房產類型、房產來源、車位類型等參數(shù)的設置,以及部門信息、物業(yè)服務處信息、小區(qū)信息、樓棟信息、房產信息和業(yè)主信息的管理功能。
3) 系統(tǒng)設置。包括用戶信息、角色信息、收費方式、收費單位、收費項目、收費標準、單獨收費標準以及歷史欠費錄入等功能。
4) 信息查詢。包括小區(qū)收費月匯總、小區(qū)收繳率月匯總、小區(qū)收費年匯總、公司收費月匯總、公司收費年匯總、物業(yè)服務處收費月匯總、物業(yè)服務處年匯總、單項收費明細、業(yè)主繳費明細、業(yè)主繳費匯總、業(yè)主欠費匯總、業(yè)主欠費明細以及公司臨時收費月匯總等報表查詢功能。
1.2 需求分析
整個系統(tǒng)是一個基于互聯(lián)網的工作平臺,允許公司各部門擁有權限的用戶進行使用,用戶必須通過登錄驗證才有權限使用本系統(tǒng)。用戶登錄后,根據(jù)所在部門分配相應權限,只能按其擁有的權限進行操作。如物業(yè)服務處的用戶不能查詢及操作其他服務處的信息,公司財務處可以查詢到所有服務處的業(yè)主信息。公司員工的操作都通過日志進行記錄,管理者可以通過查詢日志來查看操作員某一時間段的收費、減免收費的情況。
1.2.1制定房產收費標準
對于每個小區(qū)都有一個基本的收費標準,這個收費標準根據(jù)收費項及住宅類型劃分為若干個不同的子標準。物業(yè)管理費的收費可能根據(jù)單層普通業(yè)主、單層還建業(yè)主、多層普通業(yè)主、多層還建業(yè)主、普通商鋪、還建商鋪、多層普通商鋪、門面不同而不同。停車服務費的收費根據(jù)路面、地下室,位置的不同而收費。水費、電費的收費根據(jù)商鋪、住宅、門面的不同而不同。對于按月收費的收費項目,因某些特殊原因,需要降低收費標準的,可以通過特殊權限,修改制定的某一房產的收費標準。對于需要一次性收費的項目,需要減免的,可以通過物業(yè)管理區(qū)申請,公司財務審核的方式進行減免。
1.2.2初始化
物業(yè)公司計算按月收費的起始日期,并非是開發(fā)商將房產管理權移交給物業(yè)公司的日期,而是通過執(zhí)行“房產初始化”功能時指定的初始化日期開始計算,未進行初始化操作的房產不計算按月收費的項目。可以指定一組房產或單個房產進行初始化。
1.2.3收費
收費操作是指收取業(yè)主的各項費用的操作。收費有以下幾種情況:業(yè)主交費的金額與待繳金額相等時,可以直接辦理收費。待繳金額有零錢的情況(如102元),而業(yè)主只想交100元時,系統(tǒng)自動判斷操作員是否有繳費金額優(yōu)惠的權限,并且優(yōu)惠的范圍在允許的權限之內時,操作員可以辦理優(yōu)惠收費(100元)。
業(yè)主需要對待繳金額進行減免收費, 并減免額度超過操作員允許的額度的情況下,由操作員向公司財務進行“減免申請”,財務審核通過后,操作員按減免后的金額收費。提供一次性繳費優(yōu)惠套餐,如一次性繳納全年的物業(yè)管理費,按照XXX元收費。
1.2.4減免收費審核
減免收費審核由公司財務管理審核同意后,物業(yè)管理區(qū)操作員可以按減免后的金額收費。
1.2.5樓棟管理
樓棟管理的功能主要實現(xiàn)新增、修改、刪除樓棟的功能。樓棟需保存的信息包括物業(yè)服務處、小區(qū)、樓棟號、單元、樓層、類型、多層、電梯房、收費方式、坐收、走收等。
1.2.6房產管理
房產管理的功能主要實現(xiàn)新增、修改、刪除房產的功能。房產需要保存的信息包括物業(yè)服務處、小區(qū)、樓棟號、單元數(shù)、樓層、房號、戶主、是否已初始化、樓棟類型、房屋類型。
1.2.7業(yè)主管理
管理員可以新增、修改、刪除業(yè)主信息。業(yè)主管理需要保存的信息包括業(yè)主工作單位、電話、姓名、身份證,業(yè)主家庭成員信息,可以包含一個或多人(工作單位、電話、姓名、身份證),業(yè)主的房產信息。
1.2.8部門管理
部門的組織結果以樹狀方式進行表述,一級部門為公司,二級部門為公司科室及物業(yè)服務處。用戶可以新增、修改和刪除部門信息。
1.2.9用戶管理
由系統(tǒng)管理員負責維護整個系統(tǒng)的用戶信息,包括用戶的增加、刪除、所屬部門的變更、用戶授權。用戶使用信息系統(tǒng)的權限由系統(tǒng)管理員負責設置,用戶權限授予的原則根據(jù)用戶實際負責的工作來決定。
1.2.10小區(qū)管理
可以增加、刪除、修改小區(qū),并指定小區(qū)所屬物業(yè)服務處。小區(qū)屬性有:小區(qū)名稱,地址、收費方式、所屬物業(yè)服務處。
1.2.11收費項目
收費項目按收取方式可分為:按月收費、一次性收費。按月收費的項目有:物業(yè)服務費、停車服務費、水費、電費、垃圾清運費。一次性收費的項目有:裝修垃圾清運費、裝修保證金、裝修服務費、其他。
1.2.12收費標準
收費標準的劃分,對于每一個小區(qū)都有一個基本的收費標準,這個收費標準根據(jù)收費項目及住宅類型劃分為若干個不同的子標準。房產只有經過初始化,并指定初始化日期后,系統(tǒng)才能按月計算物業(yè)服務費和垃圾清運費,沒有經過初始化的房產,不計算物業(yè)服務費和垃圾清運費。其中水費、電費需要記錄起止碼及歷史欠費信息。停車服務費指業(yè)主每月需要繳納的停車服務費,停車服務費的收費標準根據(jù)標準、路面、地下室而不同。對于臨時收取的停車服務費,在當日交班時作為一次性收費進行錄入收費金額即可。
1.2.13信息查詢
包括收費年匯總表、公司收費月匯總表、管理區(qū)收費年匯總表、管理區(qū)收費月匯總表、小區(qū)收費年匯總表、小區(qū)收費月匯總表、單項收費明細表、業(yè)主繳費匯總表、業(yè)主繳費明細表、業(yè)主欠費匯總表、業(yè)主欠費明細表、暫定以上統(tǒng)計報表。
需求分析的任務就是根據(jù)前期與用戶的溝通記錄,找出用戶心中真正想要的全部功能需求并加以描述,然后利用OOA(面向對象分析)思想提取出核心領域模型類。
1.3 系統(tǒng)用例
軟件系統(tǒng)的功能需求可以使用系統(tǒng)用例來加以描述。以下系統(tǒng)用例指出,操作本系統(tǒng)的用戶角色包含ADMIN(系統(tǒng)管理員)、CHARGEMAN (物業(yè)收費員)、OWNER(業(yè)主)、USER(普通用戶)。每個用戶角色操作系統(tǒng)的功能不同,由此確認出系統(tǒng)用例。系統(tǒng)管理員可以設置系統(tǒng)參數(shù)樓棟類型、房產類型、房產來源、車位類型、收費方式、收費單位,并對用戶、角色、部門、物業(yè)服務處、小區(qū)、樓棟、房產、業(yè)主、收費項目和收費標準進行管理,同時也可以對小區(qū)物業(yè)收費進行統(tǒng)計查詢。物業(yè)收費員首先對小區(qū)進行房產登記工作,指定各房產應繳納的收費項目,之后上傳各房產的水電報表,以便讓系統(tǒng)自動計算各房產所屬業(yè)主應繳納的物業(yè)費用并生成每月賬單,提醒業(yè)主每月按時繳納賬單,完成物業(yè)收費工作,同時也可預收費用并存到業(yè)主賬戶中。圖1即為本系統(tǒng)用例圖(Use Cases)。
2 總結
本文基于物業(yè)管理系統(tǒng)的完整需求分析及系統(tǒng)設計階段,再現(xiàn)了基于領域驅動設計進行軟件系統(tǒng)領域建模的完整過程。通過與湖北康正物業(yè)有限公司以及小區(qū)業(yè)主的詳細交流,以物業(yè)收費業(yè)務領域為入口,該文定義出了本系統(tǒng)中的全部領域模型類,及其屬性和方法,并重點分析它們之間的相互依賴關系,從而對系統(tǒng)需求有了更深刻的理解,在繪制UML用例圖和類圖的基礎上,完成了物業(yè)管理系統(tǒng)的領域建模工作。
參考文獻:
[1] 黃光芳,金義富.基于領域驅動設計構建企業(yè)級Web平臺的應用[J].實驗室研究與探索,2013(8).
[2] 申新鵬,張利軍,楊波.基于動態(tài)領域模型的業(yè)務流程管理[J].信息技術,2012(6).
[3] 王海林.模型驅動下的Web應用系統(tǒng)自動生成[J].計算機技術與發(fā)展,2012,22(1):83-86.
[4] 吳映波,王旭,林云.面向服務的領域分析與建??蚣躘J].計算機工程與設計,2011,32(8):2704-2707.