现代软件工程ProcessModelppt课件_第1页
现代软件工程ProcessModelppt课件_第2页
现代软件工程ProcessModelppt课件_第3页
现代软件工程ProcessModelppt课件_第4页
现代软件工程ProcessModelppt课件_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

MordenSoftwareEngineering,ShengbingRenrenshengbingCentralSouthUniversity,SchoolofSoftware,2,ProcessModel,3,Contents,WhyweneedsoftwareprocessEngineeringandScienceWhatissoftwareprocessClassicSoftwareProcessModelWaterfallModelPrototypingModelAgileSoftwareProcessModelExtremeProgrammingSCRUM,4,WhyProcess,5,Engineeringduringevolution4.Therequirementsarecompatiblewithallthekeysystemstakeholdersexpectationse.g.,users,customer,developers,maintainers,investors5.Therightarchitectureforimplementingtherequirementsiswellunderstood.6.Thereisenoughcalendartimetoproceedsequentially.,18,WaterfallModelCharacteristics,Theclassiclifecycle-oldestandmostwidelyusedparadigmActivitiesflowfromonephasetoanotherIftherearecorrections,returntoapreviousphaseandflowfromthereagainMajoradvantages:Goodforplanningandwell-defined/repeatedprojects,19,ProblemsofWaterfallModel,RealprojectsrarelyoftenfollowthesequenceAllrequirementsmaynotbestatedexplicitlybycustomerCustomeronlyseestheresultsaftersometimeDevelopersareoftendelayedatcertainphases,20,PrototypingModel,Stop,21,PrototypingModelCharacteristics,DeveloperandcustomerdetermineobjectivesanddraftrequirementsPrototypequicklyproducedandevaluatedbycustomerPrototypethenrefined,andre-evaluatedProcessiterated,beforefinalproductdevelopmentAdvantages:Customerparticipationandbetterrequirements,22,ProblemsofPrototypingModel,Problem1:CustomermayseeprototypeasworkingmodelandexpectsfastresultsProblem2:Developercompromisedwhenproducingprototypequickly,e.g.differentoperatingsystemorprogramminglanguage,23,RAD模型,Microsoft倡导的开发模型,24,RAD模型的特点,顺序开发(如同瀑布模型);业务建模:弄清业务活动中的信息流;数据建模:精化业务建模结果;处理建模:依据数据建模结果,创建处理描述;应用生成:组件复用与开发;测试:新的组件及所有接口。强调极短的开发周期(2-3月)。,RAD模型主要用于信息系统应用软件的开发,使用基于组件的建造方法获得快速开发,25,RAD模型的不足,技术风险很高的情况不适合采用;(如新软件要求与已存在的程序有高可互操性时,或系统难以被适当地划分为若干功能等情况)需要足够的人力以创建足够的RAD小组;开发者和用户需要在很短的时间内完成系统开发。,26,渐增模型,前述生存期模型,均是一次性地将整个系统交给用户:瀑布模型是假设当线性阶段完成之后就能交付一个完善的系统。原型模型主要用来帮助开发者获取用户需求,待需求稳定后再开发最终系统提供给用户。RAD模型则先将系统主要功能分给若干RAD小组开发,然后集成起来形成最终系统提交给用户。,业务和产品需求的变化,市场竞争和商业压力等等,以逐步增加软件产品的方式构造软件-渐增模型,27,渐增模型示意图,28,渐增模型的特点,可以根据需要补充人员;能够有计划地管理技术风险;能够减少全新软件产品对用户带来的影响;不需要大的资金支出;用户能及早使用及早发现问题;投资回报随功能渐增而渐增。,29,渐增模型的不足,如果产品整体结构设计不当,则难以为其增加新的增量;(对设计水平要求较高)由于采用增量开发,故难于进行彻底的测试。,30,螺旋模型,31,螺旋模型的特点,既保持了传统生命周期模型中系统的阶段性方法,又将迭代演化的思想吸收到模型中;螺旋模型是风险驱动的。(风险分析使得用户和开发者能够更好地理解和对待每一个阶段的风险),螺旋模型适合于大型软件的开发,32,螺旋模型的不足,要求软件开发人员善长风险分析;风险分析会导致项目终止而终止合同,出现违约诉讼;对于小项目,风险分析的成本可能与整个项目的成本相当。,33,UnifiedProcessModel,Asoftwareprocessthatis:use-casedrivenarchitecture-centriciterativeandincrementalCloselyalignedwiththeUnifiedModelingLanguage(UML),34,TheUnifiedProcess(UP),35,UPWorkProducts,36,LifecycleforEnterpriseUnifiedProcess,37,AgileSoftwareProcess,38,Agilesoftwaredevelopment,Softwaredevelopmentfailstodeliver,andfailstodelivervalue.Thisfailurehashugeeconomicandhumanimpact.Weneedtofindanewwaytodevelopsoftware.KentBeckinExtremeProgrammingExplained.,39,Agilesoftwaredevelopment,“Weareuncoveringbetterwaysofdevelopingsoftwarebydoingitandhelpingothersdoit.Throughthisworkwehavecometovalue:IndividualsandinteractionsoverprocessesandtoolsWorkingsoftwareovercomprehensivedocumentationCustomercollaborationovercontractnegotiationRespondingtochangeoverfollowingaplanThatis,whilethereisvalueintheitemsontheright,wevaluetheitemsontheleftmore.”KentBecketal,40,Whatis“Agility”?,Effective(rapidandadaptive)responsetochangeEffectivecommunicationamongallstakeholdersDrawingthecustomerontotheteamOrganizingateamsothatitisincontroloftheworkperformedYieldingRapid,incrementaldeliveryofsoftware,41,AnAgileProcess,Isdrivenbycustomerdescriptionsofwhatisrequired(scenarios)Recognizesthatplansareshort-livedDevelopssoftwareiterativelywithaheavyemphasisonconstructionactivitiesDeliversmultiplesoftwareincrementsAdaptsaschangesoccur,42,敏捷原则,最优先要做的是通过尽早地、持续地交付有价值的软件来使客户满意。即使在开发后期,也欢迎需求改变。敏捷过程利用变化来为客户创造竞争优势。经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。在整个项目开发期间,业务人员和开发人员必须天天在一起工作。围绕有积极性的个人构建项目团队。为他们提供所需的环境和支持,并信任他们能够完成工作。在团队内部,最有效果并富有效率的信息传递方法是面对面的交流。可运行的软件是首要的进度度量标准。敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、稳定的开发速度。持续关注优秀的技能和好的设计,增强敏捷能力。简单(是不必做的工作最大化的艺术)是必要的。最好的架构、需求和设计出自于自组织的团队。每隔一段时间,团队应反省如何才能有效地工作,并相应地调整自身的行为。,43,eXtremeProgramming(XP),极限编程(ExtremeProgramming,简称XP)是由KentBeck、WardCunningham、RonJeffries等人通过整理优秀团队的共同之处而提出的敏捷过程。所谓极限,KentBeck认为是:尽力而为,然后处理其结果。极限编程专注于编程技术、清晰沟通和团队协作,只需做能够为客户创造价值的事情,是一组确保项目开发成功的规则,适用于任何规模的团队,适合模糊或快速变化的需求。,44,XPandtraditionallymodels,45,CustomersBillofRights,Tosetobjectivesfortheprojectandhavethemfollowed.Toknowhowlongthesoftwareprojectwilltakeandhowmuchitwillcost.Todecidewhichfeaturesareinandwhichareoutofthesoftware.Toknowtheprojectsstatus.Tomakereasonablechangestorequirementsthroughoutthecourseoftheprojectandtoknowthecostofmakingthesechanges.Tobeapprisedregularlyof(了解)risksthatcouldaffectcost,scheduldeorquality.Tohavereadyaccesstoprojectdeliverablesthroughouttheproject.,46,DevelopersBillofRights,Toknowtheprojectobjectivesandtobeabletoclarifypriorities.ToknowindetailwhatproductImsupposedtobuild.Tohavereadyaccesstothecustomer,manager,marketer,orotherpersonresponsibleforthefunctionality.Toworkeachphaseoftheprojectinatechnicallyresponsibleway.ToapproveeffortandscheduldeestimatesforanyworkthatIwillbeaskedtoperform.Tohavemyprojectsstatusreportedaccuratelytocustomersanduppermanagement.Toworkinaproductiveenvironmentfreefromfrequentinterruptions.,47,XPataglance,Started(becamepopular)inconnectionwithinternetprogrammering.Focusonprogrammingindevelopmentandhandlinguncertainty.CentralvaluesinXPCommunicationSimpleFeedbackCourage,48,XPoverview,CentralparametersinprojectmanagementCost(effort)Time(schedule)QualityScopeIdeainXPtomakescopevariableandtheotherfixed.,49,eXtremeProgramming(XP),Weneedtocontrolthedevelopmentofsoftwarebymakingmanysmalladjustment,notbymakingafewlargeadjustments,kindofdrivingacar.Thismeansthatwewillneedthefeedbacktoknowwhenwearealittleoff,wewillneedmanyoppertunitiestomakecorrections,andwewillhavetobeabletomakethosecorrectionsatareasonablecost.KentBeckinExtremeProgrammingExplained.,50,Developmentwithoutanoveralldesigncommonunderstandingbymeansofmetaphor.Userstoriesshortdescriptions(notusecases)XP过程包括四个阶段:计划、迭代、测试和发布,51,Planninggametogetherwithusers.Userstoriesestimatedbydevelopmentteam.Userstoriesdividedintoiterations(13weeksdurations).Aftereachiterationareleaseisshippedtothecustomer.Newuserstoriesareputforwardallthetimes.Eachiterationisplannedjustbeforeitisgoingtobecarriedout.,计划阶段,52,Iterationsareplannedatthestart.Intheplanninguserstoriesaredividedintoprogrammingtasksof1-2daysdurations.Onlyplannedoptionsforagiveniterationareimplementednoconsiderationforfutureiterations.,迭代阶段,53,迭代周期,54,Nooveralldesignonlymetaphor.CRCfordetail-designSimpledesignRefactoringtoenhancecodeandstructure.ExchangeofinformationbymeansofStandUpMeetingstypicallyonemeetingeachday.,55,Cooperationwithuserinordertoclarifydetails.Testthencodethecodeiswrittensoitfitsoneparticulartestandsothatitjustcanpasthattest.PairprogrammingtwopersonforeachcomputerNopermanentpair.Collectiveownershipofcode.Codingstandards,56,Thetestisalsousedwhenrefactoring.Overallgoaltopassthetestasquicklyaspossible(developnewclasses,use/modifyoldclasses,copyandpastcode).StandardforcodingIntegrationallthetime,测试阶段,57,发布阶段,极限编程过程强调小规模、频繁地发布代码和测试。一方面,小型发布有利于尽早为客户提供业务价值,使客户增加信心。另一方面,客户可以通过使用小型发布的软件系统,能够获取更多的其他需求,发现系统存在的缺陷,通过反馈将更有力地指导项目成功,包括改善进度估算、完善故事、改变故事实现的优先级等。在发布阶段,如果需要文档,则应该在当前版本趋于稳定时撰写文档,主要包括:系统文档,为理解系统提供一个总览信息,如系统技术架构、高层次系统需求、关键设计决策总结、重要的设计模型等等;系统操作文档,描述系统涉及的依赖关系、与其他系统交互的特性、预期系统负载等;系统支持文档,描述解决问题时的参考信息、疑难问题的上报流程、维护团队的联系列表等;用户文档,如参考手册、用户指南、支持指南及培训资料等。,58,UnittestautomaticallytestAcceptancetestblackboxAlltestsaredesigned/createdbeforecodingAllunittests100%passed.Customerisinthechargeoffunctionaltest.EachUserStoryistransformedintoanumberoftests.,59,XPproperties,Keepitsimple.Codeinsmalliterationsandfastreleasecycles.Designasyougo,withnobig,up-frontdesign.Putunitandfunctionaltestingatthecoreoftheprojectgoalposts,notasanoptionaladd-on.Workdirectlywiththecustomerand/ortheuserandmakethemapartoftheprogrammingteam.Maketheentiredevelopmentteamownersoftheentireproject;dontportionoutcodetoindividualexperts.Refactor,thatis,rewriteandimprovecode,constantly.Sleepwell,leadabalancedhealthylifestyleexceptforrequiredeatingofjunkfoodforteamspirit,andremember,itsajungleoutthere,soalwaysprograminpairs.BruceAbbottin,60,XP,XPisnomorethancommonsensejustalittlemoreextreme.RealextremeisRefactoringinsteadofdesignPairprogramming,61,极限编程实践,62,极限编程实践,63,XP-critic,Pairprogramming+Bettercode-Vastofresources-Onlyforsocialpersons-CreativityDesignandcodeinsmalliterations+Reducedriskfortotalprojectfailure-Usersareconfusedbychangingversions.-AretheusersfascinatedbySW-developmentinthesamewayasSW-engineer.,64,XP-critic,Nooveralldesign+KISS-Nodesignforreuse.-Nodelegationofwork.-Badcodehopeforrefactoring.Refactoring+Constantimprovement-Optimal?Determinedbyasuddenidea.-Unittesttheonlycontrol.,65,XP-critic,Test+Unittest-Nooveralldesignnointegrationtest-onlyuserstories.-Generallyspeakingnothingonstresstest.,66,XPingeneral,IsitpossibleforordinaryuserstoimagineSWinaction?Theuserswillprimarilyseeautomationofalreadyknowprocesses.Ordinaryanalyse/designisnotprimarilyfocusedonautomationbutisfocusedonfundamentalgoalsandnotsomuchonspecificprocesses.,67,eXtremeProgramming(XP),TheexactlimitsofXParentclearyet.ButtherearesomeabsoluteshowstoppersthatpreventXPfromworkingbigteams,distrustfulcustomers,technologythatdoesntsupportgracefulchange.XPcanaccomodatethecommonformsofcontract,albeitwithslightmodifications.Fixedprice/fixedscopecontracts,inparticular,becomefixedprice/fixeddate/roughlyfixedscopecontractswhenrunwiththePlanningGame.KentBeckinExtremeProgrammingExplained.,68,Scrum过程,在敏捷软件开发中,Scrum是一种迭代增量式软件开发过程,就像橄榄球赛的争球过程:快速、自组织和有适应性。,69,Scrum团队角色,产品负责人(ProductOwner):定义和维护“产品待办事项表(ProductBacklog)”,负责最大化产品以及Scrum团队的工作价值,代表利益相关者的利益。Scrum主管(ScrumMaster):确保Scrum团队遵循Scrum理论、实践和规则,通过指导和引导,使Scrum团队更加高效地创建高质量的产品。开发团队(DevelopmentTeam):负责在每个冲刺(Sprint)结束,交付潜在可发布的“已完成”产品增量。只有开发团队的成员才能交付产品增量。,70,开发团队,团队的大小足够小,以保证灵活性,同时应能完成有意义的任务,一般是72人。开发团队有以下几个特点:员是自组织的,没有人(即使是Scrum主管都不可以)告诉开发团队如何把产品待办事项表变成潜在可发布的功能。开发团队是跨功能的,团队作为一个整体拥有创造产品增量所需要的全部技能。Scrum不认可开发团队成员的头衔,无论承担哪种工作他们都是开发者。此规则无一例外。开发团队中的每个成员可以有特长和专注领域,但是责任归属于整个开发团队。开发团队不包含如测试或业务分析等负责特定领域的子团队。,71,Scrum制品,Scrum软件开发过程产生的制品除可工作的软件外,主要有四种:产品待办事项表、冲刺待办事项表、冲刺燃尽图和发布燃尽图。,72,产品待办事项表模版,73,冲刺待办事项表模版,74,冲刺燃尽图(SprintBurndown),75,Scrum会议,Scrum会议由Scrum主管主持。冲刺计划会每日站立会冲刺评审会议冲刺反思会与极限编程敏捷软件开发过程相比,Scrum过程强调管理,而极限编程强调实践,两者具有很好的互补性。,76,冲刺计划会,冲刺计划会是为冲刺做准备的会议,主要确定冲刺要做什么和怎么做,时间大概是几个小时。在这个会议中,开发团队和产品负责人通过共同讨论,理解产品负责人需要什么和为什么需要,从而由开发团队自己确定本次冲刺应该完成的产品待办事项表中的条目。然后,开发团

温馨提示

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

最新文档

评论

0/150

提交评论