摘要:软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素;良好的软件架构能够服务于整个开发过程,有效地降低项目风险,确保项目能够朝着健康的方向发展。
本文结合本人的实际工作经历,简要地讨论了开发系统时所选用的软件架构及其应用。
关键词:软件架构 统计报表 优化设计
温州市统计局原来是依赖手工将报表数据层层上报,随着我国国民经济的快速发展和计算机技术的提高,传统的手工报表方式和管理方法已不能满足快速、高效地掌握资讯的要求。对一套方便、可靠、安全的数据调查与报表管理系统的需求迫在眉睫。温州市统计报表网上直报系统总体架构规划由网络系统、应用系统和运行维护系统三部分组成。
网络系统主要由硬件网络平台组成,是应用系统和运行维护系统运行的基础平台,其主要作用是提供系统运行的物理环境,包括运行网络、数据安全、通讯保障等环境。
应用系统主要由在线报表管理系统软件组成,其主要作用是提供数据采集、处理和利用的应用服务,包括报表数据的录入上报、审核、接收、查询、统计、汇总等功能。
运行维护系统主要提供报表管理系统基础数据的维护和系统运行的日常维护功能。
功能性需求包括:用户角色权限管理,报表设计维护管理,报表录入及上报管理,报表查询汇总管理,数据导入导出管理。按用户划分,分为系统管理员、统计部门管理员和企业用户三类。
非功能性需求主要考虑了以下因素。
(1)可扩充性、可维护性。可扩充性包括了两个方面:一方面指软件模块的可扩充,能够很方便地扩充新的软件功能,比如企业台帐系统,如果有必要,要求能够很方便地作出扩展;另一方面指系统本身的可扩充性,能够支持企业用户大规模、高并发的访问,支持集群等。WWW.133229.CoM可维护性则要求能够根据统计部门需求变化进行快速地升级和改进。
(2)访问方式。通过网络远程访问,访问时能够跨广域网,因为直报系统报表填报的对象是广大的企业用户,必须支持internet访问。
(3)组件复用。主要指的是服务器端的组件复用。服务器端组件能够支持远程客户端访问。为此,需要采用中间件技术来达到组件复用的目标。
(4)安全性。支持良好的用户、权限管理,以及支持常见认证体系(如pki)、ssl加密传输等。
(5)用户界面及数据接口。基于浏览器的瘦客户端,能够支持不同方式采集的不同格式的数据,支持不同风格的用户界面。
基于上述考虑,选择了多层组合架构,层与层之间松散耦合,各层分工明确,从上到下各层依次为表现层、业务逻辑层、持久化层和数据库层。采用spring来搭建整个框架的基础,使用了持久化工具hibernate来完成持久化操作,表现层通过struts框架来实现的。
spring的基础是一个轻量级的容器,即实现了依赖注入(di)和控制反转模式(ioc),在这个轻量级的容器中已经架设了与典型应用相关的大部分基础框架结构,我们的统计报表网上直报系统就是在这个基础上,根据系统的需要组装相关的应用到此框架上,从而完成应用程序的开发,实现一站式框架整合方案。spring的核心是bean工厂,在bean工厂的基础上,spring实现了面向方面编程(aop,aspect-oriented programming),提供了非管理环境下申明事务、安全等服务;从而保障了框架整体协调工作和框架的安全性。
在设计的架构中由spring构建的业务层实现软件系统需要完成的所有业务功能。如:管理事务;业务服务管理;处理应用程序的业务逻辑和业务验证;预留和其他层交互的接口;管理业务层对象之间的依赖;增加在表示层和持久层之间的灵活性,使它们互不直接通讯;从表示层中得到上下文并将其提供给业务层,使业务层获得业务服务;管理从业务逻辑到持久层的实现等等。这些是系统的核心功能。
spring通过服务装载器来与struts协同工作,由struts构建的表示层在其mvc的体系结构下主要完成以下功能:为用户管理请求和响应;提供一个控制器代理调用业务逻辑和其他层处理;为显示提供一个模型;执行用户接口验证等等。系统的页面展示功能主要由这一层来实现。
spring通过数据访问对象(dao,data access object)来与hibernate协同工作,hibernate框架提供了“对象-关系持久化”机制和查询服务。hibernate提供了建立数据源或数据连接池的功能,数据查询语言hql和其他hibernate服务。hibernate“对象-关系映射”框架提供对大多数主流sql数据库的支持,它们支持“父/子”关系、事务处理、继承和多态。
在表示层、业务层和持久层之间,使用领域模型层来传递各层之间协作需要的数据对象。领域对象层由那些代表现实世界中的业务对象的对象组成,如:专业(specialty)、报表(report)等。这个层让我们从繁琐的建立和维护匹配领域对象的数据传输对象工作中解脱出来。例如,hibernate允许把报表制度的信息从数据库读进报表(report)的对象,这样可以在连接断开的情况下把制度显示到界面,供企业完成填报。在企业报表数据填报发送后,报表对象在连接恢复后被更新送回到持久层,并在数据库里更新。这个模型使java开发者以一种面向对象的风格和对象打交道,而不必考虑复杂的对象模型及关系模型之间的转换问题。
通过struts+spring+hibemat这个成熟的开源框架来实现统计报表网上直报系统,有效地缩短了开发周期,简化了程序代码,提高了开发质量,使系统具有良好的交互性、较好的可扩展性和良好的可维护性。
在系统平台配置上,服务器选用hp ml350,操作系统选用red hat linux as 4.0,数据库选用oarcle10g,web应用中间件选用tomcats.5.5.2。其中web和应用服务器均放在防火墙内部,其中web应用服务器通过防火墙nat技术与外部用户进行交互,而数据库服务器则与外部隔离;基层企业用户通过互联网访问系统。
目前,温州市的统计报表网上直报系统已经成功部署运行了。它的应用,减少了专业人员投入专业报表数据收集和整理的大量繁琐、复杂的手工任务,极大地提高统计业务工作的效率,并实现统计资料的科学运用和管理。它改变了以往统计报表都是以物理表格形式的陈规。系统以定制的方式生成一张张电子表格,上报的表格数据经公式审核通过后,自动进入后台数据库存管,解决了以前统计数据信息集成能力不够强、分类管理方法不够科学的难题。获取的统计数据资源可以利用相关的挖掘和分析工具进行再次开发,形成更有价值的信息,为政府决策和公众咨询提供了更可靠的理论依据。这种面向广大基层单位和公众的数据采集平台,还为统计分析方法与制度的改革提供了新的思路。从发展的眼光看,本系统还有待进一步提高和完善,比如拓展企业台帐系统,对统计数据进行主题性的开发利用等等。