计算机软件工程3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件项目管理刘强清华大学软件学院2软件项目管理概述•软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。•软件项目的特征–软件产品的不可见性–项目的高度不确定性–软件过程的多变化性–软件人员的高流动性•降低复杂性和控制变化是软件项目管理的关键问题。3软件项目管理的“4P”过程(Process)过程(Process)人员(People)人员(People)项目(Project)项目(Project)产品(Product)产品(Product)工具(Tools)工具(Tools)参与结果指南、模板自动化4项目管理与过程管理的关系人员(People)人员(People)产品(Product)产品(Product)工具(Tools)工具(Tools)软件项目管理过程定义过程定义过程改进过程改进软件过程管理项目规划项目规划项目实施项目实施项目监控项目监控5软件项目管理的关注点人员安排?成本估算?项目进度?项目监控?其他资源?客户沟通?风险评估?产品质量?项目度量?6软件项目管理活动•项目启动阶段–确定项目范围、组建项目团队、建立项目环境•项目规划阶段–确定项目活动、预算项目成本、制定进度计划•项目实施阶段–监控项目执行、管理项目风险、控制项目变更•项目收尾阶段–客户验收项目、安装培训软件、总结项目经验7内容提纲•人员组织与管理–软件项目组织形式、微软公司的开发团队•项目沟通管理–项目沟通的复杂性与活动•软件项目规划–软件项目估算与计划•软件风险管理–风险识别、风险分析、风险规划、风险监控•软件配置管理–软件配置管理的概念与活动Youarehere!你在这儿!8人员在软件开发中的重要性•人员是软件开发昀重要的资源–人员的选择、分配和组织很大程度上影响软件项目的效率、进度、过程管理和产品质量–软件开发依赖于开发人员的认知能力和沟通技能•项目经理的任务主要是面向人的–项目经理必须能够了解人–项目经理需要建设和优化团队,使其工作达到昀佳•典型的软件开发组织形式–民主式、主程序员式、技术管理式9人员的选择参考因素说明应用领域的经验为了成功地开发系统,开发人员必须了解相关的应用领域。平台的经验在编写底层程序时该因素很重要。编程语言的经验该因素对于短周期的项目是很重要的。教育背景该因素可以显示候选人应该掌握的基础知识和学习能力,由于开发人员的经验可以在项目实践中获得,该因素并非是关键的。沟通能力由于项目成员需要与其他人员、管理者和客户进行口头和书面交流,该因素是十分重要的。适应性适应性可以通过候选人的各种经历进行判断,该因素反映出一个的学习能力。工作态度项目成员应该有积极的工作态度,乐于学习新技术,该因素很重要但是难以评估。个性候选人必须与团队成员关系融洽,尚没有软件工程方面的特定个性类型,该因素很重要但是难以评估。10团队vs.小组•小组(Groups)–强有力的领导者–个人负责制–围绕组织的目标做事–个人创作的结果–有效的组织会议形式–根据对他人的影响评价业绩–由人委派工作•一个有凝聚力的团队是一组紧密团结的人,其整体力量大于个体力量的总和。•团队(Teams)–共同参与–个人与集体共同负责–围绕特定的团队目标做事–集体创作的结晶–自由开放式的会议形式–根据工作产品评价业绩–共同完成实际工作11团队成功的关键•明确的目标与共同的承诺–项目目标与客户需求相一致–共同认同项目的前景和目标•清晰的分工与紧密的协作–清晰地定义项目成员的角色和分工–充分认识团队合作的重要性•融洽的关系与通畅的沟通–共同营造和谐、宽松、团结、互爱的工作环境–具有高效的沟通渠道和开放坦诚的沟通氛围•高昂的士气与高效的工作12民主式组织结构•小组成员完全平等,名义上的组长与其他成员没有任何区别。•大家享有充分的民主,项目工作由全体讨论协商决定,并根据每个人的能力和经验进行适当分配。•优点–同等的项目参与权激发大家的创造力,有利于攻克技术难关–特别适合于规模小、能力强、习惯于共同工作的软件开发组•缺点–缺乏明确的权威领导,很难解决意见分歧–无法适用于大规模开发的情形。13主程序员式组织结构•以主程序员为核心–主程序员既是项目管理者也是技术负责人–团队其他人员的职能进行专业化分工•优点–成员之间采取简单的交流沟通模式•缺点–很难找到技术和管理才能兼备的主程序员主程序员秘书后备程序员程序员程序员程序员14技术管理式组织结构•技术与管理工作进行分离–技术负责人负责技术决策–管理负责人负责非技术性事务的管理决策和绩效评价•在这种组织结构中,明确划分技术负责人和管理负责人的管理权限是十分重要的技术组长管理组长程序员程序员程序员15案例:微软公司的软件开发组织•微软开发团队的特点–小型的、多元化的项目组织–相互依赖的角色与共同分享的职责–具备专深的技术水平和业务技能–具有强烈的产品意识,关注昀终发布的软件产品–清晰的目标和远景–人人参与设计–项目组成员在同一地点办公–对于规模较大的项目,采取类似小型项目组的运作模式16案例:微软公司的软件开发组织““顾客服务顾客服务””开发小组开发小组软件开发软件开发软件测试软件测试程序管理程序管理领导小组领导小组开发管理开发管理测试管理测试管理程序管理程序管理产品管理产品管理用户体验用户体验发布管理发布管理““房间预定房间预定””开发小组开发小组软件开发软件开发软件测试软件测试程序管理程序管理““帐单结算帐单结算””开发小组开发小组软件开发软件开发软件测试软件测试程序管理程序管理17案例:微软公司的软件开发组织代表客户的想法和意见促使项目远景和范围在项目组达到共识管理客户的需求定义开发和维护业务用例管理客户的预期目标在产品特性与开发进度之间做出权衡管理市场宣传和公共关系产品管理产品管理18案例:微软公司的软件开发组织推动产品开发过程管理产品规格说明促进项目团队内部的沟通和讨论保证项目进度和报告项目进展状态对开发过程中的关键问题做出决策程序管理程序管理19案例:微软公司的软件开发组织软件开发软件开发完成产品的详细设计估计每一个产品特性的开发时间构建软件系统准备产品部署20案例:微软公司的软件开发组织制定测试策略和测试计划确保产品的所有特性都经过了严格的测试软件测试软件测试21案例:微软公司的软件开发组织代表昀终用户管理用户需求定义设计和开发的技术支持系统培训用户确保产品的可用性设计图形用户界面用户体验用户体验HMSIIGuestCheck-inGuestName:Spindler,Mr.andMrs.RoomNumber:203ProblemIdentificationDateReasonProblemActionDateRoom&TaxReason22案例:微软公司的软件开发组织发布管理发布管理负责协调项目的运营、支持、发布渠道等管理项目的后勤和基础设施管理产品发布事宜参与、管理并支持相关的项目决策过程23案例:微软公司对员工的要求•个人素质–聪明–有自我发展能力–足够自信–有很强的工作驱动能力,知道如何开展工作–沉着与镇定–有创新精神•对待产品和技术–热爱技术,热心解决问题–针对变化和创新,有良好的适应和管理能力24案例:微软公司对员工的要求•注重客户的反馈–所有员工都要以客户为中心开展工作–员工代表公司的形象•团队合作–有团队精神–具备良好的交流沟通能力–善于与人相处•你认为如何培养这些素质?25案例:IBM公司的角色职责26案例:IBM公司的角色职责27案例:IBM公司的角色职责28案例:IBM公司的角色职责29案例:IBM公司的角色职责30案例:IBM公司的角色职责31案例:IBM公司的角色职责32案例:IBM公司的角色职责33案例:IBM公司的角色职责34案例:IBM公司的角色职责35思考与讨论•目前业界对于软件人才的需求–在一次人才培养研讨会上,中软公司提出当前人才培养的问题和企业需求•思考–你是如何看待这种观点的?–你认为一个合格的软件工程师应该具备什么素质和能力?•讨论–在本课程实验的开发中,你们打算采取什么组织方式?角色分工如何定义?36内容提纲•人员组织与管理–软件项目组织形式、微软公司的开发团队•项目沟通管理–项目沟通的复杂性与活动•软件项目规划–软件项目估算与计划•软件风险管理–风险识别、风险分析、风险规划、风险监控•软件配置管理–软件配置管理的概念与活动Youarehere!你在这儿!37项目沟通管理•项目沟通管理是对项目实施过程中的各种形式和各种内容的沟通行为进行管理的过程。–涉及:对传递项目信息的内容、方法和过程等方面进行综合管理;–目的:保证项目的有关信息能够在适当的时间、以适当的方式产生、收集、处理、贮存和交流。•影响团队沟通的因素–团队成员的地位–团队成员的个性–团队成员的性别组合–沟通渠道38沟通的复杂性•问题:我们能否按照以下方式计算开发团队的规模?工作量(人月)×指定时间=开发人数•原因:–有些任务可以共同分担,有些任务则不行–沟通花费大量的时间沟通渠道数量=N(N-1)/239沟通的复杂性•定期沟通的人员规模对开发效率的影响定期沟通的人数371大概的昀佳范围开发人员的效率40沟通的模型发送者接收者信息编码信息编码信息发送通道信息反馈通道噪音噪音41常用沟通方式•直接交谈–一种由事件驱动的、基于时机的非正式信息沟通方式–适用情况•与领导层和项目成员等的个别谈话•从客户和用户处获取需求•交流问题并商讨解决方案•电话交谈–也是一种直接交谈,可以不受任何地点的限制–适用情况•重要会议或重要事项的通知•交流简单问题42常用沟通方式•电子邮件–一种常用的沟通方式,具有异步性和及时性的特点–适用情况•发布项目信息•发送项目文档•会议或事项的通知•会议–适合于许多参与者讨论、检查和协商问题,并达成一致的解决方案–常见的项目会议包括项目启动会议、阶段评审会议、解决问题会议、需求和设计评审会议、项目验收总结会议等43常用沟通方式•项目网站–保持组间交流、对外发布项目信息的理想工具–适用情况•发布项目进展情况•发布文档、代码等项目阶段性成果•项目组间技术问题讨论•提供项目资料和工具等•书面报告–一种正式的书面沟通方式,适合于复杂程度高、严谨性强的信息沟通–通常包括有关项目的重要决定、项目计划、技术文档、项目进展报告、项目工作总结等44项目沟通活动•规划项目沟通–项目组内部的交流活动•状态检查、组内讨论、需求说明、项目变更等–项目组之间的交流活动•客户评审、项目评审、版本发布、问题讨论、项目变更等•建立基础设施–项目管理者可以建立项目的信息系统和内部网站•实施阶段性评审–包括客户参与的评审活动和项目组进行的评审活动•每周组织小组会议–每周组织组内会议进行状态检查、集体讨论和问题讨论等45内容提纲•人员组织与管理–软件项目组织形式、微软公司的开发团队•项目沟通管理–项目沟通的复杂性与活动•软件项目规划–软件项目估算与计划•软件风险管理–风险识别、风险分析、风险规划、风险监控•软件配置管理–软件配置管理的概念与活动Youarehere!你在这儿!46软件项目规划•软件项目规划是项目管理者对资源、成本和进度作出合理的估算,制定出切实可行的软件项目计划。•软件项目规划过程–确定项目的目的和范围•具体说明项目的昀终产品以及期望的时间、成本、质量目标–分解和定义整个项目应包括的工作活动和任务–估算完成该项目的规模及其所需资源–制定合理的软件项目计划•包括进度、成本、质量等方面的预测47软件规模估算•代码行技术–代码行技术是一种简单而直观的软件规模估算方法,它从过去开发类似产品的经验和历史数据出发,估算出所开发软件的代码行数。•优点–简单方便,在历史数据可靠的情况下可以很快估算出比较准确的代码行数。•缺点–需要依赖比较详细的功能分解,难以在开发初期进行估算–估算结果与所用开发语言紧密相关,无法适用于非过程语言48软件规模估算•功能点技术–功能点技术是依据软件信息域的基本特征和对软件复杂性的估计,估算出软件规

1 / 92
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功