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