一种软件工程管理模型研究

2016-10-28 03:14钟红恩吕从民
计算机测量与控制 2016年7期
关键词:软件测试子系统管理工作

陶 新,钟红恩,吕从民

(中国科学院空间应用工程与技术中心,北京 100094)

一种软件工程管理模型研究

陶 新,钟红恩,吕从民

(中国科学院空间应用工程与技术中心,北京 100094)

软件作为一种逻辑实体,具有难以度量、易出错、必须维护和成本昂贵等显著的特点;在规定的时间和预算内开发出符合质量要求的软件是一件非常困难的事情;经过国内外40多年来的研究与分析,发现产生这一问题的关键原因在于对软件过程的管理不尽如人意;为了提高软件工程管理的水平,国内外工程界尝试过很多的方法和手段,比如:制定并实施软件工程标准和规范、使用工具提高软件生产率和质量、通过软件评测促进工程化水平等;虽然GJB 5000A标准从理论上和体系上对软件工程管理提供了一定的参考,但在实际工程中仍缺乏一套完整、易于实施、体现技术管理特点的软件工程管理模型作为一个项目管理的指导;因此,为了应对上述问题,解决工程实际中的困难,文中面向软件工程项目管理的需要,提出一种的分层次、全周期、多角度的软件工程管理模型,并通过一个项目实例进行分析和验证;最后,文中将对软件工程管理研究的发展趋势进行展望。

软件工程管理模型;管理层次;管理周期;管理角度

0 引言

作为一种逻辑实体,软件具有抽象性、严密性、一次性、智力性、持久性、依赖性、复杂性,难以度量、易出错、必须维护和成本昂贵等显著的特点[1-2]。由于软件的上述特点,因而对国内外许多组织来说,在规定的时间和预算内开发出符合质量要求的软件是一件非常困难的事情[3]。

40多年来,人们试图采用新的方法和技术来解决上述问题,但结果却无法令人满意。这种现象促使人们进一步考察软件过程,从而发现,问题的关键在于对软件过程的管理不尽如人意[3]。因此,为了有效管理软件开发、测试、维护等过程,软件工程管理逐渐成为一个独立的研究方向。

软件工程管理是为了完成一个项目的需求和目的,将相应的知识、技术、工具以及技巧运用到该项目具体事务中的工作[4]。在工程实践中,为了提高软件工程管理的水平,国内外尝试过很多的方法和手段,比如:制定并实施软件工程标准和规范[5-9]、使用工具提高软件生产率和质量[10-12]、通过软件评测促进工程化水平[13-14]等。

虽然GJB 5000A标准[5]从理论上和体系上对软件工程管理提供了一定的参考,工程界也提出了一些软件工程管理的方法和研究成果[15-20],但在实际工程中仍缺乏一套完整、易于实施、体现技术管理特点的软件工程管理模型作为一个软件项目管理的指导。

因此,为了应对上述问题,解决工程实际中的困难,文中面向软件工程项目管理的需要,提出一种的分层次、全周期、多角度的软件工程管理模型,并通过一个项目实例进行分析和验证。最后,文中将对软件工程管理研究的发展趋势进行展望。

1 软件工程管理模型

为了提高软件工程项目管理的水平,解决软件工程管理中面临的困难,本章面向软件工程项目管理的需要,提出一种的分层次、全周期、多角度的软件工程管理模型。

如图1所示,本模型包括3个方面的内容:管理层次、管理周期、管理角度。各方面的具体管理工作如下:

1)模型的管理层次包括:系统层软件管理、子系统层软件管理、配置项层软件管理。

2)模型的管理周期包括:系统分析与设计管理、软件需求管理、软件设计管理、软件实现管理、软件测试管理、软件验收管理、软件维护管理。

3)模型的管理角度包括:流程管理、成本管理、进度管理、质量管理、配置管理。

图1 软件工程管理模型

