《软件项目管理概述2》由会员分享,可在线阅读,更多相关《软件项目管理概述2(105页珍藏版)》请在金锄头文库上搜索。
1、前 述,一、管理、组织的概念 二、软件工程与项目管理 三、项目管理与其它学科的关系 四、软件项目管理产生的背景 五、软件项目管理的要素 六、软件项目管理的学习思路,1.管理 管理是通过利用已有的和可以争取到的各种资源(如人、财、物、技术等),以最少的投入获得最大的产出完成某种任务或达到某个目标的软活动。任务有: 发现问题 拟定方案 作出决策 管理有三个层次:高层(战略级)、中层(策略级)、基层(执行级) 2.组织 组织是由人和其它资源组成,为达到一个目的的集合或系统。 管理是组织的任务,管理为组织服务,确保组织达到预期目标。,一、管理、组织的概念,在软件工程中,涉及到管理,与项目管理有重叠是自
2、然的。 软件开发用工程的方法则一定要提到工程管理,不过则是与方法有关的、有针对性的,项目管理则是通用的、有系统的。 讲项目管理也有工程方法有关,所以也要提到方法。 软件工程是以技术为主,项目管理是以管理方法为主。 软件项目管理是软件工程和项目管理的交叉学科,是项目管理的原理和方法在软件工程领域的应用。与一般的工程项目相比,软件项目有其特殊性,主要体现在软件产品的抽象性上,因此软件项目管理的难度要比一般的工程项目管理的难度大,同时软件项目失败的概率也相对要高。,二、软件工程与项目管理,项目管理 知识与实践,一般管理 知识与实践,应用领域的 知识与实践,三、项目管理与其它学科的关系,你是否参加过软
3、件项目的开发 你是否组织过软件项目的开发 有哪些印象深刻的成功和失败案例 你认为软件开发中最具有挑战性的问题是什么 你认为自己能否胜任以下职位 程序员、设计师、项目经理、开发顾问 你希望将来在IT企业中充当什么角色?如何达到这一角色,四、软件项目管理产生的背景,什么是软件危机 软件危机的表现 产生软件危机的根源 解决危机的技术途径 解决危机的管理途径,软件危机指软件在开发和维护过程中遇到的一系列矛盾与问题。比如:软件开发没有计划性;软件前期需求分析不足;软件开发过程没有规范等等。从而导致开发无法顺利执行,成本昂贵,开发的软件错误百出等等。正是这种软件危机才促使人们寻求解决方法,也就产生了软件工
4、程。 困扰学术界和工业界 用户对软件开发缺乏信心 软件开发的高投入和高风险,1. 什么是软件危机,2. 软件危机的表现(1 of 3),成本高 IBM 360 OS, 5000多人年,耗时4年(19631966),花费2亿多美元 美国空军:1955年软件占总费用(计算机系统)的18%,70年60%,85年达到85 美国全球军事指挥控制系统,硬件1亿美元,软件高达7.2亿美元 计算机软件和硬件费用比,2. 软件危机的表现(2 of 3),软件质量得不到保证 软件应用面的扩大:科学计算、军事、航空航天、工业控制、企业管理、办公、家庭 软件越来越多的应用于安全犹关(safety critical)的
5、系统,对软件质量提出更高的要求 80年代欧洲亚丽安娜火箭的发射失败,原因是软件错误 美国阿托拉斯火箭的发射失败,原因是软件故障 英国1986年开发的办公室信息系统Folios经4年,因性能达不到要求,1989年取消 日本第5代机因为软件问题在投入50亿美元后于1993年下马 由于软件质量问题导致失败的软件项目非常多,2. 软件危机的表现(3 of 3),进度难以控制 项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成 维护非常困难 软件维护的多样性 软件维护的复杂性 软件维护的副作用,3. 产生软件危机的根源,逻辑产品,不同于物理产品 复杂性高 逻辑产品,逻辑
6、复杂性,远高于硬件复杂性 软件的复杂性随规模呈指数级上升 规模大 应用扩大,代码量,1000万行,仍在不断膨胀 影响软件生产率和质量的因素比较复杂 人员的能力和水平 团队合作 缺乏有效、系统原理、原则、方法和工具的指导和辅助,4. 解决危机的技术途径,20世纪60年代爆发,然而实际上软件危机随着计算机软件的产生而产生,只是在此之前其问题的严重性没有引起人们的关注和重视 提出有效的方法和工具支持软件开发 1968年提出软件工程概念和思想 20世纪70年代的结构化软件开发方法 20世纪80年代的面向对象的软件开发方法 新的技术: 软件重用、快速原型、需求工程 典型技术: COM, Java, C+
7、, J2EE, .Net, . 支撑工具和环境:Jbuilder, Visual Studio, WebLogic, ,技术手段不能完全解决软件危机,到了20世纪90年代,软件危机依然存在,甚至更为严重 应用牵引技术的发展 瀑布模型 结构化软件开发方法 OO软件开发方法 技术推动应用的深化 应用的扩大和深入 应用变得越来越大和复杂,技术变得更加力不从心 错误的观念“只要有好的软件开发方法和工具就能高效率地开发出高质量的软件”,解决危机的管理途径,问题出在哪里? 20世纪80年代末,美国和工业界开始认识到管理的重要性 美国的一项研究表明,70%的项目由于管理不善导致难以控制进步、成本和质量; 进
8、一步的研究发现:管理是影响软件项目成功开发的全局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不能充分发挥软件开发方法和工具的潜力,也就不能高效率地开发出高质量的软件产品,重视管理,管理是影响软件项目成败的第一要素 学术界和工业界开始研究和探索针对软件企业以及软件开发所需的管理机制和措施 提高企业的过程管理和控制能力 ISO 9000系列强调质量 CMM、CMMI强调企业的过程管理和控制的能力 强化软件项目的管理 需求、质量、风险、成本、版本等的管理,五、软件项目管理的要素(1),对象 人员、成本、产品 主线 过程 目标 在成本和进度范围内开发出高质量的软件产品,五、
9、软件项目管理的要素(2),研究 针对不同的技术 针对不同的机构规模和特点 探索新的途径 应用 越来越多的企业关注管理问题,管理出效益、加强质量、降低风险 尝试寻找适合于自身特点的管理措施,五、学习软件项目管理的要求(1),理解 什么是软件项目管理? 为什么需要对软件项目进行管理? 软件项目管理涉及那些方面? 软件项目管理需要解决那些问题? 软件项目管理有关的标准和规范 软件项目管理的有关概念,五、学习软件项目管理的要求(2),掌握 解决问题的具体方法和措施 问题 过程 方法 结果 辅助软件解决的各种工具 CASE工具,五、学习软件项目管理的要求(3),运用 增进组织在软件项目管理方面的能力 推
10、动组织的软件项目管理 制定满足标准和规范的有关规程 针对企业和机构的特点,在实际的项目开发过程中运用所学的知识促进软件项目管理,学习要点 学习和掌握先导课程 理解知识点和思想 无需死记硬背 大胆提出你的想法和意见 掌握方法和工具 运用解决实际问题,实践,课程实习 阅读相关资料,五、学习软件项目管理的要求(4),学习要点 学习和掌握先导课程 理解知识点和思想 无需死记硬背 大胆提出你的想法和意见 掌握方法和工具 运用解决实际问题,实践,课程实习 阅读相关资料,五、学习软件项目管理的要求(4),先导要求 软件工程 软件开发经验 软件开发方法 程序设计语言,五、学习软件项目管理的要求(5),六、软件
11、项目管理的教学内容,几点思考,工程问题 理论指导?、实践及其重要性 管理问题 最佳?、摸索、应人而异,第1章 软件项目管理概述,1.1 软件项目管理的案例及其重要性 1.2 项目与项目管理 1.3 软件项目管理 1.4 软件项目的可行性研究,1.1 软件项目管理的案例及其重要性,1.1.1 软件项目管理的案例 1.1.2 软件项目管理的重要性,1.1.1 软件项目管理的案例(1/3),任务 负责组织*大学图书馆管理系统的开发 时间限制 6个月 人员 4个技术人员 成本 控制在40万元之内,1.1.1 软件项目管理的案例(2/3),小王的长处 精湛的技术,尤其是软件设计和程序设计技术 丰富的软件
12、开发经验,参加过许多项目的开发 有成功的项目开发案例,对个人技术信心十足 小王的欠缺 从来没有完整组织过一个软件项目的开发,不知道如何开展软件项目的开发工作以及需要注意哪些问题,1.1.1 软件项目管理的案例(3/3),小王很茫然,面临许多问题 如何着手开展工作? 能否以及如何保证在规定的时间约束范围内完成工程? 如何保证所开发的软件系统的质量? 怎么去组织手下的技术人员,让他们充满激情地工作? 如何确保项目不会失控? 如何在实施过程中处理各种应急事件? 这些问题都是软件项目开发必须解决的,而且不是纯粹的技术性问题,1.1.2 软件项目管理的重要性(1/4),软件项目开发的任务 按照预定的进度
13、、成本和质量,开发出满足用户要求的软件产品 用户需求 确保软件质量 成本限制 进度限制,1.1.2 软件项目管理的重要性 (2/4),软件工程的解决方法运用工程化的手段进行软件开发 强调过程 抽象 文档化 规范化 工具支持 ,1.1.2 软件项目管理的重要性 (3/4),项目组由许多承担不同角色、承担不同任务的人员组成,这些人员构成了一个团体 项目经理、需求分析人员、设计人员、程序员、测试人员 软件开发涉及到许多相互关联的活动,这些活动的实施直接关系到软件项目的成本和进度 需求分析、软件设计、编码、测试 在软件项目实施过程中会产生大量软件产品,这些软件产品相互关联、具有不同的抽象层次 软件需求
14、规格说明书、软件设计规格说明书、源程序代码、可执行代码、测试用例,1.1.2 软件项目管理的重要性 (4/4),管理软件开发过程 明确过程活动 估算各个的工作量、成本 制定计划,跟踪过程,风险控制 管理软件产品 有哪些产品,呈什么形式(规范文档),如何保证它们的质量,如何控制它们的变化 管理软件开发人员 如何组建一个好的团队、调动团队成员的积极性和激情、严明团队的纪律、促进人员之间的协调与合作,1.2 项目与项目管理,1.1.1 项目的基本概念 1.1.2 项目管理 1.1.3 项目管理的基本内容 1.1.4 项目管理的成功因素 1.1.5 项目管理的基本方法与模型 1.1.6 跟踪时间点的相
15、关概念 1.1.7 项目的组织,1.2.1 项目的基本概念 一、项目及其三层含义(1),项目管理是20世纪40年代以后迅速发展起来的一门科学,是现代管理学中的一个重要分支。 根据美国项目管理协会(PMI)的定义:项目是为完成某一独特的产品或服务或其它成果所做的一次性努力。从根本上说,项目就是一系列的相关工作。 中国项目管理研究委员会对项目的定义是:项目是一个特殊的将被完成的有限任务。它是在一定时间内,满足一系列特定目标的多项相关工作的总称。,一、项目及其三层含义(2),根据定义,项目实际包含3层含义 一是项目是一项有待完成的任务,有特定的环境-环境。 二是在一定的组织机构内,利用有限资源(人力
16、、物力、财力等),在规定的时间内(指项目有明确的开始时间和结束时间)为特定客户完成特定目标的阶段性任务,项目必须在时间、成本、质量三者间进行平衡-时间与资源。 三是任务要满足一定性能、质量、数量、技术指标等要求-目的,二、项目的基本特性,目标性,其结果只可能是一种期望的产品或服务。 独特性,每一个项目都是唯一的。 一次性,有确定的起点和终点。 约束性,每一个项目的资源、成本和时间都是有限的。 关联性,所开展的活动是密切相互关联的。 整体性,一个项目涉及多个相关利益者 不可逆转性,不论结果如何,项目结束,结果就确定。,三、项目的组成要素,项目的组成要素-是指与活动有关的总和 项目的阶段和生命周期 项目当事人和利益相关者 管理与技术的知识 组织结构 外部环境,四、项目的生命周期,第一阶段:项目启动阶段(识别需求) 第二阶段:项目计划阶段(提出解决方案) 第三阶段:项目执行阶段 第四阶段:项目结束阶段,项目的生命周期-识别需求,当需求被客户确定时,项目就产生了。 客户与项目承约商进行项目需求的识别。,项目