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