完整的软件项目管理流程是怎样的?

发表于:2019-6-25 11:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:软件项目管理    来源:博客园

  一、软件配置管理
  任何软件开发都是迭代过程,也就是说,在设计过程会发现需求说明书中的问题,在实现过程又会暴露出设计中的错误。此外,随着时间推移客户的需求也会或多或少发生变化。因此,在开发软件的过程中,变化(或称为变动)既是必要的,又是不可避免的。但是,变化也很容易失去控制,如果不能适当地控制和管理变化,势必造成混乱并产生许多严重的错误。
  软件配置管理是在软件的整个生命期内管理变化的一组活动。具体地说,这组活动用来:  ①标识变化; ②控制变化; ③确保适当地实现了变化; ④向需要知道这类信息的人报告变化。
  软件配置管理不同于软件维护。维护是在软件交付给用户使用后才发生的,而配置管理是在软件项目启动时就开始,并且一直持续到软件退役后才终止的一组跟踪和控制活动。
  软件配置管理的目标是,使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量。
   1.软件配置
  1.1 软件配置项
  软件过程的输出信息可以分为3类:  ①计算机程序(源代码和可执行程序); ②描述计算机程序的文档(供技术人员或用户使用); ③数据(程序内包含的或在程序外的)。 上述这些项组成了在软件过程中产生的全部信息,我们把它们统称为软件配置,而这些项就是软件配置项。
  随着软件开发过程的进展,软件配置项的数量迅速增加。不幸的是,由于前述的种种原因,软件配置项的内容随时都可能发生变化。为了开发出高质量的软件产品,软件开发人员不仅要努力保证每个软件配置项正确,而且必须保证一个软件的所有配置项是完全一致的。
  可以把软件配置管理看作是应用于整个软件过程的软件质量保证活动,是专门用于管理变化的软件质量保证活动。
  1.2基线
  基线是一个软件配置管理概念,它有助于我们在不严重妨碍合理变化的前提下来控制变化。IEEE把基线定义为: 已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。
  简而言之,基线就是通过了正式复审的软件配置项。在软件配置项变成基线之前,可以迅速而非正式地修改它。一旦建立了基线之后,虽然仍然可以实现变化,但是,必须应用特定的、正式的过程(称为规程)来评估、实现和验证每个变化。
  除了软件配置项之外,许多软件工程组织也把软件工具置于配置管理之下,也就是说,把特定版本的编辑器、编译器和其他CASE工具,作为软件配置的一部分“固定”下来。因为当修改软件配置项时必然要用到这些工具,为防止不同版本的工具产生的结果不同,应该把软件工具也基线化,并且列入到综合的配置管理过程之中。
  2.软件配置管理过程
  软件配置管理是软件质量保证的重要一环,它的主要任务是控制变化,同时也负责各个软件配置项和软件各种版本的标识、软件配置审计以及对软件配置发生的任何变化的报告。
  具体来说,软件配置管理主要有5项任务:  标识、版本控制、变化控制、配置审计和报告。
  2.1 标识软件配置中的对象
  为了控制和管理软件配置项,必须单独命名每个配置项,然后用面向对象方法组织它们。可以标识出两类对象:  基本对象和聚集对象(可以把聚集对象作为代表软件配置完整版本的一种机制)。基本对象是软件工程师在分析、设计、编码或测试过程中创建出来的“文本单元”,例如,需求规格说明的一个段落、一个模块的源程序清单或一组测试用例。聚集对象是基本对象和其他聚集对象的集合。
  每个对象都有一组能惟一地标识它的特征:  名字、描述、资源表和“实现”。其中,对象名是无二义性地标识该对象的一个字符串。
  在设计标识软件对象的模式时,必须认识到对象在整个生命周期中一直都在演化,因此,所设计的标识模式必须能无歧义地标识每个对象的不同版本。
  2.2 版本控制
  版本控制联合使用规程和工具,以管理在软件工程过程中所创建的配置对象的不同版本。借助于版本控制技术,用户能够通过选择适当的版本来指定软件系统的配置。实现这个目标的方法是,把属性和软件的每个版本关联起来,然后通过描述一组所期望的属性来指定和构造所需要的配置。
  上面提到的“属性”,既可以简单到仅是赋给每个配置对象的具体版本号,也可以复杂到是一个布尔变量串,其指明了施加到系统上的功能变化的具体类型。
  非发行版本,只要变化的版本,每一版不能覆盖
  2.3变化控制
  对于大型软件开发项目来说,无控制的变化将迅速导致混乱。变化控制把人的规程和自动工具结合起来,以提供一个控制变化的机制。典型的变化控制过程如下:  接到变化请求之后,首先评估该变化在技术方面的得失、可能产生的副作用、对其他配置对象和系统功能的整体影响以及估算出的修改成本。评估的结果形成“变化报告”,该报告供“变化控制审批者”审阅。所谓变化控制审批者既可以是一个人也可以由一组人组成,其对变化的状态和优先级做最终决策。
  为每个被批准的变化都生成一个“工程变化命令”,其描述将要实现的变化,必须遵守的约束以及复审和审计的标准。把要修改的对象从项目数据库中“提取(check out)”出来【给迁出项目对象加锁,其他人不能修改】,进行修改并应用适当的SQA活动。最后,把修改后的对象“提交(check in)”进数据库【解锁,其他人可以修改】,并用适当的版本控制机制创建该软件的下一个版本。
  “提交”和“提取”过程实现了变化控制的两个主要功能——访问控制和同步控制。访问控制决定哪个软件工程师有权访问和修改一个特定的配置对象,同步控制有助于保证由两名不同的软件工程师完成的并行修改不会相互覆盖。
  在一个软件配置项变成基线之前,仅需应用非正式的变化控制。该配置对象的开发者可以对它进行任何合理的修改(只要修改不会影响到开发者工作范围之外的系统需求)。一旦该对象经过了正式技术复审并获得批准,就创建了一个基线。而一旦一个软件配置项变成了基线,就开始实施项目级的变化控制。现在,为了进行修改开发者必须获得项目管理者的批准(如果变化是“局部的”),如果变化影响到其他软件配置项,还必须得到变化控制审批者的批准。在某些情况下,可以省略正式的变化请求、变化报告和工程变化命令,但是,必须评估每个变化并且跟踪和复审所有变化。
  2.4配置审计
  为了确保适当地实现了所需要的变化,通常从下述两方面采取措施:  ①正式的技术复审; ②软件配置审计。
  正式的技术复审(见13.5.2节)关注被修改后的配置对象的技术正确性。复审者审查该对象以确定它与其他软件配置项的一致性,并检查是否有遗漏或副作用。
  软件配置审计通过评估配置对象的那些通常不在复审过程中考虑的特征(例如,修改时是否遵循了软件工程标准,是否在该配置项中显著地标明了所做的修改,是否注明了修改日期和修改者,是否适当地更新了所有相关的软件配置项,是否遵循了标注变化、记录变化和报告变化的规程),而成为对正式技术复审的补充。
  2.5.状态报告
  书写配置状态报告是软件配置管理的一项任务,它回答下述问题:  ①发生了什么事? ②谁做的这件事?③这件事是什么时候发生的?④它将影响哪些其他事物?
  配置状态变化对大型软件开发项目的成功有重大影响。当大量人员在一起工作时,可能一个人并不知道另一个人在做什么。两名开发人员可能试图按照相互冲突的想法去修改同一个软件配置项;软件工程队伍可能耗费几个人月的工作量根据过时的硬件规格说明开发软件;察觉到所建议的修改有严重副作用的人可能还不知道该项修改正在进行。配置状态报告通过改善所有相关人员之间的通信,帮助消除这些问题。
   二、能力成熟度模型
  美国卡内基梅隆大学软件工程研究所在美国国防部资助下于20世纪80年代末建立的能力成熟度模型(capability maturity model,CMM),是用于评价软件机构的软件过程能力成熟度的模型。最初,建立此模型的目的主要是,为大型软件项目的招投标活动提供一种全面而客观的评审依据,发展到后来,此模型又同时被应用于许多软件机构内部的过程改进活动中。
  多年来,软件危机一直困扰着许多软件开发机构。不少人试图通过采用新的软件开发技术来解决在软件生产率和软件质量等方面存在的问题,但效果并不令人十分满意。上述事实促使人们进一步考察软件过程,从而发现关键问题在于对软件过程的管理不尽人意。事实证明,在无规则和混乱的管理之下,先进的技术和工具并不能发挥出应有的作用。人们逐渐认识到,改进对软件过程的管理是消除软件危机的突破口,再也不能忽视在软件过程中管理的关键作用了。
  能力成熟度模型的基本思想是,由于问题是由我们管理软件过程的方法不当引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。改进后的软件过程将开发出质量更好的软件,使更多的软件项目免受时间和费用超支之苦。
  软件过程包括各种活动、技术和工具,因此,它实际上既包括了软件开发的技术方面又包括了管理方面。CMM的策略是,力图改进对软件过程的管理,而在技术方面的改进是其必然的结果。
  CMM在改进软件过程中所起的作用主要是,指导软件机构通过确定当前的过程成熟度并识别出对过程改进起关键作用的问题,从而明确过程改进的方向和策略。通过集中开展与过程改进的方向和策略相一致的一组过程改进活动,软件机构便能稳步而有效地改进其软件过程,使其软件过程能力得到循序渐进的提高。
  对软件过程的改进,是在完成一个又一个小的改进步骤基础上不断进行的渐进过程,而不是一蹴而就的彻底革命。CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。这5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构把应做的改进工作排出优先次序。成熟度等级是妥善定义的向成熟软件机构前进途中的平台,每个成熟度等级都为软件过程的继续改进提供了一个台阶。
  CMM对5个成熟度级别特性的描述,说明了不同级别之间软件过程的主要变化。从“1级”到“5级”,反映出一个软件机构为了达到从一个无序的、混乱的软件过程进化到一种有序的、有纪律的且成熟的软件过程的目的,必须经历的过程改进活动的途径。每一个成熟度级别都是该软件机构沿着改进其过程的途径前进途中的一个台阶,后一个成熟度级别是前一个级别的软件过程的进化目标。
  CMM的每个成熟度级别中都包含一组过程改进的目标,满足这些目标后一个机构的软件过程就从当前级别进化到下一个成熟度级别;每达到成熟度级别框架的下一个级别,该机构的软件过程都得到一定程度的完善和优化,也使得过程能力得到提高;随着成熟度级别的不断提高,该机构的过程改进活动取得了更加显著的成效,从而使软件过程得到进一步的完善和优化。CMM就是以上述方式支持软件机构改进其软件过程的活动。
  CMM通过定义能力成熟度的5个等级,引导软件开发机构不断识别出其软件过程的缺陷,并指出应该做哪些改进,但是,它并不提供做这些改进的具体措施。
  能力成熟度的5个等级从低到高依次是:  初始级(又称为1级),可重复级(又称为2级),已定义级(又称为3级),已管理级(又称为4级)和优化级(又称为5级)。下面介绍这5个级别的特点。
  1. 初始级
  软件过程的特征是无序的,有时甚至是混乱的。几乎没有什么过程是经过定义的(即没有一个定型的过程模型),项目能否成功完全取决于开发人员的个人能力。
  处于这个最低成熟度等级的软件机构,基本上没有健全的软件工程管理制度,其软件过程完全取决于项目组的人员配备,所以具有不可预测性,人员变了过程也随之改变。如果一个项目碰巧由一个杰出的管理者和一支有经验、有能力的开发队伍承担,则这个项目可能是成功的。但是,更常见的情况是,由于缺乏健全的管理和周密的计划,延期交付和费用超支的情况经常发生,结果,大多数行动只是应付危机,而不是完成事先计划好的任务。
  总之,处于1级成熟度的软件机构,其过程能力是不可预测的,其软件过程是不稳定的,产品质量只能根据相关人员的个人工作能力而不是软件机构的过程能力来预测。
  2. 可重复级
  软件机构建立了基本的项目管理过程(过程模型),可跟踪成本、进度、功能和质量。已经建立起必要的过程规范,对新项目的策划和管理过程是基于以前类似项目的实践经验,使得有类似应用经验的软件项目能够再次取得成功。达到2级的一个目标是使项目管理过程稳定,从而使得软件机构能重复以前在成功项目中所进行过的软件项目工程实践。
  处于2级成熟度的软件机构,针对所承担的软件项目已建立了基本的软件管理控制制度。通过对以前项目的观察和分析,可以提出针对现行项目的约束条件。项目负责人跟踪软件产品开发的成本和进度以及产品的功能和质量,并且识别出为满足约束条件所应解决的问题。已经做到软件需求条理化,而且其完整性是受控制的。已经制定了项目标准,并且软件机构能确保严格执行这些标准。项目组与客户及承包商已经建立起一个稳定的、可管理的工作环境。
  处于2级成熟度的软件机构的过程能力可以概括为,软件项目的策划和跟踪是稳定的,已经为一个有纪律的管理过程提供了可重复以前成功实践的项目环境。软件项目工程活动处于项目管理体系的有效控制之下,执行着基于以前项目的准则且合乎现实的计划。
  3. 已定义级
  软件机构已经定义了完整的软件过程(过程模型),软件过程已经文档化和标准化。所有项目组都使用文档化的、经过批准的过程来开发和维护软件。这一级包含了第2级的全部特征。
  在第3级成熟度的软件机构中,有一个固定的过程小组从事软件过程工程活动。当需要时,过程小组可以利用过程模型进行过程例化活动,从而获得一个针对某个特定的软件项目的过程实例,并投入过程运作而开展有效的软件项目工程实践。同时,过程小组还可以推进软件机构的过程改进活动。在该软件机构内实施了培训计划,能够保证全体项目负责人和项目开发人员具有完成承担的任务所要求的知识和技能。
  处于3级成熟度的软件机构的过程能力可以概括为,无论是管理活动还是工程活动都是稳定的。软件开发的成本和进度以及产品的功能和质量都受到控制,而且软件产品的质量具有可追溯性。这种能力是基于在软件机构中对已定义的过程模型的活动、人员和职责都有共同的理解。
  4. 已管理级
  软件机构对软件过程(过程模型和过程实例)和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可度量的。该软件机构收集了过程度量和产品度量的方法并加以运用,可以定量地了解和控制软件过程和软件产品,并为评定项目的过程质量和产品质量奠定了基础。这一级包含了第3级的全部特征。
  处于4级成熟度的软件机构的过程能力可以概括为,软件过程是可度量的,软件过程在可度量的范围内运行。这一级的过程能力允许软件机构在定量的范围内预测过程和产品质量趋势,在发生偏离时可以及时采取措施予以纠正,并且可以预期软件产品是高质量的。
  5. 优化级
  软件机构集中精力持续不断地改进软件过程。这一级的软件机构是一个以防止出现缺陷为目标的机构,它有能力识别软件过程要素的薄弱环节,并有足够的手段改进它们。在这样的机构中,可以获得关于软件过程有效性的统计数据,利用这些数据可以对新技术进行成本/效益分析,并可以优化出在软件工程实践中能够采用的最佳新技术。这一级包含了第4级的全部特征。
  这一级的软件机构可以通过对过程实例性能的分析和确定产生某一缺陷的原因,来防止再次出现这种类型的缺陷;通过对任何一个过程实例的分析所获得的经验教训都可以成为该软件机构优化其过程模型的有效依据,从而使其他项目的过程实例得到优化。这样的软件机构可以通过从过程实施中获得的定量的反馈信息,在采用新思想和新技术的同时测试它们,以不断地改进和优化软件过程。
  处于5级成熟度的软件机构的过程能力可以概括为,软件过程是可优化的。这一级的软件机构能够持续不断地改进其过程能力,既对现行的过程实例不断地改进和优化,又借助于所采用的新技术和新方法来实现未来的过程改进。
  一些统计数字表明,提高一个完整的成熟度等级大约需要花18个月到3年的时间,但是从第1级上升到第2级有时要花3年甚至5年时间。这说明要向一个迄今仍处于混乱的和被动的行动方式的软件机构灌输系统化的方式,将多么困难。
  三、小结
  软件工程包括技术和管理两方面的内容,是技术与管理紧密结合的产物。只有在科学而严格的管理之下,先进的技术方法和优秀的软件工具才能真正发挥出威力。因此,有效的管理是大型软件工程项目成功的关键。
  软件项目管理始于项目计划,而第一项计划活动就是估算。为了估算项目工作量和完成期限,首先需要预测软件规模。
  度量软件规模的常用技术主要有代码行技术和功能点技术。这两种技术各有优缺点,应该根据项目特点及从事计划工作的人对这两种技术的熟悉程度,选用适用的技术。
  根据软件规模可以估算出完成该项目所需的工作量,常用的估算模型为静态单变量模型、动态多变量模型和COCOMO2模型。为了使估算结果更接近实际值,通常至少同时使用上述3种模型中的两种。通过比较和协调使用不同模型得出的估算值,有可能得到比较准确的估算结果。成本估算模型通常也同时提供了估算软件开发时间的方程式,这样估算出的开发时间是正常开发时间,经验表明,用增加开发人员的方法最多可以把开发时间减少到正常开发时间的75%。
  管理者必须制定出一个足够详细的进度表,以便监督项目进度并控制整个项目。常用的制定进度计划的工具有Gantt图和工程网络,这两种工具各有优缺点,通常,联合使用Gantt图和工程网络来制定进度计划并监督项目进展状况。
  高素质的开发人员和合理的项目组组织结构,是软件项目取得成功的关键。比较典型的组织结构有民主制程序员组、主程序员组和现代程序员组等3种,这3种组织方式的适用场合并不相同。
  软件质量保证是在软件过程中的每一步都进行的活动。软件质量保证措施主要有基于非执行的测试(也称为复审)、基于执行的测试(即通常所说的测试)和程序正确性证明。软件复审是最重要的软件质量保证活动之一,它的优点是在改正错误的成本相对比较低时就能及时发现并排除软件错误。
  软件配置管理是应用于整个软件过程中的保护性活动,是在软件整个生命期内管理变化的一组活动。软件配置管理的目标是,使变化能够更正确且更容易被适应,在需要修改软件时减少为此而花费的工作量。
  能力成熟度模型(CMM)是改进软件过程的有效策略。它的基本思想是,因为问题是管理软件过程的方法不恰当造成的,所以采用新技术并不会自动提高软件生产率和软件质量,应该下大力气改进对软件过程的管理。事实上对软件过程的改进不可能一蹴而就,因此,CMM以增量方式逐步引入变化,它明确地定义了5个成熟度等级,一个软件开发组织可以用一系列小的改良性步骤迈入更高的成熟度等级。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号