敏捷开发
可以不断适应客户需求的变化而变化。他只是一种思想。微软和谷歌也推广。
与瀑布式开发时相对的。瀑布式开发是一个从上往下的过程,一旦往下了就不能向上了,而敏捷开发是随时欢迎客户需求的变化。
在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成。
敏捷开发的一些思想:
*个体和交互胜过过程和工具:团队开发中直接交流比通过工具传达信息更有效率。
*可以工作的软件胜过面面俱到的文档:给用户一个直接拿来用的软件比面面俱到的文档解释要好,因为客户对长篇大论并不感兴趣,他更需要一个能用的软件。
*客户合作胜过合同谈判:与客户保持良好的合作关系比合同谈判更有利于我们的开发。
*响应变化胜过遵循计划:敏捷开发可以随时响应客户的需求变化,比遵循计划更好,因为计划不容易改变。而客户的需求是不变的。我们要随时有变化的能力。
敏捷开发的一些原则:
1.我们首先要做的尽早、持续的交付给客户有价值的软件使客户满意。
2.即使到了开发的后期也欢迎客户改变需求变化,敏捷过程利用变化为客户创造竞争优势。
3.经常提交可以工作的软件,可以是一天或者一个月,间隔时间越短越好,让客户知道我们开发的进度,让他知道我们一直在努力。
4.在团队内部最具有效果并富有效率的传递信息的方式就是面对面的交谈。
5.不断的关注优秀的技能有助于提高敏捷能力。
6。简单是最根本的,越简单越好。
7.每隔一段时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
TDD的基本是通过测试来推动的
好处:TDD的好处:
1.需求是不能确定的,在这里的需求不是指客户的需求,而是指代码的需求,这里的需求最好是写在单元测试里面
2.但所有的代码编写完后,单元测试也写完了,这样开发速度也快
3.可通过单元测试表现出一些文档性的,因为单元测试与代码永远是同步的,单元测试相当于一个使用的文档
4.当单元测试从红条变为绿条时,这样也就激起了程序人员的信心(这也是从心理学的角度来看的)
5.当修改了某个地方,只要立即运行单元测试,就可以快速定位到错误的原因
重构的保障是单元测试,目标是设计模式。
极限编程是实践,符合客户需要的软件为目标