软件过程建模方法研究

更新时间:2023-08-15 23:42:01 阅读量: 教学研究 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ISSN 1000-9825, CODEN RUXUEW E-mail: jos@

Journal of Software, Vol.20, No.3, March 2009, pp.524 545 doi: 10.3724/SP.J.1001.2009.03432 Tel/Fax: +86-10-62562563

© by Institute of Software, the Chinese Academy of Sciences. All rights reserved.

软件过程建模方法研究

李明树1,2+, 杨秋松1,3, 翟 健1,3

1

2

3 (中国科学院 软件研究所 互联网软件技术实验室,北京 100190) (中国科学院 软件研究所 计算机科学国家重点实验室,北京 100190) (中国科学院 研究生院,北京 100049)

Systematic Review of Software Process Modeling and Analysis

LI Ming-Shu1,2+, YANG Qiu-Song1,3, ZHAI Jian1,3

1

2

3(Laboratory for Internet Software Technologies, Institute of Software, The Chinese Academy of Sciences, Beijing 100190, China) (State Key Laboratory of Computer Science, Institute of Software, The Chinese Academy of Sciences, Beijing 100190, China) (Graduate University, The Chinese Academy of Sciences, Beijing 100049, China)

+ Corresponding author: E-mail: mingshu@

Li MS, Yang QS, Zhai J. Systematic review of software process modeling and analysis. Journal of Software,

2009,20(3):524 545. /1000-9825/3432.htm

Abstract: Nowadays it has been widely accepted that the quality of software highly depends on the process that is

carried out in an organization. As part of the effort to support software process engineering activities, the research

on software process modeling and analysis is to provide an effective means to represent and analyze a process and,

by doing so, to enhance the understanding of the modeled process. In addition, an enactable process model can

provide a direct guidance for the actual development process. Thus, the enforcement of the process model can

directly contribute to the improvement of the software quality. In this paper, a systematic review is carried out to

survey the recent development in software process modeling. 72 papers from 20 conference proceedings and 7

journals are identified as the evidence. The review aims to promote a better understanding of the literature by

answering the following three questions: 1) What kinds of paradigms are existing methods based on? 2) What kinds

of purposes does the existing research have? 3) What kinds of new trends are reflected in the current research? After

providing the systematic review, we present our software process modeling method based on a multi-dimensional

and integration methodology that is intended to address several core issues facing the community.

Key words: software process; modeling; analysis; systematic review

摘 要: 通过软件开发实践,人们逐步地认识到软件产品的质量在很大程度上依赖于产品开发时所使用的过

程.软件过程建模是通过特定的方法对软件过程进行抽象、表示和分析以增加对软件过程的理解,同时,可执行

的(enactable)软件过程模型可以直接指导实际软件开发活动,进而规范软件开发行为并最终提高软件质量.为了

Supported by the National Natural Science Foundation of China under Grant Nos.60573082, 90718042 (国家自然科学基金); the

National High-Tech Research and Development Plan of China under Grant Nos.2006AA01Z185, 2007AA010303 (国家高技术研究发展

计划(863)), the National Basic Research Program of China under Grant No.2007CB310802 (国家重点基础研究发展计划(973)) Received 2008-04-03; Accepted 2008-07-09

李明树 等:软件过程建模方法研究 525

系统地了解软件过程建模方法研究的现状和最新进展,采用系统评价(systematic review)方法对该领域最近10年的主要研究进行了概括和分析.从一系列的相关研究中,选出来自20个会议和7种期刊的72篇文献,作为系统评价的依据.该系统评价回答了如下关于软件过程建模方法的3个问题,以便从总体上概括和把握该领域的研究:1) 软件过程建模方法主要基于什么范式;2) 软件过程建模方法研究的主要目的集中在哪些方面;3) 软件过程建模方法的研究有哪些新的趋势.同时,在仔细回顾和分析软件过程建模领域研究现状的基础上,给出了一种多维度的集成化软件过程建模方法.该方法有助于解决过程建模领域所面临的主要问题.

关键词: 软件过程;建模;分析;系统评价

中图法分类号: TP301 文献标识码: A

软件过程(software process)是指用于开发和维护软件产品的一系列有序活动,而每个活动的属性包括相关的制品(artifact)、资源(人或者其他资源)、组织结构和约束[1].通过软件开发实践,人们逐步地认识到软件产品的质量在很大程度上依赖于产品开发时所使用的过程[2,3],即生产高质量的软件需要有一个高质量的软件过程.由于影响软件开发的各种因素,比如商业环境、开发技术以及开发人员,总是在持续不断地变化,因此一个高质量的软件过程也必须是一个持续不断改进的过程[4],而软件过程改进也构成了软件过程管理活动的核心.

