精华内容
下载资源
问答
  • 敏捷联盟与原则 在2001年召开的研讨软件过程未来发展趋势的一次会议上,17位业界专家就什么是“敏捷”达成一致意见。这次会议的一个成果是成立了“敏捷联盟”并发布了联盟敏捷宣言(参考...

    最近在公司架构师一次公开课上,大牛推荐了这本书,公司领导开会也推荐这本书,于是拜读了,这里记一下印象比较深刻的五大原则!

    一 敏捷联盟与原则

           在2001年召开的研讨软件过程未来发展趋势的一次会议上,17位业界专家就什么是“敏捷”达成一致意见。这次会议的一个成果是成立了“敏捷联盟”并发布了联盟敏捷宣言(参考http://www.agilealliance.org/principles.html)。

    这份联盟敏捷宣言是“敏捷软件开发”价值和目标的浓缩定义,并通过许多共同的原则进行了细化。这些原则如下所示:

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

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

    3. 即使到了开发后期,也欢迎需求变化。

    4. 经常性地交付可以工作的软件。

    5. 可以工作的软件是主要的进度度量标准。

    6. 围绕被激励起的个体来构建项目。为他们提供所需的环境和支持,并信任他们能胜任工作。

    7. 最好的架构、需求和设计来自于自组织的团队。

    8. 在团队内部,最有效果和最有效率的传递信息的方法是面对面地交流。

    9. 敏捷过程提倡可持续的开发速度。

    10. 不断地关注最优秀的技术和良好的设计能增强敏捷能力。

    11. 简单是根本的。

    12. 开发团队每隔一定时间,都会对如何能有效地工作进行反省,然后相应地对自己的行为进行调整

    二 五大原则

    单一职责

    开放-封闭 

    里氏替换

    依赖倒转

    接口隔离

    转载于:https://www.cnblogs.com/houzheng/p/10858012.html

    展开全文
  • Active Object模式是一种异步编程模式。它通过对方法的调用(Method Invocation)与方法的执行(Method Execution)进行解耦(Decoupling)来提高并发性。若以任务的概念来说,Active Object模式的核心则是它允许任务的...

    Active Object

    什么是Active Object

    Active Object模式是一种异步编程模式。它通过对方法的调用(Method Invocation)与方法的执行(Method Execution)进行解耦(Decoupling)来提高并发性。若以任务的概念来说,Active Object模式的核心则是它允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离。

    具体这里讲的很详细了,我就不重复了,可以参考。《JAVA多线程编程实战指南》之Active Object(主动对象)模式 http://ifeve.com/java-active-object/

    Abstract Server

    在Switch和Light之间引入一个接口,这样就使得Switch能够控制任何实现了这个接口的东西。这立即满足了DIP和OCP。

      顺便说一下,请注意接口的名字是从它的客户的角度起的。它称为Switchable而不是Lightable。接口属于它的客户,而不是它的派生类。客户和接口之间的逻辑关系要强于接口和它的派生类之间的逻辑绑定关系。它们之间的关系强到在没有Switchable的情况下就无法使用Switch;但是,再没有Light的情况下完全可以使用Switchable。逻辑关系的强度和实体关系的强度是不一致的。继承是一个比关联强得多的实体关系。

      这种逻辑和实体关系强度的不一致性是静态类型语言的产物。动态类型语言不具有这种不一致性,因为它们不用继承的实现多态行为。

    Acyclie Visitor

     

    意图

    允许将新的函数功能添加到现有的类层次结构中,而不会影响这些层次结构,也不会创建GOF VISITOR模式所固有的麻烦的依赖循环。

    适用性

    何时可以使用此模式:

    • 当您需要向现有层次结构添加新的函数功能时,无需更改或影响该层次结构。
    • 当存在对层次结构进行操作但不属于层次结构本身的函数功能时。例如ConfigureForDOS / ConfigureForUnix / ConfigureForX问题。
    • 当您需要根据对象的类型对对象执行非常不同的操作时。
    • 当访问类层次结构经常被Element类的新派生进行扩展时。
    • 当重新编译,重新链接,重新测试或重新分配Element的新派生时非常昂贵。

    后果

    好处:

    • 类层次结构之间没有依赖循环。
    • 如果添加新访问者,则无需重新编译所有访问者。
    • 如果类层次结构具有新成员,则不会导致现有访问者中的编译失败。

    坏处:

    • 违反了最小惊异原则或利斯科夫的替代原则,表明它可以接受所有访客,但实际上只对特定访客感兴趣。
    • 必须为可访问的类层次结构中的所有成员创建访问者的并行层次结构。

     

    Extension Object

    意图

    预期对象的接口将在未来被扩展。通过额外的接口来定义扩展对象。

    Anticipate that an object’s interface needs to be extended in the future.

    Additional interfaces are defined by extension objects..

    结构

    参与者

    Subject

    • 定义抽象主体对象。其定义用于查询是否包含特定扩展的接口。

    Extension

    • 所有扩展类的抽象基类。可以定义负责管理扩展自身的操作。

    • Extension 知道其是谁的扩展。

    ConcreteSubject

    • 具体的主体类。实现基类定义的 GetExtension 方法并返回相应的扩展对象。

    AbstractExtension

    • 特定种类的扩展类的抽象基类。

    ConcreteExtension

    • 继承并实现 AbstractionExtension 类。实现特定的扩展功能。

    适用性

    当以下情况成立时可以使用 Extension Object 模式:

    • 当需要为已有对象额外添加全新的或无法预见的接口时。

    • 抽象的主要接口在不同的客户类中拥有不同的角色时。

    • 无法通过子类型化来扩展接口行为时。

    效果

    • 扩展对象促进了增加新扩展功能。

    • 类的主要抽象接口不会过于膨胀。

    • 接口的主要抽象在不同的子系统中可实现不同的角色。

    • 客户类变得更加复杂。

    • 需要控制对扩展对象的滥用。

    MonoState

    强制执行类似于在所有实例之间共享相同状态的行为。

     

    适用场景

    • 必须在类的所有实例间共享相同的状态。
    • 通常,这种模式可以在任何可能使用Singleton的地方使用。但是Singleton的使用并不透明,而Monostate则是透明的。
    • Monostate比Singleton有一个主要优势。子类可以根据需要修饰共享状态,因此可以提供与基类不同的动态行为。

    典型用例

    • 日志类
    • 管理与数据库的连接
    • 文件管理器

    Strirway To Heaven

    Proxy的变形,这个模式只能在支持多重继承的语言中使用。

    TaskMaster

     

     

     

    展开全文
  • 敏捷开发模式

    2019-09-24 20:58:50
    1、敏捷开发的概念从1990年代开始逐渐引起广泛关注,是一种以人为核心、...2、敏捷开发的流程(图为禅道敏捷开发流程管理)2.1 产品负责人将整个产品设计成产品代办列表。就是一个个需求列表。(可以理解为需求或者...

    1、敏捷开发的概念

    从1990年代开始逐渐引起广泛关注,是一种以人为核心、迭代、循序渐进的开发方法。强调以人为本,专注于交付对客户有价值的软件。是一个用于开发和维持复杂产品的框架。

    2、敏捷开发的流程

    (图为禅道敏捷开发流程管理)

    2.1 产品负责人将整个产品设计成产品代办列表。就是一个个需求列表。(可以理解为需求或者要做的事情)

    2.2 召开产品迭代计划会议,确定哪些需求是需要在第一个迭代中完成的,评估迭代的时间(建议是2-4周),得到相应的迭代周期任务列表。ps:提前发布功能需求列表,会议提倡所有团队人员参与

    2.3 把迭代的功能需求写在纸条上贴在任务墙,让大家认领分配。(任务墙就是把未完成、正在做、已完成的工作状态贴到一个墙上,这样大家都可以看得到任务的状态 )–>举行每日站立会议,让大家在每日会议上总结昨天做的事情、遇到什么困难,今天开展什么任务。(每日站立会议,是在每天早上定时和大家在任务墙前站立讨论,时间控制在15分钟内)–>绘制燃尽图,保证任务的概况能够清晰看到。(燃尽图把当前的任务总数和日期一起绘制,每天记录一下,可以看到每天还剩多少个任务,直到任务数为0 ,这个迭代就完成了)ps:在开发人员开始开发一个任务时,需要找来对应的测试人员讲解该任务功能,以便测试人员有一致的理解,并且一开始就进行测试用例、自动化系统测试脚本的开发(若需要自动化测试的话)。

    (上图为小编粗图)

    2.4 评审会议(演示会议)是在迭代完成时举行,要向客户演示自己完成的软件产品,并获得客户的反馈 。

    ps:很多用户对软件开发是没有概念的,他只知道自己有某种需求。所以就要通过不断的让用户看到产品的模型,这个过程用户才会逐步的对产品产生概念。

    2.5 最后是总结会议,以轮流发言方式进行,每个人都要发言,总结好的实践和教训,并落实到后续的开发中。不要流于形式。

    3、敏捷开发适用原则

    1、个人与互动:重于流程与工具

    ->强调人与人的沟通,所以尽可能要集中化办公。异地开发模式容易让人疲惫。

    ->个人技能要提高。尤其对于架构师要求要高。

    ->管理者要多参与项目有关的事情。

    ->减少对开发人员的干扰。

    2、可用的软件:重于详尽的文件

    ->强调文档的作用。必要的文件必须的。且文档要具有传承性。

    3、与客户合作:重于合约协商

    ->做好客户引导。客户都是想在尽可能短的时间内,交付尽可能多的功能。做好版本控制。

    4、回应变化:重于遵循计划

    ->无理变化,举棋不定的结果,并不是说都需要及时响应,会导致很多浪费。

    转载于:https://www.cnblogs.com/fengyunxiang-test/p/9315815.html

    展开全文
  • 使您更深一步了解面向对象的概念,代码很简单,通过简单的例子来了解它真实意图,让您在以后的开发中代码质量上升一个台阶。
  • Scrum敏捷开发模式

    2020-05-04 19:08:11
    最近报名参加了微信小程序应用开发赛,也是作为走向职场前的一次锻炼,为了模拟企业开发的流程,我们团队决定使用敏捷开发模式来管理项目。这篇文章,是对在近些天来网上学习到的Scrum敏捷开发模式的总结。 软件开发...

    前言

    我的个人博客

    最近报名参加了微信小程序应用开发赛,也是作为走向职场前的一次锻炼,为了模拟企业开发的流程,我们团队决定使用敏捷开发模式来管理项目。这篇文章,是对在近些天来网上学习到的Scrum敏捷开发模式的总结。

    软件开发过程

    在这里插入图片描述

    一个完整的软件开发过程一般包括图中五个阶段,分为需求、设计、编码、测试、维护五个阶段。对于不同的软件系统,可以采用不同的开发模型,并由此产生了不同的。常见的软件开发模型,可以参考以下链接

    敏捷开发模型(Agile-Development-Model)

    敏捷开发的概念

    敏捷开发是一种以用户的需求进化为核心,采用迭代、循序渐进的方法开发的方法。
    在这里插入图片描述

    敏捷开发的方法有很多,包括Scrum、极限编程、功能驱动开发以及统一过程(RUP)等,IT开发中,最常用的是Scrum(迭代式增量软件开发过程)。

    Scrum(迭代式增量软件开发过程)

    Scrum特点

    • 将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。
      在这里插入图片描述

    • 增量交付,迭代式开发,在一次次迭代汇中,完善产品的功能,并能够持续发布,强调适应性,并非瀑布模型中的预见性

    • 在此过程中,主体软件要处于随时可发布,可交付给用户的状态。

    Scrum四元素

    • 迭代
    • 团队
    • 会议
    • 工件

    一、迭代

    将一个大的项目分为多个互相联系或者独立运行的子项目,围绕最小化可行产品的特性进行产品规划,并且分别完成。每个子项目都经历规划(Plan)、开发(Build)、测试(Test)、评审(Revidw)四个阶段,这四个过程合称为一个迭代(Sprint),通常一个迭代需要一到三个星期。

    二、团队

    1.PO——产品或业务负责人(Product Ower):

    类似于产品 经理,确定产品的方向和愿景,发布和需求的优先级。

    2.SM——敏捷教练(Scrum Master):

    熟悉敏捷开发模式和流程,团队负责人

    3.交付团队

    设计、产品、开发、测试、运维人员

    三、会议

    1、迭代计划会(Sprint Planning Meeeting)

    在迭代之初,由产品负责人(PO)讲解需求,并由开发团队进行估算的会议。

    2、每日立会(Daily Scrum Meeeting)

    团队每天进行沟通的内部短会,用于同步信息,尽早发现风险。

    团队负责人发布任务。开发团队,可以通过类似以下的任务展板领取任务。
    在这里插入图片描述

    从昨天的立会到现场,我完成什么?从现在到明天的立会,我计划完成什么。有什么阻碍我的进展。

    3、迭代评审会(Sprint Review Meeeting)

    向客户或者其他利益干系会展示,获取客户反馈

    4、迭代回顾会(Sprint Retrospective Meeeting)

    每个迭代后总结开发中经验和教训,进行持续改进。一般会进行定量和定性分析。

    (1)定量分析:是否完成目标?

    迭代速率、迭代燃起燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生成Bug解决时间、用户故事。

    (2)定性分析

    哪些做得好的保持,哪些坏的要丢弃

    四、工件

    • 用户故事(User Stories):一种表达产品需求的语言格式。产品经理通过用户故事了解用户需求细节,为团队合理制定任务的优先级。

    • 产品需求列表(Prodcut Backlog):汇集用户需求的列表,产品经理会从众多用户故事中筛选出优先项,并把他们列入产品待办列表中。

    • 迭代需求列表(Sprint Backlog):单个迭代要做的需求列表,一次迭代中往往选取当前优先级最高并经过讨论的用户故事,剩下的继续评估,交给下次迭代。

    • 燃尽图(Burundown Chart):用以展示整个Sprint待办列表的进度。当燃尽图曲线接近于0时,也就意味着这次迭代即将完工。
      在这里插入图片描述

    Scrum具体开发流程

    在这里插入图片描述

    文字描述

    • 第一阶段:首先产品经理(产品团队)把需要上线的产品特性做成产品需求列表(Prodcut Backlog),由产品经理(产品团队)基于产品整体战略、目标、业务价值、实现难度等因素甄选出优先级最高的项目,交个整个团队进行讨论。
    • 第二阶段:召开迭代规划会议,研发团队、产品经理和开发团队负责人(Scrum Master)讨论用户故事的优先项,且决定本次次迭代要研发的需求项。并由开发团队负责人开展可行性评估和工时评估,确定迭代的需求排期,形成迭代需求列表(Sprint Backlog)。
    • 第三阶段:会议结束后,团队中的每个成员需要对每个用户故事有深刻的理解。团队负责人根据需求拆分相应的子任务,分配相应的开发成员执行,并评估相应的工时。
    • 第四阶段:研发团队要在一到三周的时间里开发完成迭代需求列表中的需求,在迭代中,每日站会用于团队来交流他们做完了什么,正在做什么,以及遇到的问题,及早发现风险。
    • 第五阶段:每次迭代的产出都是一个可以发布的产品版本,在迭代结束前,会进行迭代评审会(Sprint Review Meeeting),由研发团队向产品经理做案例演示并接受评价。产研团队根据整个迭代需求的完成情况和缺陷处理情况,最终决定整个产品是否上线,也可以在发布前增加新功能。确认上线后,由运维进行上线环境部署,正式上线。
    • 第六阶段:在迭代结束时,产品和开发会举行迭代回顾会(Sprint Retrospective Meeeting),团队一起思考工作中可以改进的地方,制定改进措施。每次迭代都需要进行这样的会议,来不断改进产品的质量。
    • 最后,产品团队在产品功能上线后,持续收集用户的反馈,分析数据形成新的用户故事,进入下一次迭代。

    总览图

    在这里插入图片描述

    PS:平时写代码如何通过测试并入库?需求如何完成?

    首先,测试团队会根据产品需求文档,进行进行测试用例撰写工作和开发工作同步进行。 开发人员开发完成自己的需求任务之后,使用测试团队写好的测试用例进行自测(跑各种静态检查、复杂度、测试用例、功能测试等),自测通过转移给测试,自测不通过,自行修复,直到通过再转给测试。

    测试团队再次进行测试, 发现Bug则建立缺陷,将缺陷关联到相应的需求任务上,并指定个相应的开发者进行修复。

    测试完成后,提交代码。触发CI(持续集成)流程。跑完流程后,进入代码评审,通过后,才能入库。

    参考链接

    teambition敏捷研发讲解

    展开全文
  • 敏捷软件开发:原则,模式设计.pdf,敏捷软件开发:原则,模式设计.pdf,敏捷软件开发:原则,模式设计.pdf
  • 敏捷开发、重构与设计模式

    千次阅读 2011-10-18 16:33:12
    转自:...  最近,同事、朋友跟我聊天的过程中,提到了设计模式方方面面的问题。随着面向对象、敏捷开发的深入人心,越来越多的程序员希望能够借助设计模式,使自己的代码
  • 1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一...
  • 文章目录1 敏捷开发2 传统的开发模式敏捷开发模式的对比2.1 瀑布模型:2.2 敏捷模型:3 敏捷开发scrum的实施4 敏捷工作件5 敏捷管理实践 1 敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法...
  • 敏捷软件开发 原则模式及实践 非常好的书。
  • 讲述在预算和实践要求下,软件开发人员和项目经理如何使用敏捷开发完成项目;  ·使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程;  ·包含了极具价值的可多次使用的C++和JAVA源代码;  ·重点讲述...
  • 设计模式敏捷开发

    千次阅读 2006-04-30 15:40:00
    ” 这一阵子在潜心研究设计模式以及敏捷软件开发,觉得这些东西用处很大,单却被很多人给用烂了.就象曾经有为大师所说的那样"设计模式不是可以到处喷洒的香水,如果过度的使用它就会使系统具有不必要的复杂性".所以就...
  • 这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。 [b][font color="#ff6600"]特色内容: ●讲述在预算和时间要求下,软件开发人员和项目经理如何使用敏捷开发完成项目。 ●...
  • 敏捷开发和瀑布模式

    2019-07-14 15:33:51
    什么是敏捷开发敏捷开发=迭代开发+增量开发 迭代开发:将一个大项目分解成多个小项目,每个小项目都有类似的生命周期。开发者首先发布一个简单的版本,然后再不断的增加功能或者进行改进,这个过程就是不断迭代的...
  • 本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第28章 VISTOR模式系列允许在不更改现有层次结构的情况下向其中增加新方法。 该系列中的模式如下 VISITOR模式 ACYCLIC VISITOR模式 DECORATOR...
  • 禅道的敏捷开发模式

    千次阅读 2017-05-25 09:19:55
    全面采用禅道的敏捷开发模式进行整个软件开发生命周期的管理,需求->设计->编码->测试->交付这四个阶段全部用禅道对应的功能进行规范化管理。岗位划分:1、项目经理2、技术经理3、测试经理4、高级程序员(一般担任...
  • 敏捷软件宣言 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工作,我们形成了如下价值观: 个体与交互 重于 过程与工具 可以工作的软件 重于 面面俱到的文档 客户协作 重于 合同谈判 响应变化...
  • 敏捷软件开发:原则、模式设计.pdf 敏捷软件开发:原则、模式设计.pdf 敏捷软件开发:原则、模式设计.pdf
  • 瀑布开发模式敏捷开发模式的区别和思考

    万次阅读 多人点赞 2017-04-12 14:18:54
    1.严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。 使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一...
  • 敏捷开发流程 学习目标 在这一章中,学习的目的是了解敏捷开发的主要思想。一个特别且有影响力的称做极限编程的敏捷方法将用比较详细的介绍。一些极限编程中的技术方法和实践将在本书后面详细讨论。因此这一章节主要...
  • 首先敏捷是关于软件开发的过程与模式;DevOps更多是关于软件部署和运维管理;产品管理是关于产品的定义和需求规划。 将创新思维和设计思维结合,设计出满足市场需求的创新产品。 使用某种形式的敏捷软件开发来...
  • 本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第29章 STATE模式 STATE模式既具有switch/case语句的效率又具有解释迁移表的灵活性。 上图展示该模式的结构。Turnstile类拥有关于事件的公有方法...
  • 本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第23章 COMPOSITE模式是一个非常简单但具有深刻内涵的模式。 上图中展示了COMPOSITE模式的基本结构。图中是一个形状类层次结构。基类Shape有两个...
  • 详解敏捷开发的困惑,深入简出的讲解软件设计原则,设计模式,并有丰富的代码案例
  • 本文为敏捷软件开发 - 原则、模式与实践系列的一部分。 本文对应原书第21章 工厂模式允许我们只依赖于抽象接口就能创建出具体对象的实例。所以,在正在进行的开发期间,如果具体类时高度易变的,那么该模式是非常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,111
精华内容 844
关键字:

敏捷开发设计模式