《需求设计:构建用户想要和需要的产品》——3.6 迭代

3.6 迭代

迭代可以分为三种:
1.系统测试迭代(systems test iteration)。每位程序员都有一些工作要完成,他们对写好的代码进行本地测试(例如,在程序员自己的计算机上测试),然后将其载入系统测试环境之中。接下来,执行新版的系统测试。此时我们有可能会发现一些版本不匹配的问题,也有可能探查出程序员之间对工作的一些误解。频繁地进行系统测试迭代,可以尽早消除这些问题,从而使项目能够更为顺畅地推进。
2.设计迭代(design iteration)。我们有时会把新的系统测试迭代所产生的成果,展示给利益相关者看。他们看完之后,有可能提出要对设计进行修改。如果采用情境驱动设计来制作这个项目,那么这样的改动一般来说是比较小的。如果改动幅度确实很大,那我们可以回到情境设计层面来分析利益相关者所提出的改动要求,并查看将要改变的这些任务之间,具备什么样的依赖关系。对于任何一个大型项目来说,我们顶多只会把新版本展示给其中一小部分利益相关者去看。我们有可能要在不同的时间把应用程序分别展示给这些利益相关者,然而有些场合需要一些判断力,例如,如果你意识到这些利益相关者会产生意见分歧,那么你就应该把新版本同时展示给双方看,以免出现其中一位要求这样做,而另外一位却要求那样做的尴尬局面。
3.用户迭代(user iteration)。这指的是向终端用户发布产品。有些时候,在发布终端用户版本之前,必须先进行硬件安装/培训。此外,很多用户都不希望应用程序变化得太过频繁,因此要确保新旧版本之间不会差得太远。我们不应该草率地进行用户迭代。
这些迭代可能会对当前所要管理的系统测试版本数量提出一定的要求。我们可能需要维护编程团队所使用的最新版本以及最新的稳定版本,需要维护展示给利益相关者的最新版本,而且也需要维护发布到生产环境之中的最新版本。此外,或许还有其他一些版本需要管理。管理这么多的版本,是很耗费时间的,尤其是我们需要把同一个bug的修复补丁,推送到多个版本之中。
从前有很多人讨论过迭代的时机与频率问题。笔者认为,与利益相关者和用户有关的迭代,通常是由外部事件所驱动的,它们的发生频率,不像开发团队所期望的那样高。但笔者坚信:当我们可以看到整个设计的全貌时,最好是应该对迭代进行管理。这使得我们可以更好地安排各种特性之间的优先顺序,并且更好地观察出各项变化之间依赖关系,从而能够将其更为明智地归入不同的特性集之中。

时间: 2024-09-24 21:23:51

《需求设计:构建用户想要和需要的产品》——3.6 迭代的相关文章

《需求设计:构建用户想要和需要的产品》——3.9 把现有的做法运用到情境驱动设计之中

3.9 把现有的做法运用到情境驱动设计之中 上面几节分别谈了迭代.品质以及测试和检验等,其实对于这些内容来说,有人比笔者谈得更为广博,也更为深入.我们可以用一句话来概括前几节的内容,那就是:"要采用最佳的做法."笔者首先拿实现阶段做例子,来讲述我们所应该采用的做法: 以用户界面的设计方案为指导,把工作分成多个单元,并计算每个单元含有多少个功能点.这些单元要尽量划分得小一些,使得每个单元能够在2-4周内完成. 程序员必须把能够运行的代码放在系统测试环境之中顺利演示出来,然后才算完成了这个

《需求设计:构建用户想要和需要的产品》——3.11 小结

3.11 小结 大家可能会发现,笔者在讲述自己的这套IT设计方法时,有很多地方都没有谈到.笔者没有像其他设计方法的讲述者那样,对原则.做法.策略.会议以及任务版等内容进行讲解.之所以这样做,是因为情境驱动设计本身并不想发明一套最佳做法,而是想把其他设计方法之中已有的那些做法移用过来.例如,如果我想把设计阶段做得较为自由一些,那我就会采用类似于当前敏捷项目的做法来进行编程.即便采用设计先行的办法,也依然可以分成多个阶段来发布,依然可以把工作量拆成小块,以便渐进式地进行交付,并且依然可以把最新版本展

《需求设计:构建用户想要和需要的产品》——3.3 用例

3.3 用例 在前面几节之中,笔者对敏捷开发做了批评.除了敏捷开发,目前还有一种比较流行的做法,那就是通过编写用例来捕获需求.这一节要讨论用例与情境设计之间的区别. 用例,本质上是用一系列带有序号的步骤,来对场景进行简单的文字描述,就此而言,我们可以在各种详略不同的层面上撰写用例.此外,还有一些用例图可以展示每位参与者所使用的用例,以及用例之间的扩展关系,这里所说的参与者(actor),与情境设计之中的用户组有些相似.笔者稍后会讨论什么叫做"扩展".用例图与笔者所说的情境图看起来很像,

