APP下载

大型复杂装备软件需求分析研究

2015-12-08王文基赵丕福李伟吕进来

计算机与网络 2015年23期
关键词:研制装备软件

王文基 赵丕福 李伟 吕进来

(空军驻石家庄地区军事代表,河北石家庄 050081)

大型复杂装备软件需求分析研究

王文基 赵丕福 李伟 吕进来

(空军驻石家庄地区军事代表,河北石家庄 050081)

软件需求分析作为软件工程化管理的重要方面和关键首步,已成为大型复杂装备研制进程中不可或缺的节点工作。文章以软件需求分析的主要框架为根本支撑,从软件全方位质量管理的角度强调了需求分析的地位作用,从软件开发过程工程化的角度指出了需求分析的问题现状,有针对性地探讨了开展软件需求分析亟待把握的3个层面。

软件需求分析 软件质量 需求管理 验证与确认 非功能性需求

1 引言

早在20世纪70年代中期,美国国防部统计并发现在失败的软件项目中,70%的原因是由于管理不善造成的[1],由此引发了软件工程化管理的热潮。近年来的软件质量管理和工程实践统计进一步表明,在软件生存周期各个阶段可能引入的错误或故障比例中,需求分析阶段约占57%[2],因而成为决定软件运行质量和可靠性水平的重要因素。近年来,随着大型复杂装备立项研发的步伐不断加速和综合集成建设的程度不断深入,各类软件系统彰显装备效能倍增器“神经中枢”的特殊地位。作为软件工程化管理的重要方面和关键首步,软件需求分析工作日益主导着大型复杂装备研制任务的进程乃至成败。

2 软件需求分析的主要框架

以螺旋开发模型为例,软件研制周期包括8个基本阶段:系统需求分析与设计、软件的需求分析、概要设计、详细设计、编码与单元测试、集成测试、合格性测试与验收以及系统集成。其中,软件需求分析至合格性测试阶段可进行迭代构造或并行开发。

2.1 溯源过程

从遵循复杂装备研制规律的角度考量,用户提出系统需求,系统工程组整理系统需求后产生分配需求(包括分配给软件的系统需求、分配给硬件的系统需求和分配给其他成分的系统需求),软件工程组接受、细化分配需求的相关部分并以文档化的、单独的“用户需求规格说明”或“软件研制任务书”等形式提出“用户需求”。在修改控制、评审确认和最终状态冻结之前,软件工程组应与硬件工程组、系统工程组(或型号总体单位)、用户等多方建立对“用户需求”的共同理解,尔后进行梳理分析和详细描述并按照文档规范编写出“软件需求规格说明”。至此,“系统需求”演绎为“软件需求”。

2.2 目标任务

软件需求分析阶段的主要任务是:依据软件研制任务书中对软件的功能、性能、数据和接口等要求逐项细化,形成“软件需求规格说明”,具体包括:①确定软件配置项的功能、性能、运行环境、接口关系、可靠性和安全性等要求,对每项需求进行标识[3];②对A、B级软件进行初步SFTA(软件故障树分析)和SFMEA(软件故障模式影响分析),识别可能的失效模式,完善软件安全性需求及其分析报告;③开展项目策划,编制软件开发计划(SDP)、产品与过程质量保证计划(SQAP)、配置管理计划(SCMP)以及软件测量分析计划和配置项测试计划;④编制需求跟踪矩阵,建立每项需求对软件研制任务书的追踪关系;⑤组织软件需求规格说明和项目策划等各项计划的评审,建立软件分配基线。

2.3 要求准则

软件需求分析应是:①必要可行性:所述需求对完成指定的任务而言是必须的而非可有可无的,且在指定的条件下应使后续的软件设计、实现、测试和维护都是可行的;②非退化性:引入任一需求应不会导致系统性能的退化;③完备性:需求定义应覆盖“软件研制任务书”的全部(功能、性能、质量)要求和设计限制(如:使用覆盖矩阵或交叉引用表);④一致性:各个需求之间不能存在冲突和矛盾,且不能以2种前后矛盾的、不相容的语言或方式陈述同一需求;⑤可追溯性:所有需求均源自“软件研制任务书”且“软件研制任务书”中的所有项目均落实至需求,需求定义应便于后续开发的回溯;⑥可验证性:陈述需求时所用术语应是定量的、能度量的和可测试的,且应尽可能对每一需求都指定验证过程[4]。

