对于敏捷开发,我最大感悟是对于设计的可扩展,特别是对于项目需求变化大的项目,软件设计过程中灵活的利用设计模式来设计你的软件,最大的提高软件的可扩展性,提高软件的对于需求变化响应能力。
进行项目设计的时候,必须要抑止住对于扩展性的考虑。这个方面不能考虑太多。考虑多了,项目成功率就会逐步下降。
敏捷开发其实是基于最基本的经济学原理提出来的,那就是成本核算。
以前普遍的观点认为,返工造成了大量的成本的浪费。而现在由于普遍推行的单元测试——特别是自动化单元测试,和高密度集成,使得设计的成本大幅度降低。由此不断返工造成的成本流失,已经被由于设计成本的降低所覆盖。由此所谓扩展性和灵活性所带来的成本优势,已经被其所要损耗的测试和集成成本所超过。而在这个环境下,gof的目标已经成一种以设计为目标的手段,转换为一种以交流为目标的手段。也就是说在敏捷团队中,gof更是是一种方言,而不是一种设计。
应用XP由于测试的需要及经常重构本身就可以得到很多灵活性等等,而对于一开始的要求的灵活性,扩展性等的考虑是比较少的,因为由于这些是由于应用XP自然而然得到的。
但我认为还是需要设计,敏捷设计不正是么!
敏捷的具体工作内容是什么呢?PM会建好feature,PG自己根据自己情况去拿这些feature,然后给拿到的feature估计下完成时间很进度。这个估计的过程我感觉没有一定的开发经验是很难准确的估计出来的。关键是feature的建立,这种逐步的开发模式可能的目的之一就是为了解耦,而能不能解耦关键是要看这些feature的水平了。如果feature之间可以很好的解耦那么目的算是达到了。所以我个人的感觉就是建feature才是敏捷开发的关键所在。怎么建feature,如何建feature。如果真的可以做到像搭积木那样随意的加减feature的话,那样就最圆满了。可是究竟又有多少可以达到呢?还有很重要一点哦,就是要有类似的项目经验才行,所谓的经验就是业务的把握,不懂业务做毛啊。