论行业应用软件系统的开发规划
摘要:
本文通过地震基本参数快速获取与发布系统论述了行业应用软件系统的开发规划。本人去年有幸参加了《地震基本参数快速获取与发布系统的研制》项目的开发,该系统按功能被分为三个子系统:地震实时波形数据监控子系统;地震事件处理子系统;数据发布子系统。该系统具有地震行业的专业背景,需要地震监测中心(用户单位)、地震监测专家和项目开发人员间良好的分工协作;与常规的通用应用软件开发过程相比,具有明显的差异,主要表现在系统的分析、设计、实现、测试和维护均带有明显的行业特点。行业应用软件的成功开发必须遵循行业规范,正确使用专业术语,及时与专家和用户进行交流。
本人在项目中主要负责需求分析和软件系统设计,在实践中我发现,行业应用软件系统的成功开发是从其规划到诞生起就应从行业中汲取各种营养,才能长出行业特征,具有行业味道,满足行业应用的需求。
正文:
本人去年参加了《地震基本参数快速获取与发布系统的研制》项目的开发。在项目中担任组长,负责项目的规划、分析、设计。由于防震减灾是公共安全的重要内容之一,该项目主要针对大地震的震前预警和震后消息的快速发布,是防震减灾工作的关键业务系统,是地震应急工作的支撑技术系统之一,对公共安全具有重要意义。项目范围包括:地震数据采集、传输、存储、处理、发布;该系统是一个硬、软件相结合的信息系统;硬件包括:拾震器(地震波形采集器)、数据传输设备(基带modem和多路复用器)、多用户串口卡、服务器、手机。软件可以安功能分为三个子系统:地震实时波形数据监控子系统;地震事件处理子系统;数据发布子系统。
由于地震行业的专业性强,由开发人员现学领域知识是不现实的,这就需要用户和行业专家的协助。
聘请行业专家做项目组的顾问是应用软件开发过程中较好的策略。行业专家主要是作为领域知识源,提供技术文件和已有应用。在地震系统的这个项目中,我们聘请了地震监测系统的资深专家作为项目的顾问,获取到《地震数据分类和共享指南》等技术文件和部分以前编写的源代码,该源代码是多个独立运行的、凌乱的、较小的系统,经过整理后可以用到新系统中,这为领域模型和设计模型的建立打下了良好的基础。
用户是应用软件目前和未来的需求提供者,其对项目成败的重用性是显而易见的。00A过程是从对系统将被使用的方式的理解开始的。在需求诱导时需要从用户的观点对系统建模,需要项目组和用户共同确定使用场景和定义系统的功能和运行需求;需要用户提供清楚而无二义性的终端用户和系统如何相互交互的描述;需要用户提供确认测试的基础。在地震项目中,我们与用户充分合作,请用户给我们讲解地震常识和本项目涉及的专用仪器的功能,将用户作为项目组成员,作为每个阶段的技术评审的主要成员。
开发者是应用软件系统的建设者,需要从用户方进行需求诱导,建立领域分析模型;需要将分析模型变换为设计模型,建立软件的构造蓝图;需要完成编码和测试。由于应用软件具有行业背景,在建立分析模型是需要从各种渠道了解行业知识;在建立设计模型是需要使用逆向工程技术从现有的系统中得到关键的算法。在进行测试时需要使用用户提供的具有行业特点的真实的测试数据。开发人员需要随时在涉及到行业知识时向用户或行业专家请教,必须克服在开发一般应用软件时的问题讨论在相对封闭的范围内进行的特点。
与常规的通用应用软件开发进行比较,专业背景的应用软件开发过程及各个环节的主要差异有:
(1)在计划阶段,具有行业背景的应用软件系统与普通应用软件的目标与动机一般是不同的,普通应用软件以给本公司或部门带来经济上的收益为目的,而行业应用软件以更好的完成某项政府职能为目的。地震行业的应用系统开发目的是为了有效的减少地震灾害造成的损失。系统方案的制定必须符合行业的特征。地震具有突发性、不可抗拒性、影响面广、广大群众积极参与、数据量非常大、算法复杂等特征,在系统方案制定时必须针对这些特点进行。在地震行业的应用系统中,从拾震器(地震波形采集器)、数据传输设备(基带modem和多路复用器)、多用户串口卡、服务器、手机到通信信道均实现冗余备份,当任一环节出现故障时,均能由热备件自动接管任务,应用软件必须支持这种功能。这就增加了应用软件开发的复杂性。
(2)在需求分析阶段,行业背景的应用软件系统与普通应用软件相比一般需求比较明确、相对固定和有章可寻。必须获得行业的各种技术规范、数据共享资料及现行系统的运行数据。在此基础上划出应用软件的作用范围和与周围环境进行数据交换的接口,在类的划分时需要从行业术语中选择类的名称,类的属性需要在专业知识中有明确的定义,类的方法也需要使用行业内的主流算法;在地震行业的应用系统开发中,分析模型的建立需要从行业中得到基本素