为了支持软件过程的改进,研究者们提出了过程改进的不同周期模型,其中,Dion[5]提出了一个非常典型的三阶段过程改进模型,用于指导具体的过程改进活动.如图1所示,过程制定(process stabilization)是该周期模型的第一个阶段.在该阶段将描述所要执行的过程,并通过特定的方式发布过程的文档,同时确保所发布的过程在整个组织内得到执行;在随后的过程控制(process control)阶段,通过相应的工具支持项目数据的收集,在这些数据的基础上决定如何控制过程的执行;在最后的过程变更(process change)阶段,根据度量和分析的结果决定从哪些方面改进所执行的过程,在实施新的过程之前可能在小范围内进行实验和确认.此时,软件过程改进活动完成了一个周期,而后进入下一个改进周期.与此相类似,Humphrey指出软件过程改进活动包含如下3个方面[4]:过程定义(process definition),需要明确地定义所要执行和改进的过程,包括清楚地定义过程内所有的活动、活动执行顺序以及活动的出口标准等;过程使用(process use),通过使用所定义的过程,在过程执行中发现一些改进机会;数据收集和分析(data collection and analysis),通过收集和分析过程执行时的数据,确定软件过程中的问题并决定如何进行改进.其他过程改进周期模型包括PDCA(Plan/Do/Check/Act)和QIP(quality improvement paradigm)以及描述了更多组织层次内容的模型IDEAL和ISO 15504-7等[6].

Fig.1 A typical software process improvement lifecycle model[5]

图1 一个典型的软件过程改进生命周期模型[5]

从软件过程改进的周期模型可以看出,软件过程改进覆盖了从过程定义、执行、分析到过程变更(或者演

526 Journal of Software 软件学报 Vol.20, No.3, March 2009

化,evolution)的一系列过程管理活动,因此,Kinnula[6]直接称软件过程改进为软件过程工程(software process engineering).对于软件过程改进的研究,主要分为两类[7].第1类是软件工业界所关注的、以能力成熟度集成模型(capability maturity model integration,简称CMMI[3])为代表的软件过程评估(assessment)和改进模型,这些模型主要用于评估一个开发组织的能力级别或者成熟度级别,同时为开发组织提供一个可遵循的过程改进途径.第2类是研究界所关注的软件过程建模(software process modeling),它主要是通过特定的方法对软件过程进行抽象、表示和分析以增加对软件过程的理解,并通过直接或者间接的方式指导实际的软件开发活动.与软件过程评估和改进模型不同,软件过程建模主要是为具体的过程改进活动提供方法和工具上的支持,覆盖了包括定义、执行、分析和变更在内的整个过程改进生命周期.

软件过程建模方法的研究主要是围绕着过程建模语言和以过程为中心的软件工程环境(process-centered software engineering environment,简称PSEE)[7]展开的.一种建模方法所具备的描述、分析、执行和演化的能力主要依赖于所使用的建模语言,而PSEE决定了一种建模方法对实际开发活动所能提供的支持;PSEE和过程建模语言往往是密不可分的,每个PSEE具有相关联的一种或者几种建模语言,而一种建模语言需要在相应的PSEE中被解释和执行.PSEE的出现可以追溯到20世纪70年代,主要是通过数据流集成的方式,将一些原本孤立的开发工具组合在一起,比如需求分析工具的输出作为设计工具的输入、设计工具的输出作为代码生成工具的输入等等,而真正将软件过程作为一个实体进行支持的PSEE,则是在20世纪80年代后开始出现[8].在90年代前后,特别是基于软件过程也是软件(software processes are software too)[9,10]的思想提出后,研究者们提出了多种PSEE和软件过程建模语言[7,8,11 13].

上述的建模方法一般是在软件建模和分析方法的基础上,针对软件过程建模的需要,作适当的改进而提出来的.但在研究过程中,人们逐渐认识到现有的方法在实际应用中存在着如下两个主要问题:a) 实际软件开发过程涉及很多要素,而软件过程模型作为实际软件开发过程的抽象,一般只描述了过程的某些方面.另外,由于开发人员所具有的主观性、软件开发活动所具有的创造性以及实际软件开发过程在执行中将会随着项目的进展或者外部组织环境的变化而不断变化,使得实际软件开发活动很少可以严格按照在PSEE中实例化的软件过程模型执行.因此,所构造的软件过程模型往往是随着开发的进行而不断与实际软件开发活动相偏离,从而逐渐失去了对实际软件开发活动的指导和规范意义[14].b) 在PSEE和建模语言的设计过程中,人们需要权衡相互矛盾的需求[15].比如,为使不具有太多工程背景的涉众(stakeholder)也能很好地理解软件过程,需要建模语言的表现形式较易于理解:一般需要图形化支持且不需要涉及太多的细节;而软件过程的执行和分析需要建模语言能够描述必要的细节:一般需要具有明确的操作语义,而且最好采用形式化的方法.如何能够满足这些相互矛盾的需求,是软件过程建模语言和PSEE设计中需要仔细权衡的问题,同时也是软件过程建模方法研究所一直面对的课题.

