代码自动化技术的应用研究

2014-11-04 15:26程霄邱兴兴
电脑知识与技术 2014年28期
关键词:迭代农产品质量安全

程霄 邱兴兴

摘要:在中小管理信息系统开发中用户对需求的描述存在动态性的问题。针对这种情况,提出一种以数据库为基础的软件自动化开发框架。框架包括软件三层架构的设计、缓存数据库、代码生成引擎、通用代码模版的设计和数据库概念模型设计的约束条件,实现基于数据库物理模型的软件源代码的自动生成。通过在农产品质量安全监测系统实际应用,分析结果表明,框架在实际项目中的应用表明能有效适应用户需求变化,降低开发成本,提高软件质量。

关键词: 代码自动化; 通用模版; 三层架构; 迭代; 农产品质量安全

中图分类号:TP311.51 文献标识码:A 文章编号:1009-3044(2014)28-6635-03

随着2009年我国《食品安全法》的颁布,关系到人民健康和国计民生重大问题的农产品产地安全管理成为了人们关注的焦点。然而,农产品生产企业、流通企业、加工企业质量监管方面的不足,加之我国多数农产品的生产空间分散、规模化经营程度低、规范化生产条件差以及流通管理混乱等,致使农产品质量安全问题经常发生。因此,科学地监管农产品生产、流通、加工过程,对防止突发性或群发性食品安全事故发生具有重要的现实意义。建设九江市农产品质量安全监控信息系统,以充分发挥在生产、加工与流通领域对农产品质量安全实行追踪监测、质量溯源、信息服务和决策支持的作用,已成为农产品质量安全管理工作的当务之急。

在管理信息系统开发过程中,用户对系统功能需求是一个从模糊到清晰的认识过程,用户的需求发生变化时也往往会带来数据库设计的变化,开发人员需要对代码进行大量的修改,代码自动生成技术的运用[1-3]可以适应这种情况,缩短MIS的开发周期。

本文运用一种数据模型驱动的面向MIS软件自动化开发框架[4],利用已有农产品生产质量安全追溯体系的研究成果,基于信息技术、数据库技术、网络技术等进行农产品质量安全追溯系统的构建与开发,对代码自动化技术在农产品质量安全监测系统中的应用给出设计方法。

1 代码自动化开发框架

以.NET开发平台为基础,运用一个面向MIS的以数据库为基础基于代码生成引擎的软件自动化开发框架,框架实现在三层架构下的Web自动化开发,从而在实际应用中提高开发效率,降低开发成本,灵活应对用户需求的不断变化。本框架包含数据库概念模型、通用代码模版、代码生成引擎和自动生成的三层架构代码四个部分,如图1所示。

在MIS开发过程中应用上述框架有三个过程:首先,依据需求分析设计给出数据库概念模型并由此产生具体的数据库物理模型;其次,通过代码生成引擎(CodeSmith)、通用代码模版和数据库物理模型自动生成基于三层架构的源代码;最后,依据功能需求结合用户界面资源对系统界面功能进行开发。面向MIS软件自动化开发框架的运用其主要工作包括数据库概念模型的设计,界面设计实现,以及针对新增功能的三层架构代码编写工作。

1.1 软件层次构架设计

在軟件设计中通常采用分层架构来实现“高内聚、低耦合”[5]的设计目标。面向MIS软件自动化开发框架中的三层架构就是将整个系统实现划分为表示层、业务逻辑层、数据访问层,并对部分层次进一步划分。

实体层(Model):WebUI、BLL和DAL三层通过Model进行数据的传递。

数据访问层(Data Access Layer,DAL):本层实现对数据库的访问,通过配置实现支持多种不同类型的数据库,为BLL提供与数据库无关的通用数据格式的数据。为支持多种数据库DAL采用了工厂模式进行设计,细分为数据访问层的抽象工厂层(DALFactory)、数据访问接口层(IDAL)、数据访问实现层(MySQLDAL/SQLServerDAL/OracleServerDAL)、数据库访问的方法库(DBUtility)几个部分,在该层中采用内存数据库Memcached作为缓存数据库。

