《超越需求:敏捷思维模式下的分析》—第2章 2.4节发现和交付

2.4 发现和交付
第三种对分析分类的方法根据我们何时进行分析来分类。划分活动常常很有用,这可能是人们喜欢基于计划的方法所描述的各种阶段(分析、设计、开发和测试)的原因之一。将知识工作分解为不同活动有一定优势,因为没有哪一个人能擅长知识工作的每个方面,所以把活动分为不同的类别显然有助于把事情分解为可管理的工作,并把焦点集中于不同的方面。

但组织这些工作的最好方式是什么呢?当人们引用Winston Royce被视为瀑布计划之源头的论文(www.serena.com/docs/agile/papers/Managing-The-Development- of-Large-Software-Systems.pdf)时,通常直接聚焦到展示了几个不同阶段的图上,而这几个阶段是在创建大型系统时会发生的。但在第一页有一个很有意思且常被忽略的图,它只包含两个框,即“分析”和“编码”,并带有下面一段说明:

在所有计算机程序开发中,无论大小和复杂度如何,有两个基本步骤是一样的。如图1所示,首先是分析步骤,然后是编码步骤。如果工作量足够小并且最终产品由建造者进行操作,那这种非常简单的实现概念实际上就是所需要的全部工作——内部使用的计算机程序通常就是这样。这种开发工作也是大多数客户愿意付钱的,因为这两个步骤涉及真正的创造性工作,对最终产品的有用性产生直接贡献。
Royce继续说到这种方法完全不适合大型软件开发项目,并揭示了他对如何看待软件开发团队的一些哲学:

制造大型软件系统的实施计划如果只有这些关键步骤,注定将失败。很多额外的开发步骤是需要的,但没有步骤像分析和编码步骤一样直接贡献于最终产品,而且还推升了开发成本。客户通常不愿意为此付钱,开发人员也不愿意实施这些步骤。管理的首要职责就是把这些概念推销给这两组人,并在开发人员方面执行合规检查。
虽然我不同意这段话中的所有观点,但我发现Royce专注于分析和编码作为客户价值的两个活动很有意思。我一直在寻找一些简单直接的方式描述IT项目中的关键活动,根据经验,我倾向于把它分为“找出正确的事物来创建”和“正确地创建事物”。

Ellen Gottesdiener和Mary Gorman在他们2012年出版的《Discover to Deliver》一书中找到了合适的词语来传播这些概念。那就是:发现和交付。这两个词不仅具有头韵,而且两位作者进一步用一个无限符号包起来这两个词以表示这两个活动如何交互并彼此影响,从而进一步巩固了这些概念。终于有人听到了这些概念,Royce一定很欣慰。

这里是Gottesdiener和Gorman对发现和交付的定义,我将在本书中继续使用这样的定义。

发现:探索、评估并为潜在交付确认产品选项的工作。

交付:把一个或多个已选择的候选解决方案转化为产品可发布的部分或产品版本的工作。
这个概念最有用的方面是有一个标签与不同类型的活动关联。过去团队已经从交付角度跟踪进展,但经常没有可视化发现活动。跟踪寻找正确事物的进展和跟踪构建解决方案的进展一样有用,因而我常常将发现看板和交付看板分开,这将在第15章详细介绍。

知识工作的方方面面都涉及发现的因素。当我们在创建、测试并部署解决方案时,仍然在“发现”关于需要和解决方案的知识。区分这两个活动以强化每个活动的焦点是有益的。发现会增加针对需要和解决方案的理解,以便交付。交付主要是关于创建、测试和部署产出,而这些活动有助于进一步理解需要和解决方案,这反过来影响你的发现。当然,发现在交付过程中仍会发生,但主要工作是创建事物以帮助增进理解。

那么设计在哪里呢,为什么没有被称为一个单独的活动?一些设计发生在发现活动中,而一些设计发生在交付活动中。发现活动中的设计通过使用设计思维(design thinking)技术获得对用户更好的理解,通过模型、实例和验收条件(将在第14章介绍)描述解决方案。BABOK v3区分了需求和设计,如表2-5所示,然后说到:“需求和设计之间的区别并不总是那么清晰。同样的技术被用来需求获取、建模和分析这两者。需求会产生设计,这反过来可能推动发现并分析更多需求。两者间重点的转换往往是微妙的。”

团队基于技术选型和架构限制,在搞清楚如何在技术上实现用户故事的过程中,设计就会发生。团队针对设计展开初步讨论,但随着经验增加会修改对设计的理解,这一过程中设计活动与开发和测试交织在一起。

因此,把设计作为一个单独活动不会对整个流程增加任何价值,并且还会导致毫无意义的争论——一个活动条目是在发现活动、设计活动还是交付活动中,然而在发现(准备进行迭代)和交付(迭代交付)之间明确的划分会得到更加清晰的界限。

时间: 2017-05-02

《超越需求:敏捷思维模式下的分析》—第2章 2.4节发现和交付的相关文章

设计师的思维模式:敏捷体验设计师的思维模式

文章描述:敏捷体验设计师具备的5种思维模式. 我们有个香港的设计师哥们,整体穿着裙裤,Nike Airforce的珍藏版,一开口就是:满他力体(Mentality)我打算给翻成思维模式.他的意思是,设计师需要不太一样的思维模式.我就在思考这个问题:到底一个敏捷体验设计师需要些什么样的思维模式? 共情Empathy 共情的话题曾经在这篇博客中提到,核心观点是你得明白,作为一个设计师,你基本没有为自己设计的可能,而你所面对的未来用户,可能跟你想的完全不同. 共情设计(Empathic Design)

