北大青鸟|上海北大青鸟|软件测试培训|软件开发培训|上海软件测试培训|网络营销培训|

您现在的位置:上海电脑学校 IT精英培训基地 >> 大学生就业直播 >> 浏览文章

【大学生就业直播】初探军用软件研制过程
发布来源:上海北大青鸟【官方网站】    发布时间:2013-8-29 9:57:16    浏览次数: 1165

   本文首先指出了目前装备软件研制中存在的主要问题,借鉴软件能力成熟度模型(CMM)的概念,就其中的主要关键问题提出了相应的对策。


1 问题的提出

随着装备跨越式的发展和作战需求的不断提高,装备中软件的规模和数量的不断增加,研制单位在装备软件研制中运用软件工程及其技术的水平不断提高,与军用软件开发有关的国军标的贯彻逐渐成为一种自觉的行动。但同时也应看到,在装备软件研制过程中,研制单位实际的软件工程应用水平还不高,目前仍然存在着许多问题和不足。主要表现为如下几个问题:
  1)研制单位软件质量保证体系不完善 海军颁布的“软件质量管理要求”从去年刚刚开始试行,部分研制单位软件质量体系还未建立。即使建立了软件质量体系的单位,其体系文件也有待进一步通过实践来补充完善。由于研制单位普遍管理水平不高,软件开发人员的素质成为影响软件产品质量的重要因素。

  2)交付的软件不能完全满足实际使用需求 软件开发人员常常对部队需求只有一些模糊的了解,有的甚至缺乏基本的战术概念,造成对需求的理解不准确、不透彻,“闭门造车”必然导致最终的产品不能完全符合部队的实际需要。

  3)软件产品存在质量隐患 由于软件质量保证技术还没有真正、完全应用到软件研制的全过程中,软件测试工作还未在型号装备上全面展开,从而导致软件产品存在质量隐患。

  4)软件文档编制不规范,与程序的一致性

  不好 军用软件不仅仅指程序,还包括一整套符合国军标要求的文档资料。这些文档资料应该在软件研制过程中产生出来,而且应该和程序代码完全一致。质量管理人员可以使用这些文档资料作为依据,来管理和评价软件研制的进展情况。软件开发人员可以利用它们作为沟通的工具,在软件研制过程中准确地交流信息。对于软件维护人员而言,这些文档资料更是至关重要必不可少的。缺乏必要的文档资料或者文档资料不合格,必然给软件研制、维护带来许多困难和问题。

  5)软件可维护性不佳,可移植性不好 由于文档的不完善,程序中的错误不易发现、非常难改,也不能根据需要在原有程序中增加一些新的功能。软件开发人员仍然在重复开发类似的或基本类似的软件,“软件标准化”、“可重用软件”等概念还处于推广应用阶段。

  6)软件实际研制成本在装备研制总成本中所占的比例逐年上升 由于海军标准显控台的推广应用,硬件成本逐渐趋于稳定。然而软件研制需要大量人力,软件成本随着作战需求的不断提高,软件规模和数量的不断扩大而持续上升。但软件研制成本没有按实际的软体成本计价,实际成本比估计成本高出很多,而为了赶进度和节约成本所采取的一些权宜之计,不可避免地会影响军用软件产品的质量。

2 对策与分析

