敏捷开发之理论概述篇

stonelv stonelv     2022-07-30     716

关键词:

一、 敏捷实践

  1. 敏捷宣言

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

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

    客户合作       胜过  合同谈判

    响应变化       胜过  遵循计划

    1.1 个体与交互胜过过程和工具

      合作、沟通以及交互能力要比单纯的编程能力更为重要。

      工具要选用合适的,不要一开始就盲目选择所谓强大的。要从小工具开始尝试,直到无法适用再去更换。

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

      面面俱到的文档需要花费大量的时间成本来编写和维护。过时的文档比没有文档更具危害性。

      Martin文档第一定律:直到迫切需要并且意义重大时,才来编制文档。

    1.3 客户合作胜过合同谈判

      一个指明了需求、进度以及项目成本的合同存在根本上的缺陷。大多数情况下,合同中指明的条款远在项目完成之前就会变得没有意义。

      那些为开发团队和客户的协同工作方式提供指导的合同才是最好的合同。

    1.4 响应变化胜过遵循计划

      需求永远不会绝对稳定,响应变化的能力常常决定着一个软件项目的成败。

      较好的做计划的策略是:为下两周做详细的计划,为下三个月做粗略的计划,再以后就做极为粗糙的计划。

  2. 原则

    从上述价值观中引出的12条原则,它们是敏捷实践区别于重型过程的特征所在。

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

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

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

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

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

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

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

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

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

    2.10 简单--使未完成的工作最大化的技术--是根本的。

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

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

二、 极限编程

  1. 极限编程实践

    1.1  客户作为团队成员

    1.2  用户素材(user stories)

       用户素材(user stories),也可叫做 用户故事,就是正在进行的关于需求谈话的助记符。

       它是一个计划工具,客户可以使用它并根据它的优先级和估算代价来安排实现该需求的时间。

    1.3  短交付周期

       1.3.1 迭代计划

        每次迭代通常耗时两周。这是一次较小的交付。

        开发人员通过度量在以前的迭代中所完成的工作量来为本次迭代设定预算。

       1.3.2 发布计划

        XP团队通常会创建一个计划来规划随后大约6次迭代的内容,这就是所谓的发布计划。它表示了一次较大的交付。

    1.4  验收测试

       用户素材的验收测试需要在实现素材钱或者实现素材的过程中完成。

       验收测试使用能够让它们自动并且反复运行的某种脚本语言编写。

    1.5  结对编程

    1.6  测试驱动的开发方法

       编写所有产品代码的目的都是为了使失败的单元测试能够通过。

       测试用例循序渐进的对代码的编写进行指导。

       编写测试用例的好处是 可以用来验证修改过的代码,有利于重构;促使你编写可测试的代码,可有效的对代码解耦。

    1.7  集体所有权

    1.8  持续集成

       每次签入代码时,需要跟其他的签入合并。为了避免合并的时间过长,团队的成员会非常频繁的签入他们的模块。

    1.9  可持续的开发速度

    1.10 开放的工作空间

    1.11 计划游戏

      计划游戏的本质是划分业务人员和开发人员之间的职责。业务人员决定特性的重要性,开发人员决定实现一个特性所花费的代价。

      在每次发布和每次迭代的开始,开发人员给予上一次中他们所完成的工作量来为客户提供一个预算。客户在这个预算内选择用户素材。

    1.12 简单的设计

      a 考虑能够工作的最简单的事情

      b 你将不需要它:不要对未来考虑的过多。

      c  一次,并且只有一次:不要容忍重复的代码,使用抽象来消除重复。

    1.13 重构

      代码往往会腐化。重构就是在不改变代码行为的前提下,对其进行一系列小的改造,旨在改进系统结构的实践活动。

      每次改造之后,要运行单元测试以确保改造没有造成任何破坏。

    1.14 隐喻

      隐喻是将整个系统联系在一起的全局试图。

三、 总结

  本篇介绍了敏捷开发的一些基本原则,下一篇将针对原则中的 计划、测试、重构 做详细的介绍。  

敏捷开发之scrum扫盲篇

敏捷开发之Scrum扫盲篇现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各... 查看详情