从本质上看,本软件工程管理模型的3个方面实际上对应于3个维度的管理要素,即:管理层次维度、管理周期维度、管理角度维度。换言之,如果将图1的软件工程管理模型放到三维坐标系下进行描述,那么3个维度的管理共同组成了一个立体的软件工程管理体系模型,如图2所示。

图2 立体的软件工程管理体系

如图2所示,模型中的3个维度均存在一定的联系。在各管理层次中,均应与各管理周期和各管理角度相结合。以配置项层软件管理为例,需开展系统分析与设计管理、需求管理、设计管理等全部管理周期的相关工作;同时应覆盖流程管理、成本管理、进度管理等全部管理角度的工作。

下面具体介绍本模型中各方面的管理内容。

1.1 管理层次

管理层次指的是根据软件级别的大小分别开展相关的管理工作。本模型的管理层次包括:系统层软件管理、子系统层软件管理、配置项层软件管理。在各层次管理之中,软件工程管理应注意管理流程前后关系的连贯性和统一性。在各层次管理之间,应注重系统层软件管理与分系统层软件管理、配置项层软件管理的正确性、合理性、关联性、一致性。

1.1.1 系统层软件管理

系统层软件管理对应于系统级软件的管理。对于规模庞大、系统复杂、功能繁多的软件而言,系统层软件管理对提高管理效率、保证软件质量起着极其关键的作用。在系统层软件管理中,系统需求分析管理、子系统划分管理、子系统研制管理、子系统集成管理是管理工作的主要环节。

1)系统需求分析管理:

系统需求分析管理是管理工作的重中之重。系统需求分析的合理性、准确性、一致性对于整个软件项目的成败至关重要。因此,系统需求分析管理工作应与管理周期中的系统分析与设计的具体要求相结合,加强对软件系统需求的管理,对系统任务分析、软硬件功能分配、软件任务分析、软件工作模式设计、信息流设计、软件系统运行设计、软件系统危险分析、软件系统测试设计等内容进行控制和管理,从技术上和管理上严格把控好系统需求产生的各个环节。

以软件系统危险分析为例,系统需求分析管理工作应结合系统任务信息、软硬件功能分配、系统运行环境特点、系统危险历史数据等内容,运用初步危险分析(PHA)和软件故障树分析(SFTA)等支撑技术,识别系统危险列表,明确各危险的危害等级,提出危险控制措施,并将措施落实到软硬件需求中,同时在子系统层软件管理工作中进一步追踪和实施。

2)子系统划分管理:

子系统划分管理是下一层次软件管理的基础和依据。因此,子系统划分管理工作应在技术上把关,并结合硬件特点、运行环境、软件功能组成等信息,对子系统划分的过程、划分结果的合理性、接口协议的一致性进行控制,确保子系统划分的合理性和一致性。

3)子系统研制管理:

子系统研制管理是比系统层软件管理低一个层次的内容,将在1.1.2节“子系统层软件管理”中进一步展开论述。

4)子系统集成管理:

子系统集成管理是保证系统顺利交付的最后一环。在各子系统正确完成相应功能的基础上,各子系统之间接口实现的准确性、符合性是管理工作的要点。此外,子系统集成管理还应结合管理周期中的软件验收和维护要求,确保软件验收和维护工作的顺利开展。

1.1.2 子系统层软件管理

子系统层软件管理对应于子系统级软件的管理。对于由多个子系统共同组成的软件系统而言,子系统层软件管理起着承上启下的作用。在子系统层软件管理中,子系统需求分析管理、配置项划分管理、配置项研制管理、配置项集成管理是管理工作的主要环节。

1)子系统需求分析管理:

子系统需求分析管理是管理工作的关键。子系统需求分析的合理性、准确性、一致性对于整个子系统的研制至关重要。因此,子系统需求分析管理工作应与管理周期中的系统分析与设计的具体要求相结合,加强对软件子系统需求的管理,对软件子系统危险分析、软件关键等级分析、软件子系统测试设计、配置项间接口需求分析与设计等内容进行控制和管理,从技术上和管理上严格把控好子系统需求产生的各个环节。