2.1 借鉴软件能力成熟度模型技术,建立健全软件质量体系

  早在20世纪60年代中期,人们就发现软件的研制出现了“问题”,主要表现在研制过程不规范,缺乏管理。后来,人们在软件研制过程中引入了工程的概念、原理、技术和方法,这种思想在一定程度上解决了软件研制过程中遇到的问题。但是直至80年代还是没有提出一套管理软件开发的通用原则,软件管理不善的问题依旧在大范围内存在。随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,因此管理学的思想逐渐融入软件开发过程中,由美国软件工程研究所(SEI)提出的软件能力成熟度模型(CMM--Capability Maturity Model for Software),便是软件过程管理思想不断发展的集中体现,是对企业软件过程能力的描述。CMM不但对于指导过程改进是一项很好的工具,而且把全面质量管理(TQM)概念应用到软件开发上,实现从需求管理到项目计划、项目控制、软件获取、质量保证、配置管理的软件过程全面质量管理。CMM的思想是一切从顾客需求出发,从全组织层面上实施过程质量管理,正符合了TQM的基本原则,把质量控制从事后检测转变为事前预防。因此,它的意义不仅仅是对软件开发的过程的进程控制,最关键的它还是一种高效的管理方法,有助于企业最大程度的降低成本,提高质量和用户满意度。

  CMM描述了五个级别的软件过程成熟度(初始级、可重复级、已定义级、已管理级和优化级),成熟度反映了软件过程能力(Software Process Capability)的大小。具体如下:

  第一级:初始级(The Initial Level) 初始级的软件机构缺乏对软件过程的有效管理,其软件项目的成功来源于个人英雄主义而非机构行为,因此它不是可重复的。

  第二级:可重复级(The Repeatable Level)第二级软件机构的主要特点是项目计划和跟踪的稳定性、项目过程的可控性和以往成功的可重复性。机构建立了管理软件项目的策略和实现这些策略的过程。 新项目的计划和管理基于类似项目的经验。 过程能力的增强基于以各个项目为基础的有纪律的基本过程管理。不同的项目可有不同的过程,而对机构的要求是具有指导项目建立适当管理过程的策略。 每个项目都确定了基本的软件管理控制,包括:基于前面项目的经验和新项目特点,做出现实的项目承诺(如预算、交付期、软件质量等);软件项目管理者要跟踪开支、日程、软件开发;过程中出现的问题要及时发现,妥善解决;定义了软件项目标准,且机构确保其被遵守。

  第三级:已定义级(The Defined Level)

  本级的主要特征在于软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性。机构采用标准的软件过程,软件工程和管理活动被集成为一个有机的整体。标准化的目的是使管理者和技术人员有效工作。有专职人员负责机构的软件过程,并且在机构中有培训计划来确保全体人员有知识和技能完成所赋予的职能。标准的软件过程结合项目的特点,形成定义的软件过程。它包括一组集成的、定义良好的软件工程和管理过程。一个定义良好的过程包括就绪准则、输入、完成工作过程、验证机制、输出和完成准则。在已建立的产品线上成本、进度、职能等均可控制,软件质量被跟踪。过程能力体现在机构范围内对一个定义的软件过程活动、职能和责任的共同理解。第三级的重点是工程过程和机构建设。

  第四级:已管理级(The Managed Level)

  本级的软件机构中软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力可预测,其生产的软件产品质量高。软件过程和产品有定量质量目标。重要的软件过程活动均配有对质量和生产率的度量;数据库用来收集和分析软件过程的数据;项目的软件过程和质量的评价有定量的基础;项目的产品和过程控制具有可预测性。过程效能的降低在可接受的定量偏差界限内;可区分过程效能的有效偏差和随机偏差;面向新领域的风险可知,并被仔细管理;

  第五级:优化级(The Optimizing Level)

  本级的主要特点是技术和过程改进被作为常规的业务活动加以计划和管理。机构集中于连续的过程改进,具有标识弱点和增强过程的手段。采用过程数据分析使用新技术的代价效益,并能够提出改进。能够分析出现错误的原因,并防止其再次出现。防止浪费是第五级的重点。改进的途径在于已有过程的持续改进和使用新技术和新方法。第五级企业的重点是连续的过程改进。

  在软件的整个寿命周期中,软件产品的质量的80%在设计阶段就确定了。图1为软件寿命周期中的缺陷分布图。从图1中可以看出,缺陷是在开发过程的前期引入,但越到后期缺陷修复的成本越高,随着CMM级别的提高,缺陷的消除将从后期逐步转移到前期,遗留到用户手中的缺陷也相应减少,这必将大大缩短开发周期,减少成本,提高研制质量。



  

