敏捷软件开发的核心理念(敏捷开发的概念)

软件开发 1606
本篇文章给大家谈谈敏捷软件开发的核心理念,以及敏捷开发的概念对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、以亲身经历解读敏捷软件开发(一)什么是敏捷软件开发

本篇文章给大家谈谈敏捷软件开发的核心理念,以及敏捷开发的概念对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

以亲身经历解读敏捷软件开发(一)什么是敏捷软件开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

价值观

敏捷建模(Agile Modeling,AM)的价值观包括了XP(Extreme Programming:极限编程)的四个价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊。

互联网是个神奇的大网,软件框架也是一种模式,如果你真的想做,可以来这里,这个手技的开始数字是一八七中间的是三儿零最后的是一四二五零,按照顺序组合起来就可以找到,我想说的是,除非你想做或者了解这方面的内容,如果只是凑热闹的话,就不要来了。

敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。

沟通

建模不但能够促进你团队内部的开发人员之间沟通、还能够促进你的团队和你的project stakeholder之间的沟通。

简单

画一两张图表来代替几十甚至几百行的代码,通过这种方法,建模成为简化软件和软件(开发)过程的关键。这一点对开发人员而言非常重要-它简单,容易发现出新的想法,随着你(对软件)的理解的加深,也能够很容易的改进。

反馈

Kent Beck在Extreme Programming Explained中有句话讲得非常好:“过度自信是编程的职业病,反馈则是其处方。”通过图表来交流你的想法,你可以快速获得反馈,并能够按照建议行事。

谦逊

最优秀的开发人员都拥有谦逊的美德,他们总能认识到自己并不是无所不知的。事实上,无论是开发人员还是客户,甚至所有的 project stakeholder,都有他们自己的专业领域,都能够为项目做出贡献。一个有效的做法是假设参与项目的每一个人都有相同的价值,都应该被尊重。

原则

敏捷建模(AM)定义了一系列的核心原则和辅助原则,它们为软件开发项目中的建模实践奠定了基石。其中一些原则是从XP中借鉴而来,在Extreme Programming Explained中有它们的详细描述。而XP中的一些原则又是源于众所周知的软件工程学。复用的思想随处可见!基本上,本文中对这些原则的阐述主要侧重于它们是如何影响着建模工作;这样,对于这些借鉴于XP的原则,我们可以从另一个角度来看待。

核心原则

◆主张简单

当从事开发工作时,你应当主张最简单的解决方案就是最好的解决方案。不要过分构建

敏捷开发

(overbuild)你的软件。用AM的说法就是,如果你现在并不需要这项额外功能,那就不要在模型中增加它。要有这样的勇气:你现在不必要对这个系统进行过分的建模(over-model),只要基于现有的需求进行建模,日后需求有变更时,再来重构这个系统。尽可能的保持模型的简单。

◆拥抱变化

需求时刻在变,人们对于需求的理解也时刻在变。项目进行中,Project stakeholder可能变化,会有新人加入,也会有旧人离开。Project stakeholder的观点也可能变化,你努力的目标和成功标准也有可能发生变化。这就意味着随着项目的进行,项目环境也在不停的变化,因此你的开发方法必须要能够反映这种现实。

◆你的第二个目标是可持续性

即便你的团队已经把一个能够运转的系统交付给用户,你的项目也还可能是失败的--实现项目投资者的需求,其中就包括你的系统应该要有足够的鲁棒性(robust ),能够适应日后的扩展。就像Alistair Cockburn常说的,当你在进行软件开发的竞赛时,你的第二个目标就是准备下一场比赛。可持续性可能指的是系统的下一个主要发布版,或是你正在构建的系统的运转和支持。要做到这一点,你不仅仅要构建高质量的软件,还要创建足够的文档和支持材料,保证下一场比赛能有效的进行。你要考虑很多的因素,包括你现有的团队是不是还能够参加下一场的比赛,下一场比赛的环境,下一场比赛对你的组织的重要程度。简单的说,你在开发的时候,你要能想象到未来。