Apache Spark源码走读(五)部署模式下的容错性分析 &standalone cluster模式下资源的申请与释放

<一>部署模式下的容错性分析 概要 本文就standalone部署方式下的容错性问题做比较细致的分析,主要回答standalone部署方式下的包含哪些主要节点,当某一类节点出现问题时,系统是如何处理的. Standalone部署的节点组成 介绍Spark的资料中对于RDD这个概念涉及的比较多,但对于RDD如何运行起来,如何对应到进程和线程的,着墨的不是很多. 在实际的生产环境中,Spark总是会以集群的方式进行运行的,其中standalone的部署方式是所有集群方式中最为精简的一种,另外是Me

PHP CLI模式下的多进程应用分析

PHP在很多时候不适合做常驻的SHELL进程, 他没有专门的gc例程, 也没有有效的内存管理途径. 所以如果用PHP做常驻SHELL, 你会经常被内存耗尽导致abort而unhappy 而且, 如果输入数据非法, 而脚本没有检测, 导致abort, 也会让你很不开心. 那? 怎么办呢? 多进程-. 为什么呢? 优点: 1. 使用多进程, 子进程结束以后, 内核会负责回收资源 2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程. 3. 一个常驻主进程, 只负

互联网模式下的测试数据中心,小白也能高效构造数据

11月2日,云效第三期Work Like Alibaba系列直播开启,阿里巴巴研发效能事业部云效技术专家何卫龙,分享了<测试数据中心-互联网模式下新型的数据准备引擎>,主要解决测试过程中数据准备困难,以及如何提升数据准备效率的思路和方法. 主播简介 何卫龙:阿里巴巴技术专家.一直从事软件开发测试及系统架构设计工作,对测试工具平台的开发架构有一定的经验.目前是云效持续集成平台Amon.测试用例管理系统pivot和测试数据中心databank的技术负责人,主要负责平台的技术规划和产品建设.在此期间

流程管理模式下的营运资金管理

一.引 言 为了适应技术和市场环境的变迁,越来越多的企业将管理的重心从职能部门的权威控制(职能管理)转向了业务流程的持续改善(流程管理),以增强自身的弹性和敏捷性.在激烈的市场竞争中赢得先机.在流程管理模式下,业务流程处于核心地位.职能部门的职责只是辅助流程活动的开展,于是流程运行的效率决定了企业经营活动的成败.营运资金是业务流程中的"血液".营运资金的管理水平决定了业务流程的运行效率,因此营运资金的管理成为流程管理的中心和企业取得竞争优势的关键.虽然人们已经认识到了营运资金在流程管理

Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?

构成ASP.NET Web API核心框架的消息处理管道既不关心请求消息来源于何处,也不需要考虑响应消息归于何方.当我们采用Web Host模式将一个ASP.NET应用作为目标Web API的宿主时,实际上是由ASP.NET管道解决了这两个问题.具体来说,ASP.NET自身的URL路由系统借助于HttpControllerHandler这个自定义的HttpHandler实现了ASP.NET管道和ASP.NET Web API管道之间的"连通",但是在Self Host寄宿模式下,请求的

新闻发布系统,B/S模式下的三层应用

三层的学习已接触四五个月了,最早是在学习VB.NET视频中开始接触的,那时候跟着视频敲了两个例子.再后来,个人机房重构的时候,从三层进步到了七层,此后就觉得我们不能仅仅局限于三层之上. 不过,那些都是C/S模式之下的编程.到现在,接触了B/S模式也一个多月了,第一个牛腩新闻发布系统觉得很是有趣,还是从最基本的开始,下面就一起看看B/S模式下,三层是怎样应用的.这篇博客就以添加新闻的实例来总结. 对于三层的整个过程大家都是很熟悉的了,那么在这里就不再赘述了,直接一层一层来分析. 一.思路整理. U

openvpn tun模式下客户端与内网机器通信

一.实际问题 先来介绍下目前的基本情况,如下: 1.openvpn服务器单网卡,通过硬件防火墙把openvpn服务器的1194端口映射到公网. 2.openvpn服务器所在的网段为192.168.5.1/24网段 3.openvpn客户端获得IP地址为10.8.0.1/24网段 要求10.8.0.1/24网段能访问192.168.5.1/24网段的服务器. 通过前两篇文章,可知我们现在的openvpn客户端已经可以正常连接openvpn服务器,但是还不能和公司内网的其他机器进行正常通信.如下:

core模式下部署域控制器[为企业部署Windows Server 2008系列六]

在上一回 <一步步开始集中管理[为企业部署Windows Server 2008系列五]> 一文中我们在完 全安装模式的server 2008 中安装了域控制器,我们知道windows server 2008 还支持core模式(核心 安装模式).对于负载比较大的域控制器,为了增加他的性能,我们也可以在core模式下部署域控制器 .这样我们的域控制器性能和稳定性都会大大增强.很多朋友害怕core模式下的命令,或者担心不好管 理(毕竟core模式安装的系统是没有图形管理界面的).那么,在这里给大

Oracle IMU模式下REDO格式详解

1. 什么是IMU?IMU的主要作用是什么,也就是说为了解决什么问题? IMU--->In Memory Undo,10g新特性,数据库会在shared pool开辟独立的内存区域用于存储Undo信息, 每个新事务都会分配一个IMU buffer(私有的),一个buffer里有很多node,一个node相当于一个block(回滚块). IMU特性: IMU顾名思义就是在内存中的undo,现在每次更改data block,Oracle 不用去更改这个undo block(也不会生成相应的redo了