3 软件需求分析的地位作用

良好的软件需求分析不仅要确定关键功能/性能需求,还需确定关键质量特性需求。美国质量管理协会(ASQC)将“质量”解释为“产品或服务内在特性与外在特性的总和,以此构成其满足给定需求的能力”[5]。GJB5326-2004《军用软件质量度量》对于质量的定义是“实体特性的总和,表示实体满足明确或隐含要求的能力”。据此推断,软件需求与软件质量的关系分为3个层面理解:①软件质量是各种特性的复杂组合,用以满足用户明示的、隐含的或必须履行的需求和期望,即与软件需求相吻合;②软件质量可以通过测量内部质量特性或外部质量特性或使用质量特性进行评价;③软件需求逐层演进、细化融合为软件质量评价准则,质量需求。软件需求、质量需求和质量度量三者关系如图1所示。

图1 软件需求、质量需求和质量度量三者关系图

在软件需求分析中,用户质量要求映射为系统行为,并通过软件需求规格说明描述了外部质量需求;在软件设计与开发中,外部质量需求映射为软件特性,并通过软件设计与编码描述了内部质量需求。软件内部质量是基于内部视角的质量特性总体,通过代码实现、单元或集成测试和评审表示软件质量;软件外部质量是基于外部视角的质量特性总体,通过模拟环境中的合格性测试表示软件质量;软件使用质量是基于用户视角的、用于指定环境或使用周境的质量特性总体,通过用户在特定环境中使用产品时能感受的满意程度表示软件质量。

软件质量特性的功能性、可靠性、易用性、效率、维护性、可移植性及其分解演化出的27个质量子特性用于度量软件内部和外部质量;软件质量特性的有效性、生产率、安全性和满意度用于度量软件使用质量。

软件内部质量验证内部质量需求,并指示了软件外部质量;软件外部质量确认外部质量需求,并指示了软件使用质量;软件使用质量证实/反馈用户质量要求,并指示了用户对使用软件的感受,即用户对软件需求的满意程度。

软件需求分析是实施软件全方位质量管理的重要方面。在软件需求、质量需求(要求)、质量度量和用户满意度之间形成控制闭环态势下,软件需求分析在软件质量逐层累积、修正改进和聚合优化的进程中占据主导地位并与软件质量形成内在统一体。

4 软件需求分析的问题现状

影响软件需求的主要因素是用户担负的使命任务对装备系统需求及其变化。当前的软件需求分析工作中普遍存在的倾向是,软件工程组缺乏对用户需求准确和透彻的理解,甚至对于基本的系统构成原理和性能指标概念只停留于模糊的认知,致使“系统需求”难以被完全量化和合理分配至“软件需求”之中,从而出现了“系统需求”与“软件需求”之间的正逆向追踪脱节甚至错位。主要原因有3个:

①用户的主导地位未充分体现:造成开发人员与用户之间难以达成对需求的共同研究与理解,开发人员偏重于从技术层面考虑问题,缺乏对用户及其工作的实地感知与全面分析,导致对复杂装备系统的任务流程、所属软件系统必备的功能/性能缺乏深刻的掌控,无法进行清晰而细致的需求分解与实时而缜密的需求跟踪;

②需求的层次性未精确定位:软件工程过程的特质决定了对系统需求是分层提取融合的(从用户需求、软件需求、设计需求和代码需求逐层细化分解),即必须在建立软件需求“原型”的基础上经过“多次迭代开发”才能渗透用户需求,系统工程组寄希望于在软件立项、总体方案阶段把用户的需求搞清楚和吃透彻的做法往往事与愿违,导致整理提供的需求报告显得宏观有余且微观不足;

③“轻需求、重设计”的意识未彻底纠正:即使是在具有较高承研资质和深厚底蕴的科研院所,仍然有部分设计人员为压缩软件开发周期和降低软件研制成本,以面向程序代替面向用户的做法忽视和弱化了需求分析[6],导致用户与设计人员之间形成了需求紊乱和构想偏差,无法为后续的软件设计、实现、测试以及软件定型工作提供经过验证与确认程序的输入依据。

