从持续设计到持续交付:完善循环

通常情况下,软件交付中的创新和产品构思之间并不总会互相影响。尽管如此,随着对产品新功能的需求 不断增多,及对应产品生命周期的缩短,甚至商业模型,也都使得将持续设计和持续交付置于同一循环以实现 全面的交付成为必需。由于缺少好的名字,我们就暂就时叫本文为创新循环,循环的每一个阶段如下所示:

选择一个构思

将该构思提炼成一个可测的假设

选择完成该构思所需的功能

开发并测试这些功能

开发和测试那些衡量标准以证实该假设是否可行

将构思发布到生产环境

对该构思成功与否进行衡量

重复这一循环。

不出意料,支持该方式需要应用程序在以下方面进行创新:度量和分析,基础架构,测试,试验型设计, 持续设计及支持持续交付的流程和工具。在本文中,我们将介绍维持该循环所要求的重要创新。以下涉及的每 个话题都可独立成文或者涉猎更多,请将此调查问卷作为一个引子,激发大家去更多地了解这些话题。

度量和分析

度量是有风险的,它很容易产生反效果,激励坏行为。尽管如此,度量却是以上我 们所描述循环的一个主要方面。软件系统中关于具体内容的构想的定义不仅在于软件具体行为,也在于如何知 晓该构想的好坏。我们可以参考一个具体实例:市场部有人认为如果改变他们的网上购物流程,其网上营业额 将会提升20%。该例子的构想是改变流程,而可测性的假设就是用户使用新流程后,会有高于之前流程20%的人 倾向购买。在这种情况下,其度量就很简单,我们需要去测量每个流程客户的购买结果。我们可以随机性地将 用户分配到不同的流程,然后评定各流程是否达到它的目标。为了完成这个度量,我们要保证我们记录下每个 流程用户的使用情况和销售结果。在测试的最后阶段,我们就会知道该营销想法好坏与否。

试验型设 计

有时,什么是正确的度量或需要哪种类型的分析来评估一个构想的价值,并不显而易见。比如:试 图提高生产力的构想,就可能很难去度量。提供给系统所有者对其构想成功与否的反馈,对新需求的优先级排 定和引导系统改进起着至关重要的作用。

设计可测试性假设有效的方式是:设计一系列试验以验证新 功能是否交付了预期结果。因此,我们从新功能的预期结果和其对系统行为带来的影响来决定。设计试验的关 键是保证度量了新功能的真实影响。拿上述改变购买流程的例子来讲,度量和比较用户使用新旧流程比单方面 查看历史数据提供了更有效的依据。

演变型基础架构

要使该循环有效执行下去,部分地要求快 速调整系统以尝试新的想法。在理想世界里,我们能够预见所有对系统可能想要的修改。现实中,一切改变都 是不可预测的。用户期望,商业环境,竞争对手情况,规章制度等都在一个组织管辖范畴之外。因此不论改变 是否可预见,我们都需要能够适应。演变型基础架构和紧急设计是敏捷软件开发采取的方式,能让不可预计变 化变得尽可能简单和安全。

支持演变型基础架构和紧急设计的测试将在下个章节涉及。通过认清由于 系统新加功能所产生的重构机会,紧急设计关注于保持代码可维护性与干净整洁。与之相反,演变型基础架构 关注于系统的构架因素,包括技术选择和不同架构元素间的接口设计。

在这种情况下,演变型架构的 目标包含独立开发系统不同部分的能力,即使它们需要相互交互。我们通过对功能的合理封装,连同合同测试 里记录的每个系统对其它系统行为的影响等途径来将其实现。为每个开发团队提供这样的测试能让他们从一开 始就意识到随着系统的开发将不可避免地会遇到不兼容性问题。演变型架构的另外一个目的在于目标数据修改 ,信息修改,以及某个组件对其他组件实现的交换。

测试

在演变型架构章节,我们讲述了支持 该变革循环重要的测试风格。尽管如此,很多其他测试方式对支持该循环也至关重要。彻底有效的单元测试对 支持演变式设计是至关重要的,而且也为添加新功能而不影响当前功能带来了更多自信。同样,一个彻底的回 归测试集也在不同粒度层提供了同样的保护。

一个完整的测试策略对于参与到该创新循环的系统,保 证了在不影响旧功能的前提下新功能的正常使用。该测试应包含功能测试以外的技术型测试(压力,环境等) 。同样重要的,测试这一功能对该构想的度量的支持也应该包含在测试策略里。为了确保该循环的进行,自动 化测试至关重要。手动测试循环一般都很长,手动测试应该关注于核心领域,并更倾向于探索性。

时间: 2024-10-03 01:14:08

从持续设计到持续交付:完善循环的相关文章

基于容器服务的持续集成与云端交付(一)- 交付之禅

前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的自动部署.原本有些学院派乌托邦式的思想正被千千万万次的集成与部署证明着它应有的价值.那么究竟是因为什么让持续集成与持续交付这个已经不再年轻的软件开发与交付的思想重新焕发绽放迷人的光彩呢? 传统软件交付之殇 传统软件的开发与交付的周期都很漫长,一款普通的企业软件通常需要十几个开发人员,几个月的时间来完

