张清春
基于构件技术的教务管理系统设计与实现
张清春
软件复用是将已有的软件成分用于新的软件系统的构造,可以被重复使用的软件成分称为可复用构件。研究软件复用技术在教务管理系统开发过程各个阶段的设计应用,分析并设计一个教务管理系统分层模型的软件架构,根据软件工程方法和理论,结合教务管理工作流程的特点,提出了在教务管理系统领域软件适合构件纵向复用,实现了在教务管理系统软件开发中在不同层次应用构件复用技术,有效地提高软件开发的效率、可靠性,缩小开发周期和维护成本。
软件复用;基于构件的软件开发(CBSD);可复用软件构件;教务管理;分层模型
张清春/福建第二轻工业学校讲师(福建福州 350007)。
软件复用是软件技术发展一个非常重要的领域,无论是函数过程封装代码,还是宏技术,在不同层面对软件代码复用发挥重要作用。软件复用构件技术主要包含两个方面,一是功能的抽象定义,二是构件复用代码的封装。构件本身的研发过程与大多数应用软件研发过程相似,一般步骤包含软件构件的需求分析、设计模型、编写程序代码、测试用例以及编写使用文档等过程[1],构件技术最终目的就是为了实现软件复用(Software Reuse)。软件复用是提高软件开发效率和降低维护成本的有效技术手段,构件设计应满足以复用、封装、粒度、层次[2]等几个方面要求。
软件复用根据应用领域可分为水平(横向)复用和垂直(纵向)复用[3]。横向复用是指在不具有公共性的应用领域间的软件元素,如数据结构、排序算法等元素。纵向复用是在同一类具有公共性的应用领域之间复用软件构件,纵向复用的关键在于应用领域分析,由此确定软件的可复用构件。
领域分析是通过对一类应用系统的公共性进行分析,找出应用系统的公共知识和公共需求以及公共特征,确定复用功能,建立分析模型。本文通过对教务管理系统软件进行领域分析研究得出,教务管理知识领域按学校类别可分为:中小学教务管理、中职院校教务管理、高职院校教务管理、独立院校教务管理、高校教务管理等,具有较多的公共性,学校的教务管理领域的工作流程和对象具有教育教学应用领域的共性,与其他企业或行业的管理应用领域的共性较少,因此属于软件复用的纵向复用。
分析教务管理系统工作流程和对象。第一步,首先确立对象分类,学校教务管理系统的使用者主要由系统管理员、教学管理人员、教师、学生等对象构成组成;第二步,建立教务管理数据库,存储教学教务的相关基本信息;第三步,建立功能对象,对象与学校教务以工作类别相对应,按照一定的工作流程规则设定功能模块;第四步,设置工作流程,使得教务管理信息依照学校教学管理规程设置的流程执行;第五步,数据库数据维护和报表打印。
中小学教务管理、中职院校教务管理、高职院校教务管理、独立院校教务管理、高校教务管理等教务管理系统软件框架结构基本相同,由教务管理基本信息(主要有学生基本情况、院系(年级)、教师、课程、排课、质量检查、考试安排等信息)、教务管理工作任务(主要有学生注册、安排不同专业班级的学生的课程及时间地点、安排不同班级不同课程的考试时间地点及监考人员、根据课程预订教材、学生成绩管理、教学质量的考核与评定等)、有关报表(根据教务信息和工作任务按特定的格式要求生成报表输送到打印机打印或导出为EXCEL文件,如教学运行表、课程表、考试表等)和数据库管理维护(学生信息、教师信息、系或年级信息、教材库、考务、排课、教学质量等)四个主要组成部分。通过研究,本文设计了教务管理系统软件的应用领域纵向复用框架模型如图1所示。
图1 教务管理系统纵向复用框架模型Fig 1 the educational administration management system framework model
遵循软件工程分层体系结构的设计原则[4],本文将教务管理系统体系结构自上而下并结合复用程度划分为四个层次,最顶层为表示层(UI模型层),是系统的用户界面模型,应支持不同的访问模式;第二层为业务模型层,系统的核心功能实现层,工作流程的逻辑业务在该层实现。第三层数据模型层,该层把系统的业务数据的读写从业务逻辑中分离出来,该层主要是对数据库的定义和读写操作,对用户是透明的,应有利于系统的维护和扩充;第四层系统层,应用开发平台及各种类库,包括OS、DBMS。体系结构的每一层应用构件元素应遵循分层独立设计的原则,尽量把各层之间耦合度降低,减少各层相互影响。
一个特定的教务管理系统软件首先是由各层中的功能模块组装而成。然后根据对各层具体功能逻辑分析来确定构件系统框架。因此,构件划分的粒度大小直接影响构件的复用,小粒度的构件易于设计,通用范围较广,大粒度的构件易于设计,复用范围较小,适用的范围受到限制。因此需要对系统中构件的粒度做适当的规划,本文将表示层和业务层中与管理相关的构件采用大粒度划分,因为系统界面对于各种教务管理系统而言而,相似之处较多,无需大修改即可使用;各个学校教务管理流程有细微的差别,业务逻辑的构件过细粒度会导致构件组装复杂,不同类型的学校教务管理流程不尽相同,但是同类的学校流程基本一致,如各个高校或中小学,因此也可采用大粒度划分。而位于底层的构件用小粒度划分。
图2 教务管理系统的层次模型架构Fig 2 the educational administration management system Hierarchical model architecture
软件构件是一种可组装与软件的单元,它具有规范的接口约束和显式的语境依赖,软件构件可以被独立部署并由第三方任意组装。当前软件业界最具有代表性、应用最广的三个构件技术规范(标准)分别是:微软的构件对象模型(COM)、对象管理组织(OMG)的公共对象的请求代理体系结构(CORBA)和 EJB(Enterprise Java Bean)[5]。这三种构件标准实现的构件是基于对象接口的互相依赖方式。
Microsoft ActiveX Data Objects(ADO)[6]是微软提供对各种数据格式(包括关系和非关系)的高层接口(high-level interface),由于ADO是使用微软提供的OLE技术对数据库服务器中的数据进行访问操作,ADO支持常用的数据库系统,而无需额外的不同类型的数据库驱动程序的支持,可访问任何与ODBC兼容的数据库。另外ADO在系统开销与数据访问速度方面都有很好的指标。基于以上原因,本文在构件设计中采用ADO架构建立构件与数据库之间的连接和访问。
对“教材信息维护”构件分析,该构件主要功能是对数据库中教材表的记录信息进行增删改查的操作,并实现数据的导入和导出。因此该构件接口的参数应该有三个:一个参数提供用户确定数据库的连接,一个参数用于提供确定数据库名称,一个参数用于确定教材表名称。在delphi中设计一个Activex Form,使用Delphi自带组件ADO数据库控件用于设置数据库、表的连接和数据显示,命令按钮控件编写代码实现对数据的增删改代码实现以及做一个类来实现EXCEL数据的导入导出。接口是提供构件使用者进行组装、设计中使用。因此在构件设计中自定义Connectiongstring属性、databasenamestring、Tablenamestring属性,供用户在组装构件时提供构件与管理系统外部程序的接口。
以本文设计的教材信息维护构件为例,设计数据库名接口参数属性:
这样我们就为即将生成的ActiveX form自定义控件,添加了一个字符串类型的属性databasenamestring,用于设定构件的数据库名属性设置。
在Delphi中编译生成OCX文件后,要想让其他外部程序调用,则必须OCX文件注册发布到Windows消息系统中。由于OCX是是OLE技术的控件扩展,而OCX文件本质上与EXE,DLL文件类似,都是属于PE格式的文件,当OCX文件注册到系统后,只要支持OCX文件的开发平台如Delphi、VISUAL STUDIO都可以调用该构件,从而达到复用构件的目的。
单一的构件难以在软件开发过程中实现的有效复用,必须要求构件达到一定的数量供开发人员选择。因此,采用构件库对构件进行组织和管理是一种有效的技术手段,可用于存储、检索、浏览和管理可复用构件。构件库的一般工作流程首先对构件的进行描述(构件名称、构件类型、构件编号,构件功能说明,构件接口说明等)及分类;然后经过测试(黑盒、白盒测试)后存储构件信息到构件库,提供用户对构件的有效检索(精确或模糊)界面,从构件库中搜索出适合的构件;根据用户使用后给出反馈信息和专家评估对构件库进行信息修改,以使构建信息描述更为准确。
本文通过对教务管理系统软件的领域规划和设计分析,系统按分层构架来设计,降低了软件各组成部分的耦合度,每个层可以被相对独立的开发。对于具体逻辑关系数据流程采用在教务管理系统的业务逻辑层实现较大粒度的构件设计,在数据层和系统层实现粒度较小的构件设计并实现了一个“教材信息维护”构件,对构件库进行初步的管理应用。
:
[1]林铭德,戴一景.可复用构件技术在工程造价软件开发的研究[J].计算机技术与发展,2011,21(5):111-114
[2]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(2):68-77
[3]常聚川,张敏,陈菲.基于构件的煤矿安全监察管理信息系统设计与实现[J].软件导刊,2012,11(12):87-89
[4]覃征.软件工程与管理[M].北京:清华大学出版社,2005:322-323
[5]李嘉炎.面向构件框架的研究与设计 [J].电脑知识与技术2009,5(13):3430-3431
[6]陈慧,王中庆.基于ADO的组态软件与关系数据库通信研究[J].工业控制计算机,2012,25(4):74-75
TP31
A
1671-6531(2013)16-0152-02
责任编辑:姚 旺