以软件关键等级分析为例,子系统层软件管理工作应根据软件系统危险分析、软件子系统危险分析的结果,使用软件失效模式及影响分析(SFMEA)和软件故障树分析(SFTA)等支撑技术,建立系统和子系统危险列表与软件的对应关系,分析软件失效模式和失效影响,确定软件关键等级,作为下一步软件分级管理的依据。

2)配置项划分管理:

配置项划分管理是下一层次软件管理的基础和依据。因此,配置项划分管理工作应在技术上把关,并结合硬件特点、运行环境、软件功能组成等信息,对配置项划分的过程、划分结果的合理性、接口协议的一致性进行控制,确保配置项划分的合理性和一致性。

3)配置项研制管理:

配置项研制管理是比子系统层软件管理低一个层次的内容,将在2.1.3节“配置项层软件管理”中进一步展开论述。

4)配置项集成管理:

配置项集成管理是保证子系统顺利交付的最后一环。在各配置项正确完成相应功能的基础上,各配置项之间接口实现的准确性、符合性是管理工作的要点。此外,配置项集成管理还应结合管理周期中的软件验收和维护要求,确保软件验收和维护工作的顺利开展。

1.1.3 配置项层软件管理

配置项层软件管理对应于配置项级软件的管理。对于由多个配置项共同组成的软件子系统而言,配置项层软件管理起着基础性作用。在配置项层软件管理中,配置项需求分析管理、部件(单元)划分管理、部件(单元)研制管理、部件(单元)集成管理是管理工作的主要环节。

1)配置项需求分析管理:

配置项需求分析管理是管理工作的重点。配置项需求分析的合理性、准确性、一致性对于整个配置项的研制至关重要。因此,配置项需求分析管理工作应与管理周期中的软件需求管理的具体要求相结合,依据软件关键等级开展分级管理,加强对软件配置项需求的管理,对需求的来源、需求分析过程、需求分析结果、需求的变更、需求版本的控制等内容进行控制和管理,从技术上和管理上严格把控好配置项需求产生的各个环节。

以需求变更为例,配置项层软件管理工作应对需求变更的原因、措施和影响等进行控制与管理,在技术手段上采取双向追溯控制的方法,从系统层追踪到配置项层,明确系统任务和子系统任务对配置项层需求变更的要求;再从配置项层追踪到系统层,分析配置项层需求变更对配置项间接口的影响和系统任务的影响。

2)部件(单元)划分管理:

部件(单元)划分管理是下一层次软件管理的基础和依据。因此,部件(单元)划分管理工作应在技术上把关,并结合硬件特点、运行环境、软件功能组成等信息,对部件(单元)划分的过程、划分结果的合理性、接口的一致性进行控制,确保部件(单元)划分的合理性和一致性。

3)部件(单元)研制管理:

部件(单元)研制管理是比配置项层软件管理低一个层次的内容。部件(单元)研制管理应与管理周期中的软件设计管理、软件实现管理、软件测试管理相结合,保证软件质量,确保软件研制的顺利进行。

4)部件(单元)集成管理:

部件(单元)集成管理是保证配置项顺利交付的最后一环。在各部件(单元)正确完成相应功能的基础上,各部件(单元)之间接口实现的准确性、符合性是管理工作的要点。此外,部件(单元)集成管理还应结合管理周期中的软件验收和维护要求,确保软件验收和维护工作的顺利开展。

1.2 管理周期

管理周期指的是根据软件全生命周期的不同阶段分别开展相关的管理工作。本模型的管理周期包括:系统分析与设计管理、软件需求管理、软件设计管理、软件实现管理、软件测试管理、软件验收管理、软件维护管理。在软件生命周期的各个阶段管理之中,软件工程管理应注意各阶段研制流程和产品是否符合要求。在软件生命周期的各个阶段管理之间,应注重前面各阶段产品在后一个阶段中的落实情况以及后一个阶段的变更和问题对前面各阶段的影响。

1.2.1 系统分析与设计管理