基于容器服务的持续集成与云端交付(五)- 探究持续交付系统的本质

换个角度看持续交付 在<基于容器服务的持续集成与云端交付>系列中,我们已经讨论了持续集成与持续交付给软件开发带来的变革,介绍了如何从零搭建一个持续交付系统以及在阿里云上面如何实现持续交付. 不过,在这篇文章中,我们会用一个不一样的角度来思考持续交付,到底持续交付给我们带来了什么,在容器的持续交付的场景中还缺少什么.回到本系列第一篇文章中的容器持续交付的流程图: 这张图中描述了一个基于容器的持续交付的流程,它定义了几个阶段,本地开发阶段.持续集成阶段.持续交付阶段等等,规定了在每个阶段中该做什么

基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统

前言 在上一篇文章中讨论了容器服务提供的交付能力,在本文中我们将讨论如何从零搭建一个持续交付系统. 对于大多数公司而言,选择一个合适自己的持续交付系统是尤为重要的一件事情,不同的公司.不同的业务使用的场景也各不相同,因此要根据自己的业务场景与发展方向来选择合适的方案.根据不同的业务场景与交付方式,阿里云容器服务提供了三种不同的持续交付方案. 基于Jenkins的持续交付方案 基于Jenkins的持续集成和持续交付方案是所有方案中最灵活.能力最强的方式,但也是需要客户自主运维的方案.对于现有提供持

产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析

2017年5月9日,云效平台资深研发工程师向禹通过直播分享了<持续集成与持续交付实践之路>.他从云效背景.云效方案.云效价值三个方面进行了分享.他主要分享了持续集成持续交付的解决方案和案例,并且对大型系统如何实现持续集成.持续交付.进行产品迭代发布进行了详细介绍. 以下内容根据直播视频整理而成. 云效背景--阿里巴巴<持续交付>之路 大应用下的交付 在七八年之前,阿里巴巴的B2B一直沿用瀑布的模式来进行项目管理,当时已经感觉到瀑布模式对应用持续快速的发展产生了很大的影响.并且当时很

让IT跟上业务思考的速度--从持续集成到持续交付

通过 7 个持续交付最佳实践,给读者一个思路,无论是建设持续交付能力,还是在进行持续交付平台的选型,都能够在业界经验的基础上走向更为正确的道路.同时,本文还引入了持续交付成熟度模型,目的是想帮助企业,把一个想象中全面而复杂的交付流程进行切分,按照环节和成熟度等级展现,将实现持续交付能力之路变得更为清晰.更可操作.有助于企业建立良好的期望和愿景,并开展切实可行的行动. 市场和业务瞬息万变,企业的 IT 部门必须面对产品上线周期不断变短的事实,也就是说,需要建立产品交付反馈圈,并让这个闭环圈的反馈速

谈谈持续集成,持续交付,持续部署之间的区别

经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 正如你在上图中看到,「持续集成(Continuous Integration)」.「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」有着不同的软件自动化交付周期. 持续集成 持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成

超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

作者简介:鲁小川,09年本科毕业于浙江大学软件学院,之后就一直就职于阿里巴巴B2B质量保障部,目前是云效持续集成与持续交付解决方案的负责人. 以下内容根据演讲嘉宾分享以及PPT整理而成. 今天分享的议题是<超大型系统的持续集成与持续交付解决方案及案例分析>,主要就是和大家聊聊阿里巴巴B2B技术部这几年来在持续集成与持续交付上实践经验,以及为什么要做宙斯盾系统平台产品来支撑持续交付.宙斯盾平台在阿里内部经过了5年多的积累沉淀,现在已经对外服务输出了,对外服务产品的名字叫做云效平台,后面还会介绍云

云效平台:企业级互联网架构下的持续集成与持续交付实践

摘要:本文的整理自2017云栖大会-南京峰会上阿里云高级技术专家鲁小川的分享讲义,讲义主要分享了阿里云云效平台对于企业级互联网架构下的持续集成与持续交付的实践经验,首先介绍了阿里云云效平台的起源,之后对于企业并发研发项目交付流程存在痛点进行了介绍,并介绍了云效平台针对业务痛点所能够提供的服务和能力,并且结合实际案例分享了云效平台持续集成和持续交付实践. 在2017云栖大会-南京峰会上,阿里云高级技术专家鲁小川做了题为<企业级互联网架构下CI/CD实践>的精彩分享.所谓CI/CD也就是持续集成与

从持续集成到持续交付——Docker Cloud概览

本文讲的是从持续集成到持续交付--Docker Cloud概览[编者的话]本文介绍了Docker Cloud的概况,以及如何使用Docker Cloud改进我们的持续集成和持续发布的流程.也指出了目前Docker Cloud还存在的功能方面的问题. 容器化(Docker容器),持续集成(CI),持续部署或持续交付(CD)是简化DevOps工作的终极方案.这展示了一个未来的场景:当代码被提交到代码库之后,所有的后续工作包括编译.配置.交付和部署,甚至是高可用性都是完全标准化和自动化的.从这个角度我