敏捷开发
个人理解:
主动适应变化,而不是一味的确定的需求在开发编码。
FDD -- Feature-Driven Development(特征驱动开发)
劣势:
1、需要有丰富经验的首席架构师和个人能力(经验)强的程序员(允许有差异),对FDD了解的团队
极限编程(XP) -- 个人认为,这是工作的最佳(良好)状态
劣势:
1、需要一个能够相处融洽的团队和高素质的团队(Leader需要有高能力的项目控制能力),
2、每个团队成员要能够独立承担工作任务(个人能力差异不大并且不差),并且是一个组织有序完善的团队
3、团队组织内部默契、和谐的约定
自适应软件开发(Adaptive Software Development,简称ASD)
劣势:
1、需要高素质的团队(项目主导人主要是人员调配控制的能力)
2、团队成员在处理工作事宜外,还需要调剂好人际关系,并不断的思考项目和学习,这将分散团队成员的精力。
3、开发流程定义十分抽象,成员难以理解和配合
4、每个团队成员要能够独立承担工作任务(个人能力差异不大并且不差),并且是一个组织有序完善的团队
scrum -- 个人认为,这个方法的实践应该应用于有需求变动,但变动周期稳定在15-30左右的项目,常规项目践行这个方法将十分困难和不切实际
劣势:
1、冲刺开发中需求将被冻结(绝对不可更改)
2、具体的工程流程定义不明确,项目风险将非常大
3、每个开发周期的需求直接由上头拍板决定,有很大的几率提出的目标不切实际,难以实施。
4、开始项目前期,需要十分细致和全面的需求说明和专项的解说人,这无疑将耗费人力、物力和时间
5、开发过程中,没有明确定义Leader和Worker的职能要求,无法找到项目开展的主心。
个人总结:
1、敏捷开发,确实是现代程序开发高效的软件工程开发方式。相对传统开发,更适应现在快节奏的工作速度。
2、对于一个比较成熟的公司企业,有完善的团队组织和高能力的Leader,推荐FDD开发
3、通常情况下面,使用XP,是个高效优质的做法
4、无论哪一种方法,都最好需要有高素质的团队成员,相互理解,相互沟通协作。
5、选择哪种方法,需要依情况而定
6、开发过程中需要明确定义各部分的职能和开发流程,并使用固定的流程管理方法。
7、项目管理者在执行这些方法之前应当先让成员了解熟悉这种开发模式或流程(出文档限定/互动沟通都行)
8、以上说的都忽略了一种重点,每个方法执行的前提条件都是要有一定的需求分析。有些方法需要有全面完善有效的需求文档,有的可以边做部分需求,在开发,在继续下部分需求……但是需求确认是一个不可缺少的一部分。