软件过程及其模型(共42张)_第1页
软件过程及其模型(共42张)_第2页
软件过程及其模型(共42张)_第3页
软件过程及其模型(共42张)_第4页
软件过程及其模型(共42张)_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章软件过程及其模型第一页,共42页。什么是软件过程?与软件生产(开发)相关的活动。规定科学、有效的软件过程可以提高软件生产效率和软件质量。第二页,共42页。2.1.1软件过程框架包含两个方面的内容:一是组织及管理框架,包括实现软件过程改进活动时所涉及的角色与职责;项目经理、系统分析员、程序员、测试员、文档管理员……二是技术及工具框架,包括实现过程活动自动化,以及为实现不同角色和职责提供支持时所需的设备与工具。软件、硬件、开发模式、……框架是一个十分重要的概念,通常其中的角色既可以为过程活动的执行提供帮助与指导,还可以为过程活动的实施与监控提供工具与渠道。第三页,共42页。软件过程是整个软件生命周期中一系列有序的软件生产活动的流程。为了能高效地开发一个高质量的软件产品,通常把软件生命周期中各项开发活动的流程用一个合理的框架——开发模型规范描述。这就是软件过程模型,或者称为“软件生命周期模型”。软件过程模型从一个特定的角度表现一个过程,一般使用直观的图形标识软件开发的过程。主要根据软件的类型和规模,特别是软件的开发方法及开发环境等多种因素确立过程模型。典型代表:瀑布模型、螺旋模型、面向对象模型等。第四页,共42页。软件生命周期可划分为定义、开发和运行3个大的阶段,进一步可细分为6个阶段,每个阶段有明确的任务,使规模大、结构复杂且管理复杂的软件开发变得容易控制和管理。(1)问题的定义及规划:在该阶段软件开发人员与客户进行需求交流,确定软件的开发目标及其可行性。(2)需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。(3)软件设计:该阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,以及数据库设计等。(4)程序编码:该阶段是将软件设计的结果转换成计算机可运行的程序代码。(5)软件测试:在软件设计完成后要经过严密的测试,以便发现软件在整个设计过程中存在的问题并加以纠正。(6)软件维护:这是软件生命周期中持续时间最长的阶段。第五页,共42页。敏捷方法说明开发项目是一个学习的体验。没有谁能在完全理解所有需求之后才开始项目,即使是顾客也一样。2.3.1敏捷软件过程敏捷方法的两大特征:对“适应性”的强调和对“人”的关注。第六页,共42页。2.3.1敏捷软件过程敏捷开发提出了以下12条原则。(1)开发人员最优先要做的是通过尽早且持续地交付有价值的软件从而使客户满意。(2)即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化为客户创造竞争优势。

(3)经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。(4)在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。(5)围绕被激励起来的个体构建项目为开发人员提供所需的环境和支持,并且信任他们能够完成工作。第七页,共42页。(6)在团队内部,最具有效果并富有效率的传递信息的方法就是面对面的交谈。(7)工作的软件是首要的进度度量标准。(8)敏捷过程提倡可持续的开发速度,责任人、开发人员和用户应该能够保持一个长期且恒定的开发速度。(9)不断地关注优秀的技能和好的设计会增强敏捷能力。

(10)简单是最根本的。

(11)最好的构架、需求和设计出自于组织团队。

