西门子TP1500控制面板
布模型提出来的一种改进。它的基本思想是从用户需求出发,快速建立一个原型,使用户通过这个原型初步表达出自己的要求,并通过反复修改、完善,逐步靠近用户的全部需求,*终形成一个完全满足用户要求的新体系。
(3)使得更快地交付和部署有用的软件到客户方变成了可能,虽然不是所有的功能都已经包含在内。但与瀑布模型相比,用户可以更早地使用软件并创造商业价值。随着互联网技术和应用的迅速发展,软件开发面临着需求频繁变化和快速交付的挑战。在这种情况下,人们开始尝试一种新型的敏捷开发方法。敏捷方法采用增量和迭代的开发过程,强调团队紧密的协作。这种方法已经取代了传统的瀑布模型,被众多的软件企业广泛地应用。
一般又把原型分为三类:抛弃式,目的达到即被抛弃,原型不作为*终产品。演化式,系统的形成和发展是逐步完成的,它是高度动态迭代和高度动态的,每次迭代都要对系统重新进行规格说明、重新设计、重新实现和重新评价,所以是对付变化*为有效的方法,这也是与下半部分说明了一个迭代开发的三个发布。实际上,许多组织将迭代开发和增量开发方法结合起来使用。
(1)降低了适应用户需求变更的成本。重新分析和修改文档的工作量比瀑布模型要少很多。
(2)在开发过程中更容易得到用户对于已完成的开发工作的反馈。用户可以评价软件的现实版本,并可以看到已经实现了多少。这比让用户从软件设计文档中判断工程进度要好很多。
与瀑布模型相比,迭代开发有以下三个重要优点。
开发方法。它要求需求在开发初期就完全确定,并且在整个过程中很少变化,整个开发过程是计划驱动的,严格按照需求、设计、编码、测试、维护的步骤顺序展开。然而,实际上软件开发更专注于交付的价值。也就是说,高质量的交付产品是*重要的,而这个产品不是一次构建形成,是需要经过迭代演进来形成的。
互联网时代,是一个快鱼吃慢鱼的时代。堂。该会议的成果就是创建了敏捷联盟并发表了代表敏捷精神原则的“敏捷宣言”。敏捷宣言可以概括为四种核心价值和十二条原则,用于指导迭代的以人为中心的软件开发方法。“敏捷宣言”强调的敏捷软件开发的四种核心价值如下所示。
(1)“个体和交互”胜过“过程和工具”。
相对于过程和工具,他们更强调个人和交互的价值。这种观点包括给开发人员提供他们所需的资源,并相信他们能够做好自己的工作。开发团队将他们组织起来,让他们进行面对面交互式的沟通,而不是通过文档进行沟通。
(2)“可以工作的软件”胜过“面面俱到的文档”。
他们更喜欢在生产运行的软件上花费时间,而不是将时间花费在编写各种文档上。也就是说,对成功的主要测量指标是软件正确工作的程度。
(3)“客户合作”胜过“合同谈判”。
他们将精力集中在与客户的合作上,而不是在合同谈判上,从而客户成为软件开发过程的一个关键方面。
(4)“响应变化”胜过“遵循计划”。
计划而后遵循这个计划,因为他们相信不可能在开发的初始就预测到所有的需求。
“敏捷宣言”提出的十二条基本原则已经应用于管理大量的业务以及IT相关项目中,包括商业智能。这十二条基本原则如下所示。
(1)我们的*高目标是,通过尽早和持续地交付有价值的软件来使客户满意。
(2)欢迎对需求提出变更,即使到了项目开发的后期,也要善于利用需求变更,帮助客户创造竞争优势。快速地推出产品,就能够****的先机。在互联网时代,用户的变化和对创新的要求是非常高的,软件的产品要追求创新,要快速地响应用户的变化。
敏捷开发就是一种有效应对快速变化需求、快速交付高质量软件的迭代和增量的新型开发方法。它强调更紧密地团队协作,关注可工作的软件产品。这是一种基于实践而非理论的开发方法。
敏捷方法强调适应而非预测。由于软件需求很难预测,那么按照预测产生的结果,往往不是用户需要的产品,所以软件开发应该是一个自适应的跟踪过程,通过适应和逼近,*终产生用户满意的产品。
2.3.1 敏捷方法的由来
从20世纪70年代到90年代提出并使用的许多软件开发方法都试图在软件构思、文档化、开发和测试的过程中强加某种形式的严格性。在20世纪90年代后期,一些抵制这种严格性的开发人员系统地阐述了他们的原则,试图强调灵活性在快速有效的软件生产中所发挥的作用。
2001年,这群关注迭代和敏捷方法的人(铸就了“敏捷”这一术语)为寻求共识汇聚一
尽管迭代开发有很多优点,但也不是没有问题。从管理的角度来看,增量方法存在两个问题:
(1)过程不可见。管理者需要通过经常性的可交付文档
统结构在逐步退化。除非投入时间和金钱用在重构系统结构上以改善软件,否则定期的变更会损坏系统的结构。随着时间的推移,越往后变更系统越困难,而且成本也将逐步上升。瀑布开发的主早期迭代过程的思想是螺旋式开发和进化式开发。螺旋模型将瀑布模型与原型法模型结合起来,并且加入风险分析,构成具有特色的模式,弥补了前两种模型的不足。螺旋模型将工程划分为制定计划、风险分析、实施工程、用户评价四个主要活动。这四个活动螺旋式地重复执行,直到*终得到用户认可的产品要不同点。增量式,系统是一次一段地增量构造,与演化式原型的*大区别在于增量式开发是在软件总体设计基础上进行的。很显对于大型系统及软件的开发,螺旋模型是一种很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。但需要相当的风险分析评估的专门技术,且成功与否依赖于这种技术。很明显,一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。然,增量式对付变化比演化式差。
2.2.3 迭代式开发
在早期的软件开发中,客户愿意为软件系统的*后完成等待很长时间。有时,从编写需求文档到系统交付使用会经过若干年,这段时间称为循环周期(cycle time)。但是,今天的商业环境不会再容许长时间的拖延。软件