热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

不要只在字面上理解敏捷开发

敏捷是一种高效的开发模式,但并非任何项目都适合,而且并非一定要推翻现在的瀑布模式完全采用敏捷。敏捷的本质是什么?敏捷的核心原则是什么?瀑布模式能否将敏捷的思想用过了从而优化现在的模式呢?没有任何一种模式说是适合于任何公司,任何项目,还是要从公司特性,项目特性来看。下面就结合敏捷思想一一解读,看那些适合优化瀑布模式。

敏捷是一种高效的开发模式,但并非任何项目都适合,而且并非一定要推翻现在的瀑布模式完全采用敏捷。敏捷的本质是什么?敏捷的核心原则是什么?瀑布模式能否将敏捷的思想用过了从而优化现在的模式呢??

没有任何一种模式说是适合于任何公司,任何项目,还是要从公司特性,项目特性来看。下面就结合敏捷思想一一解读,看那些适合优化瀑布模式。

敏捷宣言:?

  1. 个体和交互 胜过 过程和工具?
  2. 可以工作的软件 胜过 面面俱到的文档?
  3. 客户合作 胜过 合同谈判?
  4. 响应变化 胜过 遵循计划?

敏捷12原则?

1.我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。?

这点指导我们要尽可能最早将客户需求明确、细化,当然很难一次性将客户的需求完全挖掘出来,但是我们起码可以试着提高我们的需求挖掘,细化能力,每一次和客户(市场人员)交流能够尽可能多地明确需求,减少需求迭代的次数。

2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。?

敏捷提出的背景就是应对客户不断改变的需求,除了上述提到的第一点来减少迭代次数外,也要保证迭代影响面尽可能小。这就要求我们设计的代码耦合性尽可能低。

3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。?

交付间隔越短,就会越多越明确地了解客户的需求。在瀑布模式中其实也可以指导我们多和需求引入人、合入人交流。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。?

  • 保证项目的稳定,只有一个稳定的团队才能带来项目的持续进展。
  • 也可进行结对测试,既减少沟通量,可通过模块责任人制保证质量。?

5.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。?

团队的成功,离不开项目人员和项目负责人的相互支撑。提供任何需要的环境和其他支撑工作,可通过环境固化提高环境复用率。敏捷是以人为本的模式,离不开团队各成员的互相信任和支持,但这并不代表100%的自由,我们还是需要一定的抽查机制来检验相应的工作成果的?

6.在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。?

要减少无效沟通,提高沟通质量,确保沟通的高效性。但是并非就不要文档了,有时候项目的过程还是需要一定的显性文档的,如bug管理平台,svn配置管理等来对工作进行归档,检视,做好PDCA。?

7.工作的软件是首要的进度度量标准。?

软件进度的度量标准有多种,但是不要忘了最重要的一点,我们最终是要开发出高质量的 满足客户需求的软件。可以把需求细化成一个个story,设计并测试完即可认为完成一个功能的build。另外进度的敏捷也可以考虑如下方法或理念:敏捷就将任何可提前做的事,前移,可以采用看板管理进度。doing,done,to do等了解短阶段应该要完成的任务,其实项目中经常会发生这样的现象,前面轻松后面紧张很大一部分原因是,做完前面的事后不知道后面要做什么事,只能再等负责人的安排。?

8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。?

这个需要保证项目成员的稳定,不能出现这样的现象,这个人员过几天被抽调了,那个成员过几天又被抽调了。而且需要保证一定的老员工和新员工比例,既保证人员可持续发展,也要保证项目可持续发展。?

9.不断地关注优秀的技能和好的设计会增强敏捷能力。?

变化是IT最大的杀伤工具,也是IT最大的魅力。要时常拥抱变化,新功能用什么技术可以更高效地开发维护等。

10.简单——使未完成的工作最大化的艺术——是根本的。?

复杂的事情做简单是一门艺术,很多时候一个js页面,一个cgi都被开发人员设计的相当复杂,如果能够从小事开始做起,简单将不再遥远。不过这个也许需要一定的培训和分享制度。

11.最好的构架、需求和设计出自于自组织的团队。?

