UML软件工程组织

软件系统结构的选择和应用(社会保险管理信息系统实例)
出处:希赛网  作者:张有生

1 引言

二十世纪六十年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。

软件体系结构(Software Architecture,软件架构)的设计是整个软件开发过程中关键的一步。对于当今世界上庞大而复杂的系统来说,没有一个合适的体系结构而要有一个成功的软件设计几乎是不可想象的。不同类型的系统需要不同的体系结构,甚至一个系统的不同子系统也需要不同的体系结构。体系结构的选择往往会成为一个系统设计成败的关键。

典型的软件体系结构风格有很多。例如,设计图形用户界面(GUI)常用的事件驱动风格、设计操作系统常用的层次化设计风格、设计编译程序常用的管道与过滤器风格、设计分布式应用程序常用的客户机/服务器风格等。一个实用的软件系统通常是几种典型体系结构风格的组合[1]。

近年来,我们致力于软件体系结构理论和实践应用研究,取得了一些初步成绩。在第2节中,我们将给出一个选择和应用软件体系结构的实例。

2 软件体系结构的选择和应用

本节以某省社会保险管理信息系统(SIMIS)为例,讨论软件体系结构的选择和应用。

2.1 项目背景

SIMIS系统以IC卡为信息载体,完成劳动和社会保险的主要业务管理,即“五保合一”管理,包括养老保险、医疗保险、劳动就业和失业保险、工伤保险、女工生育保险。整个业务流程十分复杂,牵涉面相当广泛。SIMIS系统由省、地市、县三级组成,网络纵向覆盖全省各级劳动和社会保障机构,横向与财税、银行、卫生、邮政、企事业单位联网,是一个典型的广域网络系统;系统设计按照社会保险与个人账户相结合的模式,以养老保险为重点,并以此为全省劳动和社会保险管理信息网络主干网络,带动劳动力市场等其他社会保险业务管理信息系统建设。

2.2 体系结构设计

虽然国家劳动和社会保障部对整个业务有一套规定的指导性流程,但是,在调研的过程中,我们发现各市、县都或多或少地存在使用“土政策”的情况,正是这种“土政策”致使软件在设计阶段具有很多的不确定性需求。另外,我们还考虑到将来用户需求可能会发生变化,为了尽量降低维护成本,提高可重用性,我们引入了层次式软件体系结构的设计思想。

SIMIS系统采用层次式软件体系结构的基本出发点在于,这种软件结构不但能够满足不同规模的用户(县级,地、市级)的需求,可以方便地在最小的完成基本功能的基本系统和最大的完成所有复杂功能的扩充系统之间进行选择安装,而且通过逐层功能扩展的方法来进行软件实现,有利于程序设计和构件开发。同时,一定级别的抽象层可以作为一种知识积累,对于同类软件的快速开发有着很大的作用。

根据调研的结果,我们把SIMIS系统设计成具有通用核心层、基本应用层、业务管理层和扩展应用层四个层次的层次式软件体系构,如图1所示。


          图1 SIMIS的层次式结构

通用核心层完成的是软件的一些通用的公共操作,这些操作能够尽量做到不与具体的数据库和表结构相关。通用核心层操作不但可以应用于SIMIS系统中,还可以方便地移植到其他的应用软件上。从面向对象的角度看,通用核心层构成了一个基类。以后各层的操作都是在继承基类的基础上,逐渐增强功能而得到的。

基本应用层是SIMIS系统数据采集的主要来源,包括劳资人事管理、工资管理、岗位管理和社会保险管理等系统,是参保单位的管理平台,与通用核心层共同完成劳动和社会保险业务的基本操作。

业务管理层是对基本应用层的进一步扩展,主要完成SIMIS系统的业务管理,管理内容涉及劳动者个人、企业和其它劳动组织的微观信息,能够实现数据的初步汇总。业务管理层与其内包含的两层一起构成了SIMIS的典型应用系统。

扩展应用层是在典型应用系统的基础上扩充了一些更为复杂的功能,如对政策决策提供依据和支持,对政策执行状况进行监测、社会保险信息发布及个人账户电话语音查询系统等。

这种层次式软件体系结构的组织方式具有便于增加新功能,使系统具有可扩展性,有利于软件重用等优点。

