骆金松
管理信息系统总结起来一般有三种典型的架构模式,现取主要的几个非功能性指标比较如下:
图:三种典型的架构模式
一般产品模式比较适合有一大批功能需求极为相似的客户群,软件开发商所追求的是软件的边际效益,例如杀毒软件、办公软件、绘图软件等一般都具有很强的通用性,适合采用产品模式,在企业战略方面一般注重占有率,打造品牌,通过大量销售来降低单位成本。大型企事业单位的管理信息系统一般具有较多的个性需求,显然大多数情况下不适合。
项目模式是另外一个极端,完全按企业的需求量体裁衣,但是也存在许多缺点:一般受限于开发团队的能力、投入财力等原因不按高扩展性和灵活性设计,影响系统的维护;一般实施周期很长,超过6个月很常见,有的甚至持续数年;需要保持一个较大的团队持续维护,总体投入较大;统计数据表明定制开发项目有超过50%的失败率,风险高。当然有时只能选择此模式,比如极个性的需求,找不到类似产品或平台。
一个中间的模式是“平台”+“服务”模式,这种模式能够兼顾前两种模式的优势,公共平台以及大多数标准模块选配就可以了,在其之上通过二次开发、建模等手段进行个性化定制扩展,满足企业个性需求,是大多数大型企事业单位最合理的选择。大型企事业单位选型时,选择一个好的架构可能比功能齐全更加重要,因为这种模式下,个性需求可以通过“服务”加以满足,在满足个性化需求、降低总体拥有成本(非一次性投资)、提升未来的扩展和调整、与现有系统集成等方面可以良好平衡。 这里所说的服务是指专业的服务,与通常所说的安装、配置、培训和少量的二次开发是不样的,需要建立按行业分工的专业服务体系。
现在许多企事业管理信息系统提供商都声称其软件是平台化架构的(鱼目混珠),可以满足大型集团性企业的需求,实际上这些产品的平台化水平参差不齐(大多数产品很差)。许多集团大型企事业单位在选型方面经验不足,重视功能性需求而忽视非功能性需求(我感觉十分明显),这是极端错误的。越是大型的企事业单位,在管理信息类系统选型时应该加大非功能性需求在整个选型评价体系中的比重,对关键指标一票否决。
国内许多大型企业在信息化方面的投入惊人。有的企业就CAPP方面的项目就有17个,涉及到四次重新选型。有的企业规模不算大,就PDM产品就有3套,而且互相不集成,大多数都用的不好。其中许多是非功能原因导致的,我见过太多因为非功能性的原因导致系统最终失败的案例,其原因举例如下:
(1) 采用了传统的C/S架构,不支持Internet,当企业规模扩展之后,只有更换系统,重复投资倒在其次,数据(知识)迁移和继承问题多多。如果每个地点分别实施几套C/S系统,则面临集成问题。
(2) 由于采用传统C/S结构,如未采用可降低数据库负载的集群和缓存的中间层服务器,企业数据量和用户数上升以后数据库服务器不堪重负,系统性能日益下降却无能为力。
(3) 系统的扩展性和灵活性不够,比如有局限性的工作流建模、非可插拔模块架构等,难以满足企业个性化需求扩展以及业务调整以后的随需而变,无法支撑IT战略,而今影响到企业战略的调整。有些企业是两层皮,企业完全没有按IT系统运行。
(4) 一些企业完全定制开发自己的信息系统,有全套的源代码,自认为系统就容易扩展和调整,其实这样的系统一般都未按扩展性和灵活性来设计架构,一旦核心成员离职、文档不齐全造成的后果更严重。
一般而言,大型企事业单位对管理信息系统选型时应考虑如下非功能性需求:
(1) 海量数据高并发:一般集团性、大型企事业单位的用户为数千和数万甚至更多,而涉及的数据量也可能数TB甚至数十TB,应明确提出应用条件下的性能要求。
(2) 基于Internet分布式应用:一般大型企事业存在多个分支结构,跨越城市、省甚至国家,一般需要基于Internet,传统的C/S模式无法满足需求,必须处理好集中管理与分布管理的关系。
(3) 异构系统的集成:一般大型企业存在较多的各类信息管理系统,而且可能是异构的,不同的操作系统,不同的架构技术等,所以如何实现与诸多信息系统的集成是一个挑战。
(4) 业务流程自定义:为了开展新业务或对现有业务进行优化,系统应该提供强大的业务流程自定义功能,必须与表单、权限、任务管理、email等进行紧密的集成。
(5) 全面的个性化定制能力:除了考虑业务流程自定义外,还应该考虑数据结构自定义、功能模块自定义、表单自定义、报表自定义、主菜单和主页自定义、权限自定义等。
(6) 架构的随需而变:对于大型集团性企业而言, IT必须快速适应IT战略,IT战略必须快速适应企业战略。除了全面的个性化定制之外,系统的架构设计必须具备随需而变的能力,否则IT会囚禁企业。
(7) 安全性:略
我将大型企事业单位的非功能性需求简单图示化总结为如下几点:
图:大型企事业单位的主要非功能性需求
要给出一个最合理的大型企事业信息管理系统的软件参考架构技术是不可能的,事实上不存在所谓的最优参考架构,基于成本、进度、功能需求、非功能需求、技术条件、人力条件、外部条件等综合最优的架构是最好的架构。基于我们的经验,虽然不存在最优参考架构,但是存在一些最佳实践,具有参考价值,欢迎讨论:
指标 |
建议 |
部署 |
建议采用B/S(浏览器/服务器)模式,或Smart Client(智能客户端)模式。比如XBAP就是Smart Client的一种,对于企业应用可以相对B/S模式提升交互式体验。Silverlight也是一种智能客户端技术。 |
高并发、海量数据、性能 |
建议三层及以上架构:中间层采用集群、负载均衡、缓存等技术。表示层采用延迟加载、多线程、异步、分页等性能优化技术。数据库采用SQL性能优化、索引、分区表、物化视图、磁盘阵列、集群、数据仓库等技术。低带宽还可以采用压缩传输。 |
高可用性 |
看是否有高可用性要求。比如建立高可用性集群,在整个服务不中断的情况下对服务器软硬件进行维护,可以将集群中某台服务器暂停使用,进行临时性维护,比如可动态向高可用性集群中添加和移除硬件等。 |
安全性 |
加密传输、加密存储、电子签名、身份认证、访问控制、备份恢复、分级管理、审计管理等。
安全性对于大型集团型企业的重要性不言而喻。 |
分布式、集成 |
系统自身基于SOA(面向服务的体系结构),SOA提供分布式通信编程框架,这对于集团性和大中型企业,复杂的应用环境和集成的需要是非常重要的。
另外提供良好的集中式管理与分布式管理的支持。一般小型系统采用集中式管理,对大型企业而言集中管理是无法实现的。而缺少集中管理则会加大管理的难度,提高管理成本。 |
扩展性、灵活性 |
基于平台和插件体系构建。
平台上提供较多的标准可选模块(可按领域或行业细分),而不是完全定制。
采用主流的二次开发环境和语言进行开发。
提供工作流建模能力,最好是成熟商用工作流引擎。
最好提供数据模型的扩展能力(往往被忽视),最好是面向对象的。
提供各种表单的定制能力。
状态模型(或生命周期模型)与权限、流程、数据等紧密相关,最好也可以定制。
主菜单和主页(类似Web part)、菜单等UI界面可以定制。
最好权限模块也具有扩展能力(不同数据类型不同)。
集成开放的商用报表引擎(比如水晶报表)。 |