图1 软件生命周期中的缺陷分布



  CMM是软件组织管理的一种方法和工具,我们不一定完全照搬。但参照CMM划分的级别可以发现,我们现有的软件质量体系建设仍然存在较大的差距。“软件质量管理要求”是根据国内研制单位目前的现状提出的,且经过了一年的试行和修改完善,可操作性比较好。研制单位根据“管理要求”和本单位的实际情况,同时借鉴CMM的理念和技术,建立一个科学合理的软件管理过程——软件质量体系,并有机溶入本单位现有的质量体系之中,相信能够达到提高军用软件产品研制质量的目的。

2.2 加强软件配置管理

  在IEEE标准729-1983中,软件配置管理的定义包括:

  标识——识别产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。

  控制——通过建立产品基线,控制软件产品的发布和在整个软件寿命周期中对软件产品的修改。例如,它将解决哪些修改会在该产品的最新版本中实现的问题。

  状态统计——记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,它将解决修改这个错误会影响多少个文件的问题。

  审计和审查——确认产品的完整性并维护构件间的一致性,即确保产品是一个严格定义的构件集合。例如,它将解决目前发布的产品所用的文件的版本是否正确的问题。

  生产——对产品的生产进行优化管理。它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。

  过程管理——确保软件组织的规程、方针和软件周期得以正确贯彻执行。它将解决要交付给用户的产品是否经过测试和质量检查的问题。

  小组协作——控制开发统一产品的多个开发人员之间的协作。例如,它将解决是否所有本地程序员所做的修改都已被加入到新版本的产品中的问题。

  配置管理中的活动主要包括:识别配置、变化控制、状态记录和报告及审计。识别配置是指以定义的软件产品设计基线为依据,识别软件(中间产品)的技术状态,使其处于配置管理的控制之下,并维护它们之间的相关关系。一般来说,这些中间产品主要是程序和文档。变化控制是指记录变化的有关信息(包括变化的内容、原因和实现者等),用于保障软件的质量。状态记录和报告是指通过记录各个配置的变化,达到记录和报告整个软件的变化过程的目的。审计是指利用配置记录验证软件达到了预期的要求。

  配置管理的解决方案,影响过程模型(质量体系)及其使用者。它强行推行软件质量管理的方针政策和工作规程,并对工作过程进行跟踪。它从研制和维护的及时性方面影响产品的质量。例如,配置管理机制可以保证为每一个软件版本提供内容清单,通过一致性维护提高产品的质量。实际上配置管理系统是软件研制单位内部信息交换的中心,它影响每一个成员及本单位的业务流程。

  围绕配置管理,世界一些致力于软件工程研究的公司在深入理解ISO 9000的基础上, 推出了各种符合ISO 9000配置管理标准的工具软件。研制单位在健全质量体系后,可以根据需要,选用一些工具软件以提高科学管理水平和研制效率。

