软件工程项目管理思考及探索.ppt
《软件工程项目管理思考及探索.ppt》由会员分享,可在线阅读,更多相关《软件工程项目管理思考及探索.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程项目管理思考及探索,主讲人:冯旭鹏 部 门:信息技术科 日 期:2013.10.31,主要内容,引言 软件工程 软件项目管理 昆工软件项目管理思考 内容总结,2,3,引言,工作中遇到的问题 “软件危机”现象 软件工程,4,工作概述,建设“校园信息化”信息资源管理平台 建设和完善重点应用系统 .,5,我们所遇到的共性问题,产品质量问题,项目进度问题,产品与要求相差甚远 没有提高工作效率,反而增加了繁琐的业务 一旦用户增多,性能就变得非常差 交付的产品存在隐患,公司“钓鱼”,故意留下漏洞 .,公司拖拉,项目进度缓慢,而且总有各种托辞的借口与理由,案例: 教务处排课系统缺陷 四六级报名系统缺
2、陷 .,公司研发人员态度差,难于沟通 出现问题时,互相扯皮 .,6,“软件危机”现象,危害严重,典型表现,伦敦地铁,司机没上车,地铁就驶离站台 丹佛机场行李系统,延期16个月,成本超出32亿美元 Ariane5,40秒爆炸,损失50亿美元 .,程序质量低下 错误频出 进度延误 费用剧增 .,软件危机,泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。,软件危机不可避免,也没有根治的途径,要解决软件危机,需进行系统性的研究,项目建设,“知己知彼,百战不殆”,7,利器 软件工程,软件工程(Software Engineering,SE) 一门集计算机科学、数学、逻辑学及管理学为一体的学科,
3、意在通过借鉴传统工程的原则、方法,来进行软件开发的管理,从而提高软件质量、降低软件成本和改进软件性能。,8,软件工程,学科发展概述 学科知识体系 学科框架,9,软件工程发展概述,诞生,定义,软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件技术结合起来,运用到软件开发和维护过程中,来解决软件危机。,思想,以系统性的、规范化的、可定量的过程化方法去开发和维护软件 使用经过时间考验而证明正确的管理技术,1968年,北大西洋公约组织(NATO)举办了软件工程学术会议,首次提出,10,软件工程知识体系,含10个知识域,8个学科,由软件工程协调委员
4、会(SWECC)于2008年确立的版本。,11,软件工程框架,过程:生产目标产品所需要的步骤,目标:生产具有正确性、可用性以及开销合宜的软件产品,软件工程过程主要包括开发过程、运作过程、维护过程。 软件工程过程覆盖了需求分析、设计、实现、确认以及维护等活动。,正确性满足用户的各项功能需求 可用性软件及其使用文档方便为用户使用 开销合宜软件开发及运行的各项开销能够被用户接受,软件工程框架可概括为:目标、过程和原则。,原则:围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。,12,软件工程的“四项基本原则”,原则三:提供高质量的工程支持。,原则二:采用合适的设计方法。,“工欲善其事
5、,必先利其器”。软件工具与环境对软件过程的支持颇为重要。,软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征,原则一:选取适宜的开发范型。,原则四:重视软件开发过程的管理。,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。必须认识需求定义的易变性,采用适宜的开发范型予以控制。,软件工程的管理,直接影响可用资源的有效利用,生产满足目标的软件产品,提高软件组织的生产能力等问题。因此,仅当软件过程得以有效管理时,才能实现有效的软件工程。,13,软件生命周期,软件生命周期(Systems Development Life Cycle,SDLC),
6、问题的定义及规划 需求分析 软件设计 程序编码 软件测试 运行维护,六个阶段,14,软件项目开发及管理全过程,15,软件项目管理流程,立项阶段,项目验收阶段,判断验收时机已经成熟 验收流程的优化 后续服务及维护条款,项目执行阶段,经验总结阶段,制定项目建议书、可行性分析、产品调研、承包商选择技巧 招投标方式 合同上关于风险应对及责任明晰等内容制定,工作计划 质量监管、测试方案 进度监管,16,软件项目管理,项目管理复杂性分析 软件开发过程模型概述 软件项目管理流程 各阶段需要注意的事项,17,软件项目管理的复杂之处,软件产品是智力产品,软件项目是设计型项目 “隔行如隔山” 软件使用方在提业务需
7、求时往往不能足够重视 需求变化频繁,变更难以控制 难以估算工作量 开发进度难以界定 交付成果难以明确 对开发人员依赖性大 承建商主要目的是利润,只想提供最少的功能、一定的质量,并在合理时间内完成 为达到更高利润,承建商可能对项目进行二次外包,管理更混乱 ,18,软件开发过程,重视软件开发过程,过程决定了软件建设的步骤与我们管理的方式 过程直接影响最终产品的质量,软件开发过程模型,瀑布模型 快速原型模型 增量模型 构件组装模型 螺旋模型,19,软件过程模型瀑布模型(Waterfall-model),思想,软件开发划分阶段 各阶段顺序执行,特征,最早的、最简单的模型 “理想化”的顺序模型 单向性,
8、工作不可逆转,优点,为项目提供分阶段的检查点 当前活动完成,只需关注后续活动 模板清晰,缺点,抵抗“需求不断变化”能力弱。 用户最终才能见产品,增加开发风险。 开发人员常常陷入“阻塞状态” 各阶段划分完全固定,产生大量文档,增加工作量。, 由 Royce 于1970年提出,20,软件过程模型增量模型(incremental model),思想,功能拆分,每个子功能按瀑布模型开发 最终合并所有“增量”,特征,分模块开发 多段瀑布模型,优点,抗变化能力比瀑布模型强 可以边开发,边应用,缺点,所有子系统合并可能“不兼容” 对系统设计师的水平要求高,举例:字处理软件,解决方法:面向接口的编程方法,适用
9、于:小型或是交互型式的系统。大型系统的某些部分,例如用户界面。,21,软件过程模型快速原型模型(rapid prototype),思想,根据需求先较小代价、快速构建一个软件的“雏形” 根据用户反馈不断调整,最终确定产品,优点,开发方可快速对需求有明晰认识 能有效应对需求变化,降低风险,缺点,快速建立起来的原型系统可能架构脆弱,不断修改,导致产品低下, 建立快速原型的主要目的是快速获取与验证需求!,22,软件过程模型基于组件的开发模型,思想:软件复用,23,软件过程模型螺旋模型(Spiral Model),思想,施工前先进行风险评估,通过后快速开发出原型,交由用户评估 沿螺旋线自内向外每旋转一圈
10、,意味着开发出更加完善的版本,特征,瀑布模型和快速原型模型的联合体 适用于大型复杂项目,有效控制风险, 由 Boehm于1988年提出,缺点,需要较高的风险评估技术 风险分析费用高,增加成本 应用较复杂,24,软件过程模型使用总结,需求明确瀑布模型; 用户无信息系统使用经验,需求分析人员技能不足 快速原型模型 需求不确定因素多,无法提前计划 采用增量迭代和螺旋模型 资金和成本无法一次到位 增量模型,软件产品分多个版本进行发行 全新系统的开发 必须在总体设计完成后再开始增量或并行 编码人员经验较少 建议不要采用敏捷或迭代等生命周期模型 增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确
11、的交付和出口准则,25,“哪种过程模型更好用?”,比较,瀑布模型最简单,但抗需求变化能力最弱 增量模型分模块开发,子系统集成怕不兼容 快速原型模型能最快实现需求一致性 螺旋模型一般只有大型公司或大型项目采用,不要太在乎学术上的“先进”与“落后”,适用的就最好。,瀑布模型 增量模型 快速原型模型 螺旋模型,我们最常见的系统都是采用增量模型、快速原型模型来开发。,当前对软件研发过程质量的评判主要是以SEI(Software Engineering Institute) 颁布的CMMI(Capability Maturity Model Integration)作为研发标准。,26,软件项目管理流程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 工程项目 管理 思考 探索
限制150内