林国富
(广州大学松田学院 广东 广州 511370)
在我们国家,政府采购是政府财政支出的重要部分。随着国家GDP 的日益增长,国家财政收入和支出也日益增长,政府采购已经成为社会主义经济的重要经济行为。为了提高政府采购效率和规范采购行为,适应市场经济的发展,杜绝各种可能滋生腐败的行为。某市信息化建设中心面向社会公开招标开发一套政府采购系统。我司中标了该项目,我负责架构设计和项目技术相关事务,全程参与了整个项目的开发[1]。
根据客户业务需求,政府采购系统由政府采购监督管理平台、政府采购项目管理平台、基础库建设、数据服务四个子系统组成。政府采购监督管理平台包括项目监管、代理机构监管、采购人监管、专家监管、统计报表等。政府采购项目管理平台包括采购预算管理、采购计划管理、采购项目管理、招投标管理、专家抽取、采购门户等。专家库建设包括专家库、采购人、代理机构库、供应商库等。数据服务包括对下级单位提供数据采集服务,对上级单位提供数据上报服务。
除了业务功能需求,客户还提出系统使用简单(操作性需求)、易于扩展和维护(可维护性)、运行稳定(可用性)等非功能性需求。
为了实现系统功能,按时按质完成系统开发。经过分析,我们在系统中使用了复合架构的设计方案,同时使用了B/S 架构、面向构件的架构、面向服务的架构等架构设计。
B/S 架构即浏览器(browser)/服务器(server)架构,是相对于C/S(客户端/服务器)架构来说的。也可以把B/S 架构看成是C/S 架构的一种特殊形式。在一般的C/S 架构中,用户需要在本地终端(如电脑、手机等)安装对应的客户端程序才能使用系统。对用户来说不太方便。B/S 架构只需要客户终端有浏览器就可以直接访问系统。客户电脑、手机等终端一般都安装有浏览器,所以使用起来很方便。因此,系统采用B/S 架构设计。
面向构件的软件架构是基于构件来构造应用系统。它主要包含构件的标识、检索与提取,修改或开发新构件,更新构件的相互作用,组装构件,系统测试等工作。
目前软件行业间的竞争很激烈,很多公司都采用996工作时间,对于开发公司来说,开发的很多产品存在重复的功能模块,直接导致了项目周期以及成本不必要的增加。因此,利用已有的软件项目构造新的系统,可以提高开发效率,降低客户的成本,提高公司利润。另一方面,面向构件的架构可以通过加载不同的构件来增加或删减系统的功能,如果要修改系统某个功能,只需要修改或替换对应的构件。系统具备很好的可维护性,更好地满足客户需求。因此,政府采购系统使用了面向构件的架构设计。
拥有构件库是基于构件开发软件的前提。因此,我们在已经成功实施的项目中,提取一些共有的模块作为单独的组件,封装其内部操作,对外提供一致的调用接口。例如,一些常用的模块例如登录模块、权限管理模块,只需要很少的改动就可以复用到新的系统中。通过提取整理,形成了公司的企业构件库,为基于构件的架构开发准备提供了基础。
选用合适的构件是基于构件开发的重要步骤。构件的选择有多种途径:一是从构件库中提取符合要求的构件,二是从遗留系统中提取合适的构件,三是从市场上购买现成的或使用开源的构件,四是开发新的构件。在本次项目中,我们选择的构件包括了三种来源。下面介绍政府采购系统采用的主要构件。
(1)从以前成功的项目案例中,我们提取出了很多构件,形成了公司的企业构件库。我从中选取了合适的作为新系统的构件,有登录注册构件、权限管理构件、菜单导航构件、流程审批构件、组织机构管理构件等。
(2)系统使用NHibernate 开源的第三方构件作为对象/关系数据库映射构件。
(3)政府采购系统根据需求还开发了智能搜索构件。新系统需要提升用户体验,采用即时响应的搜索技术,在用户输入搜素文字时,提示用户备选文字选择,并快速响应用户的搜素结果。以前的系统没有这个功能,考虑到以后这个功能的需求是通用的,所以开发了这个新构件[2-3]。
政府采购系统的数据服务子系统的需求包括对下级单位提供数据采集服务,对上级单位提供数据上报服务。经过和客户的深入沟通,客户原有系统由其他公司研发和维护,基于安全考虑,不提供其系统所使用的技术、文档、数据库等任何资料,如旧系统有变更需要则由该开发公司完成。因此,我们对客户的其他系统情况一无所知,不能根据特定系统使用定制方法进行对接。经过分析,我们建议使用面向服务架构设计数据服务功能,同时需要客户其他系统通过访问政府采购系统的数据服务,配合完成上传和采集数据,客户采用了我们的建议。
面向服务架构(SOA)是一种应用框架,将企业业务应用划分为单独的业务功能服务和流程,通过采用良好定义的接口和标准协议将这些服务关联起来。基于SOA系统架构的应用系统之间的交互,不受操作系统、程序设计语言及运行环境的限制,从而提高业务流程的灵活性,降低企业开发成本。Web Service 是目前实现SOA主要的技术手段。SOA 的设计原则是无状态,单一实例,明确定义接口,自包含和模块化,粗粒度,可重用,互操作性。
在政府采购系统,用户有两个数据需求需要和已有系统对接:(1)新系统需要能够从客户下级单位旧系统里对接数据到新系统,减少人工录入数据。例如,下级单位把采购预算的数据从旧系统自动传输到新系统;(2)新系统需要能够把数据自动上报到上级单位的其他系统里。例如,把中标项目的数据发送到上级平台进行统一监管和统计。我们使用Web Service 实现了数据采集和数据上报两个服务。同时客户也需要对原有系统进行增量开发,增加了使用我方服务上传和接收数据的功能开发。虽然涉及到了客户原有系统的变更,但是面向架构服务的开发是自包含和模块化、粗粒度的,客户原有系统只是增添了组件,对原有业务功能没有影响,变更的成本比较低,客户可以接受。
政府采购系统采用基于B/S 架构开发,其中政府采购监督管理平台、政府采购项目管理平台、基础库建设采用了面向构件的架构设计,数据服务采用了面向服务的架构。项目自启动后,历时10 个月成功上线,系统上线后运行稳定,获得了客户的好评。该项目能够顺利完成,一方面得益于公司的大力支持、团队的共同努力,另一方面也得益于应用了复合架构的设计。