精华内容
下载资源
问答
  • 敏捷开发原则

    2014-12-31 10:36:23
    敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的... 敏捷宣言强调的敏捷软件开发四个核心价值是:  ·个人和互动高于流程和工具  ·工作软件高于理解文档

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

      敏捷软件开发关注保持简洁的代码,经常性测试以及及时地交付应用的功能模块。敏捷宣言的创建是为了替代文档驱动的繁重的软件开发流程,例如瀑布式方法。

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

      ·个人和互动高于流程和工具

      ·工作软件高于理解文档

      ·客户协作高于合同协商

      ·变化响应高于计划遵循

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

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

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

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

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

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

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

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

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

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

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

      11.不断地追求完善。

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

    展开全文
  • 本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第9章。 里氏替换原则(LSP - The Liskov Substitution Principle) 子类型必须能够替换掉它们的基类型。 问题 对于LSP的违反常常会导致以...

    本文为敏捷软件开发 - 原则、模式与实践系列的一部分。

    本文对应原书第10章。

    里氏替换原则(LSP - The Liskov Substitution Principle)

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

    问题

    对于LSP的违反常常会导致以明显违反OCP的方式使用运行时类型辨别。这种方式常常是使用一个显示的if语句或者if/else链去确定一个对象的类型,以便于可以选择针对该类型的正确行为。

    我们经常说继承是IS-A关系。也就是说,如果一个新类型的对象被认为和一个已有类的对象之间满足IS-A关系,那么这个新对象的类应该从这个已有对象的类派生。IS-A关系的这种用法有时被认为是面向对象分析基本技术之一。一个正方形是一个矩形,所以正方形类就应该派生自矩形类。不过,这种想法会带来一些微妙但极为值得重视的问题。

    矩形的长和宽不相同,而正方形的长和宽相同。考虑一个计算矩形面积的函数,设定矩形长为l,宽为w,并且l<>w,并断定矩形面积为l*w。对于这个函数,从矩形类继承的正方形类是无法满足的。

    LSP让我们得出一个非常重要的结论:一个模型,如果孤立地看,并不具有真正意义上的有效性。模型的有效性只能通过它的客户程序来表现。在考虑一个特定设计是否恰当时,不能完全孤立地来看这个解决方案。必须要根据该设计的使用者所做出的合理假设来审视它。大多数这样的假设都很难预测。事实上,如果试图去预测所有这些假设,我们所得到的系统很可能会充满不必要的复杂性的臭味。因此,像所有其它原则一样,通常最好的方式是只预测那些最明显的对于LSP的违反情况而推迟所有其它的预测,直到出现相关的脆弱性的臭味时,才去处理它们。

    基于契约设计

    LSP清楚地指出,OOD中IS-A关系是就行为方式而言的,行为方式是可以进行合理假设的,是客户程序所依赖的。怎样才能知道客户真正的要求呢?有一项技术可以使这些合理的假设明确化,从而支持LSP。这项技术被称为基于契约设计。可以通过编写单元测试的方式来指定契约。单元测试通过彻底地测试一个类的行为来使该类的行为更加清晰。客户代码的编写者会去查看这些单元测试,这样他们就可以知道对于要使用的类,应该做出什么合理的假设。

    简单方案

    有一个简单的方案可以解决违反LSP的问题,该方案也阐明了一个OOD的重要工具。可以把这两个类的公共部分提取出来作为一个抽象基类。

    启发规则

    有一些简单的启发规则可以提供一些有关违反LSP的提示。这些规则都和以某种方式从其基类中去除功能的派生类有关。完成的功能少于基类的派生类通常是不能替换其基类的,因此就违反了LSP。

    • 派生类中有退化函数
    • 从派生类中抛出异常

    结论

    OCP是OOD中很多说法的核心。如果这个原则应用得有效,应用程序就会具有更多的可维护性、可重用性以及健壮性。LSP是使OCP成为可能的主要原则之一。正是子类型的可替换性才使得使用基类类型的模块在无需修改的情况下就可以扩展。这种可替换性必须是开发人员可以隐式依赖的东西。因此,如果没有显式地强制基类类型的契约,那么代码就必须良好地并且明显地表达出这一点。

    术语“IS-A”的含义过于宽泛以至于不能作为子类型的定义。子类型的正确定义是“可替换性的”,这里的可替换性可以通过显式或者隐式的契约来定义。

    完整内容请查看敏捷软件开发 - 原则、模式与实践系列

    展开全文
  • 我们把这些原则分为四个类别:交付、沟通、执行和改进 客户不总是对的,要向人们提供真正需要的东西,而不是提供他们要求的东西 为了考虑变化,团队应当在项目中的很多时间点快速地改变自己的方向。“预先指定大计划...

    2 敏捷原则

    敏捷宣言的签订者很快对4则价值观达成共识,但是他们在宣言的12条附加原则上耗费的时间较长。

    我们把这些原则分为四个类别:交付、沟通、执行和改进

    客户不总是对的,要向人们提供真正需要的东西,而不是提供他们要求的东西

    为了考虑变化,团队应当在项目中的很多时间点快速地改变自己的方向。“预先指定大计划”的瀑布流开发方式限制了团队响应这些变化的灵活性

    2.1 交付项目

    2.1.1 原则1:最优先要做的是尽早、持续地交付有价值的软件,让客户满意

    这条原则包含三个独立概念

    • 尽早发布软件
    • 持续交付价值
    • 让客户满意

    既然客户只有在看到了可工作的软件之后才能给你真实有信息量的反馈,那么获得反馈的最佳方式就是尽早交付

    敏捷团队选择出能交付最大价值的特性和需求,并据此计划项目的迭代,来持续交付有价值的软件

    2.1.2 原则2:欣然面对需求变化,即使是在开发后期。敏捷过程利用变化位用户维持竞争优势

    大多数软件工程师都是在技术自豪感的驱动下工作的:我们交付的产品我们能负责,而且能满足用户的需求。而项目中发生的变化则对这种自豪感产生了威胁,因为变化意味着质疑你采用的方法和设想

    可以尝试从客户的角度看问题,客户无法预测未来,所以肯定会发生变化,理想的客户是不存在的

    欣然面对变化意味着

    • 不要认为有变化就会有人倒霉
    • 我们是一条绳子上的蚂蚱。团队中的每个成员,包括客户都要对需求和需求的变化负责
    • 我们不把变化拖到最后
    • 我们不要再把变化当成犯错。考虑到当时掌握的信息,我们已经做出了最好的决策,这个决策本身没有错误。
    • 我们通过变化学到东西

    2.1.3 原则3:频繁交付可工作的软件,从数周到数月,交付周期越短越好

    传统的应对变化的方式:命令-控制模式

    • 命令指的是项目经理给团队分配任务的方式,项目经理可以控制所有人的任务分配
    • 控制指的是项目经理管理变化的方式。项目经理不断监控这些变化的发生并更新项目计划,来引入变化

    敏捷中应对变化的方式:频繁发布可工作的软件

    • 团队通过迭代将项目分割至定期的截止时间。在每一轮迭代中,团队都要发布可工作软件

    • 可预测的进度安排(每日站立会议和迭代启动会议)和持续检查(回顾会议)可以帮助团队尽早掌握变化,并且大家一起制订解决这些变化的方式

    2.2 沟通和合作

    在传统观念中,人们把软件文档看作是一种必须的文档管理系统。如果这个系统具有可以跟踪性,可以理清所有信息之间的所有关系,那么需要的产品、测试,以及部署和维护方式便一目了然

    对于敏捷团队来说:只需要写够项目开发用的文档就行。敏捷并不是完全放弃文档,但是如果一种文档不能给团队开发软件带来帮助,那么就没有写下来的必要

    2.2.1 原则4:在团队内外,面对面交谈是最有效、也是最高效的沟通方式

    在软件团队中,面对面的沟通方式几乎总是优于文档沟通。敏捷沟通实践更关注个人与个人的沟通,而文档则用于记录那些以后需要回忆具体细节的复杂信息

    团队沟通的终极目标是形成一种集体意识,在成员之间建立不必直说就能领悟的共同知识

    2.2.2 原则5:在整个项目过程中,业务人员和开发人员必须每天都在一起工作

    为了出色地完成软件开发,开发团队需要与业务人员进行大量面对面的讨论。业务人员了解需要什么软件,而开发团队可以通过讨论了解这些。

    当业务人员和开发人员同在团队中开发软件的时候,最有效的方式就是让他们在项目完整周期内每天坐在一起工作。这样可以尽早处理变化

    而开发团队应该把最有价值的特性优先开发,这样的话,业务人员可以第一时间享用这些价值。

    2.2.3 原则6:以受激励的个体为核心构建项目,为他们提供环境和支持,相信他们可以把工作做好

    所有人的绩效应该根据团队交付的成果来评定,而不是根据每个人自己的角色来判定

    2.3 项目实施

    2.3.1 原则7:可工作的软件是衡量进度的首要标准

    可工作的软件可以更好的给所有人汇报项目最新进展,因为这是团队用来交流当前已经完成工作的最好方式

    2.3.2 原则8:敏捷过程倡导可持续开发。赞助商、开发人员和用户要能够共同、长期维持其步调

    敏捷团队信奉的是维持可持续的开发节奏。他们会针对预留的时间制订切实可完成的计划。通过迭代式的开发,这种计划的可行性很高,因为预估接下来的两周、四周或六周的工作量远比预估未来一年半的工作量要简单的多。

    2.3.3 原则9:坚持不懈地追求技术卓越和设计优越,以此增强敏捷的能力

    设计良好并很好实现的软件可以最快交付,因为这种软件修改起来很容易。

    敏捷开发人员会培养起很好的编程习惯,从而帮助自己编写设计良好的代码

    2.4 持续改进

    2.4.1 原则10:简单是尽最大可能减少不必要工作的艺术,是敏捷的根本

    采用迭代式开发以及在项目初期将文档量控制到最小,可以避免交付不必要的软件

    敏捷团队避免开发不必要的特性以及过于复杂的软件,保证给出的解决方案尽可能简单

    2.4.2 原则11:最好的架构、需求和设计来自自组织的团队

    在敏捷团队中,所有人都对架构负责

    自组织团队并没有明确的需求设计环节。自组织团队不依赖某个负责计划的人,会用合作的方式对项目进行规划。他们先把项目分解为多个用户故事,从能够给公司带来最大价值的用户故事着手,然后再考虑详细的需求、设计和架构。

    2.4.3 原则12:团队定期反思如何提升效率,并依次调整

    敏捷团队再每一轮迭代结束的时候和项目结束的时候会花时间总结过去,讨论总结经验,提高开发软件的能力

    展开全文
  • 依赖倒置原则:  a.高层模块不应该依赖于底层模块。两者都应该依赖于抽象  b.抽象不应该依赖于细节。细节应该依赖于抽象。 一良好地面向对象的程序,其依赖程序结构相对于传统的过程方法设计的通常结构而言...

    依赖倒置原则:

      a.高层模块不应该依赖于底层模块。两者都应该依赖于抽象

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

    一个良好地面向对象的程序,其依赖程序结构相对于传统的过程方法设计的通常结构而言就是被“倒置”了。

     程序中所有的依赖关系都应该终止于抽象类或者接口:

    •   任何变量都不应该持有一个指向具体类的指针或者引用
    •   任何类都不应该从具体类派生
    •   任何方法都不应该覆写它的任何基类中的已经实现了的方法

    如果应用程序的高层策略没有和底层实现分离,抽象没有和具体细节分离,高层策略就自动地依赖于底层模块,抽象就自动地依赖于具体细节。

    高层策略是应用背后的抽象,是那些不随具体细节的改变而改变的真理。它是系统内部的系统—是隐喻。

      依赖倒置原则是实现许多面向对象技术所宣称的好处的基本底层机制。它的正确应用对于创建可重用的框架来说是必须的。同时它对于构建

    在变化面前富有弹性的代码也是非常重要的。由于抽象和细节被彼此隔离,所以代码非常容易维护。

    转载于:https://www.cnblogs.com/dgq-blog/p/6433043.html

    展开全文
  • 敏捷宣言 敏捷原则 在最近关于敏捷开发的演讲之后,Red Hat的敏捷教练Jen Krieger收到了她的电话,称其为“有史以来最史诗般的会议反馈:'您的谈话就是大便'。” 它刺痛了-但是她从中学到了东西。 她在视频中告诉...
  • 敏捷软件开发:原则原则与实践》第章 测试 (读书笔记) 一、测试驱动开发 现在我们的代码都有测试了 在编写程序前编写测试的话有助与我们更能从客户程序的角度考虑要设计的类,假如测试不会...
  • 敏捷开发

    2019-06-24 19:54:47
    文章目录什么是敏捷开发一、概念二、优势三、误区、特点五、核心原则六、敏捷开发与瀑布模型开发的区别敏捷开发:瀑布模型开发:七、总结 什么是敏捷开发 一、概念     简单的说,敏捷开发是一种以人为核心、...
  • 敏捷宣言和敏捷原则

    2019-10-03 14:59:22
    最近在看《软件项目管理与敏捷方法》这本书,作者将PMBOK中各个过程中可以用敏捷方式进行的作了一说明,也给出了一些如何在使用传统开发方法的团队中如何推广敏捷开发原则的方法,但总体而言收获不大。另外我看的...
  • 第Ⅰ部分 敏捷开发 第一章 敏捷实践 1.1 敏捷联盟 1.2 原则 1.3 结论 参考文献 第二章 极限编程概述 2.1 极限编程实践 2.2 结论 参考文献 第三章 计划 3.1 初始探索 3.2 发布计划 3.3 迭代计划 3.4 任务计划 3.5 ...
  • 软件工程 敏捷开发

    2019-04-07 16:50:54
    敏捷不是一种方法论,也不是一种软件开发的具体方法,更不是一框架或过程,而是一套价值观和原则敏捷软件开发宣言: 1.个体和互动高于流程和工具 2.工作的软件高于详尽的文档 3.客户合作高于合同谈判 4....
  •  在本章中,作者还给出了一示例,有兴趣的读者可以看一看,我认为其核心就是想告诉我们单元测试能够让我们的程序设计更多的解耦,这才设计当中是非常有好处的。 对于开发人员,更多关注的就是单元测试了,而测试...
  • 敏捷宣言强调的敏捷软件开发的四个核心价值是:个体和互动高于流程和工具工作的软件高于详尽的文档客户合作高于合同谈判响应变化高于遵循计划( 注:敏捷开发的第一条价值观就是“ 以人为本”,强调“ 个体(人)” 及...
  • 敏捷十二条原则: 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。 欣然面对需求变化,即使在开发后期也一样。善于掌控变化,帮助客户获得竞争优势。 经常地交付可工作的软件,相隔几星期或...
  • 本节讲述了两强制对象单一性的模式。这两模式有着非常不同的“代价/收益”权衡。在大多数情况下,它们的实时代价远低于它们的表达力带来的收益。 SINGLETON模式 public class Singleton { private static ...
  • 敏捷软件开发 读书笔记第一章 价值观和原则一、4个价值观二、12个原则第二章 极限编程一、 客户作为团队成员二、用户素材三、短交付周期、验收测试五、结对编程六、测试驱动开发七、集体所有权八、持续集成九、可...
  • 企业级开发-敏捷开发

    2019-08-05 08:33:37
    敏捷开发敏捷开发概念敏捷宣言四个核心价值十二条原则人员架构敏捷开发会议平时写代码是怎么样的,任务是如何完成的? 敏捷开发概念 敏捷宣言 四个核心价值 1.个体和互动高于流程和工具:动员每个人积极交流,...
  • 敏捷宣言 敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。 ...( 注:敏捷开发的第一条价值观就是“ 以人为本”,强调“...
  • SCRUM敏捷开发规则一栏

    千次阅读 2014-10-23 18:27:47
    敏捷、敏捷开发这类词最近很火!敏捷开发,就是指能够在需求迅速变化的情况下快速开发软件。我们接触最多的和敏捷相关的名词...除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发
  • 简单说一下什么是敏捷开发敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们...
  • 部分 打包薪水支付案例20.包的设计原则 通常以包的形式,对应用程序从高层次进行组织。这里从两方面考虑:一方面是根据什么指导原则把类划分到包中,另一方面是怎么处理包之间的相互关系。 包的粒度:包的...
  • Liskov替换原则(LSP) 子类型必须能够替换掉基类,即:基类A有子类B,需要能将B的对象以A的类型调用。 而继承是IS-A(“是一”)的关系。若一新的类B与已知类A的对象之间满足IS-A,那么这新的类B应该从已知类...
  • 敏捷建模(Agile Modeling,AM)的价值观包括了XP的四个价值观:沟通、简单、反馈、勇气,此外,还扩展了第五个价值观:谦逊。  敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发...
  • 敏捷开发之TDD

    2020-08-13 14:19:37
    一、TDD概念 ...、TDD三原则 除非为了使一失败的单元测试通过,否则不允许编写任何产品代码 在一单元测试中只允许编写刚好能够导致失败的内容 只允许编写刚好能够使一失败的单元测试通过的产品
  • 敏捷开发 包括了XP(Extreme Programming:极限编程...除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发敏捷开发宣言—— 个体和交互 胜过 过程和工具 可以工作的软件 ...
  • 二、敏捷软件开发十二原则: 1.最重要的目标,是通过及早和持续不断地交付有价值的软件使客户满意。 2.欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。 3.经常地交付可工作的软件...
  • 极限编程(eXtreme Programming,XP)、SCRUM、动态系统开发方法(Dynamic System Development Method, DSDM)、水晶系列方法(Crystal Methodologies)、适配性软件开发(Adaptive Software Develop...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

敏捷开发原则四个原则