2.3 强化软件需求分析

  软件需求是软件项目成功的关键,软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的“祸根”。美国质量管理协会(ASQC)将“质量”解释为“产品或服务内在特性和外部特性的总和,以此构成其满足给定需求的能力”。从这个意义上说,只有满足用户需求的软件产品才谈得上有好的质量。CMM第四级中的“软件质量管理”也明确要求:组织、顾客和最终用户的软件质量需求及其优先级可以追踪到分配给软件的系统需求及软件质量目标。因此,CMM的需求管理正是从全面质量管理的主导思想——“以满足顾客需求为导向”出发的,软件开发则应以需求分析作为核心过程(需求分析过程与其它过程的关系见图2。

  需求分析无疑是当前软件工程中的关键问题。完整的软件需求分析过程包括需求开发和需求管理两个部分,需求开发的一般过程分为需求获取、需求分析、编写需求规格说明书、需求验证四个阶段。需求管理则主要包括需求基线的建立、需求变更控制以及需求跟踪等活动。需求获取是通过与用户及其代表的交流,对任务进行分析,从而开发、捕获和修订用户的需求;需求分析是为最终用户所看到的系统建立一个概念模型,作为对需求的抽象描述;由需求模型构件生成精确的形式化的描述,即需求规格说明书。它将作为用户和开发者之间的一致协议;需求分析的结果应该通过评审、测试等手段验证它的正确性、完整性和一致性,这就是需求验证。贯穿于整个过程中,需求管理中最基本的任务则是明确需求,并使所有相关人员达成共识。建立需求跟踪能力联系链,确保所有用户需求被正确地应用,并且在需求发生变更时,能够完全地控制其影响范围,始终保持产品与需求的一致性。

  需求分析需要各类人员的参与,如行业专家、用户及其代表、系统设计师、需求分析员、软件开发人员等等,以不同的着眼点和不同的知识背景,获得对软件需求的全面理解。需求分析最大的难度就体现在全方位需求的获取以及非功能性需求与功能性需求的错综复杂的联系上。当前对非功能性需求(或用户隐含需求)分析建模技术的缺乏大大增加了需求工程的复杂性,而非功能性需求往往又决定了对软件产品的质量要求。因此,非功能性需求和质量特性的分析模型有待于在深层次做进一步的研究。在海装机关的组织下,请用户提前介入装备研制,参加在研的几型电子装备设计评审的做法,不失为一种较好解决此类问题的有效办法。



 

 图2 需求过程与其它过程的关系



2.4 加强软件文档管理,提高文档质量

  软件开发人员常说的一句话是“叫我干什么都可以,但别叫我看别人的程序”。一个很重要的原因就是,前人留下的程序既无像样的文档(即使留下了文档,也与其源程序严重脱节),开发风格又不统一,就像一堆垃圾。目前,各研制单位按照有关国军标的要求进行软件研制,但软件文档编制和归档情况参差不齐。即使管理工作做得较好的单位,也存在程序与文档不一致的情况。

  造成软件文档质量不高的原因一般有:①缺乏实践经验,缺乏评价文档质量的标准;②不重视文档编写工作或是对文档编写工作的组织安排不当。软件研制中最常见到的情况是,在研制初期完成的软件设计文档与最后完成的程序有很大的出入。另一方面,和软件编程工作相比,许多人对编制文档不感兴趣。于是在程序工作完成以后,按要求不得不应付一下,把要求提供的文档赶写出来。这样的做法不可能得到高质量的文档。高质量的文档应当体现在以下一些方面:

  1)针对性:文档编制以前应分清读者对象,按不同的类型、不同层次的读者,决定怎样适应他们的需要。例如,管理文档主要是面向管理人员的,用户文档主要是面向用户的,这两类文档不应象开发文档(面向软件开发人员)那样过多地使用软件的专业术语。

  2)精确性:文档的行文应当十分确切,不能出现多义性的描述。同一项目若干文档内容应该协调一致、没有矛盾。

  3)清晰性:文档编写应力求简明,并配以适当的图表,以增强其清晰性。

  4)完整性:任何一个文档都应当是完整的、独立的,它应自成体系。例如,前言部分应作一般性介绍,正文给出中心内容,必要时还有附录,列出参考资料等。同一项目的几个文档之间可能有些部分相同,这些重复是必要的。例如,同一项目的用户手册和操作手册中关于功能、性能、实现环境等方面的描述没有差别。特别要避免在文档中出现转引其它文档内容的情况。比如,一些段落并未具体描述,而用“见××文档××节”的方式,这将给读者带来许多不便。

  5)可追溯性:由于各开发阶段编制的文档与各阶段完成的工作有着紧密的关系,前后两个阶段生成的文档,随着研制工作的逐步扩展,具有一定的继承性。在一个项目各研制阶段之间提供的文档必定存在着可追溯的关系。例如,

  某一项软件需求,必定在设计说明书、测试计划以至用户手册中有所体现,并能跟踪检查。

  在整个软件生存期中,各种文档作为半成品或是最终成品,会不断地生成、修改或补充。为了最终得到高质量的产品,必须加强对软件文档的管理。

3 结束语

  以上仅是对目前军用软件研制过程中存在的一些薄弱环节提出了一点儿拙见。软件的质量管理是一个系统工程,需要科学策划,认真实施,持续改进。只有这样才能保证研制出高质量的软件产品,达到相当于软件能力成熟度模型——CMM优化级的水平。

 

关键词:上海北大青鸟

上一篇: 上海北大青鸟资深专家教你如何构造SQL Server的安全门?   下一篇: 软件功能性测试的7种故障模型
  友情链接(交换友情链接请联系张老师)