(12)每隔一定时间团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。第八页,共42页。极限编程(eXtremeProgramming)是敏捷软件开发中的一种方法。具有强沟通、简化设计和迅速反馈等特点。一般适合于规模小、进度紧、需求不稳定、开发小项目的小团队。观点:软件需求的不断变化是很自然的,是不可避免的,应欣然接受。极限是指对比传统的项目开发方式,XP强调把列出的每个方法和思想做到极限并做到最好。优点:轻量型、灵活;专家协作开发方式。重视客户反馈。第九页,共42页。极限编程的核心有4个要点:交流、简单、反馈和勇气,它们构成了极限编程的精髓。1.交流(1)开发人员与客户的交流(2)开发人员之间的交流(3)开发人员与管理人员的交流2.简单(1)设计简单(2)编码简单(3)注释简单(4)测试简单3.反馈(1)客户对软件的反馈(2)测试代码对功能代码的反馈4.勇气接受任务的勇气。第十页,共42页。1.什么是结对编程结对编程是一个非常直观的概念,简单的说是指两位程序员肩并肩地坐在同一台计算机前,面对同一个显示器,使用同一个键盘和同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起编写文档等。基本上所有的开发环节都面对面、平等、互补地进行开发工作,并且这两人的角色可以随时交换。2.结对编程的发展1995年,澳大利亚悉尼理工大学计算机科学教授、国际公认的软件工程理论与实践之人类因素研究权威人士LarryConstantine,在专栏中第1次提到他所观察到的一个现象:“两个开发人员一起工作,可以比以往更快地交出完成并经过测试的代码,而且这些代码几乎是没有错误的”。这是结对编程概念的雏形。1996年,由KentBeck、WardCunningham和RonJeffries软件开发理论与实践极限编程倡导者一同提出了极限编程及其12个实践,极限编程是由他们开发面向对象软件经验发展而来的。第十一页,共42页。3.结对编程的早期实践LarryConstantine在发表于20世纪80年代初的一篇文章里说,Withtsmith公司里的“动态搭档”能够以前所未有的速度编写出漏洞更少的代码来。在对贝尔实验室的Pasteur项目进行总结研究之后,软件模式运动中最有影响力的人物之一JamesCoplien,于1995年提出了“结对开发”的企业模式。2001年秋,北卡州大学的LaurieWilliams做了一个实验,该实验主要用于研究两个课题,即结对编程的作用和积极协作学习的重要性。2002年,ThoughtWorks公司的AmrElssamadisy在项目中实施结对编程从而对结对编程编程进行研究。通过对计划、提交周期、设计的简单性、测试和重构等方面和单独工作进行对比,验证了结对编程的效率比单独编程更高。第十二页,共42页。4.结对编程角色互换5.结对编程优势与问题(1)可以最大化地提高工作效率。(2)可以生成更好的代码。(3)可以减少风险。(4)是知识传播的最好途径。(5)可以打造出最佳的合作团队。6.结对编程分析(1)结对编程与敏捷实践。(2)结对编程与测试驱动开发。(3)结对编程与代码重构。(4)结对编程与简单设计。第十三页,共42页。1.面对面结对编程的不足基础设施缺乏、地理位置分离和时间安排冲突等。2.分布式结对编程概念分布式结对编程是一种编程风格,两个开发人员在地理上是分布的,但可以通过网络在同一软件制品上同步协作。3.分布式结对编程优势第十四页,共42页。4.分布式结对编程的要求当决定使用哪一种分布式结对编程工具时,要考虑以下几种特征。(1)能不能容易地和当前集成开发环境进行连接,桌面共享工具如Elluminate,LogMeIn和VNC4DPP可以安装在任何集成开发环境中。(2)能不能共享必要的文件和应用,这种工具应该支持共享程序员将用到的文件、应用或者测试工具。(3)能不能支持传递“手势”。(4)是否有明确的驱动和导航角色。(5)能不能保护每个合作者的隐私,桌面共享工具允许客户完全访问拥有者的计算机,这使客户潜在地威胁到了拥有者的隐私。(6)是否需要很大的带宽,一些工具仅仅传送合作者的代码。第十五页,共42页。2.4.1概念与原则DavidHooker提出了如下7个关注软件工程整体实践的核心原则。(1)存在价值(2)保持简洁(3)维护视图(4)生产者要让消费者理解(5)面向未来(6)计划复用(7)认真思考第十六页,共42页。1.沟通实践2.计划实践制订项目计划一般有如下4个步骤。(1)明确目标,目标必须明确、可行、具体和可以度量。(2)制定项目工作范围,对照目标,将需要完成的工作进行分析和梳理,列出一份完成目标所需要进行的所有活动一览表,这就构成了项目的工作范围。(3)在项目组内分配任务职责,责任矩阵是完成这一任务的最好选择。(4)统筹规划项目间活动的关联,该步骤确定各项目活动所需要的时间、人力和物力,明确各项活动之间的先后逻辑关系,通常通过网络图工具完成。3.建模实践第十七页,共42页。2.5.1传统的软件过程模型1.瀑布模型采用瀑布模型的软件过程如图2-1所示。第十八页,共42页。2.5.1传统的软件过程模型1.瀑布模型特点: 最早、应用最广泛的软件过程模型。 文档驱动的模型。优缺点并存。 阶段间以固定次序相互衔接。优势: 阶段的顺序性和依赖性。 推迟实现。 质量保证。缺陷: 线性过程不切实际、文档驱动增加工作量、开发风险大、测试滞后、开发合作衔接不畅。第十九页,共42页。补充:原型模型在初步需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,在试用中收集客户意见,根据客户意见立刻修改原型,之后再让客户试用,反复循环几次,直到客户确认为止。需求的采集与细化客户评价原型快速设计建造原型加工原型产生样品停止开始第二十页,共42页。优点良好的需求定义,能有效处理用户的模糊需求。有利于用户培训和开发同步。低风险开发变化较大的计算机系统。更易维护、对用户更友好。使总的开发费用降低,开发时间缩短。缺点资源规划管理较为困难,更新文档工作繁重。容易忽视用户环境和原型环境的差异。不利于创新。第二十一页,共42页。2.增量模型瀑布模型+迭代增量开发和增量提交渐增模型 增量构造模型:一些阶段增量开发,一些阶段整体开发。 演化提交模型:所有阶段增量开发。原型模型第二十二页,共42页。2.增量模型增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,采用随时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”,如图2-2所示。增量模型中,需求分析阶段和设计阶段按瀑布模型的整体方式开发,编码阶段和测试阶段按增量方式开发。第二十三页,共42页。2.增量模型两个缺陷: 需要软件具备开放式体系结构。 容易退化为边做边改模型,是软件过程的控制失去整体性。增量模型和原型模型的不同在那里?优点: 人员分配灵活,投入经济。 能有计划地管理技术风险。第二十四页,共42页。3.螺旋模型瀑布模型+原型模型强调分线分析特别适合于大型复杂的系统。每个周期包括需求定义、风险分析、工程实现和评审4个阶段。第二十五页,共42页。图中的4个象限分别代表以下四个活动。(1)制订计划。(2)风险分析。(3)实施工程。(4)客户评估。第二十六页,共42页。3.螺旋模型优点: 有利于软件重用。 减少测试风险。 支持客户需求的动态变化。 降低了开发风险。风险驱动只适合于大规模软件项目。第二十七页,共42页。基础设施缺乏、地理位置分离和时间安排冲突等。这是结对编程概念的雏形。(6)是否需要很大的带宽,一些工具仅仅传送合作者的代码。二是技术及工具框架,包括实现过程活动自动化,以及为实现不同角色和职责提供支持时所需的设备与工具。能有计划地管理技术风险。具有强沟通、简化设计和迅速反馈等特点。LarryConstantine在发表于20世纪80年代初的一篇文章里说,Withtsmith公司里的“动态搭档”能够以前所未有的速度编写出漏洞更少的代码来。每个循环包括4个阶段:初始、细化、构造、移交。第三十二页,共42页。通过对计划、提交周期、设计的简单性、测试和重构等方面和单独工作进行对比,验证了结对编程的效率比单独编程更高。没有谁能在完全理解所有需求之后才开始项目,即使是顾客也一样。具有强沟通、简化设计和迅速反馈等特点。(1)问题的定义及规划:在该阶段软件开发人员与客户进行需求交流,确定软件的开发目标及其可行性。(5)优化级:过程动态调整,以及新技术的采用,如图2-12所示。LarryConstantine在发表于20世纪80年代初的一篇文章里说,Withtsmith公司里的“动态搭档”能够以前所未有的速度编写出漏洞更少的代码来。第三十八页,共42页。面向对象的方法强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象构造系统,而不是围绕功能构造系统。降低软件复杂性,提供可理解性,简化开发和维护工作。促进软件复用。第二十八页,共42页。1.统一过程模型用例驱动、架构、迭代、增量。每个循环包括4个阶段:初始、细化、构造、移交。每个阶段又进一步细分为多次迭代的过程,如图2-4所示。第二十九页,共42页。1.统一过程模型每次循环迭代都会产生一个新的版本,每个版本都是一个准备交付的产品。初始阶段:建立关键用例的简化用例模型,用于刻画系统的主要功能。细化阶段:详细说明系统的绝大多数用例,设计系统架构,评估风险。成果是架构基线。构造阶段:将架构基线逐步发展成为完善的系统,准备交付给客户。主要解决的问题是早期交付给客户的产品是否完全满足用户的需求。移交阶段:用户分析产品的缺陷和不足,开发人员改正问题完善系统。第三十页,共42页。统一过程定义了4个阶段,又给出了5个核心工作流,包括需求、分析、设计、实现和测试。每个工作流在各个阶段所处的地位和工作将不同,图2-5给出了统一过程的核心工作流。第三十一页,共42页。统一过程的原则:迭代开发:专注于处理每个阶段中最高风险。需求管理:提取、组织和文档化需要的功能和限制。基于构件。可视化建模:UML。验证软件质量。控制变更。优缺点。第三十二页,共42页。2.构件集成模型基于构件的开发模型由软件的需求分析和定义,体系结构设计、构件库建立、应用软件构建、测试和发布5个阶段组成,采用这种开发模型的软件过程如图2-6所示。优势:螺旋模型的许多特征,支持软件开发的迭代。加快开发,降低成本和风险。缺陷:缺乏通用组装标准导致较大风险。对开发人员要求高。过分依赖构件。第三十三页,共42页。2.6.1什么是能力成熟度模型CMM(CapabilityMaturityModel,能力成熟度模型)是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中的各个发展阶段的描述,是国际公认的对软件公司进行成熟度等级认证的重要标准。CMMI(CapabilityMaturityModelIntegration,能力成熟度模型集成)是CMM模型的最新版本。CMMI是国防部的一个设想,想把现在所有,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论