您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 软件工程项目管理思考及探索
软件工程项目管理思考及探索主讲人:冯旭鹏部门:信息技术科日期:2013.10.31主要内容引言软件工程软件项目管理昆工软件项目管理思考内容总结23引言工作中遇到的问题“软件危机”现象《软件工程》4工作概述建设“校园信息化”信息资源管理平台建设和完善重点应用系统......5我们所遇到的共性问题产品质量问题项目进度问题产品与要求相差甚远没有提高工作效率,反而增加了繁琐的业务一旦用户增多,性能就变得非常差交付的产品存在隐患,公司“钓鱼”,故意留下漏洞......公司拖拉,项目进度缓慢,而且总有各种托辞的借口与理由案例:教务处排课系统缺陷四六级报名系统缺陷......公司研发人员态度差,难于沟通出现问题时,互相扯皮......6“软件危机”现象危害严重典型表现伦敦地铁,司机没上车,地铁就驶离站台丹佛机场行李系统,延期16个月,成本超出32亿美元Ariane5,40秒爆炸,损失50亿美元......程序质量低下错误频出进度延误费用剧增......软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机不可避免,也没有根治的途径要解决软件危机,需进行系统性的研究项目建设,“知己知彼,百战不殆”7利器——《软件工程》《软件工程(SoftwareEngineering,SE)》——一门集计算机科学、数学、逻辑学及管理学为一体的学科,意在通过借鉴传统工程的原则、方法,来进行软件开发的管理,从而提高软件质量、降低软件成本和改进软件性能。8软件工程学科发展概述学科知识体系学科框架9《软件工程》发展概述诞生定义软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件技术结合起来,运用到软件开发和维护过程中,来解决软件危机。思想以系统性的、规范化的、可定量的过程化方法去开发和维护软件使用经过时间考验而证明正确的管理技术1968年,北大西洋公约组织(NATO)举办了软件工程学术会议,首次提出10《软件工程》知识体系含10个知识域,8个学科由软件工程协调委员会(SWECC)于2008年确立的版本。11软件工程框架过程:生产目标产品所需要的步骤目标:生产具有正确性、可用性以及开销合宜的软件产品软件工程过程主要包括开发过程、运作过程、维护过程。软件工程过程覆盖了需求分析、设计、实现、确认以及维护等活动。正确性——满足用户的各项功能需求可用性——软件及其使用文档方便为用户使用开销合宜——软件开发及运行的各项开销能够被用户接受软件工程框架可概括为:目标、过程和原则。原则:围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。12软件工程的“四项基本原则”原则三:提供高质量的工程支持。原则二:采用合适的设计方法。“工欲善其事,必先利其器”。软件工具与环境对软件过程的支持颇为重要。软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征原则一:选取适宜的开发范型。原则四:重视软件开发过程的管理。软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。必须认识需求定义的易变性,采用适宜的开发范型予以控制。软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。13软件生命周期软件生命周期(SystemsDevelopmentLifeCycle,SDLC)问题的定义及规划需求分析软件设计程序编码软件测试运行维护六个阶段14软件项目开发及管理全过程15软件项目管理流程立项阶段项目验收阶段判断验收时机已经成熟验收流程的优化后续服务及维护条款项目执行阶段经验总结阶段制定项目建议书、可行性分析、产品调研、承包商选择技巧招投标方式合同上关于风险应对及责任明晰等内容制定工作计划质量监管、测试方案进度监管16软件项目管理项目管理复杂性分析软件开发过程模型概述软件项目管理流程各阶段需要注意的事项17软件项目管理的复杂之处软件产品是智力产品,软件项目是设计型项目“隔行如隔山”软件使用方在提业务需求时往往不能足够重视需求变化频繁,变更难以控制难以估算工作量开发进度难以界定交付成果难以明确对开发人员依赖性大承建商主要目的是利润,只想提供最少的功能、一定的质量,并在合理时间内完成为达到更高利润,承建商可能对项目进行二次外包,管理更混乱……18软件开发过程重视软件开发过程过程决定了软件建设的步骤与我们管理的方式过程直接影响最终产品的质量软件开发过程模型瀑布模型快速原型模型增量模型构件组装模型螺旋模型19软件过程模型——瀑布模型(Waterfall-model)思想软件开发划分阶段各阶段顺序执行特征最早的、最简单的模型“理想化”的顺序模型单向性,工作不可逆转优点为项目提供分阶段的检查点当前活动完成,只需关注后续活动模板清晰缺点抵抗“需求不断变化”能力弱。用户最终才能见产品,增加开发风险。开发人员常常陷入“阻塞状态”各阶段划分完全固定,产生大量文档,增加工作量。——由Royce于1970年提出20软件过程模型——增量模型(incrementalmodel)思想功能拆分,每个子功能按瀑布模型开发最终合并所有“增量”特征分模块开发多段瀑布模型优点抗变化能力比瀑布模型强可以边开发,边应用缺点所有子系统合并可能“不兼容”对系统设计师的水平要求高——举例:字处理软件解决方法:面向接口的编程方法适用于:小型或是交互型式的系统。大型系统的某些部分,例如用户界面。21软件过程模型——快速原型模型(rapidprototype)思想根据需求先较小代价、快速构建一个软件的“雏形”根据用户反馈不断调整,最终确定产品优点开发方可快速对需求有明晰认识能有效应对需求变化,降低风险缺点快速建立起来的原型系统可能架构脆弱,不断修改,导致产品低下——建立快速原型的主要目的是快速获取与验证需求!22软件过程模型——基于组件的开发模型思想:软件复用23软件过程模型——螺旋模型(SpiralModel)思想施工前先进行风险评估,通过后快速开发出原型,交由用户评估沿螺旋线自内向外每旋转一圈,意味着开发出更加完善的版本特征瀑布模型和快速原型模型的联合体适用于大型复杂项目,有效控制风险——由Boehm于1988年提出缺点需要较高的风险评估技术风险分析费用高,增加成本应用较复杂24软件过程模型使用总结需求明确——瀑布模型;用户无信息系统使用经验,需求分析人员技能不足——快速原型模型需求不确定因素多,无法提前计划——采用增量迭代和螺旋模型资金和成本无法一次到位——增量模型,软件产品分多个版本进行发行全新系统的开发——必须在总体设计完成后再开始增量或并行编码人员经验较少——建议不要采用敏捷或迭代等生命周期模型增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则25“哪种过程模型更好用?”比较瀑布模型最简单,但抗需求变化能力最弱增量模型分模块开发,子系统集成怕不兼容快速原型模型能最快实现需求一致性螺旋模型一般只有大型公司或大型项目采用不要太在乎学术上的“先进”与“落后”,适用的就最好。瀑布模型增量模型快速原型模型螺旋模型我们最常见的系统都是采用增量模型、快速原型模型来开发。当前对软件研发过程质量的评判主要是以SEI(SoftwareEngineeringInstitute)颁布的CMMI(CapabilityMaturityModelIntegration)作为研发标准。26软件项目管理流程立项阶段项目验收阶段判断验收时机已经成熟验收流程的优化后续服务及维护条款项目执行阶段经验总结阶段制定项目建议书、可行性分析、产品调研、承包商选择技巧招投标方式合同上关于风险应对及责任明晰等内容制定工作计划质量监管、测试方案进度监管28立项阶段——方向比努力更重要第一步:项目建议书项目背景。意义和必要性。未来收益预期。规模和期限。投资估算。资金筹措。其他重要意见。提交项目建议书给相关部门进行审核,“上会”29第二步:项目可行性分析立项阶段需求分析。项目的背景、项目的目标、业务需求、概要设计。技术可行性分析。经济可行性分析。我们预算多少,硬件方面需要多少投资。主要风险分析。人员配置及项目实施计划。可行性研究的结论和建议。其他重要意见。30立项阶段需求的基本标准需求管理的误区开发分析阶段,开发方与客户只需要在轮廓上达成基本一致即可,具体细节以后再填充。软件项目需求可以持续不断地改变。——实践表明,随着开发进度的推进,实现软件需求更改所需的代价呈指数形式增长。仅仅满足目前需求即可,不考虑未来几年的状况。准确界定系统的目标和范围完整、正确可行、必要划分优先级无二义性、可验证坚持需求的审查对部分重要需求进行追踪31立项阶段技术——开发能力如何?技术方案是否满意?管理——内部组织是否混乱?进度——开发进度是否可以接受?经验——是否有相关领域、相似产品的开发经验、以前开发的产品质量如何?诚信度——信誉、口碑如何?采用“一票否决制”资质——是否取得业界认可证书(如ISO9000质量认证、CMM认证),证书等级后续服务——能否提供较好的开发及维护服务经济实用性——性价比如何?其他因素——比如地理位置等选择软件供应商考虑因素CMM五个等级32第四步:合同签署,明晰管理章程。立项阶段第三步:专家组评审《可行性分析报告》专门的技术人员、软件最终使用者涉及到的相关利益主体。案例:教务处排课系统对多媒体教室管理带来的影响。不仅仅是形式,启动是为了形成一个良好的沟通体系,让所有项目人员都理解项目重要性,同时明晰职责,保障项目管理的畅通。第五步:项目启动仪式——“磨刀不误砍柴工”。考虑到后续开发过程中进度、质量等方面的干扰因素,制定规章条例。尽可能提前预估风险,制定应对方案。33项目策划阶段工作量估计。寻找关键路径。通过定义各任务之间的依赖关系,计算出项目中的关键路径,帮助区分任务的轻重缓急,合理安排和调整资源,从而保证项目的整体进度。软件项目主管的任务——“排兵布阵”37目标:进度快、投资省、质量好。项目执行阶段进度快就要增加投资,而项目提前使用却又可能及早提高收益。进度快,质量也许就不能保证;质量严格控制,则有可能影响进度;质量严格控制不至返工,又会加快进度。“脱离成本,不谈质量”。项目负责人的任务进度、成本、质量、风险、人力资源等等。进度、成本、质量——对立统一关系成本除了资金成本,还有人力成本,资金少,就多付出些汗水。项目执行阶段——进度管理(1)39进度的描述里程碑——做完、没做完,没有第三种状态甘特图40甘特图示例项目执行阶段——进度管理(2)41影响进度的主要因素错估了项目特点及实现条件。项目参与者工作错误。不可预见事件发生。面对进度延迟,我们该怎么做呢?——分析主客观原因,对症下药!项目执行阶段——进度管理(3)42客观原因进度计划不合理,过于理想化等任务定义过于复杂、过度定义、超出范围测试太多错误而延迟意外发生(比如停电、开发人员生病等)使用方需求变更主观原因开发人员没有全神贯注于自己的工作。开发人员不恰当的工作方式。任务定义依赖性强,人员工作之间扯皮。项目经理过多干预开发人员工作。应对措施——重新定义进度计划——重新定义任务,舍弃过难技术问题——万不可为了赶进度而降低测试标准!——按风险管理中制定的应急措施处理——核心/关键功能的里程碑事件定义应对措施——生活原因?多多沟通、绩效考核——有针对性地进行经验交流和培训—
本文标题:软件工程项目管理思考及探索
链接地址:https://www.777doc.com/doc-3969813 .html