`
brofe
  • 浏览: 229741 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么是敏捷开发

阅读更多

  人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

  -- Tom DeMacro和Timothy Lister

  敏捷软件开发宣言:

  n 个体和交互 胜过 过程和工具

  n 可以工作的软件 胜过 面面俱到的文档

  n 客户合作 胜过 合同谈判

  n 响应变化 胜过 遵循计划

  虽然右项也有价值,但是我们认为左项具有更大的价值。

  敏捷宣言遵循的原则:

  n 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

  n 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

  n 经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

  n 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

  n 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

  n 在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

  n 工作的软件是首要的进度度量标准。

  n 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

  n 不断地关注优秀的技能和好的设计会增强敏捷能力。

  n 简单是最根本的。

  n 最好的构架、需求和设计出于自组织团队。

  n 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

  当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。

  n 僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

  n 脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

  n 牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

  n 粘滞性: 做正确的事情比做错误的事情要困难。

  n 不必要的复杂性: 设计中包含有不具任何直接好处的基础结构。

  n 不必要的重复性: 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。

  n 晦涩性: 很难阅读、理解。没有很好地表现出意图。

  敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。

  为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:

  n 单一职责原则(SRP)

  就一个类而言,应该仅有一个引起它变化的原因。

  n 开放-封闭原则(OCP)

  软件实体应该是可以扩展的,但是不可修改。

  n Liskov替换原则(LSP)

  子类型必须能够替换掉它们的基类型。

  n 依赖倒置原则(DIP)

  抽象不应该依赖于细节。细节应该依赖于抽象。

  n 接口隔离原则(ISP)

  不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

  n 重用发布等价原则(REP)

  重用的粒度就是发布的粒度。

  n 共同封闭原则(CCP)

  包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

  n 共同重用原则(CRP)

  一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

  n 无环依赖原则(ADP)

  在包的依赖关系图中不允许存在环。

  n 稳定依赖原则(SDP)

  朝着稳定的方向进行依赖。

  n 稳定抽象原则(SAP)

  包的抽象程度应该和其稳定程度一致。

  上述中的包的概念是:包可以用作包容一组类的容器,通过把类组织成包,我们可以在更高层次的抽象上来理解设计,我们也可以通过包来管理软件的开发和发布。目的就是根据一些原则对应用程序中的类进行划分,然后把那些划分后的类分配到包中。

  敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。

分享到:
评论

相关推荐

    敏捷开发项目流程介绍,什么是敏捷开发

    敏捷开发

    敏捷开发模式.xls

    通俗易懂的解释了什么是敏捷开发模式!敏捷开发带来的好处和优点!传统的瀑布开发模式有哪些弊端,敏捷开发模式和瀑布开发模式的比较和不同!

    敏捷开发 敏捷开发 敏捷开发 敏捷开发

    敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发敏捷开发

    敏捷开发的艺术

    现在已经有大量的书籍描述敏捷开发是什么或者为什么它能帮助软件项目成功,但很少有哪一本书能把针对开发者、管理者、测试者和客户的信息合并成一个整体,从而使其能够直接应用。, 本书为敏捷的计划、开发、交付和...

    敏捷开发知识体系

    主要内容包括:敏捷开发的哲学理念、价值观、敏捷开发方法框架和敏捷实践,企业敏捷转型参考框架,帮助企业回答为什么要进行敏捷转型,敏捷转型包含哪些内容和如何开展敏捷转型等问题。 第1章 敏捷开发知识体系总体...

    火星人敏捷开发手册

    敏捷开发手册,火星人出版。全部用图文形式讲解什么是敏捷开发。深入浅出!请叫我雷锋~

    深度讲解:Agile and Tooling敏捷开发与工具

    Agile and Tooling敏捷开发与工具 敏捷开发 什么是敏捷开发 敏捷中的需求 敏捷中的角色 敏捷开发流程 敏捷实践 工具 Jazz

    敏捷开发咨询方案.pdf

    什么是敏捷开发 7 1. 敏捷宣言 7 2. 敏捷12原则 7 3. ThoughtWorks在敏捷业界的地位 8 四. 敏捷开发给企业带来的价值 9 1. 产品提高 10 2. 人才培养 11 3. 流程改善 13 4. 总体效果 16 五. 项目实施方案 17 阶段I:...

    敏捷开发实践

    敏捷开发实践,包含java开发技术等各种集合类问题,了解什么是敏捷开发,为什么要提倡敏捷开发等

    软件项目管理论文:敏捷在软件开发中的应用

    本文从敏捷方法的定义,提出背景,实施方法等方面对敏捷方法进行描述,并与传统软件工程方法相对比,分析敏捷开发的优劣。通过实际软件开发的案例分析软件生产的价值观,得出敏捷方法在软件开发中的价值。关键词:...

    敏捷开发及服务集群

    了解以及熟知什么是敏捷开发以及服务集群,掌握主要的技术框架的使用。

    敏捷软件开发敏捷软件开发

    敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发敏捷软件开发

    敏捷开发管理试题及参考答案.pdf

    敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及参考答案.pdf敏捷开发管理试题及...

    敏捷开发中编写高质量Java代码

    敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的代码质量。 Java项目开发过程中,由于开发人员的经验、Java代码编写习惯,以及缺乏统一的标准和...

    敏捷开发,敏捷开发,敏捷开发,敏捷开发

    这里不做详细说明,这本书是讲开发人员团队合作的一种方式,45个变成习惯

    华为敏捷开发介绍

    华为敏捷软件开发解读 为落实敏捷软件开发在我司的顺利推行,使广大软件开发管理者和开发人员深刻领会敏捷核心理念,熟练掌握敏捷实践方法,从而达到增强...敏捷学习参考材料包括:《华为敏捷开发解读》及相关附件。

    敏捷开发-敏捷软件开发:原则、模式与实践

    在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导...这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。

    CSDN_敏捷开发相关文档全收集_5

    公司项目需要利用敏捷开发模式进行开发,故在CSDN上进行相关资料的查找搜集。27个资料,293 MB,花费了150多积分.现将所有查到的文档进行分包压缩,贡献给大家。因为实在花的积分过多,请原谅我不是无偿的。每个...

    敏捷开发,敏捷开发,敏捷开发

    敏捷开发,敏捷开发,敏捷开发,敏捷开发 敏捷开发,敏捷开发,敏捷开发,敏捷开发 敏捷开发,敏捷开发,敏捷开发,敏捷开发

    敏捷开发知识总结

    极限编程的思想体现了适应客户需求的快速变化,激发开发者的热情,也是目前敏捷开发思维的重要支持者。 敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。   敏捷开发集成了新型...

Global site tag (gtag.js) - Google Analytics