关于敏捷开发,我的了解不是很多,为学习并深入了解敏捷开发,我查阅了书籍和网上的资料。
现总结如下:
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
什么是敏捷开发?
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发;
为什么说是以人为核心?
我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据;而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心。
什么是迭代?
迭代是指把一个复杂且开发周期很长的开发任务,分解为很多小周期可完成的任务,这样的一个周期就是一次迭代的过程;同时每一次迭代都可以生产或开发出一个可以交付的软件产品。
关于Scrum和XP
前面说了敏捷它是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而Scrum和XP就是敏捷开发的具体方式了,你可以采用Scrum方式也可以采用XP方式;Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的,这里我主要讲Scrum。
什么是Scrum?
Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;把一个开发流程的名字取名为Scrum,我想你一定能想象出你的开发团队在开发一个项目时,大家像打橄榄球一样迅速、富有战斗激情、人人你争我抢地完成它,你一定会感到非常兴奋的。
而Scrum就是这样的一个开发流程,运用该流程,你就能看到你团队高效的工作。
【Scrum开发流程中的三大角色】
产品负责人(Product Owner)
主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。
流程管理员(Scrum Master)
主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右,每个成员可能负责不同的技术方面,但要求每成员必须要有很强的自我管理能力,同时具有一定的表达能力;成员可以采用任何工作方式,只要能达到Sprint的目标。
敏捷开发的原则
1: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
翻译:尽早并持续地交付有价值的软件以满足顾客需求。
2: Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage
翻译:敏捷流程欢迎需求的变化, 并利用这种变化来提高用户的竞争优势。
3: Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale
翻译:经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。
4: Business people and developers must work together daily throughout the project.
翻译:业务人员和开发人员在项目开发过程中应该每天共同工作。
5: Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
翻译:以有进取心的人为项目核心,充分支持信任他们
6: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
翻译:无论团队内外,面对面的交流始终是最有效的沟通方式
7: Working software is the primary measure of progress.
翻译: 可用的软件是衡量项目进展的主要指标
8: Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
翻译: 敏捷流程应能保持可持续的发展。 领导, 团队和用户应该能按照目前步调持续合作下去。
9: Continuous attention to technical excellence and good design enhances agility.
翻译: 只有不断关注技术和设计才能越来越敏捷.
10: Simplicity--the art of maximizing the amount of work not done--is essential.
翻译: 保持简明 - 尽可能简化工作量的技艺 - 极为重要。英文说 maximizing the amount of work not done. 我的理解是 - 任何还没有明确的工作都会花不可知的时间,因此要 maximize, 不要把那些还没有做的工作和正在做的工作混起来。
11: The best architectures, requirements, and designs emerge from self-organizing teams.
翻译: 只有能自我管理的团队才能创造优秀的架构, 需求和设计.
12: At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
翻译: 时时总结如何提高团队效率, 并付诸行动。
敏捷开发流程
第一步:
找出完成产品需要做的事情---Product Backlog
第二步:
决定当前的冲刺(Sprint)需要解决的事情--Sprint Backlog
第三步:
冲刺(Sprint)
冲刺期间,每天要开一个每日例会(Scrum Meeting),团队成员大多站着开会,所以又称 每日立会 。大家依次报告:
我昨天做了啥
我今天要做啥
我碰到了哪些问题