温暖如初
楼主
发布于 2023-6-29 09:25:45
阅读 1064
查看全部
第一章 软件项目管理导论
第二章 项目需求管理
第三章 软件项目本钱管理
第四章 软件项目进度管理
第五章 软件项目风险管理
第六章 软件项目配置管理
第七章 软件项目资源管理
第八章 软件项目质量管理
第一章 软件项目管理导论
软件市场
软件市场:软件消费的特殊性导致了作为商品销售的软件与传统经济学中分析的实物商品存在显著的不同。软件商品特征:作为商品,软件同样具有一般商品实质的特性:价值和使用价值。但是软件产品是无形的,没有物理属性。软件是与计算机系统有关的程序、过程和文档的完好集合。“软件”的特性:软件是无形的(intangible)、软件副本的大批量消费轻而易举、软件业是劳动密集型的(软件的设计与编程完全实现自动化,需要真正“智能”的机器)、一个没有经过充沛训练的软件开发人员很容易编写出难以理解和修改的软件 、软件自身很容易修改、软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐步退化。软件商品特定的性质包括3个根本方面:无形性、无损耗性、易复制性软件的本钱:在传统的经济学理论中,产品的总本钱是由固定本钱和可变本钱所组成。 固定本钱是指不会随着消费的产量变动而变动的本钱(如厂房、机器和研发本钱);可变本钱是随着产量变化的本钱,是消费每一件产品所需的原资料和劳动力本钱(因而消费n件产品的变动本钱是消费1件产品的n倍。);软件的定价:传统商品的定价遵循边沿定价原则。软件商品无法遵循传统商品定价的原则(软件作为知识密集产品的价值本钱,其构成特点是:边沿本钱低,高劳动力本钱,高附加值。)。软件市场的垄断现象:低端支撑软件系统的垄断日益突出(新的需求规律:销售量越多,价格越高。系统级软件:操作系统和数据库软件)、固定本钱形成的价格效应(软件本钱主要是前期固定本钱,当某种软件形成一定规模后,后来的软件企业想进入同样的市场难度非常大。原因一:若研发不胜利,前期投入的本钱无法挽回;原因二:垄断企业可以为了打击竞争对手把其产品价格降至接近于零。)软件产业的“先入为主”现象(一旦某个软件在市场上拥有绝对优势的市场份额,它的产品将形成一种事实规范)。
软件产业
软件产业的特点:软件市场容量宏大、软件企业长大迅猛、软件产品品种繁多、软件行业竞争剧烈、行业开展日新月异。软件产业在国民经济中的地位:软件产业具有带动经济增长的双重作用、软件是先进管理思想和管理形式的载体(软件可以促进和加快企业的信息采集、交流,降低管理本钱,进步管理效率。软件促进管理规范化)。
软件工程
软件工程的背景和历史:1968年由NATO (北大西洋公约组织)在德国召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念。
软件工程定义:1968年由NATO定义、1983年,IEEE的软件工程定义(软件工程是开发、运行、维护和修复软件的系统方法)、1993年,IEEE的一个更加综合的定义(将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中)、软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前可以得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效的维护它。、软件工程是一类求解软件的工程,它应用计算机科学、数学以及管理科学等原理、借鉴传统工程的原理、方法,创建软件以到达进步质量、降低本钱的目的,使计算机设备的才干借助于软件成为对人类有用的东西。
软件工程框架:软件工程作为一种工程,同其他工程项目一样,有自己的目的、活动和原则。
软件工程的目的是“消费正确、可用及具有经济效益的产品”、正确性指软件产品到达预期功能的水平、可用性是指软件的根本构造、实现和文档为用户可用的水平、具有经济效益指软件开发、运行的整个开销满足用户要求的水平。
软件工程活动:指消费一个最终满足需求且到达工程目的的软件产品所需要的步骤。它列出了需要完成的一系列任务的框架(Framework),它规定了完成各项任务的工作步骤。
1.问题定义
2.可行性研究
3.需求分析
4.概要设计
5.详细设计
6.编码和单元测试
7.综合测试
8.软件维护
所有的软件工程活动必需停止管理。
软件项目管理贯穿于软件工程的演化过程之中
软件工程原则
(1) 选取适宜的开发模型
(2) 采用适宜的设计方法
(3) 提供高质量的工程支持
(4) 重视开发过程的管理
软件工程模型
软件工程模型也称为软件开发模型,是软件开发全部过程、活动和任务的构造框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发战略
常见的软件工程模型有:线性模型(瀑布模型)、快速原型模型、螺旋模型和渐增式模型等。
传统瀑布模型存在的问题:
(1)过于理想化,事实上人在工作过程中不可能不犯错误
(2)在设计阶段可能发生规格说明文档中的错误;而设计上的缺陷或错误可能在实现过程中显示出来
(3)在综合测试阶段将发现需求分析、设计或编码阶段的许多错误
瀑布模型
优点:
(1)奠定了软件工程方法的根底
(2)流水依赖,便于分工协作
(3)推延物理实现,易于修改文档,有复审质量保证。
(4)可强迫开发人员采用规范的方法(例如,构造化技术);
(5)严格地规定了每个阶段必需提交的文档;
(6)要求每个阶段交出的所有产品都必需经过质量保证小组的认真验证。
缺乏:
1.与用户见面晚,胜利率低,一般为25%
2.实际项目很少依照该模型给出的顺序停止;
3.用户常常难以清楚地给出所有需求;
4.用户必需有耐心,等到系统开发完成;
5.开发者常常被不用要地耽搁。
适用范围:适用于系统要求明确的系统,各种应用软件的开发均可使用。
原型模型
快速原型模型工作过程
1.原型模型从需求搜集开端。 开发者和用户在一起定义软件的总体目的,标识出已知的需求,并规划出进一步定义的区域。
2.然后是“快速设计”,快速设计集中于软件那些对用户可见部分的表示。“快速设计”导致原型的建造。
3.原型由用户评估,并进一步精化待开发软件的需求,逐步伐整原型使其满足客户的要求。同时开发者对将要做的事情有更好的理解, 这个过程是迭代的。
4.按线性模型构建软件系统
增量模型(渐增模型)
构件思想:
第一构件完成软件提供的根本最核心的功能。
后面的增构件是为了第一构件提供效劳提供功能的。
而且防止把难题退后,首先完成的应该是高风险和重要部分。
增量模型的优点
1.在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做 一些有用的工作。
2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。
3.逐步增加产品功能可以使用户有较富余的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
4.采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。
使用增量模型的困难:
1.增量构件必需不破坏原来已经开发出的产品。
2.软件的体系构造便于停止扩大,参与新构件的过程必需简单、方便,即软件体系构造必需是开放的。
3.开发人员既要把软件系统看作整体。又要看成可独立的构件,互相矛盾。
4.多个构件并行开发,具有无法集成的风险。
螺旋模型
螺旋模型的设计思想:使用原型方法或者其他方法降低风险。可看作在每个阶段之前都增加了风险分析过程的快速原型模型。(快速原型模型+风险分析)
“螺旋模型”的核心螺旋模型的核心是关注风险。
瀑布模型与螺旋模型的优缺点比较:
1.瀑布模型强调的保证软件的质量,忽略人力,时间,资源等本钱因素,以质量为第一目的,每次需求发生变卦都要从头再来…适宜于一些大型稳定的项目。
2.螺旋模型是比较适宜于前期需求不稳定,后期需求新增变卦较多的项目,他是一种增量迭代开发的模型,每一次循环都是一次版本的晋级。
螺旋模型的优点
(1)有利于已有软件的重用
(2)降低风险
(3)减少过多测试;维护只是模型的另外一个周期
螺旋模型的缺点
1.需要软件开发人员具有丰富的风险分析和排除风险的知识。
2.很难让用户确信这种演化方法的结果是可以控制的。建立周期长,而软件技术开展比较快,所以经常呈现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
螺旋模型的适用性 适用于风险大,产品需求变动大的内部开发大规模的项目。
项目管理框架
有组织的活动分为两种:
一类是连续不时、周而复始的活动,称之为“运作”(Operations),如企业日常的消费产品的活动;
另一类是临时性、一次性的活动,称之为“项目”(Projects),如企业的技术改造活动、一项环保工程的施行。
项目:是指在一定约束条件下具有特定目的的一项一次性任务;项目是为了发明一个唯一的产品或提供一个唯一的效劳而停止的临时性的努力。
项目的特征:
有明确的目的
项目之间的活动具有相关性
限定的周期
有共同性
资源本钱的约束性
项目的不确定性
项目与日常运作的区别:
项目是一次性的,日常运作是反复停止的,
项目是以目的为导向的,日常运作是通过效率和有效性体现的,
项目是通过项目经理及其团队工作完成的,而日常运作是职能式的线性管理;
项目存在大量的变卦管理,而日常运作则根本坚持连接性的。
软件项目的特殊性
逻辑实体,软件是逻辑实体,不是详细的物理实体,具有笼统性
软件是互相作用的系统,系统包括彼此互相作用的部分,软件项目中涉及的因素越多,彼此互相作用就越大
变卦:是软件项目中常见的现象,如需求的变卦、设计的变卦、技术的变卦、社会环境变卦等,这些均说明了软件项目管理的复杂性
渐近明细:标明项目的定义会随着团队成员对项目、产品等的理解、认识的逐步加深而得到逐步深化的描绘
项目的生命周期
项目从开端到完毕,一般都要经历几个阶段,包括启动阶段、方案阶段、施行阶段和完毕阶段,称之为项目的生命周期
项目启动:可行性研究,确定是否接受项目。
项目方案:建立处置需求或问题的方案,向客户提交各种方案书。
项目施行:执行处置方案,在各种因素的制约下实现项目目的。
项目完毕:验收项目。
软件项目可分为:需求分析、设计、实现、测试和维护等阶段。
项目管理概念
按PMI的定义:项目管理就是“在项目活动中运用一系列的知识、技能、工具和技术,以满足或超越相关利益者对项目的要求”。
中国项目管理研究委员会对项目管理总结为两种不同的含义:其一指一种管理活动;其二是指一种管理学科,前者是一种客观的理论活动,后者是前者的理论总结;前者以后者为指导,后者以前者为根底。
项目管理贯穿整个项目的生命期,是对项目的全过程管理。
项目管理特点:
综合性:项目管理是一项复杂的工作,一般由多个部分组成,工作跨越多个组织,需要运用多种学科的知识处置问题
发明性:项目具有一次性特点,既要承担风险又必需发挥发明性。发明性依赖于科学技术的开展和支持。在项目的前期构思中,重视科学技术情报工作和信息的组织管理,这是产生新构思和处置问题的主要途径;为较快进度和进步胜利率,需要多个试验方案并进。
时间性:项目具有寿命周期,其实质是方案和控制一次性的工作,在规定期限内到达预定目的。在项目生命周期中一个明确的阶段顺序。
项目管理的6要素:范围、时间、本钱、质量、组织及客户满意度
范围:也称工作范围,指为了实现项目目的必需完成的所有工作。一般通过定义交付物及其规范定义工作范围,工作范围根据项目目的分解得到。
范围指出:
完成那些工作可以到达项目目的;
完成那些工作项目可以完毕。
时间:时间相关因素用进度方案描绘。进度方案说明工作范围内所有工作需要的时间,以及每个活动开端时间和完毕时间。
本钱:指完成项目需要的款项。包括人力本钱、原资料、设备租金、分包费用及咨询费等。项目总本钱以预算为根底,最终本钱应控制在预算之内。
质量:指项目满足明确或隐含需求的水平。一般通过定义工作范围内的交付物规范来定义,包括各种特性及这些特性需要满足的要求。另外还可能对项目的过程有明确要求。
组织:常见的三种组织形式:职能型形式;项目型形式;矩阵型形式
职能型形式体现严格的等级制度,每个成员都有明确的上级,各成员的权利和职责十清楚晰。
项目型形式中,项目经理负责产品的定位和开展方向,有很大的独立性和权威,在产品的开展过程中起着重要的作用。
矩阵型形式混合了智能型和项目型的特点,项目组通常有全职的项目经理,项目组的其他人员来自各个职能部门,他们在必要时可以为项目兼职或全职工作一段时间。
客户满意度:衡量产品的根本尺度。“客户满意,自己获利”。
时间、质量和本钱这个三要素简称TQC
对于一个项目来说,最理想的情况就是“多、快、好、省”。“多”-工作范围大,“快”-时间短,“好”-质量高,“省”-本钱低。
项目管理知识体系
PMBOK6详解
目前有两大项目管理的研究体系
以欧洲为首的体系 – 国际项目管理协会(International Project Management Association, IPMA)
以美国为首的体系 – 美国项目管理学会PMI
PMI成员以企业、大学、研究机构的专家为主,它开发了一套项目管理知识体系(Project Management Body of Knowledge, PMBOK)。
PMBOK6分为10个知识领域:
1.整合管理
整合管理确保项目的各个部分有机地整合在一起,协调并权衡各个互相抵触的目的和处置方案,以满足或超越客户的预期需求。详细过程有:
(1) 项目方案的制订,集成并协调所有的项目方案以产生一个一致的、有内在联络的最终文档。
(2) 项目方案的执行,停止项目方案中的每个活动以使方案得到执行。
(3) 集成变卦控制,协调整个项目的变卦。
2.范围管理
范围管理就是界定项目的范围,描绘用以保证项目包含且只包含所有需要的工作
范围管理由启动、范围方案编制、范围定义、范围核实和范围变卦控制构成,并在此根底上对项目停止管理。
范围是以后一系列决策的根底。
3.进度管理
进度管理是项目管理的重要一环,描绘用以保证项目可以按时完成所需的各个过程,以确保项目在预定的时间内顺利完成,由活动定义、活动布置、活动历时估算、进度方案编排和进度方案控制构成。
4.本钱管理
本钱管理描绘用以保证在批准预算内完成项目所需的各个过程,是为了确保在预算范围内完成项目所需要的一系列过程,由资源方案编制、本钱估算和本钱控制构成。
5.质量管理
质量管理是为了确保项目的结果满足用户需求并到达质量要求所需施行的一系列过程,由质量方案编制、质量保证和质量控制构成。
6.资源管理
资源管理是为了确保与项目有关的所有成员发挥其最佳效能的管理过程,由组织的方案编制、人员获取和团队组建构成。分为规划资源管理,估算活动资源,获取资源,建立团队,管理项目团队,控制资源。
7.沟通管理
沟通管理是对项目过程中产生的各种信息停止搜集、存储、分发和最终处置,有沟通方案编制、信息发送、性能报告和阶段(或项目)的完毕构成。
8.采购管理
采购管理是确保项目停止过程中所需的各种原资料、资源和效劳得到满足的过程,由采购方案编制、计价方案编制、计价、供方选择、进货检验、合同管理和合同收尾构成。
9.风险管理
风险管理是对项目可能遇到的风险停止识别、分析和应对的一系列过程。它涵盖了将对项目目的起正面作用的因素的作用发挥到最大及将对项目目的起负面作用的因素的作用降到最小这一理念,由风险管理方案、风险识别、风险分析、风险应变和风险监控构成。
项目管理的开展示状:当代的项目管理已经开展为:一门学科,一个专业,一种职业项目管理学科开展的特点:
(1)项目管理的全球化开展:主要表如今国际间的项目合作日益增多、国际化的专业活动日益频繁、项目管理专业信息的国际共享
(2) 项目管理的多元化开展:应用行业及项目类型的多样性,导致了各种各样项目管理理论和方法的呈现,从而促进项目管理的多元开展。
(3) 项目管理的专业化开展:突出表如今PMBOK的不时开展和完善、学历教育和非学历教育竞相开展、项目与项目管理学科的探究及专业化项目咨询机构的呈现项目管理学科在双向探究中前进:
各领域专家讨论如何将本学科领域的专业理论及方法应用于项目管理【向科学化方向开展】
各行各业的专家研究如何把项目管理的理论及方法应用到本行业中去【向实用化方向开展】项目管理学科开展趋势
项目学主体是应用项目学,应用项目学主体是微观项目管理
世界各国研究的PMBOK是当前项目管理学科开展的重要内容
项目学是知识创新与市场相结合的综合化开展
项目学是科学、技术和艺术的综合
10.相关方管理为了识别可以影响项目或会受项目影响的人员、团体或组织,分析相关方对项目的期望和影响,制定适宜的管理战略来有效调动相关方参与项目决策和执行。用这些过程分析相关方期望,评估他们对项目或受项目影响的水平,以及制定战略来有效引导相关方支持项目决策、规划和执行。这些过程可以支持项目团队的工作。分为识别相关方,规划相关方管理,管理相关方参与,控制相关方参与
软件项目管理
软件项目是以软件为产品的项目,软件产品的特质决定了软件项目管理和其他领域的项目管理有不同之处。
1.笼统性
2.缺陷检测的困难性
3.高度的复杂性
4.缺乏统一规则
软件失控项目:指软件项目在停止时遇到困难,导致大大超越可控制范围(时间、费用、功能性需求)的项目。
软件项目失控的量化定义:
显著未实现目的和至少超出原定预算30%的项目。
Robert L.Glass 观点:30%进步到100%
失控项目状态:
两难境地(Crunch Mode):处于无法到达最初目的的威胁,而项目团队仍然在努力跨越此困难。两难境地的情况可能会持续几天、几周甚至几个月。
死亡行军(Death March)项目的各项指标超越正常规范50%。
失控:接近于或已经失败的项目。
软件项目失控的原因:
1.需求不明确
需求过多,大型项目比小型项目更容易失败。
需求不稳定,用户无法决定他们真正想要处置的问题。
需求模棱两可,不能确定需求的真实含义。
需求不完好,没有足够的信息来创建系统。
2.不充沛的方案
工作责任范围不明确;
每个开发阶段的提交结果不明确;
开发方案没有指明里程碑或检查点,也没有规定设计评审期;
开发方案没有规定进度管理方法和职责,导致无法正常进度管理。
3.过于乐观估算
处于客户和公司上层的压力在工作量估算上妥协;
设计者过于自信或出于自尊心问题,对于一些技术问题不够重视;
过分相信经历。
4.采用新技术
技术无法扩展,所有新技术都有限制,在项目使用新技术之前完全理解新技术的限制很重要。
技术是错误的处置方案,技术是新技术,并不意味着它适用于你所试图处置的所有问题。
技术不具有要求的功能性,不是如今不能,而是技术自身的限制导致了它永远不能。
5.管理方法缺乏或不恰当:开发出的系统无法快速地运行以便及时地满足用户的需求,在软件工程领域,这种问题被称为“性能”问题。
6.性能问题:开发出的系统无法快速地运行以便及时地满足用户的需求,在软件工程领域,这种问题被称为“性能”问题。
7.团队组织不当
项目组织过小:每个软件开发组织都希望以最小的本钱完成项目,因而项目组织过小成为许多项目都会面临的问题。另外,有些软件开发组织对项目提供分配好的技术人员,而这些技术人员的水平达不到特定项目的要求。
缺乏资深人员:项目团队缺少人员,从而设计才干缺乏,是项目失败的原因之一。
8.人际因素
(1) 开发商和客户:开发商是软件产品的提供者,客户是软件产品的使用者,两者之间应是一种公平交易的关系,但这种关系很容易被扭曲。
(2) 销售人员和技术人员:销售人员为了进步其工作效益,经常屈从于客户的压力而容许客户的许多要求,也可能由于对技术的不理解而随意容许客户的一些要求,而有些要求在技术人员看来是无法满足的。
(3) 项目管理者和开发人员:项目管理者把与开发人员的关系扭曲成管理与被管理的强迫性关系。
软件项目管理的意义
软件项目管理的概念涵盖了管理软件产品开发所必需的知识、技术及工具。
根据PMI项目管理的定义总结:在软件项目活动中运用一系列的知识、技能、工具和技术,以满足软件需求方的整体要求。
软件项目管理的过程
(1) 启动软件项目
启动软件项目是指必需明确项目的目的和范围、考虑可能的处置方案以及明确技术和管理上的要求等,这些信息是软件项目运行和管理的根底。
(2) 制订项目方案
软件一旦启动,就必需制订项目方案。方案的制订以以下的活动为根据:
估算项目所需要的工作量
估算项目所需要的资源
根据工作量制订进度方案,继而停止资源分配
作出配置管理方案
作出风险管理方案
作出质量保证方案
(3) 跟踪及控制项目方案
在软件项目停止过程中,严格遵守方案。对于一些不可防止的变卦,要停止适当的控制和调整,但要确保项目方案的完好性和一致性。
(4) 评审项目方案
对项目方案的完成水平停止评审,并对项目的执行情况尽心评价。
(5) 编写管理文档
项目管理人员根据软件合同确定软件项目是否完成。项目一旦完成,则检查项目完成的结果和中间记录文档,并把所有的结果记录下来形成文档并保管。
软件项目管理的内容
① 软件项目需求管理
② 软件项目估算与进度管理
③ 软件项目配置管理
④ 软件项目风险管理
⑤ 软件项目质量管理
⑥ 软件项目资源管理。
项目管理的根本特性:普遍性、目的性、共同性、集成性、创新性、过程性。 |
|