大数据应用于企业运营
大数据在企业运营的不同层次有着不同的作用,也对应了不同的应用方法论。本文抽象出大数据应用于企业运营的不同层次以及相应的应用方法——大数据企业运营应用金字塔模型。大数据企业运营金字塔分为7个层面,包括数据基础平台层、业务运营监控层、用户洞察与体验优化层、精细化运营与营销层、业务市场传播层、业务经营分析层和战略分析层。企业在考虑大数据应用时,此模型可以作为基础的参考方向。
数据基础平台层。数据基础平台层是大数据企业运营应用金字塔的最底层也是整个金字塔的基础层,如果基础层搭建不好,上面的应用层也很难在企业运营中发挥效果。没有数据或者没有高质量的数据,所有的分析和数据挖掘都是误导。数据基础平台层的目标是把企业的所有用户(客户)数据用唯一的用户ID串起来,包括用户(客户)的画像(如性别、年龄等)和用户行为等,以达到全面的了解用户(客户)的目的。数据基础平台层的搭建有三大关键:
(1)确定用户唯一ID。企业需要确定打通用户(客户)数据的唯一ID,可以考虑用会员注册号,或手机号或者身份证号等。企业在构建会员注册体系时,最好是使用用户手机号作为会员账号,这样方便后期整合其他外部数据源;同时使用手机号的好处在于未来可以基于手机号向会员开展相关的营销活动;
(2)有效的解决数据孤岛问题。拥有大数据的企业常常有多个业务部门,而且不同业务部门的数据往往孤立,导致同一企业的用户各种行为和兴趣爱好数据散落在不同部门,出现不同的数据孤岛,导致企业的数据资产不能很好的整合使用。解决数据孤岛的问题,需要高层重视并授权给公司级的中立数据部门,企业从上往下,有意识强有力的去整合不同业务部门的数据,解决数据孤岛,打通数据;
(3)解决数据有效管理和计算的问题。我们可以通过技术手段和规范手段把数据管理起来。重点要解决的问题是存在数据仓库里面的数据具体的含义是什么,以及如何高效的存储和计算。通过数据接入系统和元数据管理系统,我们可以有效的管理数据的定义和相关计算逻辑;通过分布式文件系统、分布式数据库等方法解决高效存储的问题;通过大数据查询分析计算、批处理计算、流式计算和内存计算等计算模式以及大数据计算任务调度系统等方法解决高效计算的问题。
业务运营监控层。业务运营监控层主要目的是帮助企业监控业务运营情况的健康度,快速发现问题并定位问题原因。我们首先要做的是搭建业务运营的关键数据体系,在此基础上开发可视化的数据产品,监控关键数据的异动,并可以定位数据异动的原因,辅助运营决策。在业务运营监控层,如果企业构建了实时计算的能力,那么很多业务运营中问题就能更快的发现。因此,业务运营监控层的工作有两大关键:
(1)梳理数据体系。数据分析师和业务负责人一起梳理业务的数据体系,尤其是对关键数据如KPI数据进行系统化的拆解和梳理。KPI数据的梳理可以以假设该数据下跌开始进行梳理。以活跃用户为例,假设某产品的活跃用户数下跌,一方面可以通过物理拆解的方式层层下钻找出影响模块,即某产品的活跃用户下跌可能是因为该产品的子模块活跃用户下跌引起,我们可以对该子模块进一步拆解分析原因,拆解的过程也是数据体系搭建的过程;另一方面,可以对活跃用户的相关因素进行数据化梳理,如新老用户的构成、用户质量、推广渠道质量的变化等多种维度进行数据化梳理;
(2)打造数据异动监控产品。企业需要构建灵活和智能的数据异动监控产品,并把梳理好的数据体系封装在数据异动监控产品中。数据异动监控产品需要有三方面的能力:一方面,数据可视化程度高易读性好,通过该产品可以清晰的看到数据体系和数据间的脉络;第二方面,通过算法实现异动原因的定位;第三方面,智能的告警功能,一旦关键数据的关键节点出问题,并可以通过短信、邮件等方式周知相关人员。
用户洞察/体验优化层。这一层主要是通过大数据来洞察用户行为和偏好以及监控和优化用户的体验问题。这一层面既运用了结构化的数据来洞察和优化,也运用非结构化的数据(如文本)来洞察和优化。前者更多的是应用各种用户行为模型来实现,后者更多的是通过监测微博、论坛和企业内部客服系统的文本来洞察和优化。具体包括以下两大方面:
(1)用户洞察。利用大数据技术抓取微博、论坛和企业客服系统等文本数据来洞察用户对产品的关注点和走势,实时掌握用户需求及动向;基于大数据的用户行为数据分析,并结合用户调研,深度掌握用户潜在需求和预期;对企业内部数据进行系统化梳理后,为企业内部数据用户搭建自助分析工具,协助企业内部数据用户(如产品经理、营销人员)灵活提取和分析数据,帮助他们进行相关研究和决策;
(2)体验优化。我们可以通过大数据构建各种用户体验监测模型来进行用户体验优化。如电商用户购买行为的漏斗模型,监控用户进入首页、查看商品产品详情、把产品放到购物车、购买以及支付等各环节之间转化率来发现用户购物过程的体验问题;通过大数据技术监测用户使用产品的评价以及时发现产品体验问题,并提交给相关产品或服务部门进行调整和优化。
业务运营监控层和用户洞察/体验优化层这两个层面终极目标是实现企业运营健康度监控的智能化,这两层面做出的工具好比是人体的体温计、血压计、B超、CT等工具,我们用这些工具就能快速透视企业运营中那一模块或者环节发生问题,以辅助相关人员进行及时的改进。
精细化运营和营销层。这一层主要的目的是通过大数据驱动企业进行精细化运营和营销。实现精细化运营和营销有六方面关键:
(1)构建基于用户的数据提取和运营工具。运营和营销人员通过简单的条件配置(如选择男性、18-24岁以及特定兴趣爱好),便可把用户信息提取出来,对相应的用户进行营销或运营活动;
(2)构建基于大数据的CRM系统。传统的CRM系统只关注企业内部数据,而大数据时代的CRM不仅仅是整合企业内部数据,还需要整合更多的外部数据,利用大数据技术获取更多实时和多元化的用户行为和偏好数据,为企业潜在用户、存留用户打标签,构建多维度及实时的用户视图,更有效掌握不同用户的价值,对不同用户实施不同的营销策略;
(3)构建基于大数据的营销活动数据挖掘体系。通过数据挖掘提升用户对营销活动的响应(如点击率),常见的数据挖掘算法有决策树、逻辑回归等,通过这些算法有效的提前识别最有可能参与活动的用户,或者发现潜客;
(4)推广渠道质量监控和防作弊。通过大数据手段建立营销推广渠道质量的监控模型,实时的监控推广渠道的效果和质量,防止渠道作弊,及时优化和挑战推广策略和预算;
(5)通过数据挖掘的手段进行客户生命周期管理,做到实时对不同生命周期的客户进行实时标记和预警,并把有效的活动当成商品一样及时的推送给不同生命周期阶段的客户;
(6)客户个性化推荐。主要是用个性化推荐算法实现根据用户不同的兴趣和需求推荐不同的商品或者产品,以实现推广资源效率和效果最大化。
业务市场传播层。这一层面要做到通过“性感”的数据分析和挖掘来辅助产品进行传播,主要有两种实现方式:
(1)制作有趣的数据信息图谱。相信大家都不喜欢看产品的公关软文,而更喜欢看好玩的有趣的内容。互联网上内容的传播更是如此。第三方数据公司CNNIC中国互联网络信息中心2014年的数据显示,10-29岁的网民占所有中国网民的55%,而这些用户偏年轻、偏“屌丝”,所以这些受众更喜欢“性感”的内容。某电商平台曾经通过统计其购买胸罩C-Cup以上的用户地区分布,发现西安的网民相对比例最多,并发布了这个数据,暗示西安女生身材好,引起不少“屌丝”网民传播。而某社交平台在则基于其8亿多活跃用户披露“逃离北上广”数据图,发现11%的用户在春节后逃离了北上广,并引起央视的深入报道;
(2)提供数据可视化产品。如某搜索引擎厂商,提供关键词搜索指数,让关注此关键词的用户可以实时掌握该关键词被网民关注的走势,在提供此服务的同时,也形成了该搜索厂商的品牌传播效应。另外一个案例是,某互联网地图服务上基于其位置定位数据,向网民展示了春节期间的全国春运出行热度图,以可视化的大数据产品形式来展现全国春运动态,网民可以在动态的出行热度图上查看某城市的人口迁入、迁出线路排行,并能进行飞机、汽车、火车等不同出行方式的热度对比,由此来知晓某地区春运的出行热度。全国春运出行热度图被央视报道,可见这样结合社会热点的数据可视化产品更被关注。
业务经营分析层和战略分析层。这两个层面更多的是运营传统的战略分析、经营分析层面的方法论,拥有大数据的企业在这两个层面的优势在于其分析的数据可以来自大数据,并且数据更新速度快,快到可以按照小时来更新甚至是分钟级的速度更新,传统的战略分析、经营分析一般是按月来统计;另外一个优势在于大数据的数据来源更多,可以对非结构化的数据进行更多的深入挖掘和洞察。但有两方面需要注意:
(1)有很多企业错误的把“业务运营监控层”和“用户洞察/体验优化层”能做的事情放在经营分析层或者战略分析层来实施。我们认为“业务运营监控层”和“用户/客户体验优化层”更多的是通过机器、算法和数据产品来实现的,“战略分析”、“经营分析”更多的是人来实现。很多企业把机器能做的事情交给了人来做,这样导致发现问题的效率较低。我们的建议是:能用机器做的事情尽量用机器来做好,尤其是“业务运营监控层”和“用户/客户体验优化层”,在此基础上让人来做擅长的经营分析和战略判断;
(2)在变化极快的互联网领域,在业务的战略方向选择上,数据很难预测业务的大发展方向,如果有人说微信这个大方向是通过数据挖掘和分析研究出来,估计产品经理们会笑了。我们认为,如果能利用数据通过机器、算法、或者人工的手段,把经营的现状和问题及原因洞悉的特别清楚已经很不错了,这样决策层就可以基于这些情况进行更好的“拍脑袋”决策。
从本质上来说,数据在业务运营监控、用户洞察和体验优化、精细化营销和运营、辅助经营分析中能起到比较好的作用,但在产品策划、产品创意等创意性的事情上,起到的作用较小。但一旦产品创意出来,便可以通过大数据AB测试,数据验证效果了。总之,本文只是提纲挈领的介绍了大数据在企业的落地方案。还有更多的细节和方法论未能展示出来,后面的文章将继续展开。
文:傅志华
关于作者:傅志华先生曾为腾讯社交网络事业群数据中心总监以及腾讯公司数据协会会长。在腾讯前,曾任DCCI互联网数据中心副总裁。傅志华先生现就职于某美国上市互联网公司大数据中心,同时任中国信息协会大数据分会理事和中国互联网协会数据分析研究组专家。
企业持续集成成熟度模型简介
构建—— 企业持续集成成熟度模型简介之一
当今软件开发领域的自动化推广相当显著,软件也越来越多的由大规模、分布式的团队开发完成,而严格的企业管理需求也是十分常见的。由此表现出来的敏捷软件开发和持续集成与企业开发项目的现实之间的碰撞也越来越显著。在软件开发的整个生命周期中,我们对自动化的投入在不断增加。在这方面的先行者已经跨过了团队级别的持续集成,而将他们的自动化成果与端到端的方案结合在一起了。这些在企业级持续集成方面的投入使得他们可以应对需求的变化,并快速交付高质量的软件,而且得到事半功倍的效果。尽管自动化有这么多的好处,但,对于自动化的采纳情况却并不均衡。比如,很多团队仍旧在手工、缓慢且高风险的部署中挣扎着;而某些团队却可以在一天内进行多次高效且足够安全的生产环境部署。其实,有很多方法或途径来改善我们的开发自动化,但是从哪里开始呢?
企业的多样性
当创建这篇指导书时,我们遇到的挑战就是:不同企业(甚至同一个企业的不同团队)都不具有统一性。医疗设备系统的某些需求可能就要比做游戏难,也可能比在电子商务网站上增加新功能要难,也可能会比创建一个内部SOA应用要难。因此,单一的成熟度模型不可能适应全部情况。因此,我们选择了企业持续集成的四个维度来衡量成熟度,它们分别是构建、部署、测试和报告。我们将每一个维度上所对应的实践归入某一等级之下,并解释为什么需要采纳(或不采纳)这些实践。通过这个模型,你可以了解业内在企业持续集成方面的平均水平,并可以据此反思,在哪些方面做得高于行业平均水平,还有哪些方面做得不足。这个模型所反映出来的评估尺度完全基于几年来数百个团队持第一手经验以及本领域的一些报告。为了解释如何使用这个模型,我们创建了三个有不同需求的企业案例。我们会分析他们的状况,并展示他们如何使用成熟度模型来计划哪些改进会给他们带来最高的投资回报率。
成熟度模型中的级别
在整篇文章中,企业持续集成不同维度的成熟级别会以相同的方式来阐述。级别分为:入门、新手、中等、进阶和疯狂。为了解释这些级别,下面我们举例说明各级别之间的关系。实例的出发点为:该过程为完全手工的,即某个工程师必须要手工执行一系列冗长且易出错的步骤来达到“将某个手工过程自动化”这一目标。那么对于这个“自动化某个过程”,它的成熟度模型如下所示:
团队最初是入门级,因为他们已经写了一些辅助脚本,用于该过程中那些特别慢或问题较多的部分进行了自动化。这种自动化的益处在于节省时间且减少错误。为了进一步提高,团队将所有辅助脚本串接起来,实现了整个过程的单一脚本自动化,即达到了中级。而这个单一脚本的回报就是:这个操作过程可以很容易交给别人去做。当团队打算提高到进阶级时,需要用某个应用软件来调用执行该脚本。这个应用软件可能在后台执行的,但一定是每次都在正确的条件、时机和位置上运行的。比如,这个应用软件可能只需要用户点一下鼠标,或者只需要在某个特定的时间调用这个脚本,自动传入一些参数来执行。
当然,进阶级或者疯狂级的定义都会随着时间的推移而改变。在持续集成诞生时,“代码提交后自动触发构建”就被认为是疯狂的,而在今天只能算是中级中的一个活动而已。
构建、部署、测试和报告
在我们的成熟度模型中,包括了四个维度,它们分别是构建、部署、测试和报告。这四个维度覆盖了整个端到端的构建生命周期,即从源代码直到产品。
构建
那种原始的以开发人员为中心的持续集成是为了从构建软件中得到快速的反馈。而当持续集成进入企业视角后,构建管理、项目之间的依赖以及构建过程上的管理控制都成为至关重要的元素了。大多数新项目一般在开始时,都是在开发机器上执行构建的,而且没有一个标准的过程。一个开发人员可能习惯于在他自己的IDE上进行构建,而另一个人可能写了一个构建脚本来做这件事。那些最不成熟的团队还会将那些使用这种过程构建出来的二进制文件部署并测试,甚至将其发布到生产环境中。这种因缺乏控制所导致的问题很快就显现出来了。因此,我们一开始就要找更好的方法。
成熟构建的第一步就是让构建过程标准化,并在非开发机器上进行正式的构建。使用非开发者机器进行构建意味着这种构建不会因开发者的机器环境发生了变化而导致污染。因为正式构建已经不在开发者的机器上进行,所以我们必然是每次都从某个固定的源文件控制中得到代码,并遵守一定的规则:比如每次都从某个分支签出最新版本,或者是打过某种标签的源代码等等。因些做到了这些之后,该团队就达到了入门级。
入门级的团队进一步采取行动,将构建步骤实现自动化执行。即构建服务器将指挥机器、按源代码签出规则得到源代码,并执行那些构建步骤,从而提供了初步受控的构建过程。典型的是:这些自动构建每日执行,尽管某些团队可能会一天执行两次以上。此时的团队就提高到了新手级。
而对中级的团队来说,他们开始更明显地关注并管理对于其它软件的依赖(包括子项目或第三方库)。中级使用依赖管理库来追踪这些库文件,并在构建时提供这些库文件,而不是使用某种口头约定方式。同样地,那些可能被其它构建所引用的构建也会通过依赖管理工具将其自身放在这个库中以便其它构建来引用。达到这一级别的控制后,自动构建就是很容易做到的了,而且也提供更有价值的反馈。中级团队采纳了持续构建(即每个开发人员提交时就自动构建或当依赖发生变化时)。所有的构建结果都被保存(可能放在一个网络服务器上,或干脆就在持续集成服务器上),并进行周期性的清理并标签以方便识别。规模大一些的团队将使用分布式构建设施来并行处理数量众多的构建。此时,对于很多组织来说,可以说满足了他们的需求。
对于更正规的组织(比如企业级)将会进一步做到进阶级,以控制构建过程。在这种环境下,团队象追踪源代码和依赖的变化一样,对构建过程的变化也进行记录跟踪。修改构建过程需要经过批准,对于登录官方构建机器,修改构建服务器配置等都是严格控制的。对于那种“服从是一个要素”的地方或那种将企业持续集成已成为一个生产系统的地方,应该将进阶级的受控构建过程做为目标。而对于没有这方面要求的其它团队来说,中级也就可以接受了。
另外,某些组织的管理控制规则更加严格,且要求必须能够完美地重新构建从前的发布版本(比如需要拿到与一年前的某次构建产物一模一样的产物)。这些组织将使用各种各样的技术来确保每个环境的可重复性。一些可能会有缜密细致地被版本控制化的脚本,在开始运行构建之前从安装操作系统开始来准备构建机器。另一些可能使用做好的虚拟机镜像来做类似的事情。我们把这种控制级别定义为疯狂级。因此,一些团队可能不需要达到这种方式。因为可能负担太大而收益太少。
部署—— 企业持续集成成熟度模型简介之二
部署是指将软件移动到它被测试的地方,或用户指定的某个位置,准备送给客户。对于web应用来说,这可能意味着将软件安装到某个web服务器上,并更新数据库或静态内容服务器。而对于一个视频游戏来说,这个测试部署可能是指安装这个软件版本到某些测试机器上,而产品部署则可能是指烧录一个光盘并给发行商。
部署最开始一般都是手工过程。部署工程师从某处拿到部署文件,再把它放到目标机器上,然后开始正式的安装过程。然而,这种手工过程会比较慢,而且部署失败率也可能要高一些。工程师常常被迫在晚上或周末加班,进行测试环境或生产环境的部署,因为这些环境平时需要正常运行,不能轻易地停止。更糟糕的是:每个环境很可能使用了不同的步骤进行手工操作(比如步骤前后顺序颠倒,这尤其容易发生在不同的操作人员之间),几乎无法保证:在某个环境上的成功部署表明在下一个环境中部署成功的可能性也同样高。
对于团队来说,抛弃完全的手工过程,使用一些辅助脚本或全过程脚本化是一个非常巨大的进步。纵观整个行业,大多数团队都会有一些辅助性脚本,但有完全脚本化部署方式的团队较少,特别是在受控环境中(如试运行环境或生产环境)。因此,业内在这方面的平均水平应该是在入门级。
而中级团队善于进行测试环境上的自动化部署。他们完全通过脚本以一键部署的方式在部分或全部的测试环境中进行部署。这大大解放了部署工程师,而且减少了测试人员因等待部署而浪费的时间。就像持续构建是中级构建团队的的特征一样,自动地部署到第一个测试环境是在部署这一维度上中级成熟度的标志。根据团队的动态性,在不打断测试人员工作的情况下,这种测试环境的自动部署应该发生在任何一次成功的持续构建之后或一天内的周期性部署。中级团队的最后一个特征是:建立标准化的各种环境部署顺序。虽然可能还会有一些环境变数,或两种部署方式,但在某个版本的全生命周期中(即从生产到部署上线),越早地成功部署,就意味着后续部署成功的可能性更大。达到这个级别是很多团队的目标。而进阶团队则把视线转到受控环境或生产环境上。部署到生产环境(或发布)只要按一下鼠标就行,生产环境发布就被自动触发,并有相应的发布版本可以进行灾难恢复。那些已经部署到内部测试环境的团队应该将目标定位到“进阶”:如果在所有环境中进行完全一致的部署过程,那么在生产环境部署时,会极大地减少最后一刻失败的可能性。进阶级团队的另一个特征是:将通过前面通过质量测试检验的版本全部自动地部署到部分或全部测试环境中。例如,得到测试经理的批准后,让某个构建版本自动地安装到压力测试环境中。
而疯狂级的团队的目标是“持续部署”,即自动部署到生产环境中而无需手工干预:得到一个版本后,自动部署到一系列的测试环境中。经过整个构建管道中的所有阶段,并且能通过所有的测试后,自动部署该版本到生产环境中。某些.com应用可以在一个小时之内就完成从源文件控制到发布的整个过程。显然,此时的自动化测试必须非常成熟,而且具有自动回滚和相应的监控手段。但是,在快节奏的竞争环境下,极其迅速地部署新功能也是一个核心竞争力,可以减轻大规模功能变更的风险。
测试—— 企业持续集成成熟度模型简介之三
持续集成一直同自动化测试相关联。这在马丁福勒的文章或更早期Steven McConnell对日构建和冒烟测试的相关实践描述中都有提及。而且在企业持续集成的领域中,我们会考虑很多种类型的自动化测试和手工测试。尽管如些,很多团队在测试方面还是比较弱。很常见的一个版本发布场景就是:某个团队完成一个版本后,手工测试一下基本功能就发布了。而其中的某一部分总是出错,而新功能也只做了少量测试。如果团队在测试方面比较成熟的话,他们能很快发现问题或缺陷,从而在生产率和信心方面都会有所增加。
目前,大多数团队或多或少都会有某种形式的自动化测试。比如一小撮单元测试套件或一些脚本化的测试,用于确保软件的基本功能是可以工作的。这些基本的自动化回归测试能够较早及比较容易地发现那些基本功能性问题。入门级的团队 通常刚刚开始习惯于做这种自动化测试。
为了达到新手级成熟度 ,应该有一套快速测试在每次构建时都运行。这些测试给团队增加了信心:软件基本上在任何时间都能工作。测试一旦失败,开发团队会得到即时通知,从而在他们忘记这个问题的上下文之前就有机会去修复这些失败的测试。因此,对于这一级别来说,对测试失败通知的响应是非常重要的:如果一个团队测试失败却不响应的话,那它应该低于测试成熟度的入门级。
中级成熟度 的团队会在这些同快速构建同时执行的测试的基础之上,扩大测试范围。企业持续集成的成熟测试是以多种多样的测试集合为特性的。一个中级团队不仅有快速测试和手工测试,而且还有自动化的功能测试。中级团队常常让持续集成系统同时运行一些静态源代码分析。静态分析可能不是每次都运行,但一定会周期性运行。而且一旦产生了某种严重的静态质量问题的话,一定修复之后才能发布。
进阶级成熟度 是以“完整测试”为标志的。每种测试都提供其所能提供的最大价值。单元测试覆盖了系统中所有复杂代码与逻辑。功能测试覆盖了系统中所有的重要功能。也会有边界测试和随机测试。同时,还要频繁运行静态代码分析,并补充以工具支持的运行时分析和安全扫描来发现那些可能因测试不足或无法测试而遗漏的问题。测试可能被分配在多种系统下运行,以使能并行执行,从而提供快速的反馈。达到进阶级需要相当大的投入,然而对于那些缺陷的成本很高且需要能够保持高速前进的团队来说,对是非常重要的。假如没有这类需求的话,一般来说,中级可能是一个更适当的目标。
在极端的情况下(也就是疯狂级成熟度 ),某些团队追求100%的测试覆盖率。尽管100%测试覆盖率的定义在变化,但它反映出至少每行代码都被测试覆盖到。在某些软件中,存在一个收益递减的点,在这一点上,对某行代码的自动化测试的价值要小对写测试的成本。追求100%的测试覆盖率意味着团队会做一些浪费的测试,然而其目的有可能是阻止因某些测试很有价值但很难写而不写测试找藉口。满足并保持100%的测试覆盖率可能也是一个自豪感与动力的源泉。对于进阶级团队来说,如果曾经发现的确错过了一些非常重要的测试的话,要求100%的测试覆盖也未尚不可。但对于大多数团队来说,简直可以说是变态啦。
报告—— 企业持续集成成熟度模型简介之四
持续集成工具一直以来就负责报告最近一次构建的状态。报告是持续集成的一个至关重要的元素。在企业持续集成中,报告应包含所做软件的相关质量和内容方面的信息,以及与企业持续集成过程有关的度量信息。没有报告的团队就象一个没有雷达的飞机在飞行。如果没有人看测试结果的话,所有的测试都是无用的。同样,很多数据如果没有被提取成可消化利用的信息的话,就很难使用,一样可以视为无用。越成熟团队的报告,其可视化程度越高,有用的信息也会越多。
很多工具在构建过程中都会产生报告。在一个团队中,如果某人利用一些工具来产生报告,并分析它,之后会根据它来做出行动的话,这个团队就已经是入门级成熟度 了。注意:此级别上,如果团队的其他人想利用这些数据做些事情时,需要联系这个人,索要相关信息。当到了新手级成熟度 时,每个角色组(开发、测试、部署等)都会公布这类信息。一个构建服务器也可能提供一些信息,比如哪些代码变化了,源代码的分析报告、单元测试结果或编译错误等。测试人员也会公布他们自动测试和手工测试的结果报告。部署与发布人员会公布某个版本在生产环境的运行时长、记录的缺陷,以及发布速度等信息。但每个角色几乎各自为战,跨角色信息传递通常是手工完成的。事实上,这个级别应该是业内的平均水平,尽管很多企业有比较强大的跨角色或部门的展示能力。
中级成熟度 则有两个比较大的变化。第一个是每个角色组的关键信息集合可以被整个团队的其它人员访问。测试人员可以看到开发部分的信息:比如从上次测试人员测试过的版本到目前的版本有哪些文件变化了;开发人员能够知道测试人员正在测试哪个版本,目前的测试结果如何等。每个参与到版本生命周期的人都至少会得到对其有用的总结报告。有了更高的可视化程度,那么用于沟通基本数据所用的成本会减少,从而依据报告进行相应工作的时间就增加了。第二个是有历史报告。即不但有最近的活动报告,而且有过去的报告。比如可以拿出过去发布的测试数据与当前发布的数据进行对比。团队不但知道最近测试通过率是95%,还知道加了多少个测试,删除了多个测试,或者哪些测试之前通过了。95%的通过率比昨天的结果好,还是坏?我们是应该高兴,还是需要继续努力让它更高?
而进阶级团队 能够利用历史报告信息进行趋势分析。中级团队记录了每个测试的失败,而进阶级团队利用报告分析出哪些测试经常被破坏。还可能分析出修改哪些文件后更有可能使单元测试失败?哪些会让功能测试套件失败?通过识别那些经常出错的代码帮助团队来发现哪些代码应该多加测试或进行重新设计实现。在特定的报告中,会有从不同的竖井(不同的角色团队)汇总在一起得到的数据,并互相迭加引用。进阶级团队也是真正使用这些特定报告并会采取相应行动的团队。生成这些可操作的跨功能团队的报告应该是企业持续集成的目标。而疯狂级报告是关于预测的。这样的疯狂级团队会收集每次交付客户之后得到的反馈度量信息,如从缺陷报告和接收到的技术支持的需求抽取相关信息。根据当前的一次发布与过去的某次发布之间的数据对比,团队应该可以预测在发布后的第一周内技术支持的压力有多大(比如,可能会接到多少个问题反馈)。在这种模式下,他们可能问更多有意思的问题,而不只是简单的问一下“我们的特性都做完了吗?”
企业高管个人离职的25个原因
10、不喜政治斗争
13、年老病衰、自然退役