最近看了几章Bob C.Martind的获奖作品Agile Software Development Principles,Patterns,and Pratices,我有几点疑问!
在何种项目中可以使用敏捷开发?也许敏捷开发适用于任何种类,规模软件的开发,敏捷开发不指定具体工作的分工,要求团队自行进行工作分工,试想一个大型项目,需要多个开发团队协同开发;试想一个开发团队有几十个甚至成百上千个开发人员,如果没有明确的分工,如何协调各个开发者之间的工作?用什么保证资源的优化配置?所以我个人觉得敏捷开发只适用于中小规模软件项目的开发,通常这种项目的需求变化相对于大型项目的需求变化要大的多,而敏捷开发在这方面的确有它的优势;
如何进行开发迭代?敏捷开发主张将设计融于代码中,主张简化过程,不进行或在开发过程中夹杂系统设计,开发者只要对软件项目有一个大致的规划即可,然后就进行编码,开发期间进行频繁的迭代,我想说的是,既然连设计都不存在,如何保证迭代有效性?
敏捷开发主张代码尽量简单,然后在需求变化的时候进行重新的设计,但在我看来如果使用面向对象设计,虽然在设计阶段用了一些时间,但是可以减少开发过程中一些不必要的重复劳动,也有利于分工;
当然,敏捷开发的许多优点也是显而易见的,如测试驱动开发,有利于帮助开发者从本质揭示代码效用,结队编程,可以使开发人员集中注意力,且能学到其他开发人员的优点,找到自己的不足,丰富自己的知识;
敏捷开发不失为一种好的软件开发方法,但我觉得这种方法也具有很大的局限性。其一,对开发者的素质要求较高,其二,在大型项目使用敏捷方法开发软件中可能导致种种不良结果(副作用)
其实我也没什么底气对闻名于世的敏捷开发提出这么多异议,毕竟这都是自己空想而已,有人说了“实践是检验真理的唯一标准”,这样开来我是没有发言权的,不过那人
也别告我,我只是说说而已,且是自言自语
/***********************************************/
/****Buddha bless me ,and Buddha bless China*****/
/***********************************************/