资源描述
敏捷软件开发方法简介敏捷软件开发方法简介以极限编程为例以极限编程为例参考资料参考资料n统一软件开发过程统一软件开发过程,Ivar Jacobson,Grady Booch,James Rumbaughn敏捷软件开发:原则、模式与实践敏捷软件开发:原则、模式与实践,Robert C.Martinn微软开发过程与案例微软开发过程与案例,微软中国研究院项目经理和,微软中国研究院项目经理和开发人员开发人员n高级软件开发过程高级软件开发过程,金敏、周翔,金敏、周翔n软件开发的过程与管理软件开发的过程与管理,张湘辉,张湘辉(微软中国研究开发中心总经理微软中国研究开发中心总经理)n面向对象的系统分析面向对象的系统分析,邵维忠、杨芙清,邵维忠、杨芙清n面向对象的系统设计面向对象的系统设计,邵维忠、杨芙清,邵维忠、杨芙清主要内容主要内容n第一节敏捷方法的含义第一节敏捷方法的含义n第二节软件开发过程的比较第二节软件开发过程的比较n第三节极限编程(第三节极限编程(eXtreme Programming,XP)简介)简介准则准则法则法则活动活动实践实践讨论讨论应用实例应用实例常见问题常见问题第一节敏捷方法的含义第一节敏捷方法的含义敏捷:轻巧、机敏、迅捷、灵活、活力、高效敏捷:轻巧、机敏、迅捷、灵活、活力、高效敏捷开发是一种面临迅速变化的需求敏捷开发是一种面临迅速变化的需求快速开发软件快速开发软件的的能力能力敏捷过程很容易适应变化并迅速做出自我调整,在保证质敏捷过程很容易适应变化并迅速做出自我调整,在保证质量的前提下,做到文档、度量适度量的前提下,做到文档、度量适度适用于各类软件企业适用于各类软件企业敏捷方法产生的背景敏捷方法产生的背景现代软件的特点:现代软件的特点:复杂性:软件越来越复杂复杂性:软件越来越复杂可变性:需求越来越多变可变性:需求越来越多变一致性:过程越来越规范一致性:过程越来越规范软件开发过程敏捷化趋势软件开发过程敏捷化趋势据国际著名咨询机构据国际著名咨询机构Cutter Consortium对全球对全球200位位IS/IT经理所做的调查经理所做的调查3个占优的重载方法:个占优的重载方法:51%Rational Unified Process27%CMM26%ISO 9000大约大约50%的被调查者预计到的被调查者预计到2003年其年其50%以上的项目会使以上的项目会使用敏捷方法;用敏捷方法;14%的被调查者认为其所有的项目会使用敏的被调查者认为其所有的项目会使用敏捷方法捷方法From THE DECISION IS IN:AGILE VERSUS HEAVY METHODOLOGIES,VOL.2,NO.19,by RobertCharette,Senior Consultant,Cutter Consortium敏捷价值观敏捷价值观“注重注重个人及互动个人及互动胜于胜于过程和工具过程和工具”“注重注重可用的软件可用的软件胜于胜于详尽的文档详尽的文档”“注重注重客户协作客户协作胜于胜于合同谈判合同谈判”“注重注重响应变化响应变化胜于胜于恪守计划恪守计划”www.agilemanifesto.org敏捷宣言敏捷宣言1212条原则条原则1.1.最优先的目标是通过最优先的目标是通过尽早地尽早地、持续地持续地交付有价值的软件交付有价值的软件来满足客户来满足客户2.2.欢迎需求变化欢迎需求变化,甚至在开发后期。敏捷过程控制、利用,甚至在开发后期。敏捷过程控制、利用变化帮助客户取得竞争优势变化帮助客户取得竞争优势3.3.频繁交付可用的软件频繁交付可用的软件,间隔从两周到两个月,偏爱更短,间隔从两周到两个月,偏爱更短的时间尺度的时间尺度4.4.在整个项目中业务人员和开发人员必须在整个项目中业务人员和开发人员必须每天在一起工作每天在一起工作5.5.以以积极主动的员工积极主动的员工为核心建立项目,给予他们所需的环为核心建立项目,给予他们所需的环境和支持,信任他们能够完成工作境和支持,信任他们能够完成工作6.6.在开发团队内外传递信息最有效率和效果的方法是在开发团队内外传递信息最有效率和效果的方法是面对面对面的交流面的交流7.7.可用的软件可用的软件是进展的主要度量指标。是进展的主要度量指标。8.8.敏捷过程提倡敏捷过程提倡可持续发展可持续发展。发起人、开发者和用户应始。发起人、开发者和用户应始终保持稳定的步调终保持稳定的步调9.9.简化简化使必要的工作最小化的艺术使必要的工作最小化的艺术是关键是关键10.10.持续关注持续关注技术上的精益求精技术上的精益求精和和良好的设计良好的设计以增强敏捷性以增强敏捷性11.11.最好的架构、需求和设计产生于最好的架构、需求和设计产生于自我组织的团队自我组织的团队12.12.团队定期地对运作如何更加有效进行团队定期地对运作如何更加有效进行反思反思,并相应地调,并相应地调整、校正自己的行为整、校正自己的行为第二节软件开发过程的比较第二节软件开发过程的比较瑞理统一开发过程:瑞理统一开发过程:Rational Unified Process敏捷建模:敏捷建模:Agile Modeling极限编程:极限编程:eXtreme Programming 自适应软件开发:自适应软件开发:Adaptive Software Development水晶方法体系水晶方法体系:Crystaletc.(微软过程)(微软过程)iter.#1iter.#2iter.#niter.#n+1iter.#n+2iter.#miter.#m+1需求需求设计设计实现实现测试测试分析分析核心工作流程核心工作流程先启先启精化精化构造构造转移转移精化过程精化过程中的反复中的反复过程过程初步的初步的反复过反复过程程反复序列反复序列RUP(Rational Unified Process)RUP是是Rational公司的改进过程的规范,它被设计成一种公司的改进过程的规范,它被设计成一种由由用例驱动的、以体系结构用例驱动的、以体系结构为中心的软件开发过程,它以为中心的软件开发过程,它以迭代的方式前进,通过执行工作流程递增地产生结果迭代的方式前进,通过执行工作流程递增地产生结果它的它的主要四个阶段主要四个阶段:先启、精化、构建和转移,:先启、精化、构建和转移,五个核心五个核心工作流程工作流程:需求、分析、设计、实现和测试:需求、分析、设计、实现和测试由于由于RUP是一种框架,你可以以不同的方式来使用它,如是一种框架,你可以以不同的方式来使用它,如象非常传统的象非常传统的“瀑布瀑布”式开发方式,或敏捷式,如式开发方式,或敏捷式,如dX。你。你可以把用得轻捷灵便,也可把它弄成繁文缛节。这取决于可以把用得轻捷灵便,也可把它弄成繁文缛节。这取决于你如何在你的环境中对它裁剪运用你如何在你的环境中对它裁剪运用先启先启精化精化构建构建转移转移需求需求用户素材用户素材小型发布小型发布接纳测试接纳测试测量测量分析分析CRC卡片卡片迭代计划迭代计划任务计划、迭代编程任务计划、迭代编程接受背后接受背后设计设计系统隐喻系统隐喻单元测试单元测试重构重构持续集成持续集成实现实现编码标准编码标准简单设计简单设计集体代码所有权集体代码所有权运行所有测试运行所有测试CRCCRC卡片:卡片:Class-Responsibility-CollaboratorClass-Responsibility-Collaborator类职责协作类职责协作XP到到RUP的映射的映射Agile ModelingAMAM是一种最近才出现的软件思想是一种最近才出现的软件思想AMAM是一种轻方法论是一种轻方法论XPXP实践既给了实践既给了AMAM灵感,也是灵感,也是AMAM的一种具体实现的一种具体实现AM核心原则核心原则主张简单主张简单拥抱变化拥抱变化你的第二个目标是可持续性。简单的说,你在开发的时你的第二个目标是可持续性。简单的说,你在开发的时候,你要能想象到未来候,你要能想象到未来 递增的变化递增的变化令投资人的投资最大化令投资人的投资最大化有目的的建模有目的的建模多种模型多种模型高质量的工作高质量的工作快速反馈快速反馈软件是项目的主要目标软件是项目的主要目标轻装前进轻装前进AM补充原则补充原则内容比表示更重要内容比表示更重要三人行必有我师三人行必有我师了解你的模型了解你的模型了解你的工具了解你的工具局部调整局部调整开放诚实的沟通开放诚实的沟通自适应软件开发自适应软件开发ASD的核心是三个非线性的、重迭的开发阶段:的核心是三个非线性的、重迭的开发阶段:猜测猜测合作合作学习学习水晶方法体系水晶方法体系水晶方法体系与水晶方法体系与XP一样,都有以人为中心的理念,但在实一样,都有以人为中心的理念,但在实践上有所不同践上有所不同水晶方法体系考虑到人们一般很难严格遵循一个纪律约束水晶方法体系考虑到人们一般很难严格遵循一个纪律约束很强的过程,因此,与很强的过程,因此,与XP的高度纪律性不同,水晶方法的高度纪律性不同,水晶方法体系探索了用最少纪律约束而仍能成功的方法,从而在产体系探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡出效率与易于运作上达到一种平衡也就是说,虽然水晶系列不如也就是说,虽然水晶系列不如XP那样的产出效率,但会有那样的产出效率,但会有更多的人能够接受并遵循它更多的人能够接受并遵循它ISO9000PDCA循环,即由计划(循环,即由计划(PLAN)、实施()、实施(DO)、检查)、检查(CHECK)、处理()、处理(ACTION)这四个密切相关的阶)这四个密切相关的阶段所构成的工作方式段所构成的工作方式持续改进持续改进面向对象软件工程概念模型面向对象软件工程概念模型第三节极限编程(第三节极限编程(eXtreme Programming)轻量级敏捷软件开发方法轻量级敏捷软件开发方法极限编程(极限编程(XP)是一种全新而快捷的软件开发方法。)是一种全新而快捷的软件开发方法。XP团团队使用现场客户、特殊计划方法和持续测试来提供快速的队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流。这可以帮助团队最大化地发挥他们的反馈和全面的交流。这可以帮助团队最大化地发挥他们的价值价值XP诞生了大概有诞生了大概有8年年XP是以开发符合客户需要的软件为目标而产生的一种方是以开发符合客户需要的软件为目标而产生的一种方法论法论XP是一种以实践为基础的软件工程过程和思想是一种以实践为基础的软件工程过程和思想XP认为代码质量的重要程度超出人们一般所认为的程度认为代码质量的重要程度超出人们一般所认为的程度XP特别适合于小型的有责任心的、自觉自励的团队开发特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件需求不确定或者迅速变化的软件3.1XP准则准则XP软件开发是什么样的软件开发是什么样的沟通沟通简单简单反馈反馈勇气勇气有益的潜在补充准则有益的潜在补充准则:尊重尊重谦逊谦逊沟通沟通XP认为项目成员之间的沟通是项目成功的关键,并把沟认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素通看作项目中间协调与合作的主要推动因素简单简单XP假定未来不能可靠地预测,在现在考虑它从经济上是不假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急量解决燃眉之急反馈反馈XP认为系统本身及其代码是报告系统开发进度和状态的认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段开发进度和决定系统下一步开发方向的手段勇气勇气代表了代表了XP认为人是软件开发中最重要的一个方面的观点。认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。达到更重大的目标。表明了表明了XP对对“人让项目取得成功人让项目取得成功”的基本信任态度的基本信任态度3.2XP的法则的法则一项实践在一项实践在XP环境中成功使用的依据环境中成功使用的依据快速反馈快速反馈假设简单性假设简单性递增更改递增更改提倡更改提倡更改优质工作优质工作快速反馈快速反馈XP提倡尽可能早地、迅速地每天反馈,让编程人员始终提倡尽可能早地、迅速地每天反馈,让编程人员始终把注意力放在最重要的软件功能上,促使系统快速演进把注意力放在最重要的软件功能上,促使系统快速演进XP迭代过程迭代过程假设简单性假设简单性XP试图把注意力集中在能工作的尽可能最简单的实现上;试图把注意力集中在能工作的尽可能最简单的实现上;另一方面,可以根据给定的项目资源条件,最优地分配项另一方面,可以根据给定的项目资源条件,最优地分配项目资源目资源递增更改递增更改XP认为首次更改就尝试重大更改绝对不会成功,提倡以认为首次更改就尝试重大更改绝对不会成功,提倡以重构概念为基础做小改动,用期望的功能逐步增强系统重构概念为基础做小改动,用期望的功能逐步增强系统提倡更改提倡更改最佳策略是在实际解决最重要的问题的前提下保留最多最佳策略是在实际解决最重要的问题的前提下保留最多选项的那一个,在交付最需要的东西上保留选择余地选项的那一个,在交付最需要的东西上保留选择余地优质工作优质工作3.3XP活动活动XP软件开发的基石软件开发的基石编码编码测试测试倾听倾听设计设计编码编码作为一种轻量级方法论,作为一种轻量级方法论,XP明确放弃了系统建档和分析明确放弃了系统建档和分析以外的任何外在活动以外的任何外在活动分析保留为一种相当简单,但是在和客户的日常沟通中分析保留为一种相当简单,但是在和客户的日常沟通中发生的持续活动发生的持续活动文档则明确不予鼓励,所以编码成为文档则明确不予鼓励,所以编码成为XP最主要的活动最主要的活动测试测试为了确保编写好的代码能实践工作,为了确保编写好的代码能实践工作,XP提倡编写大量测提倡编写大量测试来检查代码是否正确试来检查代码是否正确倾听倾听XP编程人员倾听客户和其他编程人员的需求和意图编程人员倾听客户和其他编程人员的需求和意图设计设计从日常的编码中返回来进行一些一般性设计,小的设计成为从日常的编码中返回来进行一些一般性设计,小的设计成为XP编程人员日常事务的一部分编程人员日常事务的一部分3.4XP的实践的实践项目成员用户成功执行项目成员用户成功执行XP活动的技术活动的技术1.现场客户(现场客户(On-site Customer)2.计划游戏(计划游戏(Planning Game)3.系统隐喻(系统隐喻(System Metaphor)4.简单设计(简单设计(Simple Design)5.代码集体所有(代码集体所有(Collective Code Ownership)6.结对编程(结对编程(Pair Programming)7.测试驱动(测试驱动(Test-driven)8.小型发布(小型发布(Small Releases)9.重构(重构(Refactoring)10.持续集成(持续集成(Continuous integration)11.每周每周40小时工作制(小时工作制(40-hour Weeks)12.代码规范(代码规范(Coding Standards)过程团队实践编程现场客户、测试、计划游戏、小型发布简单设计、测试、重构、编码标准代码集体所有、持续集成、隐喻、编码标准、每周40小时工作制、结对编程、小型发布XP层次结构层次结构1 1 现场客户现场客户始终在开发团队中有一位客户始终在开发团队中有一位客户现场客户的工作:现场客户的工作:回答问题回答问题编写验收测试编写验收测试运行验收测试运行验收测试指导迭代指导迭代接受版本接受版本2 2 计划游戏计划游戏以业务优先级和技术估计为基础,决定下一版本发布的范围以业务优先级和技术估计为基础,决定下一版本发布的范围3 系统隐喻系统隐喻在在XP中,隐喻是一种概念框架并提供名称的描述系统,中,隐喻是一种概念框架并提供名称的描述系统,类似于其他方法中的体系结构(或体系结构基准)类似于其他方法中的体系结构(或体系结构基准)共识共识共享的术语空间共享的术语空间例子:例子:Windows风格的界面、网上购物站点的购物车风格的界面、网上购物站点的购物车4 4 简单设计简单设计系统应设计得尽可能简单系统应设计得尽可能简单5 5 代码集体所有代码集体所有整个团队拥有所有代码整个团队拥有所有代码任何人都可以更改他们需要更改的部分任何人都可以更改他们需要更改的部分没有唯一对代码有所有权的人没有唯一对代码有所有权的人题外话一:编程的乐趣题外话一:编程的乐趣(F P.Brooks)创造的快乐创造的快乐开发对他人有用的东西开发对他人有用的东西整体过程的魅力整体过程的魅力持续学习的快乐持续学习的快乐来自于易于驾驭的介质上工作来自于易于驾驭的介质上工作编程的快乐在于它不仅满足了我们内心深处进行创造编程的快乐在于它不仅满足了我们内心深处进行创造的渴望,而且还唤醒了每个人内心的情感的渴望,而且还唤醒了每个人内心的情感题外话二:编程的苦恼题外话二:编程的苦恼(F P.Brooks)来自追求完美来自追求完美来自由他人设定目标、供给资源、提供信息来自由他人设定目标、供给资源、提供信息陷入琐碎的重复性劳动陷入琐碎的重复性劳动无用功无用功这,就是编程,一个许多人痛苦挣扎的焦油坑以及一这,就是编程,一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动种乐趣和苦恼共存的创造性活动6 6 结对编程结对编程结对编程是让两个人共同设计和开发代码的实践。结结对编程是让两个人共同设计和开发代码的实践。结对者是全职合作者,轮流执行键入和监视;这提供了对者是全职合作者,轮流执行键入和监视;这提供了持续的设计和代码评审持续的设计和代码评审不是两个人做一个人的事情不是两个人做一个人的事情积极影响积极影响经济性经济性满意度满意度提高设计质量:分享不同的先验知识、理解和角色提高设计质量:分享不同的先验知识、理解和角色持续复查持续复查问题解决更快:集思广益和配对接力问题解决更快:集思广益和配对接力学习:耳濡目染学习:耳濡目染团队建设和沟通团队建设和沟通有利于人员和项目管理有利于人员和项目管理卡车问题卡车问题一个项目组集体外出,不幸被卡车撞上。有多少人受伤一个项目组集体外出,不幸被卡车撞上。有多少人受伤使项目不得不停止?使项目不得不停止?最坏的情况是最坏的情况是一一一一个!个!结对编程工作区结对编程工作区一一般般工工作作区区学到的经验学到的经验程序员和设计人员程序员和设计人员协调人结对编程更有效协调人结对编程更有效键盘输入效率键盘输入效率自愿结对编程自愿结对编程我们行业的主要问题实质上更侧重于社会学而不是科学技术。我们行业的主要问题实质上更侧重于社会学而不是科学技术。人件人件结对和简单设计结对和简单设计常见问题和解答常见问题和解答测试测试编码编码重构重构集成或者丢弃集成或者丢弃7 测试驱动测试驱动8 8 小型发布小型发布XP推荐小而频繁的有意义发布推荐小而频繁的有意义发布9 重构重构重构是重构是XP的一个重要组成部分。所谓重构是指在不改变代的一个重要组成部分。所谓重构是指在不改变代码外在行为的前提下对代码做出的修改,以改进代码的内码外在行为的前提下对代码做出的修改,以改进代码的内部结构。重构是一种有纪律的、经过训练的、有条不紊的部结构。重构是一种有纪律的、经过训练的、有条不紊的代码整理方法,可以将整理过程中不小心引入错误的可能代码整理方法,可以将整理过程中不小心引入错误的可能性降到最低。性降到最低。从本质上说,重构就是在代码写好之后改进从本质上说,重构就是在代码写好之后改进它的设计它的设计重构的节奏:重新推理、小的更改、重新推理、小的更重构的节奏:重新推理、小的更改、重新推理、小的更改、重新推理改、重新推理10 10 持续集成持续集成持续集成的思想是任何时候只有一项任务完成,就集成持续集成的思想是任何时候只有一项任务完成,就集成新代码,构造系统并测试。持续集成是每日构建新代码,构造系统并测试。持续集成是每日构建每晚每晚构建的一种极限形式,是构建的一种极限形式,是XP的重要基础的重要基础每日构建每日构建每晚构建是将一个软件项目的所有最新代码每晚构建是将一个软件项目的所有最新代码取出,从头开始编译、链接,用安装软件包将链接好的取出,从头开始编译、链接,用安装软件包将链接好的程序安装好,运行安装后的软件,使用测试工具对主要程序安装好,运行安装后的软件,使用测试工具对主要功能进行测试,发现错误并报告错误的完整过程功能进行测试,发现错误并报告错误的完整过程每日构建是项目的心跳。如果一个项目的心跳停止每日构建是项目的心跳。如果一个项目的心跳停止了,这个项目就死亡了了,这个项目就死亡了Treat the daily build as the heartbeat of the project.If there is no heartbeat,the project is dead让开发人员在第一时间了解到软件的错误,并迅速排除让开发人员在第一时间了解到软件的错误,并迅速排除错误,是每日构建错误,是每日构建每晚构建最重要的目标之一每晚构建最重要的目标之一每日构建每日构建每晚构建必须出日志和报告,并发布构建结果每晚构建必须出日志和报告,并发布构建结果的有关信息的有关信息,最好能够使用自动化工具发出电子邮件通最好能够使用自动化工具发出电子邮件通知知作用作用降低集成风险降低集成风险加强错误诊断加强错误诊断降低不确定性降低不确定性加快开发速度加快开发速度增强团队合作增强团队合作对项目参与者是重要激励对项目参与者是重要激励11 每周四十小时工作制每周四十小时工作制在这里在这里40是一个概数,不是确数是一个概数,不是确数如果能够努力地工作如果能够努力地工作8小时,超过这个时间后就不适于小时,超过这个时间后就不适于有效地工作了有效地工作了8小时燃烧小时燃烧再学习再学习你无法改变时间,但是可以改变你的任务你无法改变时间,但是可以改变你的任务12 代码规范代码规范不变的只是愿望,变化才是永恒。不变的只是愿望,变化才是永恒。如果你聆听代码,好的设计就会出现。如果你聆听代码,好的设计就会出现。3.5XP讨论:讨论:XP和软件设计和软件设计XP提倡循序渐进的软件设计方法,以避免在前置设计中提倡循序渐进的软件设计方法,以避免在前置设计中花费巨大的精力花费巨大的精力但这不是回到编码加修正(但这不是回到编码加修正(Code and Fix)的开发方式)的开发方式初始设计不可能面面俱到初始设计不可能面面俱到受人员变动影响受人员变动影响设计人员和编码人员之间存在协同问题设计人员和编码人员之间存在协同问题设计人员和编码人员之间存在技能差异设计人员和编码人员之间存在技能差异不能适应变化的需求不能适应变化的需求计划设计计划设计缺乏整体性缺乏整体性设计可能不可控设计可能不可控潜在的缺陷可能会引起其它缺陷潜在的缺陷可能会引起其它缺陷修正缺陷的代价可能会呈指数增长修正缺陷的代价可能会呈指数增长对设计和编码人员要求更高对设计和编码人员要求更高柔性设计柔性设计计划设计计划设计计划设计计划设计重构重构重构重构XP中对柔性设计的支持中对柔性设计的支持简单设计简单设计测试先行测试先行持续集成持续集成重构重构做做可能有效的最简单的事情可能有效的最简单的事情Do the Simplest Thing That Could Possibly Work你将不会需要它你将不会需要它You Arent Going to need it简单的价值简单的价值效益效益轻装上阵轻装上阵做且仅做一次做且仅做一次Once and Only Once不要自我重复不要自我重复Dont Repeat YourselfXP衡量简单的标准衡量简单的标准通过所有的测试通过所有的测试代码体现所有设计意图:代码体现所有设计意图:Clever Code避免重复避免重复类或方法的数量最少类或方法的数量最少模式模式反模式和反模式和XP模式模式反模式反模式对初学者对初学者重构的目标之一重构的目标之一模式模式选择使用模式的时机选择使用模式的时机模式和简单性模式和简单性UML和和XP最好的最好的UML图也不是产品!图也不是产品!3.6XP应用之一:应用之一:XP在高校科研中的应用在高校科研中的应用高校研究室高校研究室组人员的一般构成:组人员的一般构成:一名以上的教授一名以上的教授副教授副教授博士生博士生硕士生硕士生附属工作人员附属工作人员临时教学或研究的学生临时教学或研究的学生临时合作人员临时合作人员高校科研用例图(理工类)高校科研用例图(理工类)高校科研项目中的一些问题高校科研项目中的一些问题高校软件(原型、项目)往往显示很差的软件工程质量:高校软件(原型、项目)往往显示很差的软件工程质量:需求不明确需求不明确缺乏客户参与缺乏客户参与人员的持续波动或突变人员的持续波动或突变没有一个适用于高校的质量体系没有一个适用于高校的质量体系总是处于人员培训阶段总是处于人员培训阶段研发过程不连续,积累困难研发过程不连续,积累困难往往没有激励机制往往没有激励机制高校中的高校中的XP首选结对编程首选结对编程学习:指定核心;知识流动的不确定性;学习:指定核心;知识流动的不确定性;吸引力随着团队规模的减小而下降吸引力随着团队规模的减小而下降高年级高年级低年级,不太有效低年级,不太有效高年级高年级高年级高年级教师教师学生,不太有效学生,不太有效持续集成持续集成代码集体所有代码集体所有重构重构设计和文档重要性上升设计和文档重要性上升XP应用之二:应用之二:XP在大型项目中的应用在大型项目中的应用层次结构的层次结构的XP用清晰而且微小的接口分割系统用清晰而且微小的接口分割系统每个子项目每个子项目子课题的目标是整个项目的一个子目标子课题的目标是整个项目的一个子目标递增改进递增改进有一个集中管理机制有一个集中管理机制充分利用辅助手段进行交流充分利用辅助手段进行交流3.7常见问题常见问题1.敏捷软件方法适合中国吗?敏捷软件方法适合中国吗?虽然敏捷软件开发方法体系的形成主要基于国外的软件虽然敏捷软件开发方法体系的形成主要基于国外的软件开发经验,体系的创建人和归纳人也是外国人,但是绝开发经验,体系的创建人和归纳人也是外国人,但是绝大多数内容国内都可以借鉴,可能某些内容不能照搬,大多数内容国内都可以借鉴,可能某些内容不能照搬,在报告中没有特别区分这些内容在报告中没有特别区分这些内容同时敏捷软件开发方法本身还在不断发展和完善,国内同时敏捷软件开发方法本身还在不断发展和完善,国内也可以结合国内的实际情况对其发展做出贡献也可以结合国内的实际情况对其发展做出贡献2.ISO9000体系的文档量比较重,在实际中如何操作?体系的文档量比较重,在实际中如何操作?ISO9000文档数量比较多,国标中主要文档有文档数量比较多,国标中主要文档有14个,个,但是这些文档工作也是穿插在软件开发过程的各个周期,但是这些文档工作也是穿插在软件开发过程的各个周期,比如代码开发前后都是文档工作量较大的阶段比如代码开发前后都是文档工作量较大的阶段3.XP和传统软件开发过程的差异?和传统软件开发过程的差异?XP来自于传统软件开发过程,比如来自于传统软件开发过程,比如XP的的12个实践在传统个实践在传统软件开发过程中都有,但是软件开发过程中都有,但是XP把它们有机地组合了起把它们有机地组合了起来,取长补短,最大限度地发挥了它们的作用来,取长补短,最大限度地发挥了它们的作用另一方面,另一方面,XP和其他敏捷方法和传统方法有很多不同,和其他敏捷方法和传统方法有很多不同,比如对人的作用,传统方法只是把人作为一个螺丝钉,比如对人的作用,传统方法只是把人作为一个螺丝钉,没有很好地调动开发者的主观能动性没有很好地调动开发者的主观能动性同时敏捷方法和开源软件有很深的关系,所以在许多地同时敏捷方法和开源软件有很深的关系,所以在许多地方带有自下而上的色彩,重构就是其中的典型代表方带有自下而上的色彩,重构就是其中的典型代表4.XP有和有和ISO等其他传统方法一样的具体操作规范吗?等其他传统方法一样的具体操作规范吗?目前敏捷方法还没有具体的操作性强的规范,更多的目前敏捷方法还没有具体的操作性强的规范,更多的是一种指导架构和思想,就像是一种指导架构和思想,就像AM5.采用传统开发流程的软件组织如何引入采用传统开发流程的软件组织如何引入XP?这方面这方面XP的领导者如的领导者如Kent Beck都有很多建议,在都有很多建议,在XP网站也有很多经验介绍网站也有很多经验介绍
展开阅读全文