军用软件研制开发的现状与软件工程化研究
侯玉慧
(西安电子工程研究所 西安 710100)
摘要:分析了军用软件研制开发的现状,提出了软件工程化开发和工程化过程管理并重的解决方向,研究和探讨了目前军用软件工程化管理的办法。
关键词:软件管理 军用软件 软件工程
Method and Research of Software Engineering Management
Hou Yu-hui
(Xi’an Electronic Engineering Research Institute,Xi’an 710100,China)
Abstract:This paper analyzes the current states of military software development,and proposes that software engineering development and engineering management should be paid equal attention to . Finally,we studied and discussed the approach of current military software engineering management.
Keywords: Software Management; Military Software;Software Engineering
引言
计算机科学与技术的飞速发展,应用领域的不断扩大,各种软件的需求量急剧增加。软件不再只是计算机硬件的附属品,而已成为系统中的一个独立部分,甚至是完成系统功能的重要部分。我国软件业与世界先进国家相比,差距甚远,其主要原因是软件工程化技术没有得到广泛的应用。今天,软件开发不再是软件开发人员的个人行为而是团队行为,对军用软件开发企业来说,如何在要求的时间内、合理的投资下保质保量地交付软件产品是一个巨大的挑战。在我国,软件开发项目超期、超预算、最终的软件产品的质量不能使最终用户满意等问题,都是困扰软件开发企业的重大问题。
随着市场经济的不断深入,军用型号产品的更新换代速度越来越快,新型号的研制生产正向大规模集成化方向发展。其中,最典型的例子就是研制型号产品专用软件,通过安装在计算机中的专用软件或集成在产品中的软件,控制并完成军用型号产品某些特定的功能;软件产品的设计实现为型号产品的小型化、自动化起到了较好的推动作用。在军用型号软件得到推广应用的同时,我们也应该看到,软件的运作因其具有一定的隐蔽性,引起军用型号软件运作的任何一个失误,都会给整个军用型号研制、生产和试验带来不可挽回的损失。
1 军用软件研制开发的现状
在GJB5000A中,4.2.2.2成熟度等级1初始级中是这样描述的:“在成熟度等级1,过程通常都是随意、无序的。组织通常不提供支持过程的稳定环境。在这些组织中,成功依赖于人员的能力和勤奋,而不依赖于使用已经证实的过程。尽管是这种随意、无序的环境,成熟度等级1的组织常常仍能生产可用的产品,提供可接受的服务;不过,他们经常超出其项目的预算和进度”这就是目前很多软件研制单位软件的开发方式。
下面将目前大多数军用产品研制单位的军用软件研制过程中,软件开发研制的具体现状汇总如下。
(1)在很多项目的软件研制中,没有完全对软件进行基本软件研制管理过程控制,许多软件还是处于“自编、自导、自演”的开发方式的年代,软件开发过程和质量处于不完全受控状态,软件是不透明的,质量是不高的,可靠性没有保证。
(2)在软件开发过程中对软件的资源投入不足,如:人员、设备、工具等。目前还做不到软件设计、软件实现、软件测试人员必须分开原则。软件开发人员少,人员结构简单;软件项目开发队伍不稳定,互相不交流,以致许多工作不得不从头做起;软件项目资源调度或重要决策不及时,以致造成工作停顿等待。
(3)将软件的开发过程完全与硬件研制混在一起,软件不按软件研制过程开发而按硬件研制过程开发。软件文档的编制不规范,还有很多项目的文档是在软件实现编程完成后补写的,为了完成归软件文档任务而归文档,失去了以设计文档指导软件实现的作用。
(4)软件进度难以保证,软件项目管理缺乏严密的计划或者严格的日程安排。软件项目管理的管理者未能发现进度滞后,未能采取纠正措施。开发软件的经费难以控制,软件项目造价常常是不准确的。
软件本身独有的特点,确实给软件的开发和维护带来了一些客观困难,但是人们在开发和使用计算机系统的长期实践中,也积累和总结出许多成功的经验。尽管如此,软件的开发仍然难度很大,我们难以降低软件的开发成本、维护费用、难以提高软件的质量、难以缩短软件的开发周期。要解决这些问题,就必须走软件工程化的道路,这样才能使得软件的开发从个体化走向工程化,进而提高软件的开发效率和质量。
2 军用软件开发管理的工程化
多年来,人们试图采用新的方法和技术来解决军用软件研制的现状,但结果却无法令人满意。这种现象促使人们进一步考察软件过程,结果发现,问题的关键在于对软件过程的管理不尽如人意。事实表明,在无规则和混乱的管理条件下,先进的技术和工具并不能发挥应有的作用。人们逐步认识到,改进软件过程的管理是解决上述问题的出路军用软件开发管理的工程化,是指对于军用软件工程项目的开发,要按照工程化的方法组织、计划、协调和监督软件开发的整个过程,即采用软件工程的方法管理软件。
2.1 军用软件建设和发展的重要标准GJB5000A
GJB5000A是军用软件建设和发展的一项重要标准,得到了军内及国防行业的高度重视,它的发布和实施极大地促进了我国军用软件研制单位软件工程化水平的提高,有效地保证了军用软件的质量。
在GJB5000A中,已管理级中将过程域分为,需求管理、项目策划、项目监控、供方协议管理、过程和产品质量保证、配置管理、测量和分析共7个过程域。笔者认为项目策划过程域(PP)和项目监控过程域(PMC)是我们软件开发中,重点要控制管理的,也是基本的项目管理类过程域。
图1描述了基本的项目管理类过程域之间以及它们与其他过程域类之间的关系。
图1 基本的项目管理类过程域
项目策划(PP)从定义产品和项目的需求开始。项目计划覆盖该项目将实施的各种项目管理活动和开发活动。项目从各利益相关方的角度评审影响本项目的其他计划,并建立针对利益相关方的承诺。例如,这些计划覆盖配置管理、验证、测量与分析。
项目监控过程域(PMC)包括监督活动和采取纠正措施。项目计划规定适当的项目监督等级、进展评审的频率以及监督进展所用的测量方法。主要通过比较项目状态与项目计划来确定进展情况。当实际状态显著偏离预期值时,采取适当的纠正措施,例如,重新策划等。
供方协议管理过程域(SAM)涉及项目获取供方产品的要求。要前瞻地标识可满足项目需求的产品源。选择供方,并建立供方协议以管理供方。借助监督所选工作产品和过程跟踪供方的进展和绩效,并在合适时修订供方协议。对供方生产的产品部件进行验收评审和测试。
由于篇幅的限制,下面只对项目策划过程域(PP)和项目监控过程域(PMC)进行详细分析,以便能够帮助我们军用软件开发和研制。
2.2 项目策划过程域(PP)分析
项目策划的目的是为实施软件工程和管理软件项目制定合理的计划。
进行软件项目策划过程的流程如图2所示。
图2 项目策划流程
(1)制定项目策划计划。
根据《软件研制任务书》的各项需求,确定项目策划要做的工作和需要参与的人员,制定项目策划计划。
(2)确定软件生命周期模型和项目环境。
根据《软件研制任务书》的各项需求,判定需新开发的工作,根据软件生命周期模型决定软件生命周期,并确定项目环境(开发环境、工作环境、使用环境等)。
(3)首先工作分解结构随着项目的进展而演化。起初,顶层工作分解结构用于初始估计。开发工作分解结构时,将总的项目分解为相互连接的可管理的部件集。
(4)软件规模估计值应与项目需求一致,以确定项目的工作量、成本和进度。应对每一个规模属性,赋予一个相对的困难等级或复杂性等级。
软件规模是用于估计工作量、成本和进度的模型的主要输入。这些模型还可以基于连续性、复杂性和结构之类的输入。
(5)项目策划的风险标识和风险分析,以确定其影响、发生概率,及其问题可能发生的时段,将风险排序。
(6)制定项目数据管理计划。应根据通用的或标准的数据需求集确定对项目的数据需求,包括要产生的数据项和它们的内容与形式。统一的数据项内容和格式,便于理解数据内容,并有助于一致管理数据资源。
(7)制定培训计划,将知识传递给项目,包含项目人员的培训和从外部获得知识两方面。
只有在软件开始研制时就进行计划管理,才有助于对软件项目进行很好的监控。在项目策划过程域管理中,最后需要有一个文档化的、标明所有相关计划项的总计划形成,以便执行或支持这些相关计划的个人、小组和组织达成共识、承诺和绩效。为项目生成的总计划定义以下所有方面:项目的生存周期考虑、技术和管理任务、预算和进度表、里程碑、数据管理、风险标识、资源和技能需求以及利益相关方的标识和参与,说明包括项目人员、管理和支持组织的职责和权限关系。
2.3 项目监控过程域(PMC)分析
项目监控的目的是了解项目进展情况,使得在项目绩效(进度、工作量)显著偏离计划时,能采取适当的纠正措施。
文档化的项目计划是监督活动、交流状态和采取纠正措施的基础。主要通过在项目进度表或工作分解结构(WBS)内预定的里程碑处或控制区域内,将实际工作产品和任务属性、工作量、成本以及进度与计划进行比较,来确定项目的进展情况。适当的可视性,使得能够在绩效显著偏离计划时,及时采取纠正措施。如果偏离不被解决会妨碍项目目标的实现,那么它就是显著的。
当实际状态显著偏离期望值时,就要采取适当的纠正措施。这些措施有可能要求重新进行策划,重新策划可能包括修正原始计划,确立新的协议,或者在当前计划内包括更多的缓解活动。
2.3.1 对照项目计划,监督项目策划参数的实际值
软件开发组项目负责人要定期进行以下工作。
(1)收集软件项目进展数据。
(a)软件项目进度数据;
(b)软件项目工作量数据;
(c)软件项目规模数据;
(d)软件项目缺陷数据。
(2)跟踪和评估软件项目工作情况。
(a)包括资源情况;
(b)知识和技能情况;
(c)风险情况数据管理情况;
(d)利益相关方参与情况;
(e)承诺兑现情况。
监督通常包括:测量项目策划参数的实际值,比较实际值与计划中的估计值,以及标识其显著偏离。记录项目策划参数的实际值,包括记录有关联的关联信息,以帮助理解测量值。分析显著偏离对确定要采取什么纠正措施的影响。
2.3.2 定期召开项目例会
软件开发组项目负责人完成1.2.1节要求收集的软件项目进展数据,然后跟踪和评估软件项目工作情况,在例会上通报和完成下列主要事项。
(1)工作情况:规模统计与偏差分析、工作量统计与偏差分析、确认计划完成的情况。
(2)风险情况:已识别的风险状态,是否有新增风险。
(3)问题与纠正:跟踪问题是否解决,提出对新问题采取的纠正措施。
(4)配置管理和质量检查情况通报。
(5)数据管理情况及利益相关方参与情况通报。在策划时一旦制定了项目数据管理计划,则必须监督对数据的管理,以确保完成这些计划。
2.3.3 实施里程碑评审和工程评审
工程评审是在工程阶段工作完成时(需求、设计、测试)进行评审,这些项目评审可能是正式评审也可以同行评审,也可能并未在项目计划中明确规定。
里程碑评审是在项目策划期间,计划好里程碑评审时机,且通常是正式评审。
无论何种评审,文档化的评审结果是必须的,对评审中发现的问题,要分析原因,形成相关纠正措施。利益相关方应参会,如果因故不能参会,必须向利益相关方通报评审结果。对评审中发现的问题要跟踪一直到解决为止。
归根结底项目监控就是对照项目计划中所标识的项目监督等级、进展评审的频率以及监督进展所用的测量方法的承诺,来监督这些承诺的完成情况,当项目绩效或结果显著偏离预期值时,管理纠正措施直到问题关闭。
3 结束语
如何理解项目管理在软件开发中的作用呢?有人会说,即使是没有管理的开发也可能被完成,但这种开发的周期和成本以及软件产品的质量都是不可控的。表现在软件交付的日期大大拖后,成本可能比预计的高几倍,而且最终开发出来的软件很难维护。对于一个军用软件成本、开发周期和产品质量的不可控将必然导致信任危机,这是军品绝对不能接受的。总之,好的项目管理并不能完全保证软件开发的成功,但没有管理或不适当的管理将必定导致软件开发的失败。
我们在军品软件项目中,按照软件工程化方法,切实改进软件研制过程之后,军工单位获取2级军用软件研制能力成熟度等级的认可评价并不困难。目前,总装备部共发布的军用软件研制能力评价合格单位名录,有二十多个单位已经通过了2级的军用软件研制能力成熟度等级的评定,有3个单位已经通过了3级的军用软件研制能力成熟度等级的评定。2015年之后,不具备2级军用软件研制能力成熟度等级的单位,很难获得军用软件研制开发任务。
我们要认清形势,抓紧工作改变现状,努力规范软件研制过程,加强软件工程化的管理,特别是加强军用软件项目的过程、组织、内容、方法和工具的管理,包括:立项管理、组织管理、计划管理、进程管理、资源管理、文档管理、质量管理等,进一步提高我们软件装备研制能力和资质,提高企业核心竞争力。
作者简介
侯玉慧(1957—),女,大学本科,高级工程师。主要研究方向:雷达终端技术、软件工程化。