软件工程与项目管理课程(PPT 78页)deds

上传人:无*** 文档编号:244475572 上传时间:2024-10-04 格式:PPT 页数:78 大小:6.53MB
返回 下载 相关 举报
软件工程与项目管理课程(PPT 78页)deds_第1页
第1页 / 共78页
软件工程与项目管理课程(PPT 78页)deds_第2页
第2页 / 共78页
软件工程与项目管理课程(PPT 78页)deds_第3页
第3页 / 共78页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,软件工程与项目管理,当你把所有的错误都犯过之后,你就是正确的了,课程引导,为什么要学这门课?,学生,工作,不从事软件设计和研发,并不表示不接触软件和软件的相关知识。当涉及到与软件单位打交道时,交流会比较困难,课程引导,岗位,岗位要求,岗位技术难度,设计岗,系统分析能力、需求分析能力、设计能力,要求高、一般要求有较长时间的开发经验,编码岗,熟练掌握某种语言、能看动相关设计文档,,MIS,系统编码一般要求掌握一种数据库系统,一般,技术支持岗,熟练了解某种特定的软件、能解决客户提出的各种技术问题、对软件硬件都应当有所了解,一般,软件企业维护岗,熟练了解某种特定软件、能接收并解决客户提出的问题、能进行软件的二次开发、熟悉某种开发语言、掌握一种数据库系统,一般,软件测试岗,熟悉软件开发流程、熟悉某种开发语言、有较长的项目开发经验;进行确认测试人员需要了解客户单位工作业务流程,较高,一般要求有开发经验后再从事测试工作,应用企业维护岗,了解某种特定软件应用、和软件公司接洽反映软件问题、掌握一般软硬件维护技能,较低,软件生产和相关行业的主要岗位,课程引导,会编程序不等于会编软件,软件和程序不同,做软件需要用工程的概念,软件工程与项目管理?,必须应用工程设计,左图可自行设计,自行施工,右图可能需工程队施工,课程引导,“工程”强调的是将自然科学的理论应用到具体生产部门的过程,软件程序文档,软件工程是开发、运行、维护和修复软件的系统方法,软件项目是为创建某一独特软件产品而临时进行的一次性努力,课程引导,课程综述,本课程是计算机专业的专业课之一, 通过本课程的学习,要求学生理解在软件开发过程中应用软件工程方法的必要性和迫切性,要求学生掌握软件工程的基本原理、概念与技术方法,本门课程最主要的作用就是帮助学生建立系统、完整的专业基础理论体系,不仅培养学生分析问题、解决问题的能力,而且全面锻炼学生将来成为现代软件工程师需要的团队协作、谈判沟通、适应发展等等能力,为在今后工作中从事计算机大规模软件开发与维护打下扎实的基础,内容安排,第一部分 软件工程基础,软件工程的基本概念、软件过程的概念以及软件生存期模型,第二部分 软件工程技术方法综述,结构化和面向对象技术的综述,第三部分 软件工程过程,从需求、设计、测试与维护各个阶段的分析和建模详细描述软件工程过程的实施,第四部分 软件工程项目管理,软件项目管理相关内容,包括各种组织原则、方式和方法等,第一部分 软件工程基础,软件工程基本概念,软件工程、软件危机,软件工程模型,软件项目开发路线图,管理路线图,软件过程模型,瀑布模型、增量模型、喷泉模型,软件项目管理的问题,管理的范围、管理的方法等概述,软件工程基本概念,软件工程与软件危机,1946,:,ENIAC,1946,年世界上第一台电子计算机的诞生,标志着人类由工业化社会进入了信息化社会,以计算机产业和计算机应用服务业为蜘蛛的信息工业,成了信息化社会的主要基础之一,软件工程基本概念,软件工程与软件危机,程序设计阶段 60年代,70,年代,系统设计阶段 70年代,80,年代,软件工程阶段,80,年代,90,年代,国外,国内,软件发展阶段,第一代 算法技术,第二代 结构化软件技术,第三代 面向对象技术,第四代 分布式面向对象技术,第五代 软件构件技术,软件与软件技术的发展,软件工程基本概念,软件工程与软件危机,软件工程基本概念,软件工程与软件危机,OS 360,是第一个超大型的软件项目,它使用了,1000,人左右的程序员,经历了数十年,是一个极度复杂的软件项目,甚至产生了一套不包括在原始设计方案之中的工作系统。其管理者承认软件开发中犯了一个价值数百万美元的错误。,软件工程基本概念,软件工程与软件危机,人月神话,Fred Brooks,在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道,银弹,软件工程基本概念,软件工程与软件危机,软件危机,:计算机软件的开发和维护过程所遇到的一系列严重问题,阿里亚娜火箭:上万人,10,余年的努力,耗资高达,70,亿美元,升空仅,40,秒后发生大爆炸,,由于火箭导航的电脑软件系统发生故障造成的,。,软件工程基本概念,软件工程与软件危机,软件危机,:计算机软件的开发和维护过程所遇到的一系列严重问题,软件危机的具体表现:,对软件开发的成本和进度估计不够准确,用户对已完成的软件不满意的现象时有发生,软件常常是不可维护的,软件产品的质量往往不可靠,软件开发生产率提高的速度远远跟不上日益增长的软件需求,满足不了社会发展的需要,软件工程基本概念,软件工程与软件危机,软件危机,:计算机软件的开发和维护过程所遇到的一系列,严重,问题,缓解软件危机的途径必须做好以下几个方面的工作:,加强软件开发过程的管理,做到组织有序、各类人员协同配合,共同保证工程项目完成,避免软件开发过程中个人单干的现象,推广使用开发软件的成功技术和方法,并且不断探索更好的技术和方法,消除一些错误的概念和做法,开发和使用好的软件工具,支持软件开发的全过程,软件工程基本概念,软件工程与软件危机,软件工程,:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程包含三要素:,方法,工具,过程,软件工程基本概念,软件工程与软件危机,软件工程,:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程包含三要素:方法、工具和过程,提供一系列软件开发技术。包括完成开发过程中各方面任务的方法并用某种特殊的语言或图形来描述。,为软件开发提供“,如何做,”的技术,方法,软件工程基本概念,软件工程与软件危机,软件工程,:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程包含三要素:方法、工具和过程,软件工具为软件方法提供了自动的或半自动的支撑环境。将多种工具集成在一起可构成计算机辅助软件工程(,CASE,)的软件开发支撑系统,为软件工程方法提供,支撑环境,工具,软件工程基本概念,软件工程与软件危机,软件工程,:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,软件工程包含三要素:方法、工具和过程,软件过程是将软件工程的方法和工具综合起来,进行软件开发,定义了,:,方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑,过程,软件过程,包括将用户需求转变成软件产品所需的所有活动,软件开发活动:,软件过程的核心,软件项目管理活动:,管理好项目范围、进度和成本,软件过程改进活动:,提高软件开发组织的软件过程能力,提高软件生产能力,软件工程基本概念,软件开发,项目管理,过程改进,软件工程三段论,软件过程,软件过程提供了一个体系框架结构,该框架可应用于不同的任务集合:,任务、里程碑、交付物、质量保证点,保护性活动(质量保证、配置管理等),软件开发过程中脑力活动的“不可见性”大大增加了过程管理的困难,软件工程中管理的指导思想就是“变不可见为可见”,至始至终的贯彻质量管理,保证软件质量,软件工程基本概念,软件工程模型,依照工程化的思想,软件过程的工程模型基本由,5,个阶段构成:,初始阶段:立项,供应商选择,合同签署,计划阶段:范围计划,时间计划,成本计划,质量计划,沟通计划,人力资源计划,合同计划,配置管理计划,执行阶段:需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,项目验收,项目维护,控制阶段:范围计划控制、时间计划控制,成本计划控制,质量计划控制,沟通计划控制,人力资源计划控制,合同计划控制,配置管理计划控制,结束阶段:合同结束,项目总结,软件项目开发路线图,软件开发过程是软件人员生产软件的过程,例如需求分析、设计、编码、测试等,相当于生产线上的生产过程,是软件过程的核心过程,软件工程模型,维护,产品,提交,测试,编码,详细,设计,概要,设计,需求,分析,软件项目管理路线图,软件管理过程是项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程,软件工程模型,软件工程模型,合同管理,生存期,需求管理,任务分解,项目进度,项目估算,质量计划,配置计划,风险计划,团队管理,项目度量,集成项目,跟踪控制,项目结束,软件过程改进,过程改进相当于对软件开发过程和软件管理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进,软件工程模型,启动,诊断,建立,实施,评估,软件过程模型,软件生命周期与软件过程模型,一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期,为了能高效开发一个高质量的软件产品,通常把软件生存期中各项开发活动的流程用一个合理的框架,开发模型来规范描述,这就是软件过程模型,Why,软件过程模型,?,1,、需要造一个房子,讲述想法,2,、开始建造,边造边画图,造房的方法论,-,简易房,3,、造了两层了,想在二楼加卫生间,4,、修改设计,最终房屋建成,造房的方法论,-,简易房,小型工程可边做边设计,施工过程中修改方案不会带来致命影响,以经验为主,造房和施工方不一定需要通过图纸来沟通,不需要太多的工程知识,双方边商量边施工,造房的方法论,-,总结,谈可行性,设计原形并讨论,造房的方法论,-,金贸大厦,严格按照图纸施工,可耸立百年的大楼是精确设计的产物,造房的方法论,-,金贸大厦,大型工程需要进行可行性分析,要进行精密的设计和原型分析,要进行严格的施工管理并强调方法论,姑且将房屋的:规划,-,设计,-,施工,-,交付,-,使用,-,报废,-,拆除这个过程叫“房屋的生命周期”,只有严格按照房屋生命周期进行规划、设计才能交付一个可用百年的房屋,造房的方法论,-,金贸大厦总结,造房的方法论,-,总结,软件过程模型,软件计划,问题定义,“,要解决的问题是什么?,”,可行性研究,经济,技术,管理,社会环境,软件过程模型,40,需求分析,确定系统逻辑模型,确定目标系统必须具备的如下内容,功能,性能,接口,约束、限制条件,软件过程模型,41,软件设计,总体设计方案,划分子系统功能,确定共享数据的组织,进行详细设计,处理模块设计,数据库系统设计,输入输出界面设计,编码的设计,软件过程模型,42,软件测试,单元测试:测试模块,集成测试:把经单元测试的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试,验收测试:验收测试是按照需求规格说明书的规定,由用户对目标系统进行验收,通过各种类型的测试,使软件达到预定的要求,软件过程模型,43,软件维护,日常运行管理,根据一定的规格对系统进行必要的修改,评价系统的运行效率、工作质量和经济效益,对运行费用和效果进行监理审计,软件过程模型,44,瀑布模型,演化模型,增量模型,螺旋模型,统一过程模型,软件生存期模型,软件过程模型,45,软件过程模型,小马过河:对河深度的理解决定过河的方法,瀑布模型,最早出现的软件开发模型,它提供了软件开发的基本,框架,系统需求,软件需求,需求分析,设计,编码,维护,测试,制定周密过河计划的瀑布模型,制定周密过河计划的瀑布模型,过河前:详细勘察,制定计划,一旦过河计划制定,将不会大更改,开始过河,每步骤即将完成时,都会对这一步骤进行总结,如进行下一步骤的条件不具备,将停留在原地,等待条件具备,瀑布模型,瀑布模型,瀑布模型,的本质是一次通过,即每个活动只执行一次,最后得到,软件产品,瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和,效率,里程碑或基线驱动,或者说文档,驱动,瀑布模型,瀑布模型的特点,头绪简单,理解容易,适合小型项目,修改较少项目,修改较难,需求变更工作量较大,适合教学,用于理解各个过程的大致步骤,客户:我们程序做的怎样了?,程序员:差不多做好了,可以试用了。,瀑布模型的表现,客户:我们的程序有没有*的功能?,程序员:没有,上次你没有说要这个功能?,客户:那怎么办?我们要这个功能,上次我们忘记说了。,瀑布模型的表现,程序员:那,.,我们要重新设计数据库,很多东西要重新做过了,再给我三个月时间吧,.,瀑布模型,瀑布模型的缺陷,由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险,在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败,在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的,摸着石头过河的边做边改模型,项目初期无法获取全部的需求,,用户对需求其实也没有全面了解,需求获取是一个重复的过程,第一个版本实现的是客户的初步想法,然后后续版本不断地调整,演化模型,和在岸边冥思苦想如何过河的人相比,先站在河道里的石头上,总是让人看到更多的希望,边做边改模型的优点就是适用于某些中小型项目的快速开发,软件产品的成果也会在最早的,阶段,显现出来,演化模型,演化模型,演化模型,程序员:没有,上次你没有说要这个功能?,客户:那怎么办?我们要这个功能,上次我们忘记说了。,程序员:那,.,我们在下一个版本中给您增加这个功能吧,.,(程序员忙着去改变需求去了,因为他首先要做的是完善下一个版本的需求),演化模型,演化模型,这样的模式,一般只能适用于公司内部研发某产品或技术时的情况,而和客户签署合同的项目难以应用这样的模式,在演化模型中,包含一种很重要的需求获取方法:原型化,原型,就,是在客户有初步想法的时候,就“快速设计”和“快速编码”地做出一个可供演示的系统(即原型),用来更好地获取和理解客户的需求,当客户需求比较清晰时,则开始正式的开发工作,而开始做的原型有可能会被完全抛弃掉,也可能会在这个原型的基础上继续开发,增量模型,增量模型,核心功能,核心功能,1,1,2,1,2,3,第一增量,第二增量,第三增量,核心功能,1,1,2,1,2,3,一次性地获取全部的需求,,然后做出分版本实现各需求的计划,每个版本只实现一部分需求(核心),通过多个版本逐步实现全部需求,该模型的好处是可以尽快让系统上线,让客户先使用部分功能,尽早实现系统的价值,该模型比较能符合实际的情况,但需求是不可能在一开始就完全确定的,实际情况是往往只能确定,80%,,而后期通过各版本还会获取更多的新需求以及需求调整。此模型可以适用于大部分的实际项目,增量模型,将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止,任务或功能模块驱动,可以分阶段提交,产品,有多个任务单,这些多个任务单的集合,构成项目的一个总任务书,(,总用户需求报告,),该模型的缺点是,分析设计人员对应用领域不熟悉,难以一步到位,软件系统的组装货拆卸性不强,或者开发人员全部把握水平不高(没有数据库系统设计专家进行系统集成),或者客户不同意分阶段提交产品,则不宜采用该模型,增量模型,计划赶得上变化的,螺旋模型,为了适应计划和变化两方面的因素,螺旋模型被提出,螺旋模型的外形的确很类似一个螺旋,确认风险,开始阶段,总结与计划下一阶段,评估与开发,产品,螺旋模型,螺旋模型实际上是边做边改模型和瀑布模型的有机结合,螺旋模型是多次计划,边做边改,这样既保证了软件开发任务的清晰,也降低了开始一次计划,因为理解不完整或者市场变化后导致项目失败的可能性,螺旋模型,螺旋模型,软件分多个版本开发,每个版本就是一次螺旋。,每个版本按照这样的顺序进行:,确定软件目标,选取定实施方案,弄清项目开发的限制条件;(图中左上象限),分析所选取方案,考虑如何识别和消除风险;(图中右上象限),实施软件开发;(图中右下象限),评价开发工作,提出修正建议,调整计划。(图中右下象限、左下象限),需求不是一次获取和实现的,通过多个螺旋来完善。,计划也不是一次成型的,每次螺旋都需要调整。,统一过程模型,RUP,是统一软件过程的缩写,英文全写为:,Rational Unified Process,增量、进化、螺旋的共同特点是多个版本,而每个版本可以认为是一个“小瀑布”,对于每个版本,,可以认为还是要先完成前一步才能做下一步,RUP,认为项目中的工作可以分成好几类,而每一类工作在整个项目周期都是持续进行的,只是不同工作在项目的不同时期比重不太一样,统一过程模型,统一过程模型,过程模型中的主要模型元素有,4,种:,工作人员,:谁做(谁),-,角色,活动,:怎么做(如何),制品,:做什么(什么),工作流,:何时做(什么),设计师,用况分析,用况设计,用况实现,活动,工作人员,制品,统一过程模型,在,RUP,中,软件开发生生命周期根据,时间,和,RUP,的,核心工作流,划分为二维空间,时间维从组织管理的角度描述整个软件开发生命周期,是,RUP,的动态,组成部分,核心工作流从技术角度描述,RUP,的静态,组成部分,具有迭代式的增量开发、使用实例驱动、 以软件体系结构为核心三个鲜明特点,这使得,RUP,非常适宜于开发复杂、技术难度大、需求多变、高风险的,项目,是,可裁剪的软件开发过程框架,各组织可以根据自身及项目特点对,RUP,进行裁减,在某些情况下,RUP,甚至可以蜕化为瀑布式开发模型,。,软件过程模型总结,模型名称,技术特点,适用范围,瀑布模型,简单,分阶段,阶段间存在因果关系,各个阶段完成后都有评审,允许反馈,不支持用户参与,要求预先确定需求,需求易于完善定义且不易变更的软件系统,演化原型,不要求需求预先定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化,需求复杂、难以确定、动态变化的软件系统,增量模型,软件产品是被增量式地一块块开发的,允许开发活动并行和重叠,技术风险较大、用户需求较为稳定的软件系统,螺旋模型,结合瀑布模型、快速原型模型和迭代模型的思想,并引进了风险分析活动,需求难以获取和确定、软件开发风险较大的软件系统,RUP,可改造、扩展和剪裁,可以对它进行设计、开发、维护和发布,强调迭代开发,复杂和需求难以获取和确定的软件系统,软件开发项目组拥有丰富的软件开发和管理经验,请描述以下项目适合的软件过程模型?,案例,生命周期模型,原因,一个发票打印软件,瀑布,流程比较简单,根据客户需求定制,制作完成后只需要经过小范围调整即可,一个外贸交易网站,演化,先做一个原型,给客户看基本的界面和操作流程,再修改,可以更接近客户要求,一个大型游戏软件,增量,后期修改比较多,软件会不断改进,软件项目管理的问题,管理的范围,软件项目管理的第一个活动是软件范围的确定。范围可以通过回答下列问题来定义,背景:待建造的软件如何适应于大型的系统、产品或商业的背景,在该背景下要加什么约束?,信息目标:软件要产生什么样的客户可见的数据对象来作为输出使用?需要什么样的数据对象作为输入?,功能和性能:软件要执行什么样的功能才能使输入数据变换成为输出数据?需要满足什么特殊的性能特征?,软件项目范围在管理层和技术层都必须是无二义性的和可理解的。,软件项目管理的问题,管理的方法,问题分解,合并问题和过程,过程分解,作业,软件危机产生的原因,软件危机的主要表现,什么是软件的生命周期,软件工程过程有哪几个基本过程活动?试说明之,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!