1、第1章 软件工程概述n 1.1 软件与软件工程n 1.2 软件开发技术n 1.3 软件项目管理1.3 软件项目管理n 项目的概念n 任何工作,只要涉及到以下几个方面,都可以看作是项目。n 明确的结果(目的)。n 资源(包括人力和其他要素)。n 一段时间。项目是为创造独特的产品、服务或成果而进行的临时性工作。1.3 软件项目管理n 项目与日常运作n 项目(Project)为创造独特(Unique)的产品、服务或成果而进行的临时性(Temporary)工作。n 临时:有始有终n 独特:独一为二n 复杂:逐步完善,渐进明细n 目常化运作性工作n 持续性n 重复的项目,一件不重复的重要事情。n相对而言
2、,项目的目标导向性更强。1.3 软件项目管理n 以下活动都可以称为一个项目:n 开发一项新产品;n 计划举行一项大型活动(如策划组织晚会、大型会议等);n 策划一次自驾游旅游;n ERP的咨询、开发、实施与培训。n 某些比较复杂的项目可能涉及成百上千的工作人员、耗费好几年的时间和上亿的预算支出;而有些项目则只需要几周的时间、一个同事的帮助,甚至根本没有正式的预算。这些项目都适用同样的项目管理原则。1.3 软件项目管理n 项目可以创造:n 一种产品,可以是其他产品的组成部分、某个产品的升级,也可以本身就是最终产品;n 一种能力,或提供某种服务的能力,对现有产品线或服务线的改进;n 一种成果,例如
3、某个结果或文件(如某研究项目所创造的知识,可据此判断某种趋势是否存在,或判断某个新过程是否有益于社会)。1.3 软件项目管理n 项目基本特征:n 项目开发是为了实现一个或一组特定目标;n 项目要综合考虑范围、时间、成本、质量、资源、沟通、风险、采购及相关方等知识领域的整合;n 项目的复杂性和一次性;n 项目是以客户为中心的;n 项目是要素的系统集成。1.3 软件项目管理n 项目的七大目标:n 多快好省,节约资源,控制风险,相关人满意1.3 软件项目管理n 软件项目n 要有一个主要发起人或客户。n 特定的目标:创造新的产品;升级现有软件产品、集成一组现有软件组件、扩展软件产品的功能或升级软件基础
4、设施。n 项目具有不确定性。很难确切地定义项目的目标,或准确估计完成项目所需的时间和成本支出。n 可满足服务请求、维护需求或提供操作支持。1.3 软件项目管理n 项目的约束条件n 项目的范围约束。项目的范围就是规定项目的任务是什么。n 项目的时间约束。项目的时间约束就是规定项目需要多长时间完成,项目的进度怎样安排,项目的活动在时间上的要求,各活动在时间安排上的先后顺序。n 项目的成本约束。项目的成本约束就是规定 完成项目需要支出的费用。1.3 软件项目管理n 项目管理n“项目管理”是美国曼哈顿计划初期的名称,后来由著名数学家华罗庚教授在上个世纪50年代引进中国。n 所谓项目管理,就是项目的管理
5、者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。n 即从项目的投资决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。1.3 软件项目管理n 软件项目的管理对象n 人员。人的因素是软件项目成功最重要的因素。n 问题。在进行项目计划之前,应该首先明确该项目的目的和范围,考虑可选的解决方案、定义技术和管理的约束。n 过程。软件过程提供了一个框架,在该框架下可以建立一个软件开发的综合计划,若干框架活动适用于所有软件项目。1.3 软件项目管理n 项目管理要素间的关系1.3 软件项目管理n 软件项目管理具有的挑战性n 软件是一种无形
6、的和可塑的产品;软件源代码是用文本编写的。n 软件需求经常随着知识的获得、项目与产品出现的范围而改变。n 软件需求常常与组织的业务流程、员工的工作流过程相互影响。n 软件人员的智力资本是软件项目和软件开发组织最主要的资本资产。n 软件团队和项目干系人之间的沟通和协调往往不够清晰。n 软件开发需要解决创新问题,提出独特的解决方案。n 软件项目涉及风险和不确定性。n 软件安全挑战性很大,并且还在不断增加。1.3 软件项目管理n 软件项目管理具有的挑战性n 软件的穷举测试是不切实际的。n 软件的目标量化和软件质量度量是困难的。n 可执行的软件不是一个孤立的产品。n 软件的延展性对于软件项目管理具有积
7、极和消极的影响。n 软件是智力密集型创新团队中个体认知过程的直接产品。n 要想准确地计划和估算成本与进度都是困难的。n 软件安全性不能被“测试”。n 软件项目中的生产率包括质量工作和数量工作。1.3 软件项目管理n 软件项目管理的要素n 需求管理:界定项目范围、建立业务模型、分析用户的工作流、分析潜在的业务活动实体,以及分析其他非功能性需求,如质量需求、环境需求、设计约束、开发策略等。n 进度管理:活动定义,活动排序,活动历时估计,制定进度计划,项目进度控制。n 成本管理:编制资源计划,成本估算,成本预算,成本控制。n 质量管理:质量计划编制,质量保证,质量控制,质量改进。1.3 软件项目管理
8、n 软件项目管理的要素n 风险管理:降低甚至消除项目因素(成本、质量、时间)的“不确定性”。n 配置管理:变更管理,配置状态检测、报告和评审。n 人力资源管理:角色和职责分配,人员配备管理计划,组织结构建设,制定详细人员要求的依据,项目人员绩效考核,风险防范。n 沟通管理:梳理项目沟通渠道,培养协作精神,与用户有效沟通,处理与管理层的关系。1.3 软件项目管理n 软件项目管理的要点n 重视工程计划。一个好的计划应该能够让团队成员和组织决策层尽可能地高瞻远瞩,并且在执行过程中,计划可以提供改进和审视的视角。n 选择合适的项目经理。项目经理应具备的能力:能够准确地诊断项目进行中存在的问题,提出系统
9、的解决方案;有统领全局的能力,有自信和控制能力;具有影响力,不是使用权力,而是使用人格魅力来领导项目组;能识人、用人。1.3 软件项目管理n 软件项目管理的注意事项n 项目评估。n 需求定义。n 过程思维。n 开发环境。n 组织管理。n 团队协作。n 与用户互动。n 持续改进。1.3 软件项目管理n 软件项目管理的成功原则n 平衡原则-需求、资源、工期、质量四个要素之间的平衡关系问题。n 高效原则-从技术、工具、管理上寻求更多更好的解题之道。n 分解原则-化繁为简,各个击破 n 实时控制原则依靠一套规范的过程来保证实时监控项目的进度。n 分类管理原则-根据项目的特点,制订不同的项目管理的方针政策。n 简单有效原则-没有完美的管理,只有有效的管理。n 规模控制原则-控制项目组的规模,贵精而不贵多。成功项目:项目范围、项目成本、开发时间、客户满意度四点达到要求。课堂讨论n 1.理解和认识与客户很好地合作是软件开发项目成功的关键,在软件开发工程中,如何实现与客户的友好合作?n 2.客户的需求永远在改变,项目可利用的资源永远不够,项目的进度永远会延后,这是项目管理永恒的话题。谈谈你的看法。问题思考n 1.什么是项目?软件项目的特殊性体现在哪些方面?n 2.软件项目管理包括哪些要素?软件是客观世界中问题空间与解空间的具体描述;软件工程就是解决如何正确、高质、高效地写出软件。