软件工程之项目管理

Posted **柠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程之项目管理相关的知识,希望对你有一定的参考价值。

软件工程之项目管理

软件项目开发是一项系统而复杂的工作,它需要一个团队互相配合、分工协作;项目管理是在一定的约束条件下,以高效率地实现项目的目标为目的,按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法,在软件工程领域的应用。

 

1.过程控制

质量管理是指一个组织在全员参与的基础上,为满足所受益者的质量要求而形成的一系列质量方针、目标和体系。软件质量管理是对软件的开发和生产过程的管理,包括软件项目策划、对软件过程的跟踪监控、软件配置管理以及软件质量保证等,软件质量管理的一个侧重点就是软件质量控制,而鉴于过程控制对软件质量管理的影响,对软件质量的控制就应该注重软件开发的过程控制,并以此来进行软件质量管理。

 

 1.1质量保证

国际标准组织ISO9000对质量的定义就是:质量是产品或服务用于满足人们潜在或明示的需求的所有特征和性能的总和。软件质量管理是对软件的开发和生产过程的管理。质量保证是为了提供信用,证明项目将会达到有关质量标准,而质量体系中开展的有计划、有组织的工作活动。它贯穿子整个项目的始终。

 

 

    质量保证通常由质量保证部门或有类似名称的组织单位提供。质量保证过程(SQA)是指确定客观地保证软件产品和过程符合规定的要求以及建立的计划所需的活动。它由方针、标准、过程和活动组成,包括:

 

1)质量保证过程建立:

   包括建立质量目标,包括验证、确认、测试、审计和质量测量。

 

2)活动:

   a.执行质量保证活动的质量标准、方法、步骤和工具。

   b.合同规定的评审和协调的步骤。

   c.标识、收集、编写文档、维护和处置质量记录的步骤。

   d.执行质量保证活动的资源、时间表和责任。产品保证。

   e.保证把合同所要求的全部计划写成文档并执行。

   f.保证软件和有关的文档符合合同,遵守计划。

   g.保证交付的产品和服务完全满足合同要求。

 

3)过程保证:

   a.保证为此项目采用的软件生存期过程符合合同,遵守计划。

   b.保证内部软件工程实践、开发环境、测试环境是恰当的,并符合合同。

   c.保证产品主合同的要求已交给子合同执行人,后者的产品和服务符合主。

4)合同的要求:

   a.保证需方和其他各方按照合同、谈判和计划得到了所要求的支持与协作。

   b.保证依照己建立的标准和步骤圆满地完成产品和过程调试。

   c.保证培训提供了满足项目需求所需要的技术和知识。

 

5)质量改进:

   a.保证项目有关人员了解质量保证过程的需求,执行并维护这些需求。

   b.收集和分析历史数据、技术数据和评价数据。这些分析作为反馈以实现改进。

   c.收集、维护和使用质量成本数据。这些数据应当说明预定成本及改正产。

   d.品或服务中的缺点或不符合之处的成本。

   e.质量保证工作是以质量管理计划作为执行的标准,开展相应的配置管理、文档管理及质量评审和测试工作。

 

1.2配置管理

   为了控制系统开发过程的往复,不至于产生重大过失和往复的泛滥,完成软件开发的配置管理。配置管理的目的在于控制软件开发过程中的“变化”,这种变化可能是外部引起的,如需求的变化。也可能是来自内部的变化,如早期设计的某个部件不够完备,,需要修改等。为了控制这些变化,把变化引起的波动尽可能的控制在有限的范围内。在许多软件开发项目中,项目范围管理涉及三个方面:业务需求、技术结构、投产服务。编写哪些程序模块,实现哪些功能,部署到哪些地点,这其实都是项目范围管理所要关注的内容,在配置管理中对应了产品的物理属性和功能属性以及服务的属性,都可以通过配置管理来识别、记录和跟踪。只有做好软件配置管理,才能真正把项目的范围管理做实。

配置管理中要记录、控制、报告各种属性(配置项)的变化状态,这就是配置管理中的版本管理和变更管理,有变更才有不同的版本,版本又成为变更控制的主要对象,这两者是紧密关联的。在项目范围管理中,需要识别和控制项目的交付成果,要描述交付物应有的各种特性。这些交付物及其特性,就是配置管理中的配置项。从项目管理的角度,WBS只需要分解到可管理(Manageable)的程度,而配置管理则要求分解到最终可操作的程度,管理的粒度更为精细。因此,良好的配置管理机制,是项目范围管理得到最终落实的保证。在配置管理中,每个配置项的每个状态都可以称为一个版本,配置项的演变过程就可以体现为一棵版本树。而我们平时经常说的版本,实际是指软件产品的版本,不是具体配置项的版本。一个软件产品版本是由众多配置项组成的,每个配置项最多只能选取它的一个版本组成一个特定的产品版本。因此,在我们平时谈到“版本”时,需要明确是配置项的版本还是软件产品的版本,否则容易在沟通中带来混淆。既然版本管理是配置管理中的一项内容,那么对于在软件产品版本管理中遇到的各种实际问题,就需要放在配置管理这个大背景中,基于配置管理的理论、方法和工具来考虑,才能逐步理清。

 

 

2.组织模式

   软件项目组的组织结构取决于整个软件开发组织的管理风格、问题的难易程度和人员的数量及技术水平。策划常见的组织形式:

 

1).封闭式范型:按照传统的权利层次来组织小组(类似CC小组)。这种小 组在开发与过去已经做过的产品类似的软件时十分有效,但在这种封闭式范型下难以进行创新式的工作。

 

