




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程与项目管理当你把所有的错误都犯过之后,你就是正确的了软件工程与项目管理当你把所有的错误都犯过之后,你就是正确的了1课程引导为什么要学这门课?学生工作不从事软件设计和研发,并不表示不接触软件和软件的相关知识。当涉及到与软件单位打交道时,交流会比较困难课程引导为什么要学这门课?学生工作不从事软2课程引导岗位岗位要求岗位技术难度设计岗系统分析能力、需求分析能力、设计能力要求高、一般要求有较长时间的开发经验编码岗熟练掌握某种语言、能看动相关设计文档,MIS系统编码一般要求掌握一种数据库系统一般技术支持岗熟练了解某种特定的软件、能解决客户提出的各种技术问题、对软件硬件都应当有所了解一般软件企业维护岗熟练了解某种特定软件、能接收并解决客户提出的问题、能进行软件的二次开发、熟悉某种开发语言、掌握一种数据库系统一般软件测试岗熟悉软件开发流程、熟悉某种开发语言、有较长的项目开发经验;进行确认测试人员需要了解客户单位工作业务流程较高,一般要求有开发经验后再从事测试工作应用企业维护岗了解某种特定软件应用、和软件公司接洽反映软件问题、掌握一般软硬件维护技能较低软件生产和相关行业的主要岗位课程引导岗位岗位要求岗位技术难度设计岗系统分析能力、需求分析3课程引导会编程序不等于会编软件软件和程序不同做软件需要用工程的概念软件工程与项目管理?课程引导会编程序不等于会编软件软件工程与项目管理?4必须应用工程设计左图可自行设计,自行施工,右图可能需工程队施工课程引导必须应用工程设计左图可自行设计,自行施工,右图可能需工程队施5“工程”强调的是将自然科学的理论应用到具体生产部门的过程软件=程序+文档软件工程是开发、运行、维护和修复软件的系统方法软件项目是为创建某一独特软件产品而临时进行的一次性努力课程引导“工程”强调的是将自然科学的理论应用到具体生产部门的过程课6课程综述本课程是计算机专业的专业课之一,通过本课程的学习,要求学生理解在软件开发过程中应用软件工程方法的必要性和迫切性,要求学生掌握软件工程的基本原理、概念与技术方法本门课程最主要的作用就是帮助学生建立系统、完整的专业基础理论体系,不仅培养学生分析问题、解决问题的能力,而且全面锻炼学生将来成为现代软件工程师需要的团队协作、谈判沟通、适应发展等等能力,为在今后工作中从事计算机大规模软件开发与维护打下扎实的基础课程综述本课程是计算机专业的专业课之一,通过本课程的学习,7内容安排第一部分软件工程基础软件工程的基本概念、软件过程的概念以及软件生存期模型第二部分软件工程技术方法综述
结构化和面向对象技术的综述第三部分软件工程过程
从需求、设计、测试与维护各个阶段的分析和建模详细描述软件工程过程的实施第四部分软件工程项目管理
软件项目管理相关内容,包括各种组织原则、方式和方法等内容安排第一部分软件工程基础8第一部分软件工程基础
软件工程基本概念
软件工程、软件危机……
软件工程模型软件项目开发路线图,管理路线图……
软件过程模型瀑布模型、增量模型、喷泉模型……软件项目管理的问题管理的范围、管理的方法等概述第一部分软件工程基础软件工程基本概念9软件工程基本概念软件工程与软件危机1946:ENIAC1946年世界上第一台电子计算机的诞生,标志着人类由工业化社会进入了信息化社会,以计算机产业和计算机应用服务业为蜘蛛的信息工业,成了信息化社会的主要基础之一……软件工程基本概念软件工程与软件危机1946:ENIAC10软件工程基本概念软件工程与软件危机程序设计阶段60年代70年代系统设计阶段70年代80年代软件工程阶段80年代90年代国外国内软件发展阶段第一代算法技术第二代结构化软件技术第三代面向对象技术第四代分布式面向对象技术第五代软件构件技术软件与软件技术的发展软件工程基本概念软件工程与软件危机程序设计阶段60年代11软件工程基本概念软件工程与软件危机软件工程基本概念软件工程与软件危机12软件工程基本概念软件工程与软件危机OS360是第一个超大型的软件项目,它使用了1000人左右的程序员,经历了数十年,是一个极度复杂的软件项目,甚至产生了一套不包括在原始设计方案之中的工作系统。其管理者承认软件开发中犯了一个价值数百万美元的错误。软件工程基本概念软件工程与软件危机OS36013软件工程基本概念软件工程与软件危机人月神话FredBrooks在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道银弹软件工程基本概念软件工程与软件危机人月神话FredBroo14软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题阿里亚娜火箭:上万人10余年的努力,耗资高达70亿美元,升空仅40秒后发生大爆炸,由于火箭导航的电脑软件系统发生故障造成的。软件工程基本概念软件工程与软件危机15软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题软件危机的具体表现:对软件开发的成本和进度估计不够准确用户对已完成的软件不满意的现象时有发生软件常常是不可维护的软件产品的质量往往不可靠软件开发生产率提高的速度远远跟不上日益增长的软件需求,满足不了社会发展的需要软件工程基本概念软件工程与软件危机16软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题缓解软件危机的途径必须做好以下几个方面的工作:加强软件开发过程的管理,做到组织有序、各类人员协同配合,共同保证工程项目完成,避免软件开发过程中个人单干的现象推广使用开发软件的成功技术和方法,并且不断探索更好的技术和方法,消除一些错误的概念和做法开发和使用好的软件工具,支持软件开发的全过程软件工程基本概念软件工程与软件危机17软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法工具过程软件工程基本概念软件工程与软件危机18软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程提供一系列软件开发技术。包括完成开发过程中各方面任务的方法并用某种特殊的语言或图形来描述。为软件开发提供“如何做”的技术方法软件工程基本概念软件工程与软件危机提供一系列软件开发技术。包19软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程软件工具为软件方法提供了自动的或半自动的支撑环境。将多种工具集成在一起可构成计算机辅助软件工程(CASE)的软件开发支撑系统为软件工程方法提供支撑环境工具软件工程基本概念软件工程与软件危机软件工具为软件方法提供了自20软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程软件过程是将软件工程的方法和工具综合起来,进行软件开发定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑
过程软件工程基本概念软件工程与软件危机软件过程是将软件工程的方法21软件过程包括将用户需求转变成软件产品所需的所有活动
软件开发活动:软件过程的核心
软件项目管理活动:管理好项目范围、进度和成本
软件过程改进活动:提高软件开发组织的软件过程能力,提高软件生产能力软件工程基本概念软件开发项目管理过程改进软件工程三段论软件过程软件工程基本概念软件开发项目管理过程改进软件工程三段22软件过程软件过程提供了一个体系框架结构该框架可应用于不同的任务集合:任务、里程碑、交付物、质量保证点保护性活动(质量保证、配置管理等)软件开发过程中脑力活动的“不可见性”大大增加了过程管理的困难,软件工程中管理的指导思想就是“变不可见为可见”,至始至终的贯彻质量管理,保证软件质量软件工程基本概念软件过程软件工程基本概念23软件工程模型
依照工程化的思想,软件过程的工程模型基本由5个阶段构成:
初始阶段:立项,供应商选择,合同签署
计划阶段:范围计划,时间计划,成本计划,质量计划,沟通计划,人力资源计划,合同计划,配置管理计划
执行阶段:需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,项目验收,项目维护
控制阶段:范围计划控制、时间计划控制,成本计划控制,质量计划控制,沟通计划控制,人力资源计划控制,合同计划控制,配置管理计划控制
结束阶段:合同结束,项目总结软件工程模型
依照工程化的思想,软件过程的工程模型基本由5个24软件工程与项目管理课程课件25软件工程与项目管理课程课件26软件项目开发路线图软件开发过程是软件人员生产软件的过程,例如需求分析、设计、编码、测试等,相当于生产线上的生产过程,是软件过程的核心过程软件工程模型
维护
产品提交
测试
编码
详细设计
概要设计
需求分析软件项目开发路线图软件工程模型
27软件项目管理路线图软件管理过程是项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程软件工程模型
软件项目管理路线图软件工程模型
28软件工程模型
合同管理
生存期需求管理任务分解项目进度项目估算质量计划配置计划风险计划团队管理项目度量集成项目跟踪控制
项目结束软件工程模型
合同管理需求管理任务分解29软件过程改进过程改进相当于对软件开发过程和软件管理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进软件工程模型
启动诊断建立实施评估软件过程改进软件工程模型
启动诊断建立实施评估30软件过程模型
软件生命周期与软件过程模型一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期为了能高效开发一个高质量的软件产品,通常把软件生存期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型Why软件过程模型?软件过程模型软件生命周期与软件过程模型Why软件过程模型311、需要造一个房子,讲述想法2、开始建造,边造边画图造房的方法论-简易房1、需要造一个房子,讲述想法2、开始建造,边造边画图造房323、造了两层了,想在二楼加卫生间4、修改设计,最终房屋建成造房的方法论-简易房3、造了两层了,想在二楼加卫生间4、修改设计,最终房屋建成33小型工程可边做边设计施工过程中修改方案不会带来致命影响以经验为主造房和施工方不一定需要通过图纸来沟通,不需要太多的工程知识,双方边商量边施工造房的方法论-总结小型工程可边做边设计造房的方法论-总结34谈可行性设计原形并讨论造房的方法论-金贸大厦谈可行性设计原形并讨论造房的方法论-金贸大厦35严格按照图纸施工可耸立百年的大楼是精确设计的产物造房的方法论-金贸大厦严格按照图纸施工可耸立百年的大楼是精确设计的产物造房的方36大型工程需要进行可行性分析要进行精密的设计和原型分析要进行严格的施工管理并强调方法论姑且将房屋的:规划-》设计-》施工-》交付-》使用-》报废-》拆除这个过程叫“房屋的生命周期”只有严格按照房屋生命周期进行规划、设计才能交付一个可用百年的房屋造房的方法论-金贸大厦总结大型工程需要进行可行性分析造房的方法论-金贸大厦总结37造房的方法论-总结造房的方法论-总结38软件过程模型软件过程模型39软件计划
问题定义“要解决的问题是什么?”可行性研究经济技术管理社会环境软件过程模型40软件计划问题定义软件过程模型40需求分析确定系统逻辑模型确定目标系统必须具备的如下内容功能性能接口约束、限制条件软件过程模型41需求分析确定系统逻辑模型功能软件过程模型41软件设计
总体设计方案划分子系统功能确定共享数据的组织进行详细设计处理模块设计数据库系统设计输入输出界面设计编码的设计软件过程模型42软件设计总体设计方案软件过程模型42软件测试
单元测试:测试模块集成测试:把经单元测试的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试验收测试:验收测试是按照需求规格说明书的规定,由用户对目标系统进行验收通过各种类型的测试,使软件达到预定的要求软件过程模型43软件测试单元测试:测试模块通过各种类型的测试,使软件达到软件维护
日常运行管理根据一定的规格对系统进行必要的修改评价系统的运行效率、工作质量和经济效益对运行费用和效果进行监理审计软件过程模型44软件维护日常运行管理软件过程模型44瀑布模型演化模型增量模型螺旋模型统一过程模型……
软件生存期模型软件过程模型45瀑布模型软件生存期模型软件过程模型45软件过程模型小马过河:对河深度的理解决定过河的方法软件过程模型小马过河:对河深度的理解决定过河的方法46瀑布模型最早出现的软件开发模型,它提供了软件开发的基本框架系统需求软件需求需求分析设计编码维护测试制定周密过河计划的瀑布模型瀑布模型最早出现的软件开发模型,它提供了软件开发的基本框架系47制定周密过河计划的瀑布模型过河前:详细勘察,制定计划一旦过河计划制定,将不会大更改,开始过河每步骤即将完成时,都会对这一步骤进行总结,如进行下一步骤的条件不具备,将停留在原地,等待条件具备瀑布模型制定周密过河计划的瀑布模型瀑布模型48瀑布模型瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率里程碑或基线驱动,或者说文档驱动瀑布模型瀑布模型的本质是一次通过,即每个活动只执行一次,最后49瀑布模型瀑布模型的特点头绪简单,理解容易适合小型项目,修改较少项目修改较难,需求变更工作量较大适合教学,用于理解各个过程的大致步骤瀑布模型瀑布模型的特点50客户:我们程序做的怎样了?程序员:差不多做好了,可以试用了。客户:我们程序做的怎样了?程序员:差不多做好了,可以试用了。51瀑布模型的表现客户:我们的程序有没有**的功能?程序员:没有,上次你没有说要这个功能?瀑布模型的表现客户:我们的程序有没有**的功能?52客户:那怎么办?我们要这个功能,上次我们忘记说了。客户:那怎么办?我们要这个功能,上次我们忘记说了。53瀑布模型的表现程序员:那…..我们要重新设计数据库,很多东西要重新做过了,再给我三个月时间吧…..瀑布模型的表现程序员:那…..我们要重新设计数据库,很多东西54瀑布模型瀑布模型的缺陷由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的瀑布模型瀑布模型的缺陷55摸着石头过河的边做边改模型项目初期无法获取全部的需求,用户对需求其实也没有全面了解,需求获取是一个重复的过程第一个版本实现的是客户的初步想法,然后后续版本不断地调整演化模型和在岸边冥思苦想如何过河的人相比,先站在河道里的石头上,总是让人看到更多的希望边做边改模型的优点就是适用于某些中小型项目的快速开发,软件产品的成果也会在最早的阶段显现出来摸着石头过河的边做边改模型演化模型和在岸边冥思苦想如何过河的56演化模型演化模型57演化模型演化模型58演化模型程序员:没有,上次你没有说要这个功能?客户:那怎么办?我们要这个功能,上次我们忘记说了。演化模型程序员:没有,上次你没有说要这个功能?59程序员:那…..我们在下一个版本中给您增加这个功能吧…..(程序员忙着去改变需求去了,因为他首先要做的是完善下一个版本的需求)演化模型程序员:那…..我们在下一个版本中给您增加这个功能吧60演化模型这样的模式,一般只能适用于公司内部研发某产品或技术时的情况,而和客户签署合同的项目难以应用这样的模式在演化模型中,包含一种很重要的需求获取方法:原型化原型就是在客户有初步想法的时候,就“快速设计”和“快速编码”地做出一个可供演示的系统(即原型),用来更好地获取和理解客户的需求当客户需求比较清晰时,则开始正式的开发工作,而开始做的原型有可能会被完全抛弃掉,也可能会在这个原型的基础上继续开发演化模型这样的模式,一般只能适用于公司内部研发某产品或技术时61增量模型增量模型62增量模型核心功能核心功能112123第一增量第二增量第三增量核心功能112123……增量模型核心功能核心功能112123第一增量第二增量第三增量63一次性地获取全部的需求,然后做出分版本实现各需求的计划,每个版本只实现一部分需求(核心),通过多个版本逐步实现全部需求该模型的好处是可以尽快让系统上线,让客户先使用部分功能,尽早实现系统的价值该模型比较能符合实际的情况,但需求是不可能在一开始就完全确定的,实际情况是往往只能确定80%,而后期通过各版本还会获取更多的新需求以及需求调整。此模型可以适用于大部分的实际项目增量模型一次性地获取全部的需求,然后做出分版本实现各需求的计划,每个64将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止任务或功能模块驱动,可以分阶段提交产品有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)该模型的缺点是分析设计人员对应用领域不熟悉,难以一步到位软件系统的组装货拆卸性不强,或者开发人员全部把握水平不高(没有数据库系统设计专家进行系统集成),或者客户不同意分阶段提交产品,则不宜采用该模型增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付65计划赶得上变化的螺旋模型为了适应计划和变化两方面的因素,螺旋模型被提出螺旋模型的外形的确很类似一个螺旋确认风险开始阶段总结与计划下一阶段评估与开发产品计划赶得上变化的螺旋模型为了适应计划和变化两方面的因素,螺旋66螺旋模型螺旋模型实际上是边做边改模型和瀑布模型的有机结合螺旋模型是多次计划,边做边改,这样既保证了软件开发任务的清晰,也降低了开始一次计划,因为理解不完整或者市场变化后导致项目失败的可能性螺旋模型螺旋模型实际上是边做边改模型和瀑布模型的有机结合67螺旋模型螺旋模型68螺旋模型软件分多个版本开发,每个版本就是一次螺旋。每个版本按照这样的顺序进行:确定软件目标,选取定实施方案,弄清项目开发的限制条件;(图中左上象限)分析所选取方案,考虑如何识别和消除风险;(图中右上象限)实施软件开发;(图中右下象限)评价开发工作,提出修正建议,调整计划。(图中右下象限、左下象限)需求不是一次获取和实现的,通过多个螺旋来完善。计划也不是一次成型的,每次螺旋都需要调整。螺旋模型软件分多个版本开发,每个版本就是一次螺旋。69统一过程模型RUP是统一软件过程的缩写,英文全写为:RationalUnifiedProcess增量、进化、螺旋的共同特点是多个版本,而每个版本可以认为是一个“小瀑布”,对于每个版本,可以认为还是要先完成前一步才能做下一步RUP认为项目中的工作可以分成好几类,而每一类工作在整个项目周期都是持续进行的,只是不同工作在项目的不同时期比重不太一样统一过程模型RUP是统一软件过程的缩写,英文全写为:Rati70统一过程模型统一过程模型71统一过程模型过程模型中的主要模型元素有4种:
工作人员:谁做(谁)--角色
活动:怎么做(如何)
制品:做什么(什么)
工作流:何时做(什么)设计师用况分析用况设计用况实现活动工作人员制品统一过程模型过程模型中的主要模型元素有4种:设计师用况分72统一过程模型在RUP中,软件开发生生命周期根据时间和RUP的核心工作流划分为二维空间时间维从组织管理的角度描述整个软件开发生命周期,是RUP的动态组成部分核心工作流从技术角度描述RUP的静态组成部分具有迭代式的增量开发、使用实例驱动、以软件体系结构为核心三个鲜明特点,这使得RUP非常适宜于开发复杂、技术难度大、需求多变、高风险的项目是可裁剪的软件开发过程框架,各组织可以根据自身及项目特点对RUP进行裁减,在某些情况下RUP甚至可以蜕化为瀑布式开发模型。统一过程模型在RUP中,软件开发生生命周期根据时间和RUP的73软件过程模型总结模型名称技术特点适用范围瀑布模型简单,分阶段,阶段间存在因果关系,各个阶段完成后都有评审,允许反馈,不支持用户参与,要求预先确定需求需求易于完善定义且不易变更的软件系统演化原型不要求需求预先定义,支持用户参与,支持需求的渐进式完善和确认,能够适应用户需求的变化需求复杂、难以确定、动态变化的软件系统增量模型软件产品是被增量式地一块块开发的,允许开发活动并行和重叠技术风险较大、用户需求较为稳定的软件系统螺旋模型结合瀑布模型、快速原型模型和迭代模型的思想,并引进了风险分析活动需求难以获取和确定、软件开发风险较大的软件系统RUP可改造、扩展和剪裁,可以对它进行设计、开发、维护和发布,强调迭代开发复杂和需求难以获取和确定的软件系统,软件开发项目组拥有丰富的软件开发和管理经验软件过程模型总结模型名称技术特点适用范围瀑布模型简单,分阶段74请描述以下项目适合的软件过程模型?案例生命周期模型原因一个发票打印软件瀑布流程比较简单,根据客户需求定制,制作完成后只需要经过小范围调整即可一个外贸交易网站演化先做一个原型,给客户看基本的界面和操作流程,再修改,可以更接近客户要求一个大型游戏软件增量后期修改比较多,软件会不断改进请描述以下项目适合的软件过程模型?案例生命周期模型原因一个发75软件项目管理的问题管理的范围软件项目管理的第一个活动是软件范围的确定。范围可以通过回答下列问题来定义背景:待建造的软件如何适应于大型的系统、产品或商业的背景,在该背景下要加什么约束?信息目标:软件要产生什么样的客户可见的数据对象来作为输出使用?需要什么样的数据对象作为输入?功能和性能:软件要执行什么样的功能才能使输入数据变换成为输出数据?需要满足什么特殊的性能特征?软件项目范围在管理层和技术层都必须是无二义性的和可理解的。软件项目管理的问题管理的范围76软件项目管理的问题管理的方法问题分解合并问题和过程过程分解软件项目管理的问题管理的方法77作业软件危机产生的原因软件危机的主要表现什么是软件的生命周期软件工程过程有哪几个基本过程活动?试说明之作业软件危机产生的原因78软件工程与项目管理当你把所有的错误都犯过之后,你就是正确的了软件工程与项目管理当你把所有的错误都犯过之后,你就是正确的了79课程引导为什么要学这门课?学生工作不从事软件设计和研发,并不表示不接触软件和软件的相关知识。当涉及到与软件单位打交道时,交流会比较困难课程引导为什么要学这门课?学生工作不从事软80课程引导岗位岗位要求岗位技术难度设计岗系统分析能力、需求分析能力、设计能力要求高、一般要求有较长时间的开发经验编码岗熟练掌握某种语言、能看动相关设计文档,MIS系统编码一般要求掌握一种数据库系统一般技术支持岗熟练了解某种特定的软件、能解决客户提出的各种技术问题、对软件硬件都应当有所了解一般软件企业维护岗熟练了解某种特定软件、能接收并解决客户提出的问题、能进行软件的二次开发、熟悉某种开发语言、掌握一种数据库系统一般软件测试岗熟悉软件开发流程、熟悉某种开发语言、有较长的项目开发经验;进行确认测试人员需要了解客户单位工作业务流程较高,一般要求有开发经验后再从事测试工作应用企业维护岗了解某种特定软件应用、和软件公司接洽反映软件问题、掌握一般软硬件维护技能较低软件生产和相关行业的主要岗位课程引导岗位岗位要求岗位技术难度设计岗系统分析能力、需求分析81课程引导会编程序不等于会编软件软件和程序不同做软件需要用工程的概念软件工程与项目管理?课程引导会编程序不等于会编软件软件工程与项目管理?82必须应用工程设计左图可自行设计,自行施工,右图可能需工程队施工课程引导必须应用工程设计左图可自行设计,自行施工,右图可能需工程队施83“工程”强调的是将自然科学的理论应用到具体生产部门的过程软件=程序+文档软件工程是开发、运行、维护和修复软件的系统方法软件项目是为创建某一独特软件产品而临时进行的一次性努力课程引导“工程”强调的是将自然科学的理论应用到具体生产部门的过程课84课程综述本课程是计算机专业的专业课之一,通过本课程的学习,要求学生理解在软件开发过程中应用软件工程方法的必要性和迫切性,要求学生掌握软件工程的基本原理、概念与技术方法本门课程最主要的作用就是帮助学生建立系统、完整的专业基础理论体系,不仅培养学生分析问题、解决问题的能力,而且全面锻炼学生将来成为现代软件工程师需要的团队协作、谈判沟通、适应发展等等能力,为在今后工作中从事计算机大规模软件开发与维护打下扎实的基础课程综述本课程是计算机专业的专业课之一,通过本课程的学习,85内容安排第一部分软件工程基础软件工程的基本概念、软件过程的概念以及软件生存期模型第二部分软件工程技术方法综述
结构化和面向对象技术的综述第三部分软件工程过程
从需求、设计、测试与维护各个阶段的分析和建模详细描述软件工程过程的实施第四部分软件工程项目管理
软件项目管理相关内容,包括各种组织原则、方式和方法等内容安排第一部分软件工程基础86第一部分软件工程基础
软件工程基本概念
软件工程、软件危机……
软件工程模型软件项目开发路线图,管理路线图……
软件过程模型瀑布模型、增量模型、喷泉模型……软件项目管理的问题管理的范围、管理的方法等概述第一部分软件工程基础软件工程基本概念87软件工程基本概念软件工程与软件危机1946:ENIAC1946年世界上第一台电子计算机的诞生,标志着人类由工业化社会进入了信息化社会,以计算机产业和计算机应用服务业为蜘蛛的信息工业,成了信息化社会的主要基础之一……软件工程基本概念软件工程与软件危机1946:ENIAC88软件工程基本概念软件工程与软件危机程序设计阶段60年代70年代系统设计阶段70年代80年代软件工程阶段80年代90年代国外国内软件发展阶段第一代算法技术第二代结构化软件技术第三代面向对象技术第四代分布式面向对象技术第五代软件构件技术软件与软件技术的发展软件工程基本概念软件工程与软件危机程序设计阶段60年代89软件工程基本概念软件工程与软件危机软件工程基本概念软件工程与软件危机90软件工程基本概念软件工程与软件危机OS360是第一个超大型的软件项目,它使用了1000人左右的程序员,经历了数十年,是一个极度复杂的软件项目,甚至产生了一套不包括在原始设计方案之中的工作系统。其管理者承认软件开发中犯了一个价值数百万美元的错误。软件工程基本概念软件工程与软件危机OS36091软件工程基本概念软件工程与软件危机人月神话FredBrooks在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道银弹软件工程基本概念软件工程与软件危机人月神话FredBroo92软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题阿里亚娜火箭:上万人10余年的努力,耗资高达70亿美元,升空仅40秒后发生大爆炸,由于火箭导航的电脑软件系统发生故障造成的。软件工程基本概念软件工程与软件危机93软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题软件危机的具体表现:对软件开发的成本和进度估计不够准确用户对已完成的软件不满意的现象时有发生软件常常是不可维护的软件产品的质量往往不可靠软件开发生产率提高的速度远远跟不上日益增长的软件需求,满足不了社会发展的需要软件工程基本概念软件工程与软件危机94软件工程基本概念软件工程与软件危机软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题缓解软件危机的途径必须做好以下几个方面的工作:加强软件开发过程的管理,做到组织有序、各类人员协同配合,共同保证工程项目完成,避免软件开发过程中个人单干的现象推广使用开发软件的成功技术和方法,并且不断探索更好的技术和方法,消除一些错误的概念和做法开发和使用好的软件工具,支持软件开发的全过程软件工程基本概念软件工程与软件危机95软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法工具过程软件工程基本概念软件工程与软件危机96软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程提供一系列软件开发技术。包括完成开发过程中各方面任务的方法并用某种特殊的语言或图形来描述。为软件开发提供“如何做”的技术方法软件工程基本概念软件工程与软件危机提供一系列软件开发技术。包97软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程软件工具为软件方法提供了自动的或半自动的支撑环境。将多种工具集成在一起可构成计算机辅助软件工程(CASE)的软件开发支撑系统为软件工程方法提供支撑环境工具软件工程基本概念软件工程与软件危机软件工具为软件方法提供了自98软件工程基本概念软件工程与软件危机软件工程:是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来软件工程包含三要素:方法、工具和过程软件过程是将软件工程的方法和工具综合起来,进行软件开发定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑
过程软件工程基本概念软件工程与软件危机软件过程是将软件工程的方法99软件过程包括将用户需求转变成软件产品所需的所有活动
软件开发活动:软件过程的核心
软件项目管理活动:管理好项目范围、进度和成本
软件过程改进活动:提高软件开发组织的软件过程能力,提高软件生产能力软件工程基本概念软件开发项目管理过程改进软件工程三段论软件过程软件工程基本概念软件开发项目管理过程改进软件工程三段100软件过程软件过程提供了一个体系框架结构该框架可应用于不同的任务集合:任务、里程碑、交付物、质量保证点保护性活动(质量保证、配置管理等)软件开发过程中脑力活动的“不可见性”大大增加了过程管理的困难,软件工程中管理的指导思想就是“变不可见为可见”,至始至终的贯彻质量管理,保证软件质量软件工程基本概念软件过程软件工程基本概念101软件工程模型
依照工程化的思想,软件过程的工程模型基本由5个阶段构成:
初始阶段:立项,供应商选择,合同签署
计划阶段:范围计划,时间计划,成本计划,质量计划,沟通计划,人力资源计划,合同计划,配置管理计划
执行阶段:需求分析,概要设计,详细设计,编码,单元测试,集成测试,系统测试,项目验收,项目维护
控制阶段:范围计划控制、时间计划控制,成本计划控制,质量计划控制,沟通计划控制,人力资源计划控制,合同计划控制,配置管理计划控制
结束阶段:合同结束,项目总结软件工程模型
依照工程化的思想,软件过程的工程模型基本由5个102软件工程与项目管理课程课件103软件工程与项目管理课程课件104软件项目开发路线图软件开发过程是软件人员生产软件的过程,例如需求分析、设计、编码、测试等,相当于生产线上的生产过程,是软件过程的核心过程软件工程模型
维护
产品提交
测试
编码
详细设计
概要设计
需求分析软件项目开发路线图软件工程模型
105软件项目管理路线图软件管理过程是项目管理者规划软件开发、控制软件开发的过程,相当于生产线上的管理过程,管理过程是伴随开发过程进行的过程软件工程模型
软件项目管理路线图软件工程模型
106软件工程模型
合同管理
生存期需求管理任务分解项目进度项目估算质量计划配置计划风险计划团队管理项目度量集成项目跟踪控制
项目结束软件工程模型
合同管理需求管理任务分解107软件过程改进过程改进相当于对软件开发过程和软件管理过程的“工艺流程”进行管理和改进,如果没有好的工艺生产不出好的产品,它包括对开发过程和管理过程的定义和改进软件工程模型
启动诊断建立实施评估软件过程改进软件工程模型
启动诊断建立实施评估108软件过程模型
软件生命周期与软件过程模型一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期为了能高效开发一个高质量的软件产品,通常把软件生存期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型Why软件过程模型?软件过程模型软件生命周期与软件过程模型Why软件过程模型1091、需要造一个房子,讲述想法2、开始建造,边造边画图造房的方法论-简易房1、需要造一个房子,讲述想法2、开始建造,边造边画图造房1103、造了两层了,想在二楼加卫生间4、修改设计,最终房屋建成造房的方法论-简易房3、造了两层了,想在二楼加卫生间4、修改设计,最终房屋建成111小型工程可边做边设计施工过程中修改方案不会带来致命影响以经验为主造房和施工方不一定需要通过图纸来沟通,不需要太多的工程知识,双方边商量边施工造房的方法论-总结小型工程可边做边设计造房的方法论-总结112谈可行性设计原形并讨论造房的方法论-金贸大厦谈可行性设计原形并讨论造房的方法论-金贸大厦113严格按照图纸施工可耸立百年的大楼是精确设计的产物造房的方法论-金贸大厦严格按照图纸施工可耸立百年的大楼是精确设计的产物造房的方114大型工程需要进行可行性分析要进行精密的设计和原型分析要进行严格的施工管理并强调方法论姑且将房屋的:规划-》设计-》施工-》交付-》使用-》报废-》拆除这个过程叫“房屋的生命周期”只有严格按照房屋生命周期进行规划、设计才能交付一个可用百年的房屋造房的方法论-金贸大厦总结大型工程需要进行可行性分析造房的方法论-金贸大厦总结115造房的方法论-总结造房的方法论-总结116软件过程模型软件过程模型117软件计划
问题定义“要解决的问题是什么?”可行性研究经济技术管理社会环境软件过程模型118软件计划问题定义软件过程模型40需求分析确定系统逻辑模型确定目标系统必须具备的如下内容功能性能接口约束、限制条件软件过程模型119需求分析确定系统逻辑模型功能软件过程模型41软件设计
总体设计方案划分子系统功能确定共享数据的组织进行详细设计处理模块设计数据库系统设计输入输出界面设计编码的设计软件过程模型120软件设计总体设计方案软件过程模型42软件测试
单元测试:测试模块集成测试:把经单元测试的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试验收测试:验收测试是按照需求规格说明书的规定,由用户对目标系统进行验收通过各种类型的测试,使软件达到预定的要求软件过程模型121软件测试单元测试:测试模块通过各种类型的测试,使软件达到软件维护
日常运行管理根据一定的规格对系统进行必要的修改评价系统的运行效率、工作质量和经济效益对运行费用和效果进行监理审计软件过程模型122软件维护日常运行管理软件过程模型44瀑布模型演化模型增量模型螺旋模型统一过程模型……
软件生存期模型软件过程模型123瀑布模型软件生存期模型软件过程模型45软件过程模型小马过河:对河深度的理解决定过河的方法软件过程模型小马过河:对河深度的理解决定过河的方法124瀑布模型最早出现的软件开发模型,它提供了软件开发的基本框架系统需求软件需求需求分析设计编码维护测试制定周密过河计划的瀑布模型瀑布模型最早出现的软件开发模型,它提供了软件开发的基本框架系125制定周密过河计划的瀑布模型过河前:详细勘察,制定计划一旦过河计划制定,将不会大更改,开始过河每步骤即将完成时,都会对这一步骤进行总结,如进行下一步骤的条件不具备,将停留在原地,等待条件具备瀑布模型制定周密过河计划的瀑布模型瀑布模型126瀑布模型瀑布模型的本质是一次通过,即每个活动只执行一次,最后得到软件产品瀑布模型有利于大型软件开发过程中人员的组织及管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率里程碑或基线驱动,或者说文档驱动瀑布模型瀑布模型的本质是一次通过,即每个活动只执行一次,最后127瀑布模型瀑布模型的特点头绪简单,理解容易适合小型项目,修改较少项目修改较难,需求变更工作量较大适合教学,用于理解各个过程的大致步骤瀑布模型瀑布模型的特点128客户:我们程序做的怎样了?程序员:差不多做好了,可以试用了。客户:我们程序做的怎样了?程序员:差不多做好了,可以试用了。129瀑布模型的表现客户:我们的程序有没有**的功能?程序员:没有,上次你没有说要这个功能?瀑布模型的表现客户:我们的程序有没有**的功能?130客户:那怎么办?我们要这个功能,上次我们忘记说了。客户:那怎么办?我们要这个功能,上次我们忘记说了。131瀑布模型的表现程序员:那…..我们要重新设计数据库,很多东西要重新做过了,再给我三个月时间吧…..瀑布模型的表现程序员:那…..我们要重新设计数据库,很多东西132瀑布模型瀑布模型的缺陷由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样软件与用户见面的时间间隔较长,也增加了一定的风险在软件开发前期末发现的错误传到后面的开发活动中时,可能会扩散,进而可能会造成整个软件项目开发失败在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的瀑布模型瀑布模型的缺陷133摸着石头过河的边做边改模型项目初期无法获取全部的需求,用户对需求其实也没有全面了解,需求获取是一个重复的过程第一个版本实现的是客户的初步想法,然后后续版本不断地调整演化模型和在岸边冥思苦想如何过河的人相比,先站在河道里的石头上,总是让人看到更多的希望边做边改模型的优点就是适用于某些中小型项目的快速开发,软件产品的成果也会在最早的阶段显现出来摸着石头过河的边做边改模型演化模型和在岸边冥思苦想如何过河的134演化模型演化模型135演化模型演化模型136演化模型程序员:没有,上次你没有说要这个功能?客户:那怎么办?我们要这个功能,上次我们忘记说了。演化模型程序员:没有,上次你没有说要这个功能?137程序员:那…..我们在下一个版本中给您增加这个功能吧…..(程序员忙着去改变需求去了,因为他首先要做的是完善下一个版本的需求)演化模型程序员:那…..我们在下一个版本中给您增加这个功能吧138演化模型这样的模式,一般只能适用于公司内部研发某产品或技术时的情况,而和客户签署合同的项目难以应用这样的模式在演化模型中,包含一种很重要的需求获取方法:原型化原型就是在客户有初步想法的时候,就“快速设计”和“快速编码”地做出一个可供演示的系统(即原型),用来更好地获取和理解客户的需求当客户需求比较清晰时,则开始正式的开发工作,而开始做的原型有可能会被完全抛弃掉,也可能会在这个原型的基础上继续开发演化模型这样的模式,一般只能适用于公司内部研发某产品或技术时139增量模型增量模型140增量模型核心功能核心功能112123第一增量第二增量第三增量核心功能112123……增量模型核心功能核心功能112123第一增量第二增量第三增量141一次性地获取全部的需求,然后做出分版本实现各需求的计划,每个版本只实现一部分需求(核心),通过多个版本逐步实现全部需求该模型的好处是可以尽快让系统上线,让客户先使用部分功能,尽早实现系统的价值该模型比较能符合实际的情况,但需求是不可能在一开始就完全确定的,实际情况是往往只能确定80%,而后期通过各版本还会获取更多的新需求以及需求调整。此模型可以适用于大部分的实际项目增量模型一次性地获取全部的需求,然后做出分版本实现各需求的计划,每个142将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止任务或功能模块驱动,可以分阶段提交产品有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)该模型的缺点是分析设计人员对应用领域不熟悉,难以一步到位软件系统的组装货拆卸性不强,或者开发人员全部把握水平不高(没有数据库系统设计专家进行系统集成),或者客户不同意分阶段提交产品,则不宜采用该模型增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付143计划赶得上变化的螺旋
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度智能厂房设备租赁服务协议书
- 二零二五年度在线支付服务不可撤销担保合同
- 二零二五年度新型智能仓库租赁服务合同
- 二零二五版餐饮业特色小吃店租赁合同
- 二零二五年度工厂生产安全保卫承包合同模板
- 二零二五年度智慧社区建设合作协议范例
- 2025年电力设施安装工程安全施工责任协议
- 2025版智能仓储管理系统下仓管员安全责任协议
- 二零二五年度科创园区场地租赁服务合同
- 2025版交通设施PPP项目合作合同范本
- 大学军事理论课教程第四章现代战争第一节 战争概述
- 法语专四四级词汇
- 工程力学标准试卷(A)考题
- sg-uap v3.16使用手册分册2集成开发工具微服务
- 临床路径汇编(完整版)资料
- YY/T 1453-2016组织工程医疗器械产品Ⅰ型胶原蛋白表征方法
- RB/T 069-2021居家养老服务认证要求膳食服务
- GB/T 6082-2001直齿插齿刀通用技术条件
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- 如何拓展与经营人脉关系-顶尖销售培训 (人脉开拓+整合经营人脉+竞争力)
- 儿童腺病毒肺炎诊疗规范课件
评论
0/150
提交评论