软件方法与过程复习资料.docx
- 文档编号:4033285
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:28
- 大小:367.23KB
软件方法与过程复习资料.docx
《软件方法与过程复习资料.docx》由会员分享,可在线阅读,更多相关《软件方法与过程复习资料.docx(28页珍藏版)》请在冰豆网上搜索。
软件方法与过程复习资料
Lecture00
软件开发过程是什么
软件过程是从软件项目需求定义开始直至软件使用后被废弃为止,跨越整个软件生存期内的系统开发、运行和维护等全部活动及相关项的总和。
大多数软件项目失败的原因
1.不完整、不现实的项目需求
2.对需求的变更束手无策
3.脆弱的架构
4.采用不成熟的技术
5.测试的不充分性
6.拙劣的进度计划和评估
7.缺乏资源
8.不具备项目管理方法
9.缺少管理层的支持
软件工程三个要素
方法、过程、工具
软件方法与过程?
相对于技术来说,重要吗?
相对于技术来说,软件方法与过程更重要。
伴随着软件危机的出现和渐渐解决,软件开发方法发挥越来越重要,现在的软件开发,绝不可能再凭个人技术,而要借助一整套科学、先进的开发方法和智能、自动化并大大减轻开发人员繁琐和重复劳动的工具。
这也是软件危机渐渐消除的重要原因。
软件开发过程的实现最重要的是
人
Lecture01Agile
一个软件项目失败(Asoftwareprojectfailedif……)
1.deliveredlate,发布延迟
2.overbudget,超过预算
3.withresidualfaults,漏洞百出(残存错误)
Classicalsoftwaredevelopmentmethodshavenotsolvedsoftwarecrisis.传统的软件开发方法没有能够解决软件危机
1.WaterfallModel,瀑布模型
2.SpiralModel,螺旋模型
3.PrototypeModel,原型法
4.IncrementModel,增量法
Asoftwareengineer’sjob
1.Makeaworkingplan,制订可行计划
2.Carryouttheplan,实现这个计划
3.Tryhis/herbesttoproducehigh-qualityproducts,尽力提高产品质量
3keyaspects
1.Qualityproducts,高质量产品
2.Expectedcosts,合理花费
3.Onagreedschedule,可行日程计划
SummaryofPSP
1.PSPisaframeworkdesignedtoteachsoftwareengineerstodobetterwork.PSP为工程师改进工作提供了一套模板
2.Estimateandplan→track→improvequality.评估与计划→跟踪与反馈→改进质量
3.Qualitymethodstaketimetolearnandpractice,butitwillhelpyouinyourengineeringcareer.尽管改进质量的方法需要时间去学习和练习,但它会给你的软件工程经历带来帮助
4.Establishgoals→measurequality→understandtheprocess→changeandreuseprocess→measureandanalyzetheresults→Recycleimproving.确立目标→控制质量→理解过程→改进并重用过程→控制并分析结果→循序渐进改进个人能力
5.Identifythetasksyoudo.认同你的工作。
ManifestoforAgileSoftwareDevelopment敏捷软件开发宣言的主要内容是什么?
1.Individualandinteractionsoverprocessandtools.个体和交互胜过方法和工具。
2.Workingsoftwareovercomprehensivedocumentation.可工作的软件胜过面面俱到的文档
3.Customercollaborationovercontractnegotiation,与客户合作胜过合同谈判
4.Respondingtochangeoverfollowingaplan,响应变化胜过遵循计划
理解敏捷软件开发的原则
1.尽早地让客户看到可用的东西(部分或简单的系统);
2.变更无时不在,即使是后期。
响应需求变更使敏捷过程为客户创造竞争优势;
3.更频繁地交付可工作的软件,几周到几个月都行;
4.客户和开发人员的交流与合作应贯穿整个开发过程;
5.人是最重要的因素,应充分激励和调动个人的斗志,并给予充分信任;
6.最好的交互方式是面对面地交流以传递信息;
7.衡量工作进度的标准是可工作的软件;
8.敏捷过程是一个可持续的过程,应合理安排工作时间,保持开发进度;
9.优秀个人技术和好的设计会增加敏捷能力;
10.尽量使用简单的技术实现功能;
11.最好的架构、需求和设计出自自组织团队;
12.不时反省团队的工作,调整工作方法,更大地发挥团队力量;
Lecture02XP
ValuesofExtremeProgramming理解XP的价值观:
内容、关系
1.内容:
1)沟通
2)简单
3)反馈
4)勇气
2.关系
1)沟通支持勇气,因为它带来了高风险、高回报的试验的可能性。
2)简单支持勇气,因为有了一个简单的系统,你可以比以前勇敢得多,你无意中将其破坏的可能性也大大减少。
3)勇气支持简单,因为只要你有可能简化系统,你就会尝试。
4)反馈支持勇气,因为如果你按下按钮就能够看到测试结果通过(或不通过,这时你可以将代码扔掉),那么即使对代码进行根本的改动你也会感觉安全得多。
BasicPrinciplesofXP(5点)基本原则
1.Rapidfeedback,快速反馈:
短期迭代,反馈快速检验前期工作是否满足客户需求;
2.Assumesimplicity,假定简单:
尽量使用简单的技术和方法来解决问题,满足现阶段需求即可;
3.Incrementalchange,递增改变:
使用一系列小的改变更解决问题,不是大刀阔斧;
4.Embracingchange,拥抱变更:
包容变更
5.Qualitywork,优质产品:
注重质量,不可因时间而放弃质量
XP的项目过程包括哪6个阶段?
1.ExplorationPhase,探索阶段:
获得客户故事、熟悉开发环境、验证可行性;(几周到几个月);
2.PlanningPhase,计划阶段:
确定故事卡片开发顺序、和客户达成性能协议、初步估计工作量、估计开发进度表(几天);
3.IterationstoReleasePhase,迭代至产品发布:
几次迭代、细分进度表、首次迭代建立系统整体结构、由客户决定每次迭代完成的故事、客户测试在迭代后期进行、最后一次迭代时系统进入生产化阶段(每次迭代1至4周);
4.ProducingPhase,生产化阶段:
交付前进行测试和检查、决定是否响应变更、记录推迟的想法和建议(1至3周);
5.MaintenancePhase,维护阶段:
交付第一版后,保证产品正常运行的同时,推出新特性、加入新人,团队结构改变
6.DeathPhase,死亡阶段:
客户无新故事,系统完全符合客户要求;客户不满意,继续下去代价过大;
Practices(XP的最佳实践能列举并说明5个以上)
1.Planninggame计划
2.Small/shortreleases小规模发布
3.Metaphor隐喻
4.Simpledesign简单的设计
5.Testing测试
6.Refactoring重构
7.Pairprogramming结对编程
8.Collectiveownership集体所有权
9.Continuousintegration持续集成
10.40-hourweek保证工作进度
11.On-sitecustomer现场客户(客户作为团队成员)
12.Codingstandards编码标准
13.Openworkspace开放空间
14.Justifyrules调整规则
XP中采用PairProgramming的优点有哪些?
1.人们总是能发现别人的错误;
2.两个人可以更有效地交流、相互学习和传递经验;
3.效费比更高(Cost-effectiveratio);
4.更好地处理人员流动;
5.提供更好的设计质量和代码质量(在计划和编码的同时进行Review);
6.协作,更强的解决问题能力;
7.一起工作,带来更多的信心;
8.带来更高的满足感;
Lecture03SummaryofXP
1.Planning:
1)UserStoriesarewritten,编写用户故事;
2)Releaseplanning&createstheschedule,发布计划并制定开发日程;
3)Makefrequentsmallreleases,不断发布小版本;
4)Theprojectvelocityismeasured,控制项目周转周期;
5)Theprojectisdividedintoiterations,项目被分解成多次迭代;
6)Iterationplanningstartseachiteration,每次迭代过程开始才进行本次迭代的计划;
7)Movepeoplearound,充分调动开发人员的积极性;
8)Astand-upmeetingstartseachday,每天以一个站立会议开始;
9)Fixupwhenitbreaks,适时调整计划
2.Designing
1)Simplicity,尽量使用简单的方法和技术进行设计
2)Chooseasystemmetaphor,选择一种系统的命名方式
3)UseCRCcardsfordesignsessions,使用类、作用与协作卡进行设计;
4)Createspikesolutionstoreducerisk,创建关键问题解决方案;
5)Nofunctionalityisaddedearly,注重实现当前的功能
6)Refactorwheneverandwhereverpossible,最大化重构作用
3.Coding
1)Thecustomerisalwaysavailable,随时邀请客户参与;
2)Codemustbewrittentoagreedstandards,注意编码风格的一致;
3)Codetheunittestfirst,先编写单元测试用例;
4)Allproductioncodeispairprogrammed,结对编程;
5)Onlyonepairintegratescodeatatime,每次加入一个模块做集成;
6)Integrateoften,经常进行集成;
7)Usecollectivecodeownership,代码集体所有;
8)Leaveoptimizationtilllast,最后再进行优化;
9)Noovertime,不要加班,保持精力
4.Testing
1)Allcodemusthaveunittests,所有模块都进行充分的单元测试;
2)Allcodemustpassallunittestsbeforeitcanbereleased,发布前,所有代码通过单元测试;
3)Whenabugfoundtestarecreated,发现错误,立即编写对应测试用例;
4)Acceptancetestsarerunoftenandthescoreispublished,经常进行验收测试并评审测试结果。
Lecture04SCRUM
Scrum是一种迭代、增量的项目管理开发方法,它将工厂过程控制理论应用到项目开发上,为项目开发过程引入了灵活性、适应性和高产性。
它并未定义任何具体的开发阶段和开发技术,而是注重团队成员在开发过程中充分发挥个人能力,确保其在一个经常变动的环境中灵活地从事开发工作。
1.Scrum过程:
3个阶段:
计划阶段、冲刺阶段、结束阶段
1)Pre-gamePhase,项目开始前(计划阶段):
准备产品backlog(未完成需求)表、项目小组定义、工具和资源准备、风险评估和控制方法、培训需求和管理及验证批准、体系结构(高层)设计;
2)GamePhase,冲刺阶段:
分成几个迭代周期(3-8),逐渐实现和完成产品功能;每个冲刺周期包括需求、分析、设计、演变和交货;
3)Post-gamePhase:
结束阶段:
产品集成、系统测试、文档建立、产品发布
2.Sprint,冲刺阶段
Sprint是Scrum中一个完全根据经验进行开发的过程。
此过程中,许多过程是未经确认和不可控制的,可视为需要额外控制的黑盒,因此包括风险管理的控制被放在冲刺阶段的每一次迭代,以避免在取得最佳适应性的同时造成混乱。
这个过程可根据过程明确程度进行调整,被用于最终产品的开发。
包括以下4个活动:
1)开发:
分析Backlog、设计、开发、实施、测试、文档化;
2)打包(Wrap):
封闭Packets,产生一个满足Backlog的可执行版本;
3)评审(Review):
4)调整(Adjust)
3.Backlog:
系统需求被分成一系列的子需求,即叫Backlog;
ProductBacklog:
isahighleveldescriptionofrequirementsorfeatures,是一个系统需求和特征的高层描述
SprintBacklog:
isabacklogofspecifictasksforparticularsprint,是某个冲刺迭代过程的详细任务列表,包括:
未细化的产品功能要求、Bugs、缺陷、用户提出的改进、具竞争力的功能及技术升级等
4.Scrum价值观
1)Commitment,承诺:
Scrum团队承诺实现规定的迭代目标;产品所有者承诺定义产品待办事宜,并进行优先级排序
2)Focus,专注:
Scrum团队需要排除干扰,专注于迭代任务
3)Openness,公开:
公开产品待办事宜,个人和团队进度、状态、承诺
4)Respect,尊重:
强调团队责任,综合考评团队优缺点,团队实现自我组织和自我管理,小组内解决“个人”问题,赋予团队必要的权力和资源
5)Courage,勇气:
管理者有勇气制订计划和指导开发过程,团队有勇气承担责任
Lecture05OtherAgileMethod
1.动态系统开发方法(DynamicSystemDevelopmentMethod,DSDM)
1)基本观点
任何事情都不可能一次性完成
2-8原则:
用20%的时间完成80%的有用功能,以适合于商业目的,在时间进度和可用资源固定的情况下,力争需求的最大化满足(需求不固定)
具体办法:
A.TimeBox(时间框架技术):
按照优先级,在固定的时间内完成工作,产出产品;B.MOSCOW(Mustdoshoulddocoulddowon’tdo:
裁定优先级,根据项目总体时间框进行分解。
2)基本原则
A.积极主动的用户参与
B.赋予DSDM项目组充分的决策权
C.强调经常性的产品提交(注重结果而非过程)
D.工作确认的首要衡量目标是适合商业目标
E.迭代和增量式地开发
F.追溯开发过程所有的变化(记录变化)
G.以软件需求提出的开发计划作为宏观进度控制的基线
H.测试活动贯穿于开发周期的各个阶段
I.强调所有项目人员的合作
2.水晶系列方法Crystal
1)核心理念
软件开发可视为创造和交流相协调的过程:
人是第一位因素、软件开发的首要目标是交付可用的软件,第二才是保持开发工作的可延续性;
以人和沟通为中心:
工具、中间产品和过程都是服务于人的;
高度的宽容:
包容人与人之间的差异(文化、生活方式、习惯)
2)基本原则
A.减少中间制品的工作量(文档、进度计划):
经常产出可运行的代码、充分利用人员交流
B.项目组的惯例随项目具体情况调整;
C.根据人数决定采用的方法;
D.对可靠性要求越高,采用越严格的过程纪律;
3.开源软件开发
关于开源软件开发(OSS)的一些假设:
A.OSSdevelopmentswillhaveacoreofdeveloperswhocontrolthecodebase.Thiscorewillbenolargerthan10-15people,andwillcreateapproximately80%ormoreofthenewfunctionality.开源软件拥有一个10-15人的核心开发团队,他们控制核心代码并创造大约80%甚至更多的新功能。
B.Forprojectsthataresolargethat10-15developerscannotwrite80%ofthecodeinareasonabletimeframe,astrictcodeownershippolicywillhavetobeadoptedtoseparatetheworkofadditionalgroups,creating,ineffect,severalrelatedOSSprojects.对于10-15人无法在合理时间内完成80%代码编写工作的大项目,必须引进一个代码所有权的机制,以便将附加小组,创造,负责,几个相关开源软件项目进行分工。
C.InsuccessfulOSSdevelopments,agrouplargerbyanorderofmagnitudethanthecorewillrepairdefects,andayetlargergroup(byanotherorderofmagnitude)willreportproblems.在成功的开源软件项目中,修复缺陷的人员比核心开发人员多一个数量级,而报告问题的人员则比修复缺陷的人员又多一个数量级。
D.OSSdevelopmentsthathaveastrongcoreofdevelopersbutneverachievelargenumbersofcontributorsbeyondthatcorewillbeabletocreatenewfunctionalitybutwillfailbecauseofalackofresourcesdevotedtofindingandrepairingdefectsinthereleasedcode.一个开源软件开发项目如果有一组很强的核心成员,但是没有核心成员之外的大量参与者,这样出来的产品虽然会有很多新的功能,但是这个项目最终还是会失败,因为它缺乏足够的人员对发布的产品进行找错改错。
E.Defectdensityinopensourcereleaseswillgenerallybelowerthancommercialcodethathasonlybeenfeature-tested.开源软件发布版本的缺陷密度常常低于只进行了特征测试的商业代码。
F.InsuccessfulOSSdevelopments,thedeveloperswillalsobeusersofthesoftware.在成功的开源软件项目中,开发者常常也是使用者。
G.OSSdevelopmentsexhibitveryrapidresponsestocustomerproblems.开源软件项目对用户的问题快速响应。
Lecture06~09RUP
1.WhatistheRationalUnifiedProcess?
RUP是软件工程过程化,提供了在开发机构中分派任务和责任的纪律化方法及文档,其目标是在可预见的日程和预算下确保满足最终用户需求的高质量产品。
2.核心思想
A.迭代式开发
B.强调核心工作流程
C.基于角色的开发组织
D.用例驱动
E.以构架为中心
3.高效开发的6个最佳实践(Effectivedeploymentof6bestpractice):
1)Developsoftwareiteratively,迭代开发
2)Managerequirements,控制需求
3)UseComponent-basedarchitectures,基于组件的架构
4)Visuallymodelsoftware,模型软件开发
5)Verifysoftwarequality,验证软件质量
6)Controlchangestosoftware,控制变更
4.2个维度(Twodimensions):
1)Thehorizontalaxis(横轴):
代表时间并表示已制订过程的动态方面,通常被描述成循环、阶段、迭代和里程碑。
2)Theverticalaxis(纵轴):
代表过程的固定方面,被描述成活动、人工过程、开发者和工作流。
5.4个阶段(4phases):
1)Inceptionphase,先启阶段:
确立商业用例并划定项目范围
2)Elaborationphase,精化阶段:
分析问题领域,建立可靠的框架,制订项目开发计划并排除高风险元素
3)Constructionphase,构建阶段:
开发、测试、集成所有组件形成可工作程序
4)Transitionphase,产品化阶段:
将产品移交用户并完善
6.核心工作流和阶段(Coreworkflowandphase):
A.Engineeringworkflow,工程工作流
1)Businessmodelingworkflow,商业模型工作流
2)Requirementsworkflow,需求分析
3)Analysis&Design,分析与设计
4)Implementation,实现
5)Test,测试
6)Deployment,部署
B.Supportingworkflow,支持工作流
7)Projectmanagement项目管理
8)Configurationandchangemanagement,配置和变更管理
9)Environment,环境构建
对该图的理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 方法 过程 复习资料