DevOps韭菜学院项目实践(2)敏捷开发和传统开发的异同

DevOps韭菜学院项目实践(2)敏捷开发和传统开发的异同

@韭菜大叔 / 韭菜学院

误解:敏捷开发是为了快速交付?

敏捷开发不是一种为了快速交付而出现的方法,它之所以比较快则是因为避开了许多浪费的处理方式。敏捷开发的高适应性,以人为本的特性,更加的灵活并且更加充分的利用了每个开发者的优势,调动了每个人的工作热情

与传统开发方法相比,在敏捷开发的整个过程中,有以下几个主要的特点:

(1)敏捷开发的过程有着更强的适应性而不是预设性,从敏捷宣言的第四条响应变化高于预设计划便可以看出来。因为软件开发过程的本身的不可预见性,很多用户在项目开始时不可能对于这个项目有着一个完整而明确的预期。很多对软件的预期都在后期的修改和完善过程中产生。因此高适应性显然更加符合软件工程开发的实际。而敏捷开发实现其适应性的方式主要在于,第一,缩短把项目提交给用户的周期;第二,增加用户,业务人员,开发人员这三者之间的交流;第三,通过减少重构的成本以增加软件的适应性。

(2)敏捷开发的过程中,更加的注重人的因素。在传统软件工程中,个人的因素很少的被考虑到分工中,每个个体都是只是整个代码开发机器的一个小小的螺丝钉,个人的意志和创造力很大程度上的被抹去为了更好的为集体服务。而在敏捷开发过程中,每个个人的潜力被充分的考虑,应用什么技术很大程度上直接由在第一线开发的技术人员决定;每个人的特点和创造力都可以充分地发挥,这样开发出来的软件更加的具有生命力,因为他融入了开发者的心血和创意,开发者不再是进行机械的乏味的堆砌,而是创造属于自己的艺术品,这样的条件下产生的代码必然在质量上更占优势。

(3)在敏捷开发的过程中,整个项目是测试驱动的而不是文档驱动的。不仅每个模块有着自己的相应的测试单元,开发人员在开发自己的模块的过程中必须保证自己所开发的模块可以通过这一单元的测试,并且集成测试贯穿了整个开发过程的始终。集成测试每天会进行十几次甚至几十次,而不是像传统方法一样只有当各个模块的编码都结束了之后再进行联合调试。这样,在软件开发的进程中每一点改动所引起的问题都容嘉容易暴露出来,使得更加容易在错误刚刚产生的时候发现问题从而解决问题。这样就避免了在最后整个系统完成时错误隐藏的太深给调试造成极大的困难。

敏捷改善了些什么?

前置时间:传统开发法依循计划、分析、设计、程序开发、测试再进行修改整合后发布的步骤进行,是一种顺序性的开发模式,当前一个步骤用掉越多时间时则后面步骤的前置时间就会越长,而形成时间上越多的浪费。反观敏捷开发,实行的是一种务实的做法,当收集到足够一次迭代开发的需求时即向下一个步骤前进,尽量缩短前置时间的浪费,然后将"分析、设计、开发与测试"形成一个开发步骤,减少了步骤与步骤之间的衔接时间。

首次发布:敏捷开发采用迭代的开发方式,每个循环都会有一个潜在可发布版本用来展示开发成果,这种展示给了客户进行回馈和改进的机会,让客户体会开发成果的作法同时也给予了客户决定开发方向的绝对主权。

需求过程:敏捷开发不作完整的需求分析(因为计划总是赶不上变化的),当需求的搜集量和内容质量已经达到一定要求,已经足够一个开发周期的工作量时就可以开始开发工作。

测试方法:敏捷开发对软件带来的最大影响便是测试了。传统的α(内部测试,注2)、β(交付客户测试)、γ测试(优化处理)方式在采用敏捷开发后几乎不存在了,因为敏捷开发在开发周期内不断的在进行测试的工作,因此也就没有了在交付做α、β、γ测试时必须停止开发,冻结开发的时间浪费了。

参考:

关于敏捷开发

https://vsalm-hols.readthedocs.io/zh_CN/latest/concepts/about-agile-software-development.html

期待您在下方留言。

(完)

【来源】:优选财经网(ID: YouXuanCaiJing )、韭菜学院

您的点赞、转发和评论,是对我们最大的肯定和支持!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180811A0CD5M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券