2).松散式范型:松散地组织小组,并依赖于小组成员个人的主动性。当需要创新或技术上的突破时,按照这种随机式范型组织的小组很有优势。但当需要“有次序的执行”才能完成工作时,这种小组组织范型就会陷入困境。

 

3).开放式范型:试图以一种,既具有封闭式范型的控制性,又包含随机式范型的创新性的方式来组织小组。工作的执行结合了大量的通信和基于小组一致意见的决策。开放式范型小组结构特别适于解决复杂问题,但可能不象其他类型小组那么效率高。

 

4).同步式范型:依赖于问题的自然划分,组织小组成员各自解决问题的片断,他们之间没有什么主动的通信需要。

 

  从历史角度看,最早的软件小组是控制集权式(CC)结构,原来称为主程序员小组。这种结构由Harlan Mills首先提出,并由Baker[BAK72]描述出来。小组的核心是由以下人员组成的:一个高级工程师(“主程序员”),负责计划、协调和复审小组的所有技术活动;技术人员(一般2到5个人),执行分析和开发活动;以及一个后备工程师,支持高级工程师的活动,并能在项目进行过程中,以最小的代价取代高级工程师的工作。

   主程序员可以由一个或多个专家(如电讯专家,数据库设计者)、支持人员(如技术文档写作者,行政人员)和软件资料员来担当。资料员为多个小组服务,执行以下功能:维护和控制所有软件配置(如文档,源程序,数据和磁介质);帮助收集和格式化软件生产数据;分类和索引可复用软件模块;辅助小组进行研究、评估及文档准备。资料员的重要性不能过分强调。资料员充当了软件配置的控制者、协调者及潜在的评估者。不考虑小组的组织,每一个项目管理者的目标都是帮助建立一个有凝聚力的小组。

 

3.能力评估

  软件过程能力描述了一个开发组织开发软件开发高质量软件产品的能力。现行的国际标准主要有两个:ISO9000.3和CMM。

 

  ISO9000.3是ISO9000质量体系认证中关于计算机软件质量管理和质量保证标准部分。它从管理职责、质量体系、合同评审、设计控制、文件和资料控制、采购、顾客提供产品的控制、产品标识和可追溯性、过程控制、检验和试验、检验/测量和试验设备的控制、检验和试验状态、不合格品的控制、纠正和预防措施、搬运/贮存/包装/防护和交付、质量记录的控制、内部质量审核、培训、服务、统计系统等二十个方面对软件质量进行了要求。

 

  CMM(能力成熟度模型)是美国卡纳基梅隆大学软件工程研究所(CMU/SEI)于1987年提出的评估和指导软件研发项目管理的一系列方法,用5个不断进化的层次来描述软件过程能力。现在CMM是2.0版本。

 

    ISO9000和CMM的共同点是二者都强调了软件产品的质量。所不同的是,ISO9000强调的是衡量的准则,但没有告诉软件开发人员如何达到好的目标,如何避免差错。CMM则提供了一整套完善的软件研发项目管理的方法。它可告诉软件开发组织,如果要在原有的水平上提高一个等级,应该关注哪些问题,而这正是改进软件过程的工作。

 

  CMM描述了五个级别的软件过程成熟度(初始级,可重复级,已定义级,已定量管理级,优化级),成熟度反映了软件过程能力的大小。

 

   初始级特点是软件机构缺乏对软件过程的有效管理,软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,其软件项目的成功来源于偶尔的个人英雄主义而非群体行为,因此它不是可重复的;可重复级的特点是软件机构的项目计划和跟踪稳定,项目过程可控,项目的成功是可重复的;已定义级的特点在于软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性;已定量管理级的软件机构中软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力是可预测的,其生产的软件产品是高质量的;优化级的特点是过程的量化反馈和先进的新思想、新技术促进过程不断改进,技术和过程的改进改进被作为常规的业务活动加以计划和管理。

 

   CMM是科学评价一个软件企业开发能力的标准,但要达到较高的级别也非常困难,根据1995年美国所做的软件产业成熟度的调查,在美国的软件产业中,CMM成熟度等级为初始级的竟占70%,为可重复级的占15%,为定义级的所占比例小于10%,为管理级的所占比例小于5%,为优化级的所占比例小于l%。而国内企业的水平就更加堪优,到目前为止,只有东软一家达到优化级,少数几家能够达到可定义级。尽快改变这种局面,科学化、规范化、高效的进行软件开发活动,从整体提高我国软件行业的水平,是国内软件企业的当务之急,也是专业人员应该为自己制定的目标。如果有一天也能指挥一个数千人的庞大开发队伍,操作Windows这样巨型规模的软件项目,并生产出高质量的产品,才有理由宣称自己的软件项目管理能力达到了一个“自主自足”的水平。

 

 

[1]苏晓旭. (2009). 软件项目质量保证体系的研究与应用. (Doctoral dissertation, 北京邮电大学).

[2]房洁.浅谈软件质量管理[J].现代企业教育,2009(17)

[3]http://baike.sogou.com/v3878395.htm?fromTitle=%E8%BD%AF%E4%BB%B6%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86

以上是关于软件工程之项目管理的主要内容,如果未能解决你的问题,请参考以下文章

软件过程与项目管理之描述软件2

Atitit.attilax软件研发与项目管理之道

七步法与甲方工程项目管理之看合同篇

Atitit.attilax软件研发与项目管理之道

研发511工程项目管理之培训篇02

七步法之甲方工程项目管理与争议解决的由来(下)