图2 基于软件需求开发的闭环管理模型

著名航天软件专家Nancy Leveson总结软件在航天任务事故中的作用时曾言:“几乎与软件相关的航空航天事故都与软件需求缺陷以及对软件需求的错误理解有关[7]。”软件需求分析是实施软件开发过程工程化的关键首步,任何需求增量的出现和变化必然引起软件架构设计的频繁更改、软件技术状态的不断演进和反复迭代,亟需软件工程组、软件承研单位和用户予以高度重视。动”,必须制定清晰的规则用以指明接收需求的合适渠道或正式来源,并密切会同用户及其代表、行业专家进行任务开发、分析、捕获和修订,确保对需求的含义达成共识;“需求承诺”在获取了一致性的需求后由软件项目组内部达成,确保项目参与者对经批准的需求完成兑现,以及在需求计划、活动和更改过程中做出承诺;“需求更改”是基于已有的需求、设计或实现的更改进行的,并用于有效地分析更改的影响、清晰地记录更改的来源和理由;需求跟踪和“标识不一致性”是建立、维护和纠正从源需求至低层需求的双向可追溯性过程,用以确定所有处理过的源需求和保证所有的底层需求(产品和产品部件需求)能够被追溯至有效的来源。

(2)需求管理的分类实施

对于探索性预研类装备,初始阶段缺乏完整意义上的软件需求,其需求理解的过程即是需求不断完善的过程,所以管理的重点是需求的全面理解及关键技术攻关,不强调对需求更改进行严格控制;对于型号研制类(包括初样研制和正样研制)装备,初样研制类装备以需求理解和需求承诺为主,并在需求逐级细化时严格控制过程更改,正样研制类装备则以控制需求更改为主;对于定型类(主要面向设计定型)装备,重点强调软件的稳定性和一致性,必须严格需求更改和配置库控制。

5 软件需求分析的关注层面

5.2 不断完善软件的验证与确认

大型复杂装备软件需求分析交叉并约束于软件工程化管理多个工作剖面,着力完善并加强与之相关链接的过程控制和质量管理尤为必要。

5.1 全面落实软件需求管理

用户的高满意度以及与系统需求较好的吻合程度,是开展软件需求管理的最高宗旨。在GJB5000A-2008《军用软件研制能力成熟度模型》中,以“需求开发”为作用对象的“需求管理”过程域由5个专用实践进行描述[8]。据此可建立基于软件需求开发的闭环管理模型,如图2所示。

(1)需求管理的专用实践

“需求理解”是需求开发的初始来源,为了避免需求“蠕

大型复杂装备研制的技术特点和管理经验统计表明:在研制周期的每个阶段必须对相应的软件产品进行评审确认,在软件研制周期的测试阶段必须对各个阶段的产品进行测试验证[9]。据此在需求分析阶段软件的验证与确认工作有:加强测试需求分析、加强评审确认和测试验证。

(1)加强测试需求分析

分解测试类型(软件测试类型包括:文档审查、代码审查、静态分析、功能测试、性能测试、接口测试,以及强度、压力、余量、边界和可靠性测试等),结合被测软件需求规格说明,对每个测试类型的状态、接口、数据结构和设计约束等提出测试要求;确定测试项,将每个测试类型中包含的测试项以及测试项的充分性要求,作为测试用例设计的依据并同时明确测试项的测试终止条件;测试项追踪,建立测试需求规格说明与被测软件需求规格说明之间的追溯关系,确保前者包含的测试项覆盖后者的所有规定;输出软件测试需求规格说明、软件测评大纲和软件合格性测试计划。

(2)加强评审确认和测试验证

评审确认的重点工作是,对于一般等级的软件,由项目管理者、系统分析师和软件测试管理者以同行评审的方式,确认构造的软件需求是否正确地满足预期的使用环境;对于关键和重要等级的软件,还需要以外部评审的方式,由型号总体、软件工程组、软件专家和用户及其代表等人员联合对软件测试需求、软件测评大纲(含合格性初步测试计划、测试用例)的完整性、准确性、一致性、符合性、规范性、可验证性和可追踪性进行评估,对配置管理和质量保证工作执行情况进行审查。测试验证的主要工作是,针对需求分层细化的特性,将目标性需求、要素分解性需求、业务流程性需求和操作性需求的所属过程阶段精确定标,在反复进行软件测试需求收集、定义、记录和演进的同时,运用人工、结构化、形式化以及仿真模型等方法和工具实施综合检测,验证是否正确地构造了满足预期使用环境的软件需求。