敏捷开发之scrum扫盲篇(转)

...:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,... 查看详情

敏捷开发之scrum扫盲篇

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两... 查看详情

敏捷软件开发与传统软件工程——因果篇

...日周末,又逢雨过天晴,秋高气爽,捡得几番文笔来细述敏捷软件开发与传统软件工程之异同。从字面看来,二者无非是“敏捷”与“传统”一词之差。然而这两个词又同属修饰之词,因此就这两个词之差自然就是两种开发方法... 查看详情

怎样搭建轻量级架构-敏捷开发普及篇

搭建轻量级的架构。没有轻量级的开发原则是不行的。传统的软件project理论是统一软件过程。统一软件过程说的简单点就是沟通。建模,开发,维护。大家注意,这是一个一次性的过程,也就是每一个阶段必需要力求具体,确... 查看详情

转:敏捷开发之scrum扫盲篇

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两... 查看详情

敏捷开发之scrum扫盲篇

...r)、流程管理员(ScrumMaster)、开发团队(ScrumTeam)现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,... 查看详情

《鸿蒙理论知识06》harmonyos概述之应用开发基础知识

目录APPAbility库文件资源文件配置文件pack.infoHARAPPHarmonyOS的应用软件包以APPPack(ApplicationPackage)形式发布,它是由一个或多个HAP(HarmonyOSAbilityPackage)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包 查看详情

zabbix功能概述及架构介绍(理论篇)

...zabbix是什么AlexeiVladishev创建了Zabbix项目,当前处于活跃的开发状态,ZabbixSIA提供支持。Zabbix是一个企业级的、开源的、分布式的监控套件。Zabbix可以对网络和服务进行监控。Zabbix利用灵活的告警机制,可实现微信、短信和邮件的... 查看详情

敏捷开发篇--agiledevelopment-自用

...大佬,欢迎进来交流。本文旨在学习交流,个人敏捷开发学习心得-自用内容来源:黑皮书-软件开发拉钩教育相关博客和学习视频正文敏捷理论敏捷既可以说成是一种思维,也可以说是一-种方法,它旨在项目... 查看详情

敏捷开发之scrum(转)

现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两... 查看详情

敏捷开发篇--agiledevelopment-自用

**如有错误,感谢指正**如有错误,感谢指正,请私信博主,有辛苦红包,拜“一字之师”。请根据目录寻找自己需要的段落导语:本博客为个人整理Java学习记录帖,如有错误,感谢指正。系统学习... 查看详情

敏捷开发篇--agiledevelopment-自用

**如有错误,感谢指正**如有错误,感谢指正,请私信博主,有辛苦红包,拜“一字之师”。请根据目录寻找自己需要的段落导语:本博客为个人整理Java学习记录帖,如有错误,感谢指正。系统学习... 查看详情

软件测试体系学习及构建(14)-测试基础之软件测试和开发模型概述

...模型概述1软件测试模型1.1V模型1.2W模型1.3H模型1.4X模型1.5敏捷测试2开发模型2.1大爆炸模型2.2边写边改模型2.3瀑布模型2.4敏捷开发模型2.5螺旋模型2.6其他模型1软件测试模型1.1V模型左侧为瀑布开发模型,右侧为对应的测试阶段&#... 查看详情

软件开发模式之敏捷开发(scrum)

简介这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp敏捷开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢?目录什么是敏捷开发?传统的开发模式和敏捷开发模式的对比?... 查看详情

ui-初识君面之理论篇

...感到惭愧。这几年也没有什么成就,准备转做手机Android开发,离别的时侯不远了...讲了点费话, 查看详情

构建之法---初识篇(团队流程和敏捷流程)

...要是看了第五章和第六章,主要内容包括团队和流程以及敏捷流程。首先来说什么是团队?团队有一个集体的目标,团队要一起完成这个目标,一个团队的人,不一定要同时工作,团队成员有各自的分工,互相依赖合作,共同完... 查看详情

《鸿蒙理论知识01》harmonyos概述之技术特性

...布式设备虚拟化3.分布式数据管理4.分布式任务调度5.一次开发,多端部署6.统一OS,弹性部署1.分布式软总线分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座 查看详情