◆递增的变化

和建模相关的一个重要概念是你不用在一开始就准备好一切。实际上,你就算想这么做也不太可能。而且,你不用在模型中包容所有的细节,你只要足够的细节就够了。没有必要试图在一开始就建立一个囊括一切的模型,你只要开发一个小的模型,或是概要模型,打下一个基础,然后慢慢的改进模型,或是在不在需要的时候丢弃这个模型。这就是递增的思想。

◆令投资最大化

你的项目投资者为了开发出满足自己需要的软件,需要投入时间、金钱、设备等各种资源。投资者应该可以选取最好的方式投资,也可以要求你的团队不浪费资源。并且,他们还有最后的发言权,决定要投入多少的资源。如果是这些资源是你自己的,你希望你的资源被误用吗。

◆有目的的建模

对于自己的产出,例如模型、源代码、文档,很多开发人员不是担心它们是否够详细,就是担心它们是否太过详细,或担心它们是否足够正确。你不应该毫无意义的建模,应该先问问,为什么要建立这个产出,为谁建立它。和建模有关,也许你应该更多的了解软件的某个方面,也许为了保证项目的顺利进行,你需要和高级经理交流你的方法,也许你需要创建描述系统的文档,使其他人能够操作、维护、改进系统。如果你连为什么建模,为谁建模都不清楚,你又何必继续烦恼下去呢?首先,你要确定建模的目的以及模型的受众,在此基础上,再保证模型足够正确和足够详细。一旦一个模型实现了目标,你就可以结束工作,把精力转移到其它的工作上去,例如编写代码以检验模型的运作。该项原则也可适用于改变现有模型:如果你要做一些改变,也许是一个熟知的模式,你应该有做出变化的正确理由(可能是为了支持一项新的需求,或是为了重构以保证简洁)。关于该项原则的一个重要暗示是你应该要了解你的受众,即便受众是你自己也一样。例如,如果你是为维护人员建立模型,他们到底需要些什么?是厚达500页的详细文档才够呢,还是10页的工作总览就够了?你不清楚?去和他们谈谈,找出你想要的。

◆多种模型

开发软件需要使用多种模型,因为每种模型只能描述软件的单个方面,“要开发现今的商业应

敏捷开发

用,我们该需要什么样的模型?”考虑到现今的软件的复杂性,你的建模工具箱应该要包容大量有用的技术(关于产出的清单,可以参阅AM的建模工件)。有一点很重要,你没有必要为一个系统开发所有的模型,而应该针对系统的具体情况,挑选一部分的模型。不同的系统使用不同部分的模型。比如,和家里的修理工作一样,每种工作不是要求你用遍工具箱里的每一个工具,而是一次使用某一件工具。又比如,你可能会比较喜欢某些工具,同样,你可会偏爱某一种模型。有多少的建模工件可供使用呢,如果你想要了解这方面的更多细节,我在Be Realistic About the UML中列出了UML的相关部分,如果你希望做进一步的了解,可以参阅白皮书The Object Primer -- An Introduction to Techniques for Agile Modeling。

成功

随机应变

要达到敏捷的成功—交付支撑业务的最佳软件—软件专家也可以引用这些规则。

自主权

专注于工作,交付正确的软件,而不是被他人的愤怒情绪所影响。

分享经验

构建完美软件开发流程,并没有统一的模式。但是在这个领域,敏捷技术,加上持续的应用和改进,都能够达到敏捷的成功。

什么是 Agile Software Development(敏捷软件开发)?

敏捷编程是软件产业适应现代商业环境的具体表现。历史的第一点,随着软件产业的快速发展,软件系统的规模越来越大,复杂性越来越高,开发周期和成本失控的问题越来越严重,也不能保证软件的可靠性。为了解决这一系列问题,软件行业自然而然地转向传统的工程和管理方法。软件工程就是这样的结果。以“瀑布模型”为代表的传统软件开发模型为软件生命周期的每个阶段提供了一组规范,以使项目进展达到预期目的。软件开发活动的核心重点,所有计划、调度、交付的活动都是直接或间接与需求相一致的,并强调软件需求必须形成“文档”。基于计划生命周期的软件开发方法极大地促进了软件行业的发展,但现在却变得越来越“无力”。为了适应现代商业环境,提出了“敏捷编程”的开发方法。包括“极限编程”、自适应软件开发和功能驱动开发。其他的答案是由定义给出的,我已经结合敏捷软件开发宣言,从商业环境中探索这种开发方法的本质和起源。

