软件工程教案-第2章软件过程.ppt
《软件工程教案-第2章软件过程.ppt》由会员分享,可在线阅读,更多相关《软件工程教案-第2章软件过程.ppt(81页珍藏版)》请在三一办公上搜索。
1、,重庆理工大学计算机科学与工程学院 李梁,软件工程第二章 软件过程,*,什么是软件工程?什么是工程化思想?什么是软件过程?有哪些过程模型?如何建立过程模型?什么是统一过程?自学什么是敏捷过程?有哪些模型?自学什么是软件工程实践?,第一部分 软件工程与过程,*,第2章 软件过程,2.1 什么是软件过程?2.2 什么是软件生命周期?2.3 软件过程评估:能力成熟度模型是什么?软件过程评估:CMM、CMMI、ISO9001:2000 等2.4 理解敏捷过程自学(含极限编程、结对编程)2.5 开展软件过程实践,*,概念软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活
2、动通常使用生命周期模型简洁地描述软件过程每项活动可分为一系列工程任务,科学的软件过程是一组适合软件项目特点的任务集合,任务集合包括一组软件工程任务、里程碑、应交付的产品。层次软件工程是一门建立在以质量焦点为基础,分过程、方法和工具三个层次的综合技术(三要素),2.1 软件过程,*,2.1 软件过程,软件工程过程:一个软件机构针对某一类软件产品为自己规定的工作步骤。软件规格说明:规定软件的功能及其运行的限制软件开发:产生满足规格说明的软件软件确认:确认软件能够完成客户提出的要求软件演进:为满足客户的变更要求,软件必须在使用的过程中演进软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量
3、和适应变化所需要的管理软件开发各个阶段完成的里程碑,*,软件过程框架 P15表2-1框架是实现整个软件开发活动的基础,软件过程框架定义了若干小的框架活动,与过程有关的角色、职责的定义以及实现也都离不开框架的支持。实际上就是软件过程的工程模板内容组织及管理框架:实现过程活动涉及到的角色与职责技术及工具框架:实现过程活动的自动化及需要的设备与工具,2.1 软件过程-软件过程框架,*,2.1 软件过程-软件工程目标,目标可修改性有效性可靠性可理解性可维护性可重用性可适应性可移植性可追踪性可互操作性,基本目标:付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能
4、按时完成开发工作及时交付使用软件工程的目标是提高软件的质量与生产率,最终实现软件的工业化生产。从短期效益看,追求高质量会延长软件开发时间并且增大费用,似乎降低了生产率。对开发人员而言,如果非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。,*,从传统工业生产过程的知识发现(补)从传统工厂生产组织方法的启示:能否将软件开发作为工厂的产品,按照工厂产品的生产组织方式组织软件开发工作?,参考啤酒生产过程,阶段划分清楚,过程控制严格,流程执行规范,质量有保障,2.1 软件过程,*,向传统工业学习什么?,任务明确、组织有序、纪律严明、整体优化,2.1 软件过程,*,软件过程模型:就是把
5、软件生命周期中各项开发活动的流程用一个合理的框架(开发模型)来规范描述。软件生命周期模型软件生命周期划分为发生-定义、发展-开发和灭亡-运行与维护三个部分细分为六个阶段:问题的定义及规划需求分析软件设计程序编码软件测试运行维护,2.1 软件过程-软件过程模型,系统规划,系统分析,系统设计,系统实施,运行支持,*,软件生命期 Software life cycle软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期生命周期阶段的划分原则:各阶段的任务相对独立同一阶段任务的性质相同软件定
6、义(系统分析):可行性研究(软件计划)、需求分析软件开发(系统设计):概要设计、详细设计、软件实现(编码、单元测试)、软件测试(组装测试、确认测试)软件使用、维护和退役,2.2 软件生命周期,*,基于SDLC的瀑布模型,发生,发展,灭亡,软件系统开发生命周期(Systems Development Life Cycle,SDLC)是建立软件系统的一个过程,是管理和控制软件系统开发过程的一种基本框架,是确保软件系统开发成功的一种必要措施和手段。,2.2 软件生命周期,*,可行性研究确定要开发软件系统的总目标给出功能、性能、可靠性以及接口等方面的要求完成该软件任务的可行性研究估计可利用的资源(硬件
7、,软件,人力等)、成本、效益、开发进度制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查需求分析和定义对用户提出的要求进行分析并给出详细的定义编写软件需求说明书或系统功能说明书及初步的系统用户手册提交管理机构评审,2.2 软件生命周期,*,概要设计 把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应,编写设计说明书,评审详细设计 对每个模块要完成的工作进行具体的描述,为源程序编写打下基础,编写设计说明书,提交评审软件实现(编码、程序设计)把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的“源程序清单”;写
8、出的程序应当是结构良好、清晰易读的,且与设计相一致的。单元测试,查找各模块在功能和结构上存在的问题并加以纠正,2.2 软件生命周期,*,软件测试组装测试,将已测试过的模块按一定顺序组装按规定的各项需求,逐项进行有效性确认测试,决定已开发的软件是否合格,能否交付用户使用软件运行:操作培训、模拟数据试运行、并行运行、系统转换软件维护改正性维护:运行中发现软件中的错误需要修正适应性维护:为了适应变化了的软件工作环境,需做适当变更完善性维护:为了增强软件的功能需做变更,2.2 软件生命周期,*,*,逻辑模型,物理模型,1个儿童房1个主卧厨房、卫生间等等,系统需求,软件生命周期总结,*,软件过程评估:评
9、价软件过程中的各种活动(管理、技术方法、控制、计划等)是否满足软件工程成功所需的基本过程标准要求。作用:检验和识别软件过程风险,促进软件过程改进,提高软件开发能力。CMM:分析或诊断软件或软件团队的相对成熟度CMMI:在CMM基础上集成了工程方面的评价指标,包括启动、诊断、建立、执行和学习,主要用于软件企业。ISO9001:2000:国际通用标准(质量保证体系),用于软件产品、系统或服务的整体质量评估,采取“计划-实施-检查-行动”循环,将其应用于软件项目的质量管理环节,可直接应用于软件团队和软件企业。SPICE标准:定义软件过程评估的一系列要求,帮助团队建立客观的评价体系,评估软件过程的有效
10、性。,2.3 软件过程评估,*,CMM(Capability Maturity Model):能力成熟度模型,用于评价软件机构的软件过程能力成熟度的模型。是指对过程计划或定义水平、过程实施水平、过程管理和控制水平、过程改善潜力等指标的综合评价。美国卡内基-梅隆大学软件工程研究所开发。建立此模型的初始目的,是为大型软件项目的招标活动提供一种全面而客观的评审依据,发展到后来此模型又同时被应用于许多软件机构内部的过程改进活动中。核心:把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和控制,使其更加科学化、标准化。在无规则和混乱的管理之下,先进的技术和工具并不能发挥出应有的作用,改进
11、对软件过程的管理才是消除软件危机的突破口,再也不能忽视在软件过程中管理所起的关键作用了。CMM为软件企业的过程能力提供一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取以往软件工程的经验教训,提供一个基于过程改进的框架。,2.3 能力成熟度模型-CMM,*,CMM是一种通过严格定义、实施、控制和不断改进软件过程的方法来保证软件质量的分层模型。CMM是对软件开发组织或项目的软件过程能力进行评估的一个基本框架。CMM是指导软件开发组织或项目逐步改进其软件能力成熟度的一个指南。CMM只回答“做什么?”,具体地“如何做?”由开发组织自己定。软件过程是一个可管理、可测量和可改进的过程。软件
12、过程的质量受其支持技术的影响。用于软件工程的技术水平应与过程的成熟度相适应。,2.3 能力成熟度模型-评估模型,*,在CMM中把软件过程从无序到有序的进化过程(18个)分成5个阶段,并把这些阶段排序,形成5个逐层提高的等级。5 级:初始级、可重复级、已定义级、已管理级(已控制级)、优化级。这5个成熟度等级定义了一个有序的尺度,用以测量软件组织的软件过程成熟度和评价其软件能力,这些等级还能帮助软件组织把应做的改进工作排出优先次序。成熟度等级是妥善定义的向成熟软件组织前进途中的平台,每一个成熟度等级都为过程的继续改进提供一个台阶。CMM通过定义能力成熟度的5个等级,引导软件开发组织不断识别出其软件
13、过程的缺陷,并指出应该做哪些改进,但是它并不提供做这些改进的具体措施。,2.3 能力成熟度模型-评估模型,*,为企业的发展规定过程成熟级别,分为5级:初始级(Initial):一般企业皆具有可重复级(Repeatable):成功经验可以重复已定义级(Defined):一套完整的企业过程,人员自觉遵守(培训)已管理级(Managed、已控制):过程&产品可度量和控制优化级(Optimizing):过程持续改进作用:从无序到有序、从特殊到一般、从定性管理到定量管理、最终达到动态优化。,2.3 能力成熟度模型-CMM,*,2.3 能力成熟度模型-CMM体系结构,*,关键过程域:代表一组相关的工作(活
14、动)。每个KPA都有一个确定的目标,完成该目标即认为过程能力的提高。,2.3 能力成熟度模型-CMM结构,*,关键过程领域KPA(Key Process Area):18个除去初始级以外,其它 4 级都有若干个引导软件机构改进软件过程的要点,称为关键过程领域。每一个关键过程领域是一组相关的活动,成功地完成这些活动,将会对提高过程能力起重要作用。,关键过程域,2.3 能力成熟度模型-CMM关键域,*,2.3 能力成熟度模型-CMM关键域,*,级别 CMM级别的特征1级 初始级 软件过程无序,有时甚至混乱,成功归功于个人的努力2级,可重复级 在项目内部已建立健全的项目管理,可重复已有的成功3级,已
15、定义级 在组织内部已定义并实施全组织统一的软件标准过程4级,已管理级 软件过程和产品质量已得以有计划和定量的管理和控制5级,优化级 已建立使软件过程和产品质量得以持续改进的架构,2.3 能力成熟度模型-CMM五个级别,*,2.3 能力成熟度模型-关键实践,*,Level 1:初始级过程无序且不可见特点 过程执行杂乱无序关键问题 项目计划管理、配置管理、软件质量保证达标标准 过程活动无一定秩序,开发过程的可重复性差,2.3 能力成熟度模型-CMM五个级别,*,Level 2:可重复级里程碑(Milestone)可见,按计划开发达标标准 使项目管理处于严格控制之下,包括严格的项目计划和追踪、子合同
16、管理、需求变更和产品基线控制特点 过程管理工作依赖管理人员的技能关键问题 培训、技术评审、标准 Level 2的6个KPA:侧重于管理 需求管理 软件项目计划软件项目的跟踪和监控 软件子合同管理软件质量保证 软件配置管理,2.3 能力成熟度模型-CMM五个级别,*,Level 3:定义级每个阶段的内部活动可见,标准过程和项目定义过程裁剪达标标准 定义一个适合该组织的软件过程,有正规的文档化的规范,并能根据不同项目的要求裁剪和优化这个软件过程特点 过程可定义、可执行关键问题 过程度量、过程分析、质量计划 Level 3的7个KPA:工程过程企业理念机构过程关注 机构过程定义 培训计划 集成软件管
17、理过程裁剪和定义软件产品工程过程执行 组间协调 对等审查,2.3 能力成熟度模型-CMM五个级别,*,Level 4 管理级过程可度量,预测值与结果之间的偏差可控达标标准 为定义好的过程建立一套详细的度量机制,为产品和过程设立质量目标,度量软件过程和产品特点 过程成为可度量的关键问题 改善技术、问题分析、防止出错Level 4的2个KPA:预测量化管理定量过程管理过程度量软件质量管理产品度量,2.3 能力成熟度模型-CMM五个级别,*,Level 5 优化级过程动态调整、新技术的采用达标标准 用第 4 级建立的度量机制,不断地指导过程改善,技术革新和防止出错特点 通过反馈来改善过程关键问题 自
18、动化、反馈技术Level 5的3个KPA:动态优化缺陷预防 技术改变管理 过程改变管理,2.3 能力成熟度模型-CMM五个级别,*,CMMI(Capability Maturity Model Integration):即能力成熟度模型集成,是CMM模型的最新版本。将各种能力成熟模型集成到一个框架中去,建立一种从集成产品与过程发展,从工程角度健全的系统开发原则的过程改进,消除不同模型之间的不一致与重复软件集成:各种硬件(计算能力、存储能力、网络交换能力、信息安全)、系统软件、应用软件、工具软件、存储、运行环境(机房电力、温度、清洁、防雷、网络通讯)等集成到一起的工程。主要集成部分:系统工程(S
19、E)、软件工程(SW)、集成产品和过程开发(IPPD)、供应商外包管理(SS),2.3 能力成熟度模型-CMMI,*,CMMI-Capability Maturity Model Integration是CMM模型的最新版本。能力成熟度模型集成CMMI有两种表示方法:和软件CMM一样的阶段式表现方法连续式的表现方法过程管理项目管理工程支持CMMI的目标是质量、时间表和最低的成本,2.3 能力成熟度模型-CMMI,*,对比理解(补):建筑工程项目 vs 软件工程项目,工程项目的管理过程:项目启动、计划、监控、结束、客户服务。软件工程繁荣过程(软件开发生命周期):概念、需求、设计、实施、系统整合和
20、验证、系统部署、技术支持和系统维护。,生产现场监控管理,2.3 能力成熟度模型-CMMI,*,软件开发范型:循环往复、螺旋上升,持续改进的过程,知识在于积累经验在于整理能力在于应用,2.3 能力成熟度模型-CMMI,*,敏捷方法:开发项目是一个学习的体验,没有谁能完全理解需求后才开始项目,客户在项目进展中不断学习、理解而提出真正的需求,开发者也是,没有人完全清楚会构件出什么来,直到结束。每个人都在学习,敏捷方法改变了过程,以便持续学习,培养学习能力。敏捷不是一个过程,是一类过程的统称。解决传统强调控制的开发方法(软件工厂)没有解决的问题(重过程,轻人文)敏捷方法的两大主要特征:对“适应性”的强
21、调 对“人”的关注做法:引入迭代式的开发手段,用户反馈机制,适应需求变更将整个软件生命周期分解为若干个小的迭代周期(原型法)获取切实有效的客户反馈 提出12条基本原则,2.4 敏捷过程(自学),*,2.4 敏捷过程-敏捷开发12条原则,1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3、经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作(封闭开发)。5、围绕被激励起来的个体来构建项目,给他们提供所需
22、的环境和支持,并且信任他们能够完成工作。6、在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。,*,7、工作的软件是首要的进度度量标准。8、敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。9、不断地关注优秀的技能和好的设计会增强敏捷能力。10、简单是最根本的。11、最好的构架、需求和设计出于自组织团队。12、每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。敏捷过程对人的技能、职业素养、团队文化氛围有较高要求,2.4 敏捷过程-敏捷开发12条原则,*,极限编程(eXtreme Programmin
23、g,XP)是一种软件工程方法学,是敏捷开发中最富有成效的方法学之一由肯特贝克(Kent Beck)在1996年提出,具有强沟通、简化设计、迅速反馈等特点,适合于规模小、进度紧、需求不稳定、开发小项目的小团队。强调将把它列出的每个方法和思想做到极致,做到最好,不提倡的一律忽略(如开发前的整体设计)极限编程特点XP模型是“轻量型”或“灵活”的软件过程模型,与面向对象语言结合的开发方案,解决大型软件开发过程所遇到的问题的“专家协作”的开发方式,解决难点问题。核心有四个要点:交流 简单 反馈 勇气,2.4 敏捷过程-极限编程(自学),*,交流开发人员与客户的交流 开发人员之间的交流使用结对编程 开发人
24、员与管理人员的交流简单设计的简单 编码的简单 注释的简单 测试的简单反馈客户对软件的反馈 测试代码对功能代码的反馈先测试,后编程勇气接受任务的勇气XP常见问题XP适合于小型项目(10人左右)?结对编程,搭档如何安排?实施结对编程、集体代码所有权之后,如何考核单个开发人员?,2.4 敏捷过程-极限编程(自学),*,结对编程(Pair-Programming):两个人坐在同一台计算机前面,使用相同的键盘和鼠标来开发同样的一个模块,一个称为驾驶者(Driver),负责代码的键入,另外一个称为领航员(Navigator),负责监看与决策,包括低级错误和方向性的错误。当出现的一个问题对其中一个人来说,难
25、以解决,而恰好是另外一个人的强项的时候,那么角色就会发生转换。XP中非常重要的实践之一。疑问:一个程序两人写是不是浪费(可是两份工资,双倍资源哦)?编程是一个人的活动。学校里这么教的,一直也是这么做的。我不喜欢被人盯着工作,这样我不自在,无法工作。这个笨家伙老问问题,不会看书么?我都无法专心工作了另一方面:结对编程被很多的大师级程序员推崇;不少大学都展开对结对编程的研究,并得到正面的结论;很多尝试过的开发者都开始喜欢结对编程。,2.4 敏捷过程-结对编程(自学),*,1995年,悉尼理工大学的拉里.康斯坦丁(Larry Constantine)在他的专栏中第一次提到了在他在P.J.Plaugh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 教案 软件 过程
链接地址:https://www.31ppt.com/p-6610876.html