业务逻辑层(Business Logic Layer,BLL):本层实现业务规则的制定、业务流程的实现,在WebUI与DAL之间的数据交换中承上启下的作用。

表示层(Web User Interface,WebUI):本层实现显示数据和接收用户输入的数据,是人机交互界面,实现过程中包括一些用户界面资源,如样式、脚本等。WebUI与BLL之间相互传递数据。

1.2 数据库概念模型建模

在面向MIS软件自动化开发框架中通过数据库概念模型产生数据库物理模型[6],而物理模型是代码生成引擎自动生成代码的基础之一,为避免与编程语言的语法规则和关键词冲突,同时提高生成代码的可读性,需要对概念模型的定义过程进行规范。

1)概念模型中的数据表名和字段名首字小写,不使用下划线,采用驼峰命名,且不能与编程语言的关键词相同。由于物理模型中的表名都将对应各个层中的类名,若出现关键词作为将导致程序出错。

2)概念模型中的数据表名和字段名不能出现空格和中文字。虽然数据库支持中文和空格作为表名和字段名,但由于程序语言中的变量名不允许出现空格,且代码生成引擎不支持中文,这将导致生成的程序错误。

3)概念模型中外键定义不能为表名。外键名若为表名则会出现类名与成员变量名相同的情况,这将导致生成的程序错误。

1.3 缓存数据库

Memcached是一个免费开源、高性能、分布式内存缓存系统,用于大型Web站点的性能优化提升,减少数据库及文件系统的访问压力;是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。Memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

DAL首次从数据库中获取到数据后进行缓存,在下次读取的时即可从缓存数据库中获取数据。应该注意的是Memcached数据置换算法采用的最近最少使用算法,需要在实际应用中依据运行情况调整缓存策略。

1.4基于CodeSmith的通用代码模版

CodeSmith[7]是一个基于模版的代码生成工具,用户通过自定义模版[12]可以生成包括简单的强类型集合和完整应用程序在内的任何东西,并不限定特定的应用程序设计或体系结构。CodeSmith的模板是以“.cst”为后缀名的代码文件,其代码风格非常类似于ASP.NET,模板中除了大量固定的代码以外,还有遍布于各处的元数据,固定代码就是会被原封不动地输出的代码,而元数据则可以被看作是模板中的变量。针对数据模型驱动风格的代码生成,CodeSmith提供了一个封装了所有的数据库对象程序集(SchemaExplorer),该程序集中提供了数据库(DatabaseSchema)、数据表(TableSchema)、数据列(ColumnSchema)的不同级别访问,并支持多种数据源的连接。

数据库的数据基本操作可分为增加(Insert)、修改(Update)、删除(Delete)、查询(Select)四种,通用代码模版围绕这四个基本操作进行设计,面向MIS软件自动化开发框架设计了产生Model、DAL、BLL、WebUI源代码的通用代码模版。运用这些模版针对数据库物理模型中的每个数据表自动产生对应的源代码,为了实现与具体的数据库访问分离,将这些操作行为抽象为一个单独的接口层IDAL,保证了系统的可扩展性和数据库的可移植性。在数据库访问层实现中提供MySQLDAL、SQLServerDAL、OracleDAL三個通用数据访问模版,还可针对不同数据库增加新模版。

2 系统应用

农产平质量安全监测系统是由九江市农产品质量安全监测中心委托,该中心旨在建立用于全市范围内农产品质量安全数据采集统计的综合性服务平台,为加大监测力度以及提高监测数据的时效性需要建立一套有效的数据传递、分析、统计的系统。

基于数据驱动风格的代码自动化开发框架核心工作就是对系统进行分析设计,获得完整的数据库概念模型,进而依据数据库概念模型通过开发框架自动生成相关的代码。因开发框架可以快速的产生可用的原型系统,因此在项目开发的过程中采用迭代的方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作,再通过用户的反馈来细化需求,并开始新一轮的迭代。

2.1 系统设计与实现

