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