在软件工程中,系统分析与设计阶段是划分系统和子系统、明确任务和接口的关键阶段。因此,在系统分析与设计管理中,系统和子系统层的需求分析过程和结果、系统工作模式、任务和技术指标、子系统间的接口协议都是管理的关键。

1.2.2 软件需求管理

在软件工程中,软件需求阶段是确定需求的重要阶段,直接影响着软件质量。因此,在软件需求管理中,配置项层的需求分析过程和结果、配置项功能、可靠性和安全性要求、性能指标、配置项间的接口、软件需求对系统分析与设计的覆盖情况、需求变更对系统分析与设计的影响都是管理的重点。

1.2.3 软件设计管理

从某种意义上讲,软件的质量是设计出来的[3]。因此,软件设计管理也是保证软件质量的重要环节。在软件设计管理中,任务调度策略设计、中断设计、重要参数设计、函数调用关系设计、各函数详细设计的完整性、准确性、一致性都是管理要点。此外,概要设计和详细设计的过程和结果、软件设计对需求的覆盖情况也需要加以控制和管理。

1.2.4 软件实现管理

在软件工程中,软件实现阶段也在一定程度上影响着软件质量。因此,软件实现管理的主要任务是对软件代码与详细设计的对应关系、软件代码的版本进行控制与管理。

1.2.5 软件测试管理

软件测试是软件工程中验证软件正确性的主要阶段。因此,软件测试管理的主要工作就是对软件测试策略的制定、软件测试对需求的覆盖情况、软件测试用例的设计和软件测试结果、测试中发现的问题及处理情况进行管理。

1.2.6 软件验收管理

软件验收阶段标志着整个软件生命周期中研制阶段的结束。因此,软件验收管理应面向软件配置项、子系统、系统是否正确满足相关层次需求的要求,对验收阶段各种软件验证工作的过程和结果、验收中发现的问题及处理情况进行管理。

1.2.7 软件维护管理

在软件生命周期中,软件维护阶段体现的是研制阶段之后的使用阶段。因此,软件维护管理应针对系统、子系统、配置项软件使用过程中出现的问题、软件维护过程和结果进行管理。

1.3 管理角度

管理角度指的是根据软件管理的不同侧面开展相关的管理工作。本模型的管理角度包括:流程管理、成本管理、进度管理、质量管理、配置管理。在工程中,软件工程管理应在各层次软件和全生命周期中均开展各个角度的软件管理工作。

1.3.1 流程管理

流程管理指的是针对各层次软件和全生命周期的研制流程所开展的软件工程管理工作。在软件工程管理中,流程管理应与各管理层次和各管理周期相结合,对流程中各关键环节、技术方案决策和疑难问题处理进行技术把关,对各流程阶段的完成情况进行技术把控,体现技术管理的特点。

1.3.2 成本管理

成本管理指的是对整个软件项目耗费的人力、物力、财力进行管理。在软件工程管理中,成本管理应贯穿始终。在各层次软件和全生命周期各阶段,成本管理均应根据计划对人力、物力、财力的使用情况进行管理,同时需分析计划的完成情况,对人力或经费不足等问题应及时发现,及时处理。

1.3.3 进度管理

进度管理指的是对整个项目进度进行管理。在软件工程管理中,时间进度是否得到了有效保证是进度管理的重点。因此,管理中应与流程管理相结合,根据研制计划对软件研制进度情况进行分析,对进度拖延现象应尽早发现,及时采取相应措施。

1.3.4 质量管理

质量管理指的是对软件项目的研制质量进行管理,对保证软件质量起着十分重要的作用。在工程中,进度与质量在通常情况下是矛盾的。因此,进度管理与质量管理同等重要。质量管理应贯穿各层次软件和整个生命周期,对各阶段的研制过程和产品进行管理。一般情况下,质量管理是由质量保证人员负责实施的,同时需要项目管理者负责监督和管理。

1.3.5 配置管理