近年来,软件过程建模领域的研究人员针对上述问题作了很多有益的探索,主要的研究热点包括支持过程演化(process evolution)、偏离容忍(deviation tolerance)的PSEE、软件过程的验证和分析(主要包括过程模型的语法检查、语义正确性分析、匹配和仿真),以及集成的软件过程模型等.同时,对于分布式和全球协同环境下的软件过程建模和软件过程建模技术在企业的应用、实施也积累了一些经验.为了概括这一领域的最新进展,本文采用系统评价方法对该领域最近10年发表的论文进行了搜集、整理、概括和分析,期望可以有助于了解该领域所关注的主要研究问题以及所取得的进展,并对今后的研究具有借鉴和启发意义.

本文第1节介绍软件过程建模的基本内容.第2节介绍系统评价方法及其在软件过程和软件工程中的应用,并详细介绍本文所使用的系统评价过程.第3节给出软件过程建模方法的系统评价结果和相应的分析.第4节给出一种多维度的集成化软件过程建模方法.第5节是本文的结论.

1 软件过程建模

软件过程建模的主要目的是建立软件过程的抽象模型,通过对该抽象模型的分析增加对过程本身的理解和认识,从而可以更好地实施软件开发活动.对于同一个软件过程,所建立的抽象模型与建模方法、建模目的密

李明树 等:软件过程建模方法研究 527

切相关.比如,对于支持控制流描述的建模语言,其相应的模型将会以过程中的一系列开发活动作为主线;而如果一个建模语言主要通过制品间的转换关系和出入口标准来描述一个软件过程,则相应的模型更主要的是描述开发活动中的制品.就建模目的而言,如果建模只是为了增加对过程的理解,所建立的模型只需比较高的抽象层次上对软件过程进行描述;而为了支持后续的软件过程执行或者更为详尽的分析,则需要过程模型包含必要的细节.一般认为,一个软件过程模型需要描述图2中所包含的元素及其相互间的关系[2].而建立抽象过程模型并不是软件过程建模的终点,在抽象模型的基础上,我们可以进行一系列的分析:软件过程模型一致性、正确性的检测,可以保证模型符合我们的预期;通过软件过程仿真,可以预测过程的性能或者分析不同的实施策略对整个过程的影响;通过比较两个过程模型之间的一致性,可以判断项目的实施过程是否与组织的标准过程相一致等.同时,对于软件过程模型更新策略和方法的研究,可以支持过程模型的灵活更新,以适应组织内部和外部环境的不断变化;对软件过程模型执行的研究,可以支持对实际软件开发活动的直接指导.软件过程建模研究的另外一项任务,是为上述的软件过程工程活动提供工具支持,特别是PSEE.

Fig.2 Basic information of a process model[11]

图2 软件过程模型的基本内容[11]

软件过程建模影响实际开发活动的方式,即采用什么样的方式将这些过程技术引入到一个组织的实际管理、支持和工程活动中去,主要有两种.第1种方式是采用指南或者参考手册的形式.对于所要实施的软件过程,首先通过某种语言对其进行描述,制作成指南或者参考手册并分发给项目成员.项目成员在执行具体的开发任务时,将根据对指南的理解,以自认为正确、合理的方式完成指定的任务.这种方式的缺点是过分依赖于项目成员自己的理解、自觉和职业道德,所定义的过程模型对于实际开发活动并不存在很强的约束能力.因此,在实际应用过程中,众多软件开发组织投入了很多的人力和物力来定义过程文档,但其并没有发挥所期望的作用,而是被束之高阁.第2种方式是通过PSEE支持实际开发活动.在PSEE的支持下,软件过程工程活动可以划分为如下3个领域[14]:过程模型(process model)、虚拟过程执行(process enactment)和实际过程执行(process performance).这3个领域分别定义为:

本文来源:https://www.bwwdw.com/article/ihoj.html

Top