当前代码的高耦合性是因为最开始软件的架构出现问题,如果一个公司有架构师一样的人(当然能力必须达标),有了一个好的架构,模块的低耦合性也许会不再是空话。

12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。?

一日三省,经常要对自己的工作进行总结反省,进行一定的沉淀,才能在新的起点上更好的前进。不要等项目结束了才开始总结,要经常总结,我为什么没有发现那样的bug,为什么测试效率这么低,只有反省总结了才会有进步。?

其实瀑布模式没有什么错,如果保证第一次就把正确的事情做正确,再结合敏捷的一些思想优化当前的工作,我相信会比单单地用敏捷的“拿来主义”强的多,最重要是理解敏捷的思想。另外完全的敏捷需要公司各平台(自动化,公共技术平台)的强力支撑,如果不能完全敏捷,那就从半敏捷做起,考虑目前哪些事情可敏捷,可优化,先从局部敏捷做起吧。?

本文地址:http://www.nowamagic.net/librarys/veda/detail/2040,欢迎访问原出处。


推荐阅读
  • 本文详细介绍了如何从SVN中获取项目,并在本地环境中进行有效的构建和开发,包括具体的步骤和配置方法。 ... [详细]
  • 本文介绍了软件测试项目的实际操作过程,包括各角色的职责分配、项目启动、测试流程及测试人员的主要任务,旨在为从事软件测试工作的技术人员提供指导。 ... [详细]
  • 解决 SVNManager 中文路径乱码问题的方法
    在安装 MySQL 后,通过调整 my.cnf 文件中的字符集设置,可以有效解决 SVNManager 在处理中文路径时出现的乱码问题。 ... [详细]
  • 本文介绍了EasyTrac 0.1.0.11b1版本的发布,这是一个简化Trac部署过程的工具,特别适合于希望快速搭建项目管理和问题跟踪系统的用户。 ... [详细]
  • OpenWrt 是一款高度可定制的嵌入式 Linux 发行版,广泛应用于无线路由器等领域,拥有超过百个预装软件包。本文详细探讨如何在 OpenWrt 上通过 Luci 构建自定义模块,以扩展其功能。 ... [详细]
  • 本文探讨了软件配置管理(CM)的核心概念,包括配置项、基线、变更管理和配置库的划分。文章基于作者在CMMI咨询中的经验,指出软件配置管理不仅限于版本控制,而是涵盖了更广泛的领域。 ... [详细]
  • 本文详细探讨了 Java 中 Daemon 线程的特点及其应用场景,并深入分析了 Random 类的源代码,帮助开发者更好地理解和使用这些核心组件。 ... [详细]
  • 本文将指导您完成SVN客户端的安装过程,并提供一些基本的配置建议。如果您需要安装SVN服务器,请参考其他相关文档。 ... [详细]
  • 本文探讨了Git与SVN在版本控制上的区别,重点介绍了Git中特有的工作流和文件状态管理机制。 ... [详细]
  • 解决SVN E200007错误的方法
    本文详细介绍了在使用SVN提交代码时遇到E200007错误的原因及解决方案,特别是针对服务器地址变更后的问题。 ... [详细]
  • 深入理解Git与GitHub:分支管理与冲突解决
    本文详细探讨了Git中的分支管理技术,包括如何创建、切换和合并分支,以及如何有效解决分支合并时可能遇到的冲突。同时,文章还介绍了Git的基本原理,如哈希算法的应用和文件管理机制。 ... [详细]
  • 本文详细介绍了如何在 EasyUI 框架中实现 DataGrid 组件的分页功能,包括配置方法和常见问题的解决方案。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 本文介绍如何在 Visual Studio 中集成并使用 AnkhSVN 进行版本控制管理,适用于需要高效进行代码版本管理的开发者。 ... [详细]
  • 花生壳内网穿透:实现企业智能网关远程管理和维护
    随着物联网技术的发展,企业对智能网关的需求日益增加。本文介绍如何利用花生壳内网穿透技术,实现企业智能网关的远程管理和维护,提高效率,降低成本。 ... [详细]
author-avatar
rgx-秀_550
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有