SIMIS的设计和开发重点放在业务管理层上,在这一层的设计中,我们采用了互连系统构成的系统(SIS)的体系结构[2],把整个业务管理系统划分为失业保险管理、养老保险管理、医疗保险管理、女工生育保险管理、工伤保险管理、工资收入管理、劳动关系管理、职业技能开发管理等八个从属系统,所有的从属系统共用同一个数据库管理系统,每个从属系统作为单独的系统,由不同的开发团队进行独立开发。

从属系统可以自成一个软件系统,脱离上级系统而运行,有其自己的软件生命周期,在生命周期内的所有活动中都可以单独管理,可以使用不同的开发流程来开发各个从属系统。

各从属系统的体系结构可以相同,也可以不同。例如,在开发“养老保险管理系统”这个从属系统时,选择了正交软件体系结构[3]。我们将整个系统设计为三级正交结构,第一级划分为八个线索,每个一级线索又可划分为若干个二级线索,每个二级线索又可划分为若干个三级线索。一条完整线索如图2所示。


      图2 完整的一条线索结构

每一条线索完成整个系统中相对独立的一部分功能,所有线索是相互独立的,即不同线索中的构件之间没有相互调用。由于采用了正交结构的思想,在系统开发时,我们分成若干个小组并行开发,视开发难度情况,每个小组负责一条或数条线索,由一个小组来设计通用共享的数据存取构件。由于各条线索之间没有相互调用,所以各小组不会相互牵制,大大提高了编程的效率,缩短了开发周期,降低了工作量。

在设计“工资收入管理系统”这个从属系统时,选择了浏览器/服务器(B/S)结构和客户机/服务器(C/S)结构混合的异构软件体系结构。我们知道,传统的C/S体系结构(无论是二层还是多层)和新兴的B/S体系结构各有着自己的优点和缺点。在我们的设计中,扬长避短,由社保厅各单位内部人员使用的模块采用C/S结构,由参保企业使用的模块采用B/S结构。如图3所示。


        图3 工资管理系统体系结构

这样,外部用户不直接访问数据库服务器,能保证数据库的相对安全。社保厅内部用户的交互性较强,数据查询和修改的响应速度较快。同时,C/S与B/S混合软件体系结构,能节省开发和维护成本,使系统具有良好的开放性,易扩展性,便于移植等优点。

虽然各个从属系统相对独立,可以进行并行开发,但我们尽量注意了软件重用,以节约开发成本,加快开发进度。例如,“基金收缴”是失业保险、养老保险、医疗保险、女工生育保险和工伤保险五个从属系统中都要进行的操作,且其操作流程大致一样,只是基金收缴的参数有所区别。我们就只安排养老保险从属系统的开发团队开发一个通用构件,提供参数接口供其他从属系统使用。

3 结论

本文以社会保险管理信息系统(SIMIS)为例,讨论了软件体系结构的选择和应用。SIMIS系统以IC卡为信息载体,完成劳动和社会保险的主要业务管理,即“五保合一”管理。SIMIS系统由省、地市、县三级组成,整个业务流程十分复杂,牵涉面相当广泛。

在该系统的设计中,我们引入了层次式软件体系结构的设计思想。根据调研的结果,把SIMIS系统设计成具有通用核心层、基本应用层、业务管理层和扩展应用层四个层次。

SIMIS的设计和开发重点放在业务管理层上,在这一层的设计中,采用了互连系统构成的系统(SIS)的体系结构,把整个业务管理系统划分为八个从属系统。每个从属系统作为单独的系统,由不同的开发团队进行独立开发。各从属系统的体系结构可以相同,也可以不同。例如,在设计“养老保险管理系统”时,选择了正交软件体系结构。而在设计“工资收入管理系统”时,选择了B/S结构和C/S结构混合的异构软件体系结构。

以上设计有效地降低了维护成本,提高了系统的开放性、可扩充性、可重用性和可移植性。但SIMIS的设计和开发也存在一些不足。例如,由于采用了互连系统构成的系统的软件体系结构,使资源管理开销增大,各从属系统的开发进度无法同步等。又如,由于采用了B/S和C/S结构混合的异构结构,使外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强等。

主要参考文献

[1] L. Bass,P. Clcmcnts and R. Kazman. Software Architecture in Practice. Addison Wcslcy Longman,1998
[2] I. Jacobson,K. Palmkvist,S. Dyrhage. Systems of Interconnected Systems,ROAD,1995(1): 81-93
[3] Václav Rajlich and Jo?o H Silva Evolution and Reuse of Orthogonal Architecture,IEEE Transactions on Software Engineering,1996(2):153-157

版权所有:UML软件工程组织