华中科技大学软件学院THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目管理与案例分析2THESCHOOLOFSOFTWAREENGINEERINGOFHUST提出自己的看法或意见,在课堂里应该是完全公开的keepanopenmindandsayyourownopinion参与者不应将别人的发言带出室外,以引起不必要的负面影响don`tbeintimidatedandyoushouldbeexempted尊重他人的看法,尤其是与你持不同看法的“第二意见”respectother`sopinionespecially“secondopinion”鼓励参与讨论及意见分享:他山之石,可以攻错encouragegroup`sparticipationtosharethoughtandideas让我们以开阔的胸襟来面对问题及提出看法behonestwithyourquestionsandcomments期许及要求GroundRules华中科技大学软件学院THESCHOOLOFSOFTWAREENGINEERINGOFHUST第1章软件项目管理概述4THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要项目与软件项目的概念1.1项目管理的概念1.2软件项目生命期与管理过程1.3本书内容的组织1.4本章小结1.5复习思考题1.65THESCHOOLOFSOFTWAREENGINEERINGOFHUST1.1项目与软件项目的概念项目定义和特征——项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。特征:目标性相关性周期性独特性约束性不确定性结果的不可逆转性6THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念临时性–项目有明确的开始与截止日期–项目合同的起止日期–当达到项目的目标时即项目的截止日期;或项目被中止/取消的日期–项目的临时性并不意味着项目所提交的产品或服务也是一次性的(一次性纸杯的生产)–项目所面临的市场机遇往往也是临时性的(没有企业愿意在2009年生产北京奥运的徽章)–项目组也往往是临时性的,当项目结束时,项目组也随之解散(或释放)7THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念独特的产品或服务–项目所产生的产品或服务是独一无二的(包括合同的签订人、位置等方面的信息)–对于批量生产的商品(例如空调或冰箱)则不具备独特性,而例如北京联通计费项目则具有独特性–咨询和会计审计服务8THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念以下哪些是项目呢?上课野餐活动集体婚礼社区保安开发微软的操作系统每天的卫生保洁神舟飞船计划9THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念日常运作项目上课野餐活动集体婚礼社区保安开发操作系统每天的卫生保洁神州飞船计划10THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念由美国国防部(DoD)资助软件工程协会(SEI)开发U.S.Army,Navy,AirForceFederalAviationAdministrationNationalSecurityAgencySoftwareEngineeringInstituteADP,Inc.AT&TLabsBAEBoeingComputerSciencesCorporationEERSystemsEricssonCanadaErnstandYoungGeneralDynamicsHarrisCorporationHoneywellKPMGLockheedMartinMotorolaNorthropGrummanPacificBellQ-LabsRaytheonReutersRockwellCollinsSAICSoftwareProductivityConsortiumSverdrupCorporationTeraQuestThomsonCSFTRW11THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念项目与日常运作的区别:项目是一次性的,日常运作是重复进行的项目是以目标为导向的,日常运作是通过效率和有效性体现的项目是通过与项目经理及其团队工作完成的,而日常运作是职能式的线形管理项目存在大量的变更管理,而日常运作则基本保持持续的连贯性的12THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念软件项目的特点除了项目的特征,软件项目还具有以下特点:软件是逻辑实体,不是具体的物理实体,具有抽象性软件的开发受计算机系统的限制,对硬件系统有不同程度的依赖软件具有复杂性特点,其开发成本昂贵,制约因素很多13THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念不同因素相互作用图示14THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目与软件项目的概念实现项目目标的制约因素15THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要项目与软件项目的概念1.1项目管理的概念1.2软件项目生命期与管理过程1.3本书内容的组织1.4本章小结1.5复习思考题1.616THESCHOOLOFSOFTWAREENGINEERINGOFHUST1.2项目管理的概念项目管理就在我们身边–解决一个问题–组织一个活动–创造一个新事务–跟踪一个具体的任务–当我们觉得资源缺乏的时候……生活中的项目–生日聚会–野餐活动–集体婚礼社会中的大项目–微软的操作系统–阿波罗计划–神州飞船计划17THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念项目管理的定义项目管理是以项目为对象,通过使用知识、技能、工具和方法来组织、计划、实施并监控项目,使之满足项目目标需求的过程。软技巧Samples(领导、团队建设、冲突解决、激励、训练、协商、沟通、倾听)硬技能Samples(计划、跟踪、控制、报告)18THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念软件项目管理的必要性–无规则、混乱的开发状态,进度滞后,费用超支等失败的例子很多–业务失败,合同纠纷,法律诉讼,客户投诉等困扰软件业美国1999年软件项目的统计19THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念软件危机–就是软件生产能力和业务发展需求不相适应的现象–就是弱的软件生产能力和强的业务发展需求之间的矛盾软件危机表现–开发过程随心所欲–时间计划和费用估算缺乏现实的基础–管理者主要在应付突发事件–对产品质量缺乏客观基础–软件开发的成败建立在个人能力基础上20THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念成功的项目–满足或者超过干系人的期望范围成本质量时间21THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念项目管理的基本内容–PMBOK:AguidetotheProjectmanagementBodyOfKnowledge22THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念PMBOK9个知识领域的关系23THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念PMBOK9大过程领域整体管理开发项目章程项目初步项目范围说明开发项目计划指挥管理项目的执行项目工作监控整体变更控制项目结束范围计划范围定义创建WBS范围验证范围变更控制活动定义活动排序活动资源估计活动历时估算进度计划进度控制成本估算成本预算成本控制质量计划执行质量保证执行质量控制人力计划成员获得团队建设管理团队沟通计划信息发布绩效报告干系人管理风险计划风险识别定型风险管理定量风险管理风险相应计划风险监控采购和获得合同计划要求卖家响应挑选卖家合同管理合同收尾范围管理时间管理成本管理质量管理人力资源管理沟通管理风险管理采购管理24THESCHOOLOFSOFTWAREENGINEERINGOFHUST项目管理的概念PMBOK5大过程组启动计划控制执行收尾决定立项按计划执行提供控制基线变更调整基线执行和计划比对调整执行情况25THESCHOOLOFSOFTWAREENGINEERINGOFHUST本章内容提要项目与软件项目的概念1.1项目管理的概念1.2软件项目生命期与管理过程1.3本书内容的组织1.4本章小结1.5复习思考题1.626THESCHOOLOFSOFTWAREENGINEERINGOFHUST1.3软件项目生命期与管理过程软件项目生命期–计划阶段定义系统,确定用户的要求或总体研究目标,提出可行的方案,包括资源、成本、效益、进度等的实施计划。进行可行性分析并制定粗略计划。–需求分析阶段确定软件的功能、性能、可靠性、接口标准等要求,根据功能要求进行数据流程分析,提出初步的系统逻辑模型,并据此修改项目实施计划。–软件设计阶段它包括系统概要设计和详细设计。在概要设计中,要建立系统的整体结构,进行模块划分,根据要求确定接口。在详细设计中,要建立算法、数据结构和流程图。27THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程–编码阶段把流程图翻译成程序,并对程序进行调试。–测试阶段通过单元测试,检验模块内部的结构和功能;通过集成测试,把模块连接成系统,重点寻找接口上可能存在的问题;确认测试,即按照需求的内容逐项进行测试;系统测试,就是到实际的使用环境中进行测试。单元测试和集成测试由开发者自己完成,确认测试和系统测试则由用户参与完成。–运行维护阶段它一般包括三类工作,为了修改错误而做的改正性维护;为了适应环境变化而做的适应性维护;为了适应用户新的需求而做的完善性维护,有时会成为二次开发,进入一个新的生命期,再从计划阶段开始。28THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程——不要强行照搬书上的软件工程生命周期29THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程项目生命周期阶段–概念(Concept)–开发(Development)–实施(Implementation)–结束(Termination)思考–项目生命周期中风险最大的是哪个阶段?–项目生命周期中冲突最多的是哪个阶段?30THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程项目生命周期的影响项目开始继续收尾人员和成本投入较低逐渐增高迅速下降成功完成项目的可能性最低逐渐上升最高风险和不确定性最高逐渐下降最低干系人的影响力最大逐渐减弱最小31THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程软件项目管理过程软件项目管理的核心启动计划控制结束32THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程项目管理过程包括的主要工作–制定技术目标–组建项目组–制订项目计划–处理范围变化–控制实际进展–整理、完善技术档案–形成知识网络33THESCHOOLOFSOFTWAREENGINEERINGOFHUST软件项目生命期与管理过程影响项目成功的因素–项目的目标、范围是否明确–是否获得领导的积极支持–项目的组织是否健全、稳定–是否建立了有序的、有效的、良好的沟通渠道–是否具有有效、全面的项目管理,严格的变更控