什么是软件开发中的迭代开发?
就是开发被组织成一系列固定的短期小项目,称为迭代,每次迭代都产生,经过测试、集成并可执行的局部系统。系统在迭代中持续扩展和精化,并以循环反馈和调整为核心驱动力,最终成为一个编程系统产品。
迭代开发,又被称为增量式开发,进化式开发,或者IID(Iterative and Incremental Development)
迭代开发的历史可以追溯到20世纪50年代末的美国Mercury空间项目,在20世纪80年代得到发展,Frederick Brooks在他的《人月神话》中阐述了瀑布方法的缺陷,以及使用IID的必要性,20世纪90年代IID已经被公认为瀑布方法的后继者。
那什么是敏捷开发?
敏捷开发是迭代开发的一种,应用时间定量的迭代和进化式开发,使用自适应计划,提倡增量交付并包含其他提倡敏捷性的价值和实践。
2001年,敏捷联盟成立,他们发表了敏捷宣言。
敏捷的特点是,增量开发,快速原型,适用于中小型项目。
敏捷有很多门派,Xp、Scrum、UP,DSDM等等……他们都是在20世纪90年代发展起来的。
UP是Unified Process的缩写(统一过程),他是十分灵活和开放的,只要是其他敏捷方法中有用的实践,都鼓励引进,如:Xp的测试驱动,重构,持续集成;Scrum的公共项目室,日常会议等。
UP分为四个阶段:
1,初始,Inception:大体上的构思,业务案例,范围和模糊评估
2,细化,Elaboration:高风险核心架构的解决,确定大多数需求,更为实际的评估
3,构造,Construction:实现风险较低的元素
4,移交,Transition:进行beta测试和部署
UP的过程:
1,在第一次迭代前,召开需求工作会议,业务和开发人员出席,进行高阶需求分析,例如确定用例名称,关键部分功能需求。
选择具有架构意义的,高风险的10%用例和特性,进行详细分析。
2,第一次迭代前,召开迭代计划会议
3,在3-4周完成第一次迭代
4,第一次迭代快结束时,召开第二次需求工作会议,对上一次会议的所有材料进行复查和精化,然后又开始对另外的10%-15%用例进行深入分析。并计划下一次迭代。
5,四到五次迭代以后可能已经详细记录了80-90%的需求,但只实现了系统的10%,这是细化阶段
6,此后需求已经基本稳定,一般不再召开需求会议,接下来进入构建阶段。
具体来说:
1,初始阶段包括的行为:编写用例,补充性规格说明,词汇表,设想,业务规则等其他非功能需求。
2,细化阶段的每次迭代:领域模型,SSD(系统顺序图),操作契约,确定逻辑架构(宏观组织结构),UML包图,画交互图(顺序图,通信图),画类图,设计可见性,映射为代码,应用GRASP模式和GOF模式,用UML工具逆向工程,从代码生成图形,用4+1视图模型文档化架构。