配置管理指的是对软件项目各阶段的文档、代码等产品进行管理,在一定程度上保证着软件质量。在工程中,各种技术文档和代码均需要进行版本管理和变更控制。一般情况下,配置管理是由配置管理员负责实施的,同时需要项目管理者负责监督和管理。

2 实例应用

本章将以含10个以上的分系统、代码总规模大于10万行的某型号嵌入式软件系统项目为例,在实际工程项目中运用上述模型,给出一个软件工程管理实例。

首先,在管理层次方面,软件工程管理工作针对系统任务需求开展管理,对系统任务分析、软硬件功能分配、软件关键等级分析、配置项需求的来源、需求的变更、需求版本的控制等内容进行管理,对子系统和配置项的划分过程、划分结果的合理性、接口协议的一致性进行控制。根据上述工作的结果,对各子系统和配置项列出完整表格,对工作模式、工作任务、技术指标等信息进行管理。以某实验子系统为例,结合其系统任务和系统运行环境特点,识别出最严重的软件系统危险为“温度控制范围超界”,据此确定其软件关键等级为B级。该实验子系统信息如表1所示,该子系统相关的实验A控制器软件配置项信息如表2所示。

表1 某实验子系统信息表

表2 实验A控制器软件配置项信息表

在各配置项和子系统研制过程中,软件工程管理工作对这些表格信息进行了分析、整理、保存和更新;在研制完成后,根据这些表格信息对各子系统、配置项之间接口实现的准确性、符合性进行了验证。

同时,在管理周期方面,软件工程管理工作根据软件全生命周期的不同阶段分别开展相关的管理工作,将各阶段研制情况、出现的问题记录下来,并记录前面各阶段产品在后一个阶段中的落实情况以及后一个阶段的变更和问题对前面各阶段的影响,同时通过评审等手段对关键技术环节和流程进行管理。实验A控制器软件配置项需求管理信息如表3所示,在生命周期其他阶段的管理工作方式类似。

表3 实验A控制器软件配置项需求管理表

此外,在管理角度方面,软件工程管理工作根据软件管理的不同侧面开展相关的管理工作,将各管理角度的信息整理成表格,并对其中的问题采取相应的措施。项目的进度管理信息如表4所示,其他角度的管理方式类似。

表4 系统软件进度管理表

综上所述,本章采用上述软件工程管理模型,对某型号软件系统项目进行了实例应用研究,完成了全部管理层次、管理周期和管理角度的软件工程管理工作。根据实际执行情况表明,该系统顺利完成了型号软件任务要求,管理工作成功有效。

3 结论

为了提高软件工程项目管理的水平,解决软件工程管理中面临的困难,文中提出了一套完整、易于实施、体现技术管理特点的软件工程管理模型,并通过一个项目实例进行分析和验证。实例验证表明,该模型以技术为主导,以表格为支撑,分层次、全周期、多角度的开展了软件工程管理工作,体现了在这三个维度上立体管理的优势,保证了型号项目任务的成功完成。

接下来,软件工程管理的研究和实践存在着以下几个发展方向:

1)软件工程管理的层次、周期、角度可以进一步扩充和完善,同时可以根据需要进行适当裁剪,做到及时高效的管理工程项目,保证软件质量。

2)软件工程管理应与技术紧密结合,同时积累各种管理的数据和记录,防止决策和管理时缺乏依据,避免“拍脑袋”式管理的发生。

3)软件工程管理需要将诸多相关标准、规范、指南的要求本地化、实例化,在工程实践中将这些要求落到实处。

综上所述,工程应用中对提高软件工程管理水平的需求十分迫切,需要工程界进一步研究合理高效的管理方法,同时积累工程项目中的宝贵经验,为保证软件工程项目的顺利实施提供帮助。

[1] 石 柱. 软件质量管理[M]. 北京: 航空工业出版社, 2003.

[2] 臧卫东,王 芸. 软件工程管理策略[J]. 文通与计算机, 1995,13(5):72-78.

