张柯欣
摘要:数据建模是软件设计中的重要组成部分,计算机专业学生需要根据业务流的要求反复修改数据概念模型,并修改数据库及程序。文章提出了一种根据业务流的变化动态修改概念数据模型的方法,可以在不修改数据库的情况下通过软件编程完成数据模型的转换。这一方法可以提高学生进行系统开发实践的学习效率,也可以降低部署软件原型系统的难度和成本,是进行软件开发教学和开发中小型软件的一种有效设计方法。
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.