2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来

在英国康沃尔郡举行的2017敏捷沙滩大会上,数百名演讲者和参与者共聚一堂,探讨敏捷和后敏捷领域软件开发方法有哪些最新进展。本次大会最后一个下午的要点包括:交付团队可以通过拥抱精益、迭代和持续的部署方法更快速地实现业务价值;持续交付尽管有很高回报,但实现起来同样困难,这会给组织内部带来很多工具和文化的改变;对持续交付各种指标的度量,如构建稳定性、部署产能和代码产出,对持续交付是否可行至关重要;作为软件交付从业者,我们对引导未来走势负有很大责任。

\\

卫报新闻媒体有限公司的质量主管Sally Goble在周五下午的分组会议作了开场白,演讲的题目是“完美软件:快速交付的敌人”。Goble提到,80和90年代的软件交付是孤立的事件,即

\\

通过物理介质将编译好的成品安装至用户电脑上,这意味着“没有调整余地的交付节奏代表了对完美的渴求”。90年代后期和2000年互联网的普及改变了这一切。发布机构可以持续部署和更新通过万维网交付的软件。不断涌现出的新方法和新流程均得益于此种新概念——可概括为精益产品开发、敏捷方法、持续交付、自动化一切以及DevOps,这些都被视为理所当然。

\\

Goble继续谈到,卫报是如何围绕向读者提供价值打造他们的软件交付流程的。过渡的第一步是摒弃追求软件”无bug“发布的旧观念,转变为”尽快修复“。卫报在单一特性发布、金丝雀版本发布、特性转换以及监控预警上都有很大投入。所有这些新技术都为快速检测和修复潜在问题提供了保障,而在通常的质量保障流程中是很难发现这些问题的。

\\

178f545a9f9de093bd2b7256a3c108ba.png

\\

关于用户体验,卫报团队的理念从“完美原型”转为“精益用户体验”,从“跟踪一切”转为“最小化跟踪”。设计冲刺被限定为一周,整个团队都要参与,并且必须瞄准特定的、有明确定义的业务问题。原型是粗糙的、可快速迭代的,从而能够轻松地淘汰掉那些差劲的想法。即使假定有着明确的定义,也不是所有事情都可以被A/B测试,并且在多变的环境中,依赖测量带来的影响让事情变得太过复杂。为进一步增强传统的功能评估方法,卫报创建并运作了一个大型beta测试系统,包含真实用户,他们的行为和反馈被用来评估新功能。Goble最后总结谈话时强调,紧密而持续地衡量对用户和股东的影响是实现长期价值的关键。

\\

当天倒数第二个演讲是持续交付咨询师Steve Smith带来的”测量持续交付”。演讲首先回顾了持续交付中的几个核心理念,这些理念被收录于Dave Farley和Jez Humble的开创性的著作中:当发布机构能以满足业务需求的稳定性和速度交付软件时,即达成持续交付。Smith提醒道,持续交付(CD)是一个很大的课题,包含很多子课题。对于这些尝试拥抱持续交付的机构来说,最大的挑战是如何应对随之而来的组织内部理念、工具和文化的改变。

\\

持续交付是很困难的。会带来组织内部很多工具和文化的变化。

\\

Smith继续谈到接下来的改进惯例对拥抱持续交付的相关理念至关重要。持续交付的关键测量指标可以定义如下:稳定性等于变更失败率和修复失败耗时之和;而产出等于交付周期和频率之和。

\\

da5eb7a9abbbc4fa2c14194bbf0a5915.png

\\

Smith展示了一系列富有洞见的图表,包含了持续交付的衡量标准,内容来自英国政府机关的某个大型软件交付项目的团队工作。在展示部署的稳定性和产能、构建的稳定性以及代码产能(主线提交次数加上主线提交间隔)数据的同时,Smith介绍了他和他的团队如何定位和辅助相关团队,提高他们的软件持续交付能力,并最终提升他们实现业务价值的能力。关于这个话题的更多细节可见Smith所写的Leanpub book,题目是“Measuring Continuous Delivery”。

\\

ffb43b25eb14abe22d1cbf637fa90197.png

\\

大会圆满结束前,Thoughworks的主咨询师James Lewis的总结发人深省。援引《教堂和市集》,Lewis和听众分享了“每个成功的软件都是从程序员解决自身痛点开始的”。接下来的30分钟Lewis回顾了Thoughtwork的技术雷达(过去很多年他都参与了其创建),然后探讨了JavaScript、微服务和容器等技术对软件行业快速实现创新和为终端用户提供价值带来的影响。

\\

演讲后半段Lewis转而分享他对技术的未来及应用的预见。借用《神经漫游者》等著名科幻小说

\\

的作者William Gibson的话,Lewis阐述道“我们已生活在未来之中,只不过时隐时现罢了”。

\\

389a31c9d2a19e2ea8f9369b9e9bbbad.png

\\

通过分享一系列主题的最新研究成果和行业未来的预测,如自动驾驶汽车(到2045年北半球的自动驾驶普及率将达到100%)、机器人和区块链,Lewis总结了机遇与挑战并存的未来,以飨听众:“我们将迈入一个连接更紧密、更自动化、更多元的世界。而软件会引领我们前行”。

\\

关于敏捷沙滩大会的更多资讯请参考大会官网,演讲视频将于近几周内上传至AotB Youtube频道。

\\

查看英文原文:Perfect Software, Measuring Continuous Delivery, and Exploring the Future: Agile on the Beach 2017

\\

感谢冬雨对本文的审校。

\\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做fzu oj 1045 做减法学到的sprintf()函数