[3] 石 柱. 航天型号软件工程化十年回顾与展望[J]. 航天控制, 2006,24(4):66-72.

[4] 于克达. 软件工程管理的现状和创新策略[J]. 微计算机信息, 2012,28(5):111-113.

[5] GJB 5000A. 军用软件研制能力成熟度模型[S]. 2008.

[6] GJB 5235. 军用软件配置管理[S]. 2004.

[7] GJB/Z 102. 软件可靠性和安全性设计准则[S]. 1997.

[8] GJB 2786A. 军用软件开发通用要求[S]. 2009.

[9] GJB/Z 141. 军用软件测试指南[S]. 2004.

[10] 段 永. 基于CMM的软件工程管理工具的研究与实现[D]. 成都:成都电子科技大学, 2010,3.

[11] 罗俊伟. 软件需求管理工具的研究与实现[D]. 北京:中国科学院软件研究所, 2003,6.

[12] 许 慧. 基于Rational工具的软件测试管理和测试自动化的分析与研究[D]. 济南:山东大学, 2005.

[13] 单锦辉,姜 瑛,孙 萍. 软件测试研究进展[J]. 北京大学学报(自然科学版). 2005,41(1):134-145.

[14] 冷先刚. 软件测试模型与方法研究[D]. 武汉:武汉理工大学, 2009.

[15] 康 壮. 软件开发项目管理方法研究[D]. 北京:对外经济贸易大学, 2003.

[16] 孙海霞,许厚棣. 基于GJB5000A的军用软件维护流程研究[J]. 计算机测量与控制, 2014,22(10):3445-3447.

[17] 傅 谦,张申生,曹 健. 面向软件工程的工作流管理系统[J]. 上海交通大学学报, 2002,36(9):1351-1354.

[18] 方木云. 动态规划算法在软件工程管理中的应用[J]. 微机发展, 2004,14(1):29-33.

[19] 田 华. 计算机软件工程管理方案初探[J]. 煤炭技术,2011,30(1):233-235.

[20] 王 勇. 软件工程与软件质量管理[D]. 北京:中国科学院计算技术研究所,1997.

A Research of Software Engineering Management Model

Tao Xin, Zhong Hong’en, Lü Congmin

(Technology and Engineering Center for Space Utilization, Chinese Academy of Sciences, Beijing 100094, China)

As a logical object, software has some obvious characteristics. For instance, software is difficult to measure, and it is easy to make mistake. It needs maintenance and costs a lot of money. It is difficult to develop a software product with quality requirements in limited time and cost. According to four decades research in the world, the essential cause of this problem is unsatisfactory management of software processes. In order to heighten the level of software engineering management, there are a lot of methods in engineering, such as implementing software engineering standards and criteria, using tools to assure productivity and quality, utilize test to promote software engineering, and so on. Although GJB 5000A provides several references theoretically and systematically in software engineering management, it is still lack of complete, achievable and technological management models to guide project management in software engineering. Therefore, in order to solve problems above and difficulties in engineering, and satisfy the requirements of projects managements, this paper provides a software engineering management model with differentiating levels, covering whole life-cycle, and considering multi-angle. Besides, this paper also shows a case study in analyzing and verifying. At last, the future research of software engineering management will be discussed in this paper.

software engineering management model; management level; management cycle; management angle

2015-10-21;

2016-01-29。

陶 新(1984-) 女,湖北人,硕士,助理研究员,主要从事软件工程技术、软件安全性与可靠性设计与分析方向的研究。

1671-4598(2016)07-0147-05

10.16526/j.cnki.11-4762/tp.2016.07.039

TP311 文献标识码:A

猜你喜欢
软件测试子系统管理工作
不对中转子系统耦合动力学特性研究
青脆李、脆红李周年管理工作历
建筑施工管理工作探讨
GSM-R基站子系统同步方案研究
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
做好初中班级管理工作的几点思考
驼峰测长设备在线监测子系统的设计与应用
EXCEL和VBA实现软件测试记录管理
软件测试工程化模型及应用研究