`

敏捷开发实践(一)--谈谈我对敏捷开发的理解

 
阅读更多

随着敏捷开发越来越流行,人人都在谈敏捷,人人也都在学习scrum等敏捷开发方法。。。当然,自己也是敏捷开发的实施者和受益者。

背景

我们公司引入敏捷开发的时间并不长,在实施敏捷的过程还存在一些问题,自己在实施敏捷的过程也存在很多的疑惑(毕竟原来没有学过,和真实的经历,体会),所以最近一直在学习敏捷,看敏捷的视频和阅读相关资料,同时结合自己实施敏捷的经验,通过分享博文进行一下简单的总结,目的有四:
1. 详细的介绍和学习一下敏捷开发
2. 和CSDN的大牛们一起分享交流,学习,提高一下
3. 总结实施敏捷过程中的问题,不断反思,不断提高
4. 最后,希望对不了敏捷的朋友有一定的帮助

什么是敏捷开发

敏捷开发(Agile Development)不是指某一种具体的方法论、过程或框架,而是一组价值观和原则。

怎么理解呢?

  • 首先,敏捷并不是一门具体的技术,而是一种理念或者说是一种思想。它可以指导我们更加高效的开发。

  • 其次,敏捷开发都具有以下共同的特征:

    1. 迭代式开发
    2. 增量交付
    3. 开发团队和用户反馈推动产品开发
    4. 持续集成
    5. 开发团队自我管理
  • 最后,相比于“传统”的瀑布开发模式,敏捷开发是一种“现代”的开发模式。

具体方式

上面说了敏捷是一种指导思想或开发方式,但是它没有明确告诉我们到底采用什么样的流程进行开发,而具体的开发方式有哪些呢?

Scrum,极限编程(XP)精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动开发(Feature Driver Development),水晶开发(Crystal Clear)等等。

除了Scrum和XP,对于上面的其他开发方式,我也只是简单了解,大家可以多查查相关的资料。

我们可以简单的对比一下Scrum和XP:
1. 在开发的过程中,你可以采用Scrum方式也可以采用XP方式;
2. Scrum和XP的区别是,Scrum偏重于过程,XP则偏重于实践,但是实际中,两者是结合一起应用的。

敏捷开发宣言

《敏捷宣言》

我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观:

个体与交互 重于 过程和工具
可用的软件 重于 完备的文档
客户协作 重于 合同谈判
响应变化 重于 遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者

敏捷宣言是对敏捷的高度总结和升华,即使现在不理解也没有问题,在实践的过程中我们会逐渐对它有一个深刻的认识。

敏捷开发十二原则

在敏捷开发中,我们遵循以下准则:

  1. 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
  2. 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
  3. 要不断交付可用的软件,周期从几周到几个月不等,且越短越好
  4. 项目过程中,业务人员与开发人员必须在一起工作。
  5. 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
  6. 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
  7. 可用的软件是衡量进度的主要指标。
  8. 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
  9. 对技术的精益求精以及对设计的不断完善将提升敏捷性。
  10. 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
  11. 最佳的架构、需求和设计出自于自组织的团队。
  12. 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。

敏捷开发宣言比较抽象,但是敏捷开发十二原则就非常具体了,相信用过敏捷的人都知道,上面的十二原则都是开发过程的经验总结。看到十二条原则,一一的对比我们公司在实施敏捷的过程,还存在一些问题,这些问题直接导致了低效率的,不顺畅的敏捷,例如:最后一条,团队要定期反省,这点做的就不好,造成团队的积极性降低,开发效率下降,而且很难作出调整,甚至我开始也是拒绝的,有了这些原则作为指导,我们可以更加从容的实施敏捷。

敏捷开发十二原则是我们实践的具体指导方针,它可以指导我们实施更加成功的敏捷。当我看到这些内容时,真有一种如饥似渴的感觉,真想一下子都把他们装进我的脑子里。书到用时,方恨少。及时补充自己永远都不晚。

总结

敏捷的思想今天算是深入人心了,后面的具体方法就是教会我们如何实施敏捷。有了这些思想,整个世界都开始美好了。

下篇博文,进入我们的重点简单介绍Scrum以及Scrum的流程,敬请关注。

分享到:
评论

相关推荐

    两万字谈谈如何使用Scrum框架进行敏捷开发

    前不久我在团队做过一段时间ScrumMaster,当ScrumMaster的实践过程中,曾经很浅略地做过一些关于迭代开发的思考和总结(《关于迭代的一些思考》 ,不过里面关于Scrum框架和敏捷开发大多是经验和直觉上的认知,缺少...

    谈谈开发过程中团队合作

    再者,采用敏捷开发方法能促进团队合作。敏捷方法如Scrum和Kanban强调迭代开发和快速反馈,这要求团队成员密切协作,频繁调整计划。每日站会是敏捷团队的重要实践,让团队成员分享进度,暴露问题,并共同规划下一步...

    前端面试题

    - **流程**:敏捷开发、持续集成等。 **7. 可维护性** - **原则**:模块化、命名规范、代码注释等。 - **实践**:编写易于理解和修改的代码。 **8. SEO优化** - **定义**:搜索引擎优化,通过改善网站内容和...

    谈谈软件开发的那些事儿

    同时,随着敏捷开发和持续集成的普及,软件开发更加注重迭代和反馈,强调快速适应变化。职责驱动设计(DDD)和极限编程(XP)等方法论提倡紧密协作和快速反馈,以提升开发效率和软件质量。 总结来说,软件开发是一...

    43-0-1软件过程1

    同时,它也提及了敏捷开发作为一种与传统模式不同的方法,这将在后续的学习中进一步探讨。理解这些概念对于提升软件开发的效率和质量至关重要,同时也为适应不断变化的项目需求提供了有力支持。

    上传一本书(Agile_Java英文版)

    本书英文版的提供,对于那些希望深入理解敏捷开发理念并掌握Java编程的读者来说,是一个宝贵的资源。 首先,我们来谈谈“敏捷开发”。敏捷开发是一种以人为本、迭代、增量的软件开发方法,其核心原则是通过频繁交付...

    敏捷测试之实践篇

    最近一直在想敏捷测试如何实施的事情,敏捷测试在敏捷开发中贯穿始末,涉及到了多种角色的参与:客户、开发、设计、专职测试等等,每个角色承担着不同的测试任务,客户与设计可以进行验证需求实现的测试,而开发进行...

    谈谈软件测试面试问题

    敏捷测试强调快速反馈、持续集成和团队协作,常用实践包括TDD(测试驱动开发)、BDD(行为驱动开发)和持续集成。 13. **如何衡量测试的有效性?** 可以通过缺陷密度(每千行代码的缺陷数量)、测试覆盖率、修复...

    Scrum Poker in Rails5, docker-compose

    Scrum Poker是敏捷开发中常用的一种估算方法,用于团队成员就任务的工作量达成共识。在Rails5框架下实现Scrum Poker应用,可以帮助团队更高效地进行敏捷开发过程中的估算活动。Docker Compose则是一个方便的工具,...

    网站项目设计与开发实战(第3章)

    敏捷开发方法,如Scrum或Kanban,可能是本章探讨的话题之一。开发者需要学习如何规划迭代、进行需求分析、管理任务和缺陷,并有效地沟通团队成员之间的工作进度。 总的来说,《网站项目设计与开发实战(第3章)》...

    软件测试入门 面试

    - 请谈谈你对敏捷开发和持续集成的理解。 招聘知识储备,通常意味着求职者需要对上述知识点有深入理解,并能灵活运用到实际工作中。面试时,展示出对软件测试的全面认识,包括理论知识和实践经验,将是成功的关键...

    20个常见的项目经理面试问题与答案详细分析

    为此,我采用了敏捷开发方法,确保团队能够快速响应变化,并通过紧密的合作和高效的沟通机制成功克服了这些难题。 4. **如何处理紧急情况** - **分析**:此问题旨在测试应聘者在紧急情况下处理问题的能力。 - **...

    程序员成长路线图:从入门到优秀

    - **软件工程概念:**了解软件开发流程、版本控制工具(如Git)、项目管理方法论(如敏捷开发)等。 **技能培养:** - **逻辑思维能力:**编程本质上是对问题的抽象化处理,强大的逻辑思维能力可以帮助程序员更好...

    PyPI 官网下载 | grapl_analyzerlib-0.1.255.tar.gz

    云原生强调利用容器化、微服务、持续交付和声明式API等最佳实践,以促进快速创新和敏捷部署。grapl_analyzerlib很可能采用了这些原则,使得它能够在多节点、容器化的云环境中高效运行,提供灵活的扩展性和弹性。 ...

    “微服务”博客中译完整版.md

    它不仅能够提高软件开发的灵活性和可维护性,还能够支持敏捷开发流程。然而,采用微服务架构也面临着挑战,如服务间的协调、数据一致性等问题。因此,在决定是否采用微服务架构时,需要根据项目的具体情况进行综合...

    适合新手学习的测试视频-第一天.zip

    在IT行业中,测试是至关重要的一个环节,尤其是对于软件开发来说。这个名为“适合新手学习的测试视频-第一天.zip”的压缩包显然旨在为初学者提供基础的测试知识和技能。让我们一起深入探讨测试的一些核心概念,以及...

    豆瓣工程副总:谈谈技术团队的管理.docx

    例如,敏捷方法(Agile Methodology)强调合作博弈,寻求软件开发效率、客户满意度和工程师满意度的平衡,它在过去几年中得到了广泛应用,因为它既提升了效率,又照顾到了团队和个人的需求。 随着软件行业的不断...

    Python库 | mypy_boto3_codestar-1.17.0.0-py3-none-any.whl

    AWS CodeStar是一个综合项目管理服务,可以帮助开发者快速搭建、开发和部署应用程序,尤其适合敏捷团队协作和DevOps实践。通过mypy_boto3_codestar,开发者可以确保与CodeStar交互的代码符合预定义的类型规范,减少...

Global site tag (gtag.js) - Google Analytics