项目(Project)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。
项目的特征
PMBOK(A guide to the Project management Body Of Knowledge:项目管理知识体系指南)
五大过程组和十大知识领域
从时间角度出发,项目管理分为五大过程组:启动、规划、执行、监控以及收尾过程组,体现了项目在什么时候进入了什么阶段,回答的是When这个问题。
从知识领域的角度出发,项目管理涵盖了整体、范围、进度、成本、质量、人力资源、沟通、风险、采购以及干系人管理,体现的是项目管理会涉及什么领域,回答的是Where这个问题。
然后就是具体的每一项具体过程,要做什么,回答了what这个问题。
敏捷模型
敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方法进行软件开发。
在敏捷开发中,软件项目在构建初期被切分成多个子系统,各个子系统的成果都经过测试,具备可视,可集成和可运行使用的特征。换言之,就是把一个大的项目分为多个相互联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
优点:
①速度:提高开发速度,快速响应需求变化
②质量:对每一次迭代周期的质量有严格的要求,快速且频繁的交付有价值的软件
③与客户合作:有良好的沟通能力,精确获取需求
缺点:
①对人员技术要求较高,经验丰富,否则容易遇到瓶颈问题
②忽略文档的重要性,若项目人员流动大则维护麻烦,当新手多时,老员工比较累
瀑布模型
应用最多最广泛的模型,顺序性一次性通过。
适用于范围:需求明确,适用于二次开发的项目。
优点:开发质量高,层次化明确,需求明确
缺点:放回上一级开发阶段需要极大代价,不支持迭代开发,会产生大量文档,系统开发周期长
增量模型
是一种非整体开发的模型,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。
1、渐增模型:
适用范围:需求经常发生改变的项目
优点:人员分配灵活,可短时间交付
缺点:容易退化成边做边该模型。
2、快速原型模式又称为原型模式:快速构造一个原型(主要功能和重要接口),在该原型的基础上,迭代性逐渐完成整个系统的开发工作。
适用范围:需求模糊,客户不清楚最终需求的项目。
优点:关注用户需求,从而减少由于软件需求不明确带来的开发风险
缺点:快速建立起来的系统结构加上连续的修改可能会导致产品质量低下,所选用的开发技术和工具不一定符合主流的发展导致人才技术要求高。
螺旋模型
将瀑布模型和增量模型结合起来,并加入了风险分析。
主要分为四个工作步骤:
(1)制定计划:确定软件目标/选定实施方案/弄清限制条件;
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;
(3)实施工程:实施软件开发和验证;
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
适用范围:适用于需求经常变化的大型复杂系统
优点:结合瀑布模型和原型模型的优点,利于提高大型项目开发的质量和效率
缺点:风险高,投资大,周期长
喷泉模型
一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
优点:提高软件项目开发效率,适用于面向对象的软件开发过程
缺点:由于喷泉模型在各个开发阶段都是重叠的,因此需要在开发过程需要大量的开发人员,因此不利于项目的管理。
项目管理过程