《需求设计:构建用户想要和需要的产品》——2.8 这样做真的是工程化的设计吗

2.8 这样做真的是工程化的设计吗 笔者提出的六框设计模型,与经典的工程组件分解图并不完全相同.因此,有人会问,这样做真的能像第1章所说的那样,实现工程化的设计吗?这个问题不能简单地用是或否来回答.在建筑学和机械工程学之中,宏观设计图与组件设计图的绘制方式是相同的,都需要确定一些形状及表面,而且所有的组件都有其尺寸及重量.此外,从顶层设计到底层设计之间的层数,是没有限制的,换句话说,可以把组件分成子组件,再把子组件分成更小的子组件,这种划分可以多次执行.然而,对IT软件开发所做的设计,却不是这样

《需求设计:构建用户想要和需要的产品》——2.3 集成设计

2.3 集成设计 集成设计的主要目标是: 把任务划分到各个应用程序与服务之中. 决定数据表与数据库之间的指派关系. 以应用程序之间所传递的消息为视角,来定义集成方面的需求. 对于其他更为详细设计的来说,集成设计确定了这些设计的范围.用户界面设计可以针对每个应用程序或服务分别来做(对于服务来说,其用户指的是另一个程序),数据库设计可以针对每个数据库分别来做.尽管技术设计也可以针对每个应用程序或服务分别来做,但是在大多数的公司里面,我们都可以令多个应用程序与服务共用同一套技术设计.图2-5演示了如何

《需求设计:构建用户想要和需要的产品》——2.4 技术设计

2.4 技术设计 集成设计之下的那一层,可以分为三个领域:技术设计.用户界面设计与数据库设计.本节讨论技术设计.技术设计有两大目标:1.设计出可以满足非功能型需求的解决方案.2.设计出可以尽量简化功能编程的解决方案.非功能型的需求,是指那种与业务工作并没有直接支持关系的需求.它们包括: 所应满足的吞吐量及响应时间. 可用性方面的目标. 灾难恢复方面的要求. 安全设计.你需要知道应用程序的安全漏洞.修复这些漏洞的办法,以及系统监控与系统管理工作的执行方式与执行地点. 系统操作和系统管理的易用性.

《需求设计:构建用户想要和需要的产品》—— 导读

https://yqfile.alicdn.com/6ec696e3acab5ead903c7f9a25ac9ef090aeb814.png" > 前 言Designing the Requirements: Building Applications that the User Wants and Needs在对IT应用程序开发思考了大约15年之后,我终于写出了这本书.20世纪90年代后期,我开始做IT架构,当时写了一本名叫<IT Architecture and Middlewa

《需求设计:构建用户想要和需要的产品》——第1章 情境驱动设计入门1.1 对需求进行设计

第1章 情境驱动设计入门 本书讲的是如何设计IT应用程序.笔者写这本书,是想建议大家采用与原来不同的办法去做设计,尤其是想进行下列三项变革: 要使人意识到自己并不是在收集IT应用程序的需求,而是在设计它们.对应用程序所做的设计工作,正是建立在这样一种认知之上. 要把程序的设计做得像工程学一样,特别是要在实现之前先对设计进行分析,并寻找其中的缺陷. 要确保当前所开发的应用程序能够与现有的或同时开发的其他应用程序协同运作,以创建出一套连贯的IT架构. 本书要谈论如何思考应用程序的设计,以及如何对设计

《需求设计:构建用户想要和需要的产品》——第2章 设 计 体 系2.1 为什么应该建立设计体系

第2章 设 计 体 系 第1章说过,要想做工程化的设计,就必须有一套设计体系.那么本章我们就来看看能不能为IT软件的开发工作构建出一套具有工程学水准的设计体系,并且看看我们是否值得去构建这样的体系.本章分为三个部分.2.1节从下至上检视整个设计体系,以解释我们为什么应该建立该体系.接下来的2.2节-2.7节,用从上至下的方式来观察这套体系,使大家对设计之中的信息流动情况有所了解.把这套体系中的所有部件都展示出来之后,笔者会在2.8节之中回到本章开头所提出的那个问题上面.最后的2.9节是对本章所做

《需求设计:构建用户想要和需要的产品》——1.2 什么是设计

1.2 什么是设计 设计是个很常见的说法,没有几个人会深挖它的含义,但如果仔细想一想IT应用程序的设计与一般的设计的区别,你就会发现,IT应用程序其实是很特殊的.这种特殊性促使我们思考一个问题:应用程序的设计真有这么特殊吗?或者说,我们是不是将它看得太过特殊,以致忽视了一些最为基本的共性? 首先,我们来定义设计这个词.设计,是对想要构建的事物或系统所做的概念化处理.设计(design)既是名词,又是动词.刚才定义的是名词,现在我们给出动词的定义:(作为动词的)设计,就是指创建设计方案. 笔者故意