静止气象卫星数据处理中心(Data Processing Center)的工作内容包括FY-2(02)卫星数据自动处理的全过程:从接收下来的展宽数据开始,经过在数据中提取有用信息,形成定量产品,最后分发到用户终端。
长期以来,在国家卫星中心的卫星应用工程建设中,卫星资料及产品处理软件都是一种“科研模式”,即:软件主要是面向物理过程的,其主要目的是检验算法的正确性,并不是能够稳定业务运行的软件,且大多都是基于PC的软件,无法实现业务系统统一调度[1]。为从根本上改变业务系统集成程度低、运行不稳定、难于操作和维护的局面,国家卫星气象中心在FY-2(02)批地面系统建设中首次提出了进行软件再工程的目标。软件再工程是对既存软件系统进行调查,并将其重构为新形式代码的开发过程。由于软件再工程面对的不是原始需求,而是既存软件,因此再工程的主要任务是如何重用FY-2(02)批预研阶段成果——应用软件及设计文档,完成对资料处理软件及产品生成软件的再工程设计,把能够实现后台自动运行的软件由原来基于科研开发的Windows平台向基于国家卫星气象中心业务运行平台——UNIX平台转变,打破预研阶段各软件自成一家,彼此间重复过程较多的弊端,建立公共函数库。同时制定资料处理与产品处理软件工程化的具体要求,对可后台自动运行的软件按照软件工程化要求实现工程化改造。
1 资料处理业务信息流程再工程针对资料处理程序的业务信息流程再工程活动所要解决的关键问题是:如何构造一个能够满足各级用户要求的资料处理业务信息流程,使得软件再工程人员能够按照新的业务和信息流程将这些科研成果改造成能够很好地与其它业务应用软件分系统集成在一起运行的业务应用软件,从而有效地为FY-2(02)批卫星应用系统的各级用户提供卫星遥感数据与图像处理方面的业务支持与服务。
1.1 基本方法与过程实施业务与信息流程再工程的方法与过程实际上是系统分析的逆向工程,即:围绕准备业务化的资料处理方法与计算机程序所能提供的分析、计算结果,调查与了解各级用户希望从地面应用系统以什么形式和方式获得该项业务的哪些运行状态和结果,并据此重新组织资料处理的业务流程、信息流程和系统操作模式[2]。
1.2 顶级流程再造 1.2.1 面向产品的流程再造FY-2(02)批应用系统的核心任务需求就是有效地控制卫星和地面应用系统协调工作,适时生成满足各级用户要求的卫星气象产品并及时地将其分发到用户手中。面向产品的流程再造以产品为主线,结合产品的属性,分析并重构产品在资料处理系统(DPC)中的流转过程:输入S-VISSR(展宽可见光红外自旋扫描辐射计)、三点测距、常规资料及其他国家卫星产品等资料,经预处理之后生成中间产品,然后经过相应的产品生成算法导出最终产品[3]。其再造后的顶级流程如图 1所示。
面向处理的流程再造,其目的就是要在产品流程再造的基础上,构造出符合用户要求的业务系统作业自动运行模式和相应的作业运转流程。这里根据产品的时效及精度需求,按处理的先后顺序把产品处理过程分为:背景资料处理流程(也叫生产准备处理流程)、高时效产品处理流程、高精度产品处理流程、系数更新处理流程。其再造后的顶级流程如图 2所示。
在资料处理业务信息流程再工程的基础上,对现有资料处理计算机应用程序与文档进行分析,确定实施软件再工程的对象与优先级。然后执行下述过程与方法对预研阶段的资料处理计算方法与程序按照软件工程化和业务信息流程及规程的要求进行计算机程序与软件文档的重构。
这里主要是按照FY-2(02)批地面应用系统建设的总要求,运用再工程方法学,通过逆向工程、代码重构、数据重构、文档重构等一系列工程化过程,将卫星气象科研单位提交的资料处理软件,再造成能够满足FY-2(02)批地面应用系统的功能性、可靠性、维护性和实时性等质量特性要求的资料处理应用软件。
2.1 逆向工程逆向工程的过程如下:针对非工程化源代码进行代码重构,生成工程化的源代码,对工程化的源代码按处理和数据等进行提取抽象形成初始化规约,然后进行求精和简化,最终形成修订后的规约。这里主要包括:处理的逆向工程和数据的逆向工程。
2.1.1 处理的逆向工程第一个真正的逆向工程活动是从理解计算机程序代码能干些什么开始的。为便于理解程序的处理,抽取代码中蕴含的与处理有关的抽象信息,必须在认真阅读预研阶段产品责任人提交的《产品设计文档》、《技术报告》、源代码、《操作说明》和《测试报告》的基础上理解程序的整体功能,以便为进一步理解和抽象处理建立语境。这种理解和抽象是在充分理解现有计算机源程序及其相关资料的基础上,在系统、程序、模块、运行模式和语句等不同层次上,按下述方法步骤交叉进行的:
➕动态运行并理解程序的语境和特定语境下的语义,在实际环境下安装、运行程序,观察和记录程序的行为特征,掌握安装和使用程序的方法。
➕静态运行并解析源程序代码,理解程序的模块结构及相关的语法,理解并标注程序(模块)的IPO特性,分析并标识程序的静态结构(包括模块划分及其接口定义)。
➕在对程序的语境与语义充分理解的基础上,抽象出程序的处理视图、模块视图或伪码等便于理解的初始规格说明。
由于预研阶段各产品责任人是在彼此独立的环境中进行开发的,彼此之间重复处理非常多,通过对DPC系统资料和产品处理业务信息流程再工程分析,实现了面向产品的流程再造,然后对处理过程中涉及的共性部分进行了提取,并最终确定了18类公共服务,主要包括:数据质量控制公用例程、标称图信息获取公用例程、LRIT处理公用例程、9210处理公用例程、图像处理公共例程、坐标变换公用例程、文件管理公共服务、环境变量获取公共服务、数据格式转换公用例程、日期与时间转换公用例程、程序出口信息公用例程等。
2.1.2 数据的逆向工程数据的逆向工程亦称为数据分析。对FY-2(02)批DPC预研阶段的所有数据定义、文件描述、I/O以及接口描述的计算机高级语言语句进行分析,抽取数据项和对象,获取其中数据流的信息,并理解现有的数据结构。
通过对FY-2(02)批DPC产品预研阶段的数据分析,确定DPC系统的静态数据、动态I/O数据以及中间产品数据的逻辑结构,并制定了数据文件命名规范、常数定义、数据定义、数据格式规范等规格。最后列出数据的清单,并说明对数据元素的约束。同时建立数据字典,阐明数据的生产者、处理及使用者。
这里把数据分为静态数据和动态数据两类。其中静态数据包括常数和静态数据文件。动态数据包括中间数据文件和产品数据文件。
2.2 代码重构代码重构是在逆向工程的基础上进行,在仔细分析DPC预研阶段产品设计文档、技术报告、源程序之后,按结构化程序设计的思想和方法,改进FY-2(02)批DPC预研阶段资料和产品处理软件的程序结构,消除其中的非结构化成分和不稳定、不可靠的隐患,实现了由原来面向物理过程的程序结构向面向业务调度的程序结构的转变。
在进行处理的逆向工程中提取的18类公共服务是进行代码重构的重中之重。在进行代码重构的过程中充分利用预研阶段的成果,但由于公共服务的出现,使产品处理过程有了大大的简化,除了对产品处理的核心处理代码进行代码重用之外,其它的代码都要进行相应的重构。
2.3 数据重构数据重构是在逆向工程数据分析的基础上进行的,并根据数据分析的结果进行数据的重构。为了适应卫星气象应用的发展需求,对气象卫星分发产品AWX格式规范进行了扩充,并在扩充的过程中充分考虑了向下兼容的问题。新版本中引入了扩展段以及扩展段的填充段的概念。
为了提高整个系统的运行效率,在DPC系统中提出了常驻内存数据的概念:即把访问频次高的数据按一定的策略存放在共享内存段中。这些数据主要包括质量检验后的S-VISSR、全通道标称数据、标称经纬度查找表、标称云分类数据和定标查找表等。
2.4 接口重构软件接口重构是在处理、代码、数据重构的基础上,重新构造软件间接口,确保软件能够在一起协调一致地工作。对于DPC业务系统所用的资料处理程序,重构的接口是产品处理过程中的所有I/O接口,主要有:文件类、数据库类、消息类、参数类等。
2.5 文档重构在理解预研阶段完成的DPC产品处理软件的《产品设计文件》、《技术报告》、源程序、《操作说明文件》的基础上,对预研阶段的软件结构进行改进, 并按软件工程规范重新编写DPC产品处理软件的《需求规格说明》、《概要设计规格说明》、《详细设计规格说明》、《软件测试》以及业务软件后续维护和改进工作所必须的所有工程文档。
3 资料处理应用软件再工程的输出对DPC资料和产品处理软件进行再工程生命周期结束时,输出的是一个能够全面满足FY-2(02)批地面应用系统软件工程规范和接口标准、支持相应业务的资料处理应用软件包。包内的应用软件是模块化的,能够根据业务的需要,在业务运行控制系统的调度、监控下运行,为各级用户提供产品化的科研成果与业务化信息服务。
4 结束语软件再工程带来的好处是非常明显的。首先,它使处理遥感数据和分发产品的业务流程更稳定、更流畅,大大提高地面应用系统的可靠性;其次,它使软件系统更容易操作,业务运行效率更高,大大减少操作员的工作量,从而也提高了应用系统的业务效率;同时还使软件质量更高,有更好的文档和代码,易于维护、测试和调试,符合现代软件工程标准,大大减少维护期间的工作量,从而也提高了花费大量资源开发的业务软件的使用寿命。
[1] |
施进明, 王素娟. 气象卫星资料处理软件再工程方法与实践[J]. 气象科技, 2006, 34(5): 642-645. |
[2] |
许健民. 风云二号(02批)静止气象卫星应用系统工程建设项目初步设计[M]. 第二册第四分册(资料处理中心. 北京: 国家卫星气象中心, 2003. 6.
|
[3] |
李小榕. 风云二号(02批)软件再工程过程、方法与细则[M]. 北京: 国家卫星气象中心, 2003.
|