基于配置的MIS系统开发框架设计与实现

时间:2022-03-31 06:04:32

基于配置的MIS系统开发框架设计与实现

摘要:为了减少MIS系统开发过程中的重复编码,提出了一种基于配置的MIS系统开发框架。介绍了该框架的工作原理,针对框架内核3个主要部件的设计展开了详细讨论,并根据该框架的实际应用情况对其优点及不足进行了总结。

关键词关键词:软件工程;软件复用;MIS

中图分类号:TP311

文献标识码:A 文章编号:16727800(2014)002010503

0引言

应用软件系统的开发大体上包含以下几个阶段:需求分析、设计、编码、测试和维护等。若每个应用系统的开发都是从零开始,在开发过程中必然存在许多低水平重复劳动,使开发者将时间浪费在一些琐屑乏味的工作中,无法将更多的精力集中于系统关注的业务逻辑,在更高的抽象层次上来考虑应用系统的各个方面。

探究应用系统的本质,不难发现其通常包含3类成分:①通用组件:特定于应用系统的构成部分,如基础数据、用户界面元素等,它们存在于各种应用系统中;②领域组件:应用系统所属领域的共性构成部分,它们存在于该领域的各个应用系统中;③应用组件:每个应用系统的特有构成部分。应用系统开发过程中的重复劳动主要存在于前两类中[1]。

为了减少应用系统开发过程中的机械性重复,提高软件开发人员的生产效率,各种新技术应运而生,如基于组件的开发[2]、基于框架的开发[3]、基于插件的开发、基于中间件的开发等。

然而,目前这些技术只能在应用系统中比较高的层面上解决一些问题(如系统架构),具体的底层工作仍然需要由开发人员来完成,其中存在着许多可以被抽象的成分,例如:①基础数据的维护需要提供专门的界面来支持数据的增加、更新和删除操作;②业务数据的查询也需要提供专门的界面。随着系统规模的扩大,以及数据种类的增加,不得不为每种数据类型编写相应的程序及界面,不仅费时费力,且容易出错。

为了在MIS系统的开发中解决这个问题,本文提出了一种基于配置的MIS系统开发框架(CFMIS,Configurable Framework For Management Information System)。其主要思想是:对通用组件以配置的方式操作,将大部分通用组件的操作封装在框架之中;对领域组件和应用组件以扩展接口的方式实现,使开发者将更多的精力集中在这两方面的设计与实现上。

1CFMIS的概念

1.1配置的定义

可配置是一个灵活敏捷的应用系统的基本特征之一,其可配置程度越高,则系统越灵活,开发难度也会相应提高。不同于应用程序的可配置概念,本文所指的可配置主要集中于MIS系统的开发过程,即基于配置机制来实现MIS系统的开发方法。

基于配置的软件开发,前提是必须提供一个支持配置机制的框架,在此框架上进行应用软件的开发。框架定义用于配置的各类元数据,开发者通过配置元数据进行MIS系统的开发。对于通用的操作,利用框架提供的配置可以减少重复编码;对于非通用的操作,框架提供了可被扩展的接口,以灵活的方式支持应用软件开发的全过程。

CFMIS采用两种方式作为配置媒介:DBMS和XML文档。DBMS用于对框架中较为复杂的元数据进行配置,而XML的易用性则使配置信息的解析变得相对轻松。

1.2CFMIS简介

数据是MIS系统的基础,任何一个MIS系统最终都是对数据进行处理,因此可以认为,MIS系统是以数据为中心的应用软件系统。因此,对数据的维护和查询是每个MIS系统必不可少的关键部分。设计CFMIS的目的正是为了简化这方面的开发工作,通过配置机制让框架生成数据的维护操作、查询及相应的界面。

MIS系统中的数据可以分为两种类型:基础数据和业务数据。基础数据对其它数据的依赖性较小,而业务数据可能与其它数据有较大的依赖。CFMIS对操作基础数据直接提供支持,对操作业务数据保留了扩展的接口。

MIS系统中的数据操作界面也可以分为两种类型:查询界面和操作界面。CFMIS用XML配置文件生成数据的查询界面,用DBMS的配置信息生成数据的操作界面。

图1是CFMIS的总体结构图,其中数据源用于存储MIS系统中涉及的数据;配置源用于存储配置信息;框架内核主要包含3个部分:配置工具、解析器和数据操作引擎;MIS应用利用框架的解析器和数据操作引擎生成操作页面及具体操作;客户端指浏览器(IE6(7)、Firefox)。

2CFMIS设计与实现

2.1配置工具

配置工具是一个核心模块,它定义了CFMIS中配置信息使用的元数据,其作用类似于数据库中的表管理器,用来定义表及表中的字段。除此之外,配置工具还提供了其它配置信息:该字段的控件类型、是否可见、排序值、是否使用公式、格式验证等。由于其复杂性以及对界面解析生成的速度要求,采用DBMS作为其配置源。图2是配置工具的ER图,其中Systbl:定义表;CTblColProp:定义表中的列;CtlType:定义界面的控件类型;ColType:定义字段类型;Bind:定义约束关系。

CtlType定义的控件类型如下:文本框、选择框、下拉框、表单、按钮、文本、多文本框、公式、表单公式、人员选择面板、日期选择、文本选择、多绑定标签。可以通过增加控件类型及相关的解析程序来扩展CFMIS的控件库。

Bind主要用于管理建表/字段过程中引入的约束关系,可以防止建表/字段过程中的循环依赖,或删除一个表/字段时引起的引用丢失等问题。如表A中的字段C1引用了表B中的字段C2,则会在Bind表中有一条描述该关系的记录,若直接删除表B中的C2,系统则会给予警告,说明表A中的C1存在引用C2,要求先解除该引用关系后才能继续删除操作,这样就避免了潜在错误。

利用配置工具建表和字段的同时,框架自动在数据库中生成实体表。根据表之间的引用关系,框架自动创建相应的外键。为了防止命名冲突,建表或字段的时候,框架根据命名规则对之重新命名,同时自动生成/更新使用原表名和字段名的视图以解决可读性的问题。

上一篇:基于.NET的课程教学资源库平台建设研究 下一篇:基于XML的高校异构数据交换平台设计