<p> 2006年5月,我所在的公司承担了某省社会保险管理信息系统的开发工作,我在该项目中担任系统架构设计师,主要负责设计应用系统架构和网络安全体系架构。该系统以IC卡为信息载体,完成劳动和社会保险的主要业务管理,即“五保合一”管理,包括养老保险、医疗保险、劳动就业和失业保险、工伤保险、女工生育保险。整个业务流程十分复杂,牵涉面相当广泛。<br> 本文以社会保险管理信息系统为例,讨论了软件架构的选择和应用。整个系统采用具有四层的层次式软件架构的设计思想,在业务管理层的设计中,采用了互连系统构成的系统的架构,把整个业务管理系统划分为8个从属系统。各从属系统的架构可以相同,也可以不同。整个系统的开发工作历时19个月,目前,该系统已经稳定运行1年多的时间。实践证明,这种架构设计有效地降低了维护成本,提高了系统的开放性、可扩充性、可重用性和可移植性。<br> 正文:<br> 2006年5月,我所在的公司承担了某省社会保险管理信息系统(以下简称为“SIMIS系统”)的开发工作,我参加了该项目前期的一些工作,担任系统架构设计师,主要负责设计应用系统架构和网络安全体系架构。<br> 1.项目概述<br> SIMIS服从于国家劳动和社会保障部关于保险管理信息系统的总体规划,系统建设坚持一体化的设计思想,总体目标是建立比较完备、高效、与劳动和社会保障事业发展相适应、与国家经济信息系统相衔接的劳动和社会保险管理信息系统,实现劳动和社会保险管理体系的技术现代化、管理科学化。<br> SIMIS系统以IC卡为信息载体,完成劳动和社会保险的主要业务管理,即“五保合一,,管理,包括养老保险、医疗保险、劳动就业和失业保险、工伤保险、女工生育保险。整个业务流程十分复杂,牵涉面相当广泛。SIMIS系统由省、地市、县三级组成,网络纵向覆盖全省各级劳动和社会保障机构,横向与财税、银行、卫生、邮政、企事业单位联网,是一个典型的广域网络系统;系统设计按照社会保险与个人账户相结合的模式,以养老保险为重点,并以此为全省劳动和社会保险管理信息网络主干网络,带动劳动力市场等其他社会保险业务管理信息系统的建设。<br> 2.架构设计<br> 虽然国家劳动和社会保障部对整个业务有一套规定的指导性流程,但是’在调研的过程中,我们发现各市、县都或多或少地存在使用“土政策”的情况,正是这种“土政策,,致使软件在设计阶段具有很多的不确定性需求。另外,我们还考虑到将来用户需求可能会发生变化,为了尽量降低维护成本,提高可重用性,我们引入了层次式软件架构的设计思想。<br> SIMIS系统采用层次式软件架构的基本出发点在于,这种软件结构不但能够满足不同规模的用户(县级,地、市级)的需求,可以方便地在最小的完成基本功能的基本系统和最大的完成所有复杂功能的扩充系统之间进行选择安装,而且通过逐层功能扩展的方法来进行软件实现,有利于程序设计和构件开发。同时,一定级别的抽象层可以作为一种知识积累,对于同类软件的快速开发有着很大的作用。<br> 根据调研的结果,我们把SIMIS系统设计成具有通用核心层、基本应用层、业务管理层和扩展应用层4个层次的层次式软件体系构,如图21-5所示。<img src="http://que-oss.fenziquan.com/web/akimg/asource/2016091908380294809.gif"><br> 通用核心层完成的是软件的一些通用的公共操作,这些操作能够尽量做到不与具体的数据库和表结构相关。基本应用层是SIMIS系统数据采集的主要来源;业务管理层是对基本应用层的进一步扩展,主要完成SIMIS系统的业务管理,管理内容涉及劳动者个人、企业和其他劳动组织的微观信息,能够实现数据的初步汇总。业务管理层与其内包含的两层一起构成了SIMIS的典型应用系统。扩展应用层是在典型应用系统的基础上扩充了一些更为复杂的功能,如对政策决策提供依据和支持,对政策执行状况进行监测、社会保险信息发布及个人账户电话语音查询系统等。<br> SIMIS的设计和开发重点放在业务管理层上,在这一层的设计中,我们采用了互连系统构成的系统的架构,把整个业务管理系统划分为失业保险管理、养老保险管理、医疗保险管理、女工生育保险管理、工伤保险管理、工资收入管理、劳动关系管理、职业技能开发管理等八个从属系统,所有的从属系统共用同一个数据库管理系统,每个从属系统作为单独的系统,由不同的开发团队进行独立开发。<br> 从属系统可以自成一个软件系统,脱离上级系统而运行,有其自己的软件生命周期,在生命周期内的所有活动中都可以单独管理,可以使用不同的开发流程来开发各个从属系统。<br> 各从属系统的架构可以相同,也可以不同。例如,在开发“养老保险管理系统”这个从属系统时,选择了正交软件架构。我们将整个系统设计为三级正交结构,第一级划分为八个线索,每个一级线索又可划分为若干个二级线索,每个二级线索又可划分为若干个三级线索。一条完整线索如图21-6所示。<img src="http://que-oss.fenziquan.com/web/akimg/asource/2016091908383163099.gif"><br> 每一条线索完成整个系统中相对独立的一部分功能,所有线索是相互独立的,即不同线索中的构件之间没有相互调用。由于采用了正交结构的思想,在系统开发时,我们分成若干个小组并行开发,视开发难度情况,每个小组负责一条或数条线索,由一个小组来设计通用共享的数据存取构件。由于各条线索之间没有相互调用,所以各小组不会相互牵制,大大提高了编程的效率,缩短了开发周期,降低了工作量。<br> 虽然各个从属系统相对独立,可以进行并行开发,但我们尽量注意了软件重用,以节约开发成本,加快开发进度。例如,“基金收缴”是失业保险、养老保险、医疗保险、女工生育保险和工伤保险五个从属系统中都要进行的操作,且其操作流程大致一样,只是基金收缴的参数有所区别。我们就只安排养老保险从属系统的开发团队开发一个通用构件,提供参数接口供其他从属系统使用。<br> 3.总结<br> 在SIMIS系统的架构设计中,我们引入了层次式软件架构的设计思想。根据调研的结果,把SIMIS系统设计成具有通用核心层、基本应用层、业务管理层和扩展应用层四个层次。SIMIS的设计和开发重点放在业务管理层上,在这一层的设计中,采用了互连系统构成的系统的架构,把整个业务管理系统划分为八个从属系统。每个从属系统作为<br> 单独的系统,由不同的开发团队进行独立开发。各从属系统的架构可以相同,也可以不同。<br> 以上设计有效地降低了维护成本,提高了系统的开放性、可扩充性、可重用性和可移植性。但SIMIS的设计和开发也存在一些不足。例如,由于采用了互连系统构成的系统的软件架构,使资源管理开销增大,各从属系统的开发进度无法同步等。又如,由于采用了B/S和C/S结构混合的异构结构,使外部用户修改和维护数据时,速度较慢,较烦琐,数</p>