个人和交互在过程和工具上的敏捷开发强调将焦点回归到“人”,其背后的哲学思想可以追溯到康德的“人类目的”。与此同时,面对面的沟通和客户参与的发展,弥补了缺乏文件和信息流通的问题,在开发人员、开发人员和客户之间的合作,相互信任,相互尊重是成功沟通的前提。其背后的商业环境是人力资本在开发过程中的高水平。一个典型的关于人的钱的项目在硬件上花费了20倍的时间,这意味着一个项目花费了20万美元一年的程序员,但是只花了10万美元在计算机设备上。很多聪明的程序员说:“我们很聪明,找到了一种节省20%硬件开销的方法”,然后他们就会变得又大又复杂,很难维护这个源程序,他们会说:“但是我们每年节省了20%或2万美元,节省了很多钱。”但金融事实告诉我们,如果这个计划简单且易于扩展,我们将节省至少10%的劳动力成本,这将是一个更大的节省。与此同时,软件开发工作本身决定了一个小而精简的团队的效率和产出,而这个团队比臃肿的、混乱的团队要大得多。敏捷开发通常适用于20 - 40人,甚至更少。与传统软件开发模型不同的是,软件可以比一个全面的文档更好。客户只有在系统开发后才能真正体验到它。通过不断地交付可用的软件需求,敏捷编程周期尽可能短,加强客户的反馈,缩短开发周期,同时获得足够的时间来改变功能,获得用户的身份。背后的商业环境是“快鱼吃慢鱼”的竞争。它与工业社会的生产方式不同,工业社会使用流水线和规模,信息时代强调对用户需求的快速响应。标准化生产成本低、可靠性高,不能直接保证高市场份额。相反,对用户需求的敏锐把握和快速响应是面向用户的服务公司的命脉!在项目的过程中,客户合作对合同谈判敏捷开发的要求,业务人员和开发人员必须共同协作,参与开发,采用高效的信息交互平台,能够减少沟通和沟通的不确定性。敏捷方法已经完成了从重视文本到注重对话,从写作到理解的转变。

总结:它背后的商业环境是,用户无法有效描述自己需求的最典型的例子是苹果的iPad和iPhone。在乔布斯没有推出iPhone之前,用户不知道他们需要一部智能手机,更准确地说,智能手机的需求无法被有效描述。这也是诺基亚(nokia)和摩托罗拉(MOTOROLA)等公司失败的原因之一。

什么是敏捷宣言

敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。

敏捷宣言强调的敏捷软件开发的四个核心价值是:

个体和互动高于流程和工具

工作的软件高于详尽的文档

客户合作高于合同谈判

响应变化高于遵循计划

敏捷选择提出的12条原则已经应用于管理大量的业务以及与IT相关项目中,包括商业智能(BI)。12原则包括:

1.通过早期和连续型的高价值工作交付满足“客户”。

2.大工作分成可以迅速完成的较小组成部分。

3.识别最好的工作是从自我组织的团队中出现的,

4.为积极员工提供他们需要的环境和支持,并相信他们可以完成工作。

5.创建可以改善可持续工作的流程。

6.维持完整工作的不变的步调。

7.欢迎改变的需求,即使是在项目后期。

8.在项目期间每天与项目团队和业务所有者开会。

9.在定期修正期,让团队反映如何能高效,然后进行相应地行为调整。

10.通过完成的工作量计量工作进度。

11.不断地追求完善。

12.利用调整获得竞争优势。

关于敏捷软件开发的核心理念和敏捷开发的概念的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码