目前在全市范围内农产平质量安全检测终端类型多种多样,数据格式不统一,系统将提供统一的数据采集方式及格式规范,通过各地区数据检测点上报数据到系统,系统对数据进行自动分析统计,并建立所需的统计报表以及安全警报信息等。系统的使用者可以分为五类角色,系统角色图如图2所示。

在需求分析过程中,我们发现通过检测仪器获得的数据具有多样性、复杂性,对相关数据进行分析筛选后把检测数据划分为大类、小类,建立检测数据标准格式库,由专业人员对检索数据格式库进行管理。

面向MIS软件自动化开发框架是通过数据概念模型开始工作的,首先是构建当前系统的数据库物理模型,通过代码自动化技术给使用者提供了一个可以用原型系统,并对原型系统进行使用,并提出改进意见;依据用户反馈意见,对用户需求进一步分析,产生新的数据概念模型,通过框架自动生成改进的版本。通过对需求的迭代获得用户较为满意的版本作为本系统的第一个正式版本。系统管理功能界面如图3所示。

2.2 应用分析

在项目开始阶段,与使用方的沟通得到初步需求,依据需求分析结果构建数据库概念模型,通过开发框架快速生产原型系统,并交由使用方测试使用进一步明确需求,在重复多次后得到一个较为满意的需求分析报告,以此为里程碑进入稳定的系统开发阶段。使用代码统计工具对系统交付使用后的代码行数以及开发框架自动生成的代码行数进行统计,统计结果如表1所示。

Model代码100%自动生成,DAL代码自动生成率为90.1%,BLL代码自动生成率74.7%,WebUI代码自动生成率62.3%,平均代码自动生成率79.4%。通过上述数据可以看出,采用本文提出的软件开发自动化技术,当用户需求发生变化时,能够及时的响应,减轻了开发者的工作量,提高了开发效率,使开发者能够更专注去解决需求中的关键问题。

3 结束语

本文利用一种面向MIS的软件开发自动化开发技术开发框架,给出一种适应中小型MIS的开发方法,能应对用户需求的动态性。在九江市农产品质量安全监测网设计与实现中,依据使用开发框架的流程,能快速产生原型系统让使用者进行试用并反馈,并最终得的一个用户满意的系统。从实际应用的分析结果可以看出,开发者工作量降低,可以更多的专注于解决问题,框架具有较强的实用性,对于农产品质量安全监测系统的开发具有良好的参考价值。

参考文献:

[1] 王晓宇,钱红兵.基于UML类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件,2013,30 (1): 190-195.

[2] 周兵,许俊,吴亚平.中小 MIS 快速原型构建与自动代码生成[J].计算机技术与发展,2012,22 (5):28-31.

[3] 陈清,吴海涛,王璐.基于代码自动生成技术的管理信息系统的实现[J].计算机与数字工程,2013,41(2): 268-270.

[4] Cheng X,Qiu X X.Design and Implementation of a Software Automation Development Framework for Management Information System[C]//Advanced Materials Research. 2014,989: 4488-4492.

[5] 张志杰.基于分层结构的管理信息系统架构设计[J].计算机技术与发展,2010,20 (10):146-149.

[6] 周育红,闫锋欣.数字资源跨平台整合系统的设计与实现[J].计算机技术与发展,2010,20 (1):243-246.

[7] 朱晓辉,王杰华,石振国.NET下基于PowerDesigner 和CodeSmith的软件自动化开发技术[J].计算机科学, 2010,37(7):156-159.

猜你喜欢
迭代农产品质量安全
基于省级精品教材多元自主学习平台的螺旋上升学习研究
基于最小二乘的视野区域运动方向分析
实施农业标准化生产 提升农产品质量安全水平
JavaScript计算性能对比研究
农产品质量安全检测中F732—VJ型冷原子吸收测汞仪操作技术
中间件“迭代”
面向社会生活的非农业院校《农产品质量安全》课程探索与实践
DNS解析的探究
涨价与医保政策需同步“迭代”
构建农业标准化体系 保障农产品质量安全