软件工程.快速软件开发PPT课件_第1页
软件工程.快速软件开发PPT课件_第2页
软件工程.快速软件开发PPT课件_第3页
软件工程.快速软件开发PPT课件_第4页
软件工程.快速软件开发PPT课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

.,1,第17章快速软件开发,Rapidsoftwaredevelopment,.,2,开发,目前有许多的软件开发方法。开发和维护之间并没有一个真正的界限,开发将看成程序进化过程的第一阶段,第四篇中主要集中讨论开发技术;第17章主要描述快速软件开发的相关技术;第18、19章:基于复用的软件工程;第20章:讨论要求极高的系统;第21章:软件进化。,.,3,快速软件开发目标(Objectives),如何通过一个迭代的、增量式的软件开发方法来更快速地交付更加有用的软件;敏捷开发方法与依赖于文档的描述和设计的软件开发方法之间的区别(实质);极限编程(extremeprogramming)的原理、经验和限制;解释原型开发(prototyping)在软件过程中的扮演什么角色。,.,4,课题(Topicscovered),17.1敏捷方法(Agilemethods)17.2极限编程(Extremeprogramming)17.3快速应用开发(Rapidapplicationdevelopment)17.4软件原型构造(Softwareprototyping),.,5,快速软件开发,因为业务环境的迅速变化,业务不得不应对新的机会和竞争。软件是业务运营的一部分,所以新软件要迅速开发来适应新机遇、响应竞争压力。快速的开发和移交通常是软件系统的最关键需求。如果快速交付关键功能是可能的话,业务可能情愿接受较低质量的软件。,.,6,需求(Requirements),因为环境的变化,要达到一套稳定的、一致的系统需求通常是不可能的;因此,传统瀑布式的开发模型不再实用;快速的软件开发过程是为迅速制造可用软件而设计的。一般它们是迭代过程,即:描述、设计、开发和测试是交织在一起的;以一系列增量的形式完成的,每个增量包括一个新的系统功能。,.,7,快速开发(RAD)的特性,描述(规格说明)、设计和实现是并发的。没有详细的系统描述,规格说明和设计文档也减到最少。需求文档只定义最重要的系统特性;系统通过一系列增量进行开发的。最终用户和其他参与者评估每个增量并对下一个增量提出建议。系统用户界面通常是采用交互式开发系统开发的。,.,8,增量方法开发的优点,客户服务的加速移交。早期移交高优先级的功能,在实际中看到需求,为后面的版本提出变更意见。用户的参与。他们的参与不仅仅意味着体统更容易达到他们的需求,同时也意味着系统的最终用户对系统承担了义务,由此更愿意系统能发挥作用。(系统更符合他们的需要和用户更加认可系统),.,9,一个迭代式(iterative)开发过程,验证增量,构建系统增量,定义系统增量,设计系统体系结构,定义系统可交付的增量,系统完成,集成增量,验证系统,移交最后的系统,是,否,.,10,迭代式开发和增量式移交的困难,管理问题(Managementproblems)变更很快以至于无法有效地产生大量的文档,因此很难判断进展和发现问题,因为没有文档证明已经做了什么东西;合同问题(Contractualproblems)客户和软件开发商之间的模型是围绕系统描述的。有系统描述时才能为系统设计一个合同;,.,11,迭代式开发和增量式移交的困难,有效性证明问题(Validationproblems)迭代式开发过程试图最少化文档及描述与开发交替进行。较困难的对其进行独立的有效验证。(没有一份规格说明,系统将针对什么进行测试?)维护问题(Maintenanceproblems)不断的修改恶化了软件结构,需要对软件重新分解、持续改善软件结构,也使为了符合新的需求需要的更改和进化代价更加昂贵。,.,12,原型开发(Prototyping),对一些大型系统而言,增量式迭代开发和交付可能是不实用的;尤其是在有多个小组在不同的地点工作的情况下。原型开发,迭代式地开发一个系统原型,用作平台来实验系统需求和设计。即开发一个实验系统用作明确描述可能要用到的需求的一个基础。在系统规格说明获得批准后,这个系统就被放弃。,.,13,增量式开发和原型开发,进化式开发,交付的系统,可执行原型+系统描述,概要需求,抛弃式原型构造,.,14,冲突的(Conflicting)目标,增量式开发的目标是交付一个工作系统给用户。开发从那些最理解的需求开始。丢弃式原型开发的目标是确认或引导系统需求。该原型开发过程从那些理解不足的需求开始。,.,15,17.1敏捷方法(Agilemethods),敏捷方法的创立是由于不满于设计方法带来的管理开销。敏捷方法:注重于代码而不是设计;基于一个迭代的方法来开发软件;力图快速地交付可工作的软件,同时快速地进化它以满足变化的需求。敏捷方法可能最适合于小/中型的业务系统或PC产品。,.,16,敏捷方法的原则(Principles),原则,描述,人非过程,增量式移交,客户参与,客户应该在开发过程中始终紧密参与其中,他们的作用是提供和排序新系统的需求并评估系统的反复,软件以增量的方式进行开发,客户指定在每个增量中将要包含的要求,开发团队的技术应该得到承认和发扬,团队成员应该保持他们自己的工作风格,不落俗套,接受变更,预计系统需求的变更,并设计系统使之适应这些变更,保持简单性,致力于所开发的软件和开发过程的简单性。只要可能,就积极地去降低系统中的复杂性,.,17,敏捷方法的问题,敏捷方法所基于的基本原则是很难实施:可能很难让参与该过程的客户保持兴趣。团队成员个人可能从性格上不适应激烈的投入,而这正是敏捷方法的典型特征,从而不能和其他成员做良好的沟通。,.,18,敏捷方法的问题,当存在多个利益相关人的时候,更改优先序可能会很难。维护简洁性需要额外的工作。当需要采用其他迭代开发方法的时候,可能会出现合同方面的问题。,.,19,敏捷方法的总结,因此,敏捷方法只适合开发某些类型的系统,例如:小型或中等规模的业务系统、计算机产品;不适合于大型系统的开发(团体分散或会于软硬件系统有复杂交互)和要求极高的的一类系统(需对系统需求进行详细分析)。,.,20,17.2极限编程(Extremeprogramming),可能是最有名的和使用最广的敏捷方法。极限编程(XP)把迭代开发方法用到极致。每天可能会编译几次新版本;每两周向客户进行增量发布。每个编译全部要进行测试,只有编译测试运行成功的才能接受。,.,21,极限编程(XP)的版本循环,为此版本选择用户脚本,将脚本分解成任务,评估系统,开发/集成/测试软件,发布软件,规划版本,.,22,极限编程和敏捷方法的原则,对增量式开发的支持是通过小的、频繁发布的版本来体现的。客户参与意味着客户要全职(full-time)参与到小组中去。对人要采用双编程、集体所有制和避免长工作时间的过程。通过定期地系统发行版本、测试优先的开发及连续的集成来支持变更。通过不停地更新代码来实现简洁性的维护。,.,23,需求情节(Requirementsscenarios),在极限编程(XP)中,客户和团队成员一起讨论脚本,用”情节卡”封装客户需要,开发小组把这些分解成实现任务然后估计所需的人力和资源,这些任务是进度和成本估算的依据。根据这些任务的优先级和进度估算,客户对下一个发行版本所包含的内容进行选择。,.,24,文档下载的情节卡,.,25,极限编程及其变更,为变更而设计是软件工程中传统的至理名言。在对变更的预测上投入时间和人力是值得的,因为这会降低后期的成本。对极限编程而言,对此进行维护却有点得不偿失,因为无法可靠地预期变化。因此,它提议用不停地改进代码使变更来得更容易些,反正变更都要用代码来实现的。,.,26,17.2.1极限编程中的测试,系统测试是XP方法的核心内容,引入一方法来降低由于新系统的增量而给系统带入新错误的可能性。测试的关键特性如下:是测试第一的开发(XP的创新之一);来自脚本的增量式测试开发;用户参与测试开发和有效验证中;在每次编译新的发行版本的时候,用自动测试工具测试所有的构件。,.,27,文档下载的任务卡,T,ask1:Implementprincipalworkflow,T,ask2:Implementarticlecatalogandselection,T,ask3:Implementpaymentcollection,Paymentmaybemadein3dif,fferentways.,Theuser,selectswhichwaytheywishtopay,.Iftheuser,hasalibrarysubscription,thentheycaninputthe,subscriberkeywhichshouldbecheckedbythe,system.,Alternatively,theycaninputan,organisational,accountnumber,.Ifthisisvalid,adebitofthecost,ofthearticleispostedtothisaccount.Finally,they,mayinputa16digitcreditcardnumberandexpiry,date.,Thisshouldbecheckedforvalidityand,if,validadebitispostedtothatcreditcardaccount.,.,28,测试案例描述,T,est4:,T,estcr,editcardvalidity,Input:,A,stringrepresentingthecreditcardnumberandtwointegersrepresenting,themonthandyearwhenthecardexpires,T,ests:,Checkthatallbytesinthestringaredigits,Checkthatthemonthliesbetween1and12andthe,yearisgreaterthanorequaltothecurrentyear,.,Usingthefirst4digitsofthecreditcardnumber,checkthatthecardissuerisvalidbylookingupthe,cardissuertable.Checkcreditcardvaliditybysubmittingthecard,numberandexpirydateinformationtothecard,issuer,Output:,OKorerrormessageindicatingthatthecardisinvalid,.,29,以测试为第一(Test-first)的开发,在声明用代码实现需求之前,编写测试案例。测试案例被写成可以自动运行的程序而不是数据。测试包括检查它是否正确运行。当添加新功能的时候,都要自动执行所有以前的和新的测试。由此检查新功能不会引入差错。,.,30,17.2.2结对编程(Pairprogramming),在极限编程中,程序员双人一起工作,混流交替地两两结对编程,坐在同一工作台前一起开发软件。优点:有助于开发共有制的代码(共同对代码负责)和在整个小组里传播知识。它提供了一种非正式的审核过程,因为每行代码至少被两个人看过。它鼓励重解(refactoring)代码,因为小组可以从中受益。测试表明双人编程的开发效率与两个人单独工作差不多。,.,31,17.3快速应用开发(RAD),敏捷方法已经获得广泛注意,但是其他快速应用开发方法已经使用了许多年。这些开发方法是针对数据密集型应用(大数据量data-intensive)业务应用设计的,并且是围绕一个数据库进行编程和表达信息的。RAD环境中所包括的工具有:,.,32,快速开发(RAD)的环境工具,数据库编程语言(Databaseprogramminglanguage):SQL界面生成器(Interfacegenerator)与办公应用连接(Linkstoofficeapplications)报告/表生成器(Reportgenerators),.,33,快速应用开发环境,DB编程语言,界面生成器,办公系统,报告生成器,数据库管理系统,快速应用开发环境,.,34,界面生成,RAD环境提供强大的屏幕定义和报告生成能力。屏幕定义为一系列的相关联的表格。许多应用是基于复杂表格的,并且手工开发这些表格是很耗时的。支持屏幕生成的快速开发环境包括:用拖放技术定义互动表格;用表格链接定义一系列待显示的表格;表格验证(verification),指定表格允许的域范围。,.,35,可视化编程(Visualprogramming),诸如VisualBasic这样的脚本语言是支持可视化编程的。其中的原型开发是通过创建一个用户界面而得到的。其界面是由定制好的选项以及具有这些选项的相关构件所组成的。程序员定义界面元素,然后处理脚本和元素建立关联;备有一个大的构件库来支持这类开发。可能要进行裁剪以便适合于特定的需求。,.,36,采用复用的可视化编程,.,37,可视化开发的问题,很难协调小组的开发。没有明显的系统构架。程序块之间复杂的依赖关系可能会带来维护问题。,.,38,商业成品(COTS)的复用,另一基于复用的方法,这种有效的快速开发方法是对现有的成品系统进行配置和连接。例如,一个需求管理系统时可以用以下的东西构建:一个保存需求的数据库;一个提取需求的文字处理器和格式报表;一个用于跟踪管理的电子表格。,.,39,复合文档(Compounddocuments),对某些应用,可以通过开发一个复合文档来建立一个原型。多个对象(包括不同的数据类型)的容器;数据可被不同的应用所处理;对对象的访问就是启动相关联的应用;文档本身就是不同应用的集成器。,.,40,应用链接(Applicationlinking),.,41,17.4

温馨提示

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

评论

0/150

提交评论