敏捷宣言是一份强有力的声明:
个体和互动高于流程和工具
可工作软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循计划
该宣言聚焦于:
人
沟通
产品
灵活性
敏捷宣言代表了项目在如何构想、执行和管理方面的巨大转变
敏捷宣言源自经验而非理论
1、个体和互动
一次充分讨论项目问题的简单交谈就可以在相对较短的时间里解决许多问题

2、可工作软件
在敏捷项目中,衡量你是否真正实现产品需求的唯一标准是生产出与该需求相对应的产品的特性
完工定义(DoD):至少是已开发、已测试、已集成和已归档
在敏捷项目中,只有当文档能以最直接、不拘泥于形式的方式并“刚好够”满足可工作产品的设计、交付和部署时才是有用的
敏捷方法极大地简化了与时间、成本控制、范围控制或报告相关的行政文书工作

3、客户合作
合作而非对抗能够产出更好、更精益、更有用的产品
4、响应变化
变更是创建伟大产品的有价值的工具,敏捷项目更能系统地适应变更
1、我们最优先考虑的是尽早和持续不断地交付有价值的软件,从而使客户满意
2、即使在开发后期也欢迎需求变更。敏捷过程利用变更可以为客户创造竞争优势
3、采用较短的项目周期,不断地交付可工作软件
4、业务人员和开发人员必须在整个项目期间每天一起工作
5、围绕富有进取心的个体而创建项目。为他们提供所需的环境和支持,信任他们所开展的工作
6、不论团队内外,传递信息效果最好且效率最高的方式是面对面交谈
7、可工作软件是度量进度的首要目标
8、敏捷过程倡导可持续开发。发起人、开发人员和用户要能够长期维持稳定的开发步伐
9、坚持不懈地追求技术卓越和良好的设计,从而增强敏捷能力
10、以简洁为本,最大限度地减少工作量
11、最好的架构、需求和设计出自于自组织团队
12、团队定期地反思如何能提高成效,并相应地协调和调整自身的行为
1、客户满意度的敏捷原则
第一、二、三、四条
什么是客户?
1)在项目管理术语中,客户是为项目出资的个人或群体
2)在有些组织中,客户可以是组织以外的顾客
3)在其他组织中,客户可以是项目干系人或组织内部的干系人
4)最终使用产品的人也是客户,但多被称为用户
如何贯彻并落实?
1)敏捷项目团队设置PO,由其负责确保把客户所想要的翻译成产品需求
2)PO根据市场价值或风险对产品特性进行优先级排序,并与开发团队进行沟通。开发团队在冲刺中交付列表中最有价值的特性
3)PO每天保持深度参与,以便澄清优先级和需求,做出决策,提供反馈以及快速解答项目中突然出现的许多问题
4)频繁地交付可工作的产品,让产品负责人和客户对于产品开发状态有全面的了解
5)随着开发团队每8周或更短时间持续交付完成的和可演示的功能,整个产品的价值随着它的可用功能的增加而逐步提升
6)客户的投资价值是通过在项目过程中定期收到新的、可使用的产品的功能的不断累积,而不是等到项目完成的最后一刻才第一次甚至是仅有的一次交付可发布的产品功能来体现
敏捷提供的让客户满意的策略如下——
1)在每次冲刺中,首先产出最高优先级特性;
2)理想情况下,把PO和其他项目团队成员集中在一起办公;
3)把需求分解成能够在8周或更短时间内交付的不同特性组
4)让书面需求越少越好,推进更加积极有效的面对面地沟通
5)当每项特性完成时,获得PO的批准
6)定期重新回顾/检查特性列表以确保最有价值的需求始终具有最高的优先级
2、质量的敏捷原则
第1、3、4、6、7、8、9和12条
1)开发团队成员必须具有完全的主导权,并被授予解决问题的权力。
2)敏捷软件开发需要敏捷架构,使得代码和产品模块化,且具有灵活性和扩展性
3)一套纸面上的设计永远不会告诉你哪些是可以工作的
4)当开发团队完成了特性,团队向PO展示产品功能以确认产品是否符合验收标准
5)在每8周甚至更短的迭代中,把可正常工作的代码向客户演示
6)测试是开发中不可或缺且持续进行的一部分,它每天都在进行,而非等到迭代周期结束才做
7)以微小增量的方式来检查代码是否与以前的版本能够集成、是否经过测试以及是否已经展示其能够工作,这种增量甚至一天发生几次
8)在软件项目中,保持技术领先的方法包括建立代码编写标准、使用面向服务的架构、采用自动化测试以及针对将来的变更进行构建
质量管理的策略:
1)定义“完成”什么意味着,在项目之初就使用该定义作为高质量代码的标杆
2)通过自动化方式每天进行积极的测试
3)根据需要,仅构建那些必须的特性
4)评审代码并进行精简(重构)
5)只展示已经被PO验收过的功能代码
6)在每天、每个迭代以及整个项目中设置多个反馈时点
3、团队工作的敏捷原则
第4、5、6、8、11和12条
用于实现团队工作愿景的实践:
1)敏捷方法需要有适当经过训练的、熟练的且富有进取心的开发团队成员
2)为任务的完成提供足够的培训
3)支持自组织团队决定做什么和怎么做,而不需要让管理者来告诉团队做什么
4)让项目团队成员作为一个整体而非个体来承担责任
5)用面对面沟通的方式快速有效地传递信息
6)通过全天自发地交谈来学习知识、增强理解和提高效率
7)项目队友位置越靠近,沟通就会更有效率
8)经验教训总结必须是持续的反馈循环
9)第一次回顾通常具有最高的价值,因为在这个时间点,项目团队有机会做出变更,而使项目的后续工作受益
促进团队工作的策略:
1)集中办公
2)团队房间
3)鼓励想法
4)面对面沟通
5)当天澄清所有疑问
6)鼓励自己解决问题
4、项目管理的敏捷原则
三、为什么敏捷工作更有效
评估敏捷方法的收益
敏捷方法如何优于传统方法
为什么大家喜欢敏捷
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生