题目 做题一直输不出答案,于是就上网去百度了这题的解题,发现解答十分的简短,而且其中我看见了平时没见过的函数,sprintf()。 于是就百度sprintf()的使用。 如下: 函数功能:把格式化的数据写入某个字符串 函…

动态内存分配及变量存储类别(第二部分)

5. C语言变量的存储类别和生存期 我们知道,变量是有数据类型的,用以说明它占用多大的内存空间,可以进行什么样的操作。除了数据类型,变量还有一个属性,称为“存储类别”。存储类别就是数据在内存中的存放区域。一个正在…

oracle的em能干什么,转载 解决Oracle的EM登录

转载 解决Oracle的EM登录(2011-03-13 20:53:39)标签:杂谈这几天解决了EM无法登录的问题,顺便也把j数据库程序中常出现的ORA_12518错误解决了,有必要总结一下,我最初遇到的情况是这样的:1. 编写java程序访问oracle数据库…

python 回溯法 子集树模板 系列 —— 1、8 皇后问题

问题 88格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 分析 为了简化问题,考虑到8个皇后不同行,则每一行放置一个皇后,每一行的皇后…

Core Java Volume I — 3.6. Strings

3.6. StringsConceptually, Java strings are sequences of Unicode characters(Java的字符串是一个Unicode序列). For example, the string "Java\u2122" consists of the five Unicode characters J, a, v, a, and ?. Java does not have a…

Android实用代码七段(五)

前言 每次分享意味着每次都有进步,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~声明欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com农民伯伯: http://over140.cnblogs.com 正文 1、展开、收起…

oracle 自增1,oracle自增无法从1开始

问题描述我想让XH字段从1开始增加,由于是varchar类型的,所以就用这种方式,但我发现我的数据表中XH字段是从217开始增加的,为什么啊问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)declarej number;i number;begini:1;j:1;for i …

ceph Luminous版手动安装零散记录

1.安装必要的依赖包,关防火墙,向/etc/hosts内添加域名等 2.安装ceph 配置yum源 (如果嫌慢,可以配置cachedir/home/yum/$basearch/$releasever和keepcache1两个参数,在第一次安装时将安装包下载到本地做成yum源,给后面的…

C#最简单最完整的webservice实例

我做java,但最近接触crm所以必须研究一下C#中的webservice以备后用,其实就是个新手,哈哈,这个实例是我在参考了网上诸多不完整的例子的情况下,自己摸索完成的。期间遇到过一系列的棘手的问题,经过个人努力终…

2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈

秋实大哥去打工 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59Description 天行健,君子以自强不息。地势坤,君子以厚德载物。天天过节的秋实大哥又要过节了,于是他要给心爱的妹子买礼物。但由…

oracle怎么通过sid确定表名,如何获取Oracle的SID列表

更好的方法是,如果您有权访问主机并且Oracle安装使用以下命令:lsnrctl status。这适用于Unix,Linux和Windows机器。 status命令将显示所有监听器(及其相关的SID)。C:\>lsnrctl statusLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Pr…

51 Nod 1007 正整数分组【类01背包】

1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10难度:2级算法题将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1…

YTU 2924: 文件操作--二进制文件读入

2924: 文件操作--二进制文件读入 时间限制: 1 Sec 内存限制: 128 MB提交: 58 解决: 20题目描述 现有100名学生的姓名(name)、学号(num)、英语(English)、数学(Math)、语文(Chinese)成绩存储在一个二进制文件student.dic中(姓名用char[20],学号和各科成绩用int存储…

oracle 9.2.0.4,CentOS 4.7 安装Oracle 9.2.0.4的一些问题

#vi/etc/sysconfig/iptables,增加如下-A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport telnet -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport ssh -j ACCEPT-A INPUT -p tcp -s 0/0 -d 0/0 --dport login -j ACCEPT-…

《机电传动控制》----学习笔记六

《机电传动控制》与其他学科的联系 1、《液压传动与气压传动》中提到的液压控制阀中的电液伺服阀与《机电传动控制》中的控制电动机里的伺服电机有着密切的联系,都要求我们对伺服系统有着很好的理解。 2、《电路理论》中电机作为独立的一章,讲到了用向量…

Oracle Imp and Exp (导入和导出) 数据 工具使用

Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据。这两个工具位于Oracle_home/bin目录下。 导入数据exp 1 将数据库ATSTestDB完全导出,用户名system 密码123456 导出到c:\export.dmp中 exp system/123456ATSTestDB filec:\export.dmp fully 其中ATSTestDB为数据库…

[Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION

根据 471716.1,11g 之后,下列动作如果遇到坏块,都会输出记录到 V$DATABASE_BLOCK_CORRUPTION。- Analyze table .. Validate structure- CTAS(Create table as Select)- Export另外,这些也会记录的:RMAN > Vali…

oracle使用loop将增加十天,使用loop循环操作DML语句

---loop循环:--创建测试表:suxingPROD>create table total3(2 t1 number(8),3 t2 number(8),4 cr date default sysdate);Table created.#测试表已经创建。--查看表中原来的数据:suxingPROD>select * from total3;T1 T2 CR-…

iOS富文本

iOS富文本 背景:前些天突然想做一个笔记本功能,一开始,觉得挺简单的呀,一个UITextView,网络缓存也不干了,直接本地NSUserDefault存储,然后完事了,美工,弄几张好看的图片,…

SQL编程题-----1

首先,题目给出这个数据库表格 要求写出SQL语句使之变成如下表格 解决方法: SELECT t1.Rq,t1.胜,t2.负 FROM //t1和t2是自己命的新表格的名字 (SELECT Rq,COUNT(*) AS 胜 //As 胜意思是输出结果时列名为”胜“FROM testtableWHERE Sh…