張柯欣
摘要:數據建模是軟件設計中的重要組成部分,計算機專業學生需要根據業務流的要求反復修改數據概念模型,并修改數據庫及程序。文章提出了一種根據業務流的變化動態修改概念數據模型的方法,可以在不修改數據庫的情況下通過軟件編程完成數據模型的轉換。這一方法可以提高學生進行系統開發實踐的學習效率,也可以降低部署軟件原型系統的難度和成本,是進行軟件開發教學和開發中小型軟件的一種有效設計方法。
Abstract: Data modeling is an important part in the software design, students from computer science need to modify the conceptual data model according to the requirements of the business flow, and modify the database and program. This paper presents a method to modify the conceptual data model dynamically according to the change of the business flow. This method can improve students' learning efficiency of the system development practice, and reduce the difficulty and cost of the deployment of the software prototype system. So it is an effective design method for software development teaching and development of small and medium-sized software.
關鍵詞:數據建模;業務流;軟件設計;數據概念模型
Key words: data modeling;business flow;software design;data conceptual model
中圖分類號:TP311.5 文獻標識碼:A 文章編號:1006-4311(2017)20-0055-02
0 引言
開發性實踐是計算機相關專業學生的重要學習內容,筆者在學校醫學信息工程專業《醫學軟件設計》和《醫院信息系統》專業課的教學中也把軟件開發實踐做為最重要的學習內容。數據建模是軟件設計教學中的重要組成部分。董曉明等認為數據建模提供了描述真實世界信息需求的方法和手段,便于相關人員的理解和溝通[1]。嚴金貴基于對數據倉庫的研究,認為多維數據建模是根據商業分析主題的要求,使用事實、維度、層次從多個度量角度對商業活動進行建模[2]。馮曉磊對基于動態企業建模的數據建模工具進行了研究[3]。陸昌輝對基于關系數據模型的多維數據建模方法進行了研究[4]。
由于學生往往對擬開發軟件系統的業務流不是非常熟悉,設計出的數據模型往往需要進行反復的修改,這樣的開發效率一般比較低。而且如果軟件進行了部署,再修改的成本也非常高。俞如富也認為數據建模時往往有以下問題:用戶需求不明確或者片面、需求變化頻繁、臨時性報表需求多[5]。
周文認為業務流可以定義為一系列有規律的活動過程,這些活動過程按照確定的方式發生或執行,且具有連續性,最終要達到預期的結果[6]。賀寧認為業務流反映了企業流程活動的業務邏輯,強調流程環節之間的信息交流和傳遞[7]。這說明現實中非常需要一種能夠根據業務流的變化快速更改數據模型和快速變更部署的方法,本文提出一種規范化設計的方法來解決這一問題。
1 規范化數據建模
目前,一般管理系統程序設計的實現是通過分析需求,確定業務流程,設計數據庫,確定各功能模塊,進行系統設計,然后進行編碼工作。這樣一個系統工程往往需要業務員、項目經理、系統分析人員,數據庫開發管理人員和編碼測試人員分工合作,才能使系統順利的進行開發。而這中間很重要的一個環節就是業務流程的確定和數據庫的設計。在一般的系統開發中這是兩個獨立的環節,需要獨立的人員和周期。由于需求的變動性,經常出現設計好的業務流程需要調整或整個修改的情況,如果這一情況出現在數據庫設計前,一般處理的代價較小,也比較容易調整,重新進行數據建模即可。但是如果數據庫已經設計結束,并且很多模塊已經進行了編碼工作,再做這種調整就是一件代價很大的工程。因為很多設計和編碼對數據庫的依賴性很強,如果流程的修改需要改動數據庫將導致很多編好的流程和代碼必須重新編寫,這樣用戶和開發方都要承擔很大的時間和資金壓力。
本文作者試圖通過應用一種規范化的業務流設計方法較好的解決這一困難。其設計思想是將數據庫的設計前置到需求分析和業務流分析階段,建立一個業務定制階段,需求的變化體現在業務定制標準數據庫中,而不影響或很少影響完整的業務數據庫設計,變動的需求最后體現在個別的業務表設計和部分業務的編程中,最大限度的減少其對整體修改的要求,從而達到快速響應變化的需求的目的。
這一設想的具體實現首先體現在業務定制數據庫的設計上。其設計思想是進行業務分離,將一個個具體的業務抽象為一些業務類,每個業務類代表一個簡單的業務操作。設計一個業務類別表,這個表等于為這一業務定義了一個概念,然后在業務類參數表中輸入某業務類的屬性。
由于一般業務類型需要的數據比較固定,這樣可以根據描述清晰的參數表建立一個數據庫中的業務表。而對于需求經常變化或屬性很少的業務,則可以不設計專門的數據庫表,而用業務實例參數表表示。圖1為筆者設計的基于業務流規范化設計的概念數據模型。學生在學習中基于這一概念模型進行目標系統的概念模型擴展。
2 規范化業務設計
概念模型導入到開發任務平臺后,按照以下流程實現規范化業務設計及編碼。
2.1 業務錄入階段 首先是業務人員或管理人員了解需求后可以直接進入業務定制程序,按其了解的業務進行業務定制操作,錄入各分立業務的基本屬性。這一階段對操作人員沒有編程能力的要求,只要求將業務流程分解為各個單獨的業務,同時將該業務需要的所有對象屬性加以說明。在這里業務人員可以參看和修改權限內的業務類別,業務類別的屬性也可以增減和修改。
2.2 業務確認階段 項目經理角色對錄入的所有業務進行分析,將大的業務進行拆分,盡量使業務具有原子性。然后對業務屬性進行歸類和整理,對同一業務流中跨不同業務的對象進行統一定義。
2.3 業務屬性分析 數據庫設計人員介入,設定所有業務屬性的具體數據定義,如數據類型,字段長度、在業務屬性中的序號等。這一階段可以對適合建立數據庫表的一些業務屬性進行基本業務表設計,以提高后面的處理效率。
2.4 業務窗口設計 每個業務流的設計基本采取標準設計界面,左側是業務流的屬性和一些功能按鈕,右側為業務窗口,主要顯示本業務的業務屬性。編碼主要是通過一些事件編程而得到當前業務的業務屬性,然后將當前業務的屬性存入業務實例參數表或基本業務表,完成本項業務。例如圖書館借書,其基本業務屬性為讀者編號、當前時間、圖書編號、到期時間等,在讀者實際借書時還需要“借書”的業務類編號和為這次借書分配的“借書”實例編號。把這些都存入業務實例參數表,就完成了一次借書業務。從這里可以看到,實際業務實例參數表里面可以保存很多業務,而且是以縱列的形式保存的。如果業務量不是特別大,實際可以不設計另外的數據庫表就可以完成日常管理。當然,對于業務比較固定,業務量比較大的系統,可以設計一些日常的數據庫表,把業務參數以這樣表的數據形式保存下來。
為了更好地幫助學生了解設計思想及進行概念轉換,筆者開發了一個輔助工具幫助開發者實現規范化設計。開發者按照普通數據表填寫業務表字段信息即可完成數據庫的更新,具體界面見圖2。
3 討論
本文提出的這種根據業務流進行規范化數據建模及業務設計的方法進行了相應的教學實踐和軟件開發實踐。事實證明這一方法對于在開發進程中業務流發生變化的情況有很強的適應能力,部署也極為簡單。其不足之處在于學生對于這種設計觀念的理解還有一定的難度,另外對于大規模的數據管理來說,系統運行效率有所下降。因此這一方法目前適用于開發教學和中小型軟件的開發部署,對數據模型進一步改進和完善后可以考慮應用在更廣泛的軟件開發實踐中。
參考文獻:
[1]董曉明,閔紹榮,雷靜,等.基于UML和XML的數據建模方法及應用[J].系統仿真學報,2010(9):2048-2051.
[2]嚴金貴.基于ER模型的多維數據建模方法研究[D].重慶大學,2006.
[3]馮曉磊.基于動態企業建模的數據建模工具的研究[D].西南石油大學,2010.
[4]陸昌輝.基于關系數據模型的多維數據建模方法的研究[D].國防科學技術大學,2002.
[5]俞如富.數據建模的設計研究[J].信息與電腦:理論版,2016(5):30-31.
[6]周文.基于業務流與知識流集成的研究[D].沈陽理工大學,2012.
[7]賀寧.業務流與知識流集成建模研究[D].復旦大學,2008.