5.3 高度重视软件的非功能性需求

软件的非功能性需求包括性能需求(如软件的执行速度、响应时间和恢复时间等)、接口需求和属性需求(如可靠性、安全性、可维护性和可移植性等)。在描述软件性能需求时,确保需求量化的同时要避免将系统的性能指标等同并嫁接于软件本身。在确定软件可靠性需求时,应依托软件错误报告、分析与纠正措施系统(SFRACAS)制定和实施可靠性数据收集、储存、分析和处理规程,结合项目开发计划阶段作出的可靠性预计进一步细化形成可靠性需求,建立具体的可靠性指标并制定操作性较强的可靠性测试计划。在分析软件安全性需求时,应审查系统级的软件需求、接口文档和正在进行的软件需求规格说明编制工作,便于:①标识安全性关键的软件需求;②确保高级安全性需求分解的正确性和完备性;③灵活运用安全需求流向分析、时间与吞吐量及空间分析、基于功能的SFTA、SFMEA等方法开展软件需求安全分析[10];④为设计和测试过程提供与安全性有关的建议。

6 结束语

大型复杂装备软件需求分析工作是用户完善装备科研生产监督控制链中的特别关注科目,是开展承研资质评定与产品质量审核的必然联结点。随着GJB9001B全面推广与GJB5000A-2008实践绩效的趋同融合,基于软件需求分析面向破解软件增量式开发的综合保障瓶颈、拓展装备定型测评指标的标准化覆盖和支撑装备常态化运用的可靠性评估等方面细化推进,为深入实施信息系统的可恢复性经济分析和有效履行装备审价提供了项目级的控制策略。近年来的工程技术经验、风险特性管理以及用户态势反馈表明:软件需求即工程质量需求,质量需求即战斗力需求。

[1]李学仁.军用软件质量管理学[M].北京:国防工业出版社, 2012,27.

[2]陈亨轩,黄河.提高军用软件可靠性的方法与策略[J].科技研究,2012,28(3):39-40.

[3]胡斌.军用软件工程与实践[M].北京:军事科学出版社, 2014.

[4]GJB5324-2004,军用软件验证与确认[S].

[5]宋昕.目前军用软件研制过程中存在的问题及对策[J].情报指挥控制系统与仿真技术,2003(9):47-51.

[6]谢越伟.软件需求工程中用户的地位与作用研究[J].军事运筹与系统工程,2004(1):57-62.

[7]吴清才,郑琪,王首一.军用软件的工程研制与管理[M].北京:国防工业出版社,2013,43.

[8]GJB5000A-2008,军用软件研制能力成熟度模型[S].

[9]霍霄华,刘瑜.面向软件研制工程化管理的新型软件测试模型[J].通信导航与指挥自动化,2013(4):47-52.

[10]GJB/Z142-2004,军用软件安全性分析指南[S].

Analysis and Research on software Requirements of Large-scale and Complex Equipment

WANG Wen-ji,ZHAO Pi-fu,LI Wei,LV Jin-lai
(Military Representative Office of PLA Air Force Stationed in Shijiazhuang Region,Shijiazhuang Hebei 050081,China)

The software requirement analysis is the important direction and critical step in software engineering management,and so it is an indispensable work in the development of large-scale and complex equipment.Based on main framework of software requirement analysis,this paper introduces the significance of requirement analysis from overall quality management of software,and analyzes the present status of requirement analysis from engineering implement of software development process.The three aspects to be mastered in performing software requirement analysis are discussed.

software requirement analysis;software quality;requirement management;verification&validation;non-functional requirement

TP311

A

1008-1739(2015)23-72-4

定稿日期:2015-11-12

猜你喜欢

研制装备软件
好装备这样造
港警新装备
禅宗软件
防晒装备折起来
软件对对碰
一种轻型手摇绞磨的研制及应用
接地线通用接地端的研制
二代证高速电写入机的研制
谈软件的破解与保护
137Cs稳谱源的研制