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

3.9 把现有的做法运用到情境驱动设计之中

上面几节分别谈了迭代、品质以及测试和检验等,其实对于这些内容来说,有人比笔者谈得更为广博,也更为深入。我们可以用一句话来概括前几节的内容,那就是:“要采用最佳的做法。”
笔者首先拿实现阶段做例子,来讲述我们所应该采用的做法:

  • 以用户界面的设计方案为指导,把工作分成多个单元,并计算每个单元含有多少个功能点。这些单元要尽量划分得小一些,使得每个单元能够在2~4周内完成。
  • 程序员必须把能够运行的代码放在系统测试环境之中顺利演示出来,然后才算完成了这个工作单元。代码通过演示之后,系统测试组的成员要设法暴露出程序之中的错误,把所有bug都呈现出来。
  • 先在团队内部做代码检查,然后再将其放入系统测试之中,等到把代码放入系统测试之后,请外部人员再做一次代码检查。
  • 把程序员完成其工作单元所花的时长记录下来,并且把完工之后所发现的错误数量也记录下来。我们必须要从这些统计数据之中有所体会,否则记录这些数据就没有意义了。每隔几个月,就应该对这些统计结果进行讨论,并据此改进员工与团队的做法。

上述做法与Scrum[13]及Kanban[21]等开发方法所提倡的最佳做法相当接近,其区别在于,我们的做法是先设计用户界面,然后再划分工作单元,这要比先划分工作单元然后再设计用户界面简单得多。
不过,上述做法只适用于实现阶段,而对于项目管理的早期阶段、情境设计阶段以及详细设计阶段来说,则需要用明显不同的办法加以应对。只有那种自我导向、自我激励式的团队,才能较为务实地完成情境设计。他们的工作量不太容易分割成明确的工作单元,而且其工作时长,也特别依赖于他们是否能及时联系到利益相关者,以及大家是否能够形成较为广泛的赞同或反对意见。对于集成设计、用户界面设计与数据库设计来说,也是如此。但是,这并不意味着设计项目不应该经常进行评审。实际上,设计团队应该欢迎有人来做评审,因为这比较容易确保设计方案能够满足利益相关者的要求。
把需求设计与编程实现交织起来,会产生一些问题,其中的一个问题是:它迫使我们必须按照相同的办法来管理整个项目,于是,我们就无法在不影响产品交付的前提下,灵活地针对设计方案之中的某一个方面进行争辩。
技术设计比前面几种设计更难办。如果项目比较急,那么技术设计的探索部分,完全可以放在情境设计还没完工的时候就开始做,因为我们只是想对应用程序的规模与性质有一个了解。虽说细节问题要等到集成设计完工之后才能敲定,不过情境设计很有可能会给集成设计提供大量信息,因而能够较早地知道其内容。技术设计与系统软件的设计较为接近,但是它与典型商用软件的编程工作之间,毕竟还是有一些区别的:

  • 它的利益相关者是程序员、安全专家、营运经理、网络管理者及情境设计者。这些人并不是一般意义上的业务经理,他们都具备某些专业技术知识。
  • 想把工作量清晰地划分成那种可以在2~4周内完成的工作单元,是特别困难的。

即便对于采用敏捷式开发方法的小型团队来说,笔者也依然建议定期地举行协调会议,就算要做的项目非常大,我们也还是应该如此。团队中的每一位成员,都应该拿出一定的时间,来检查其他团队成员所写的代码。

时间: 2024-11-05 14:49:13

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

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

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

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

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架构. 本书要谈论如何思考应用程序的设计,以及如何对设计

《需求设计:构建用户想要和需要的产品》——3.4 成本估算问题

3.4 成本估算问题 IT项目,尤其是大型IT项目,可能会面临一个比较严重的问题,那就是项目的时间会超过预定的工期.开销也会突破预算,而且超出的幅度通常还比较大.有可能正是这个原因,所以业务经理对IT应用程序的开发工作所发的脾气,要比对其他事情更大.说得直白一些,要想把重要的业务决策做好,就必须知道各种方案所花的成本.当前的IT界在估算项目所要投入的精力时,一般的做法是采用功能点(function point)机制.这套估算机制的基本思路,是选取一个工作单元,计算用户输入的次数.输出给用户的次数

《需求设计:构建用户想要和需要的产品》——第3章 复用现有的方法及做法 3.1 敏捷

第3章 复用现有的方法及做法 笔者在前言中说过,BDUF与敏捷设计是有些冲突的.那么情境驱动设计是不是BDUF设计的一个变种呢?或者说,它是不是也具备一点敏捷开发的气息呢?本章的一项目标,就是要摆正情境驱动设计与其他现有设计方法之间的相对位置.笔者并不打算详细描述敏捷方法及BDUF方法(假如要详细描述它们,那还得再写几本书),但是会讨论这些方法背后的概念.此外,本章还有一项目标,就是要解释现有的这些方法之中,有哪些地方可以吸收到情境驱动设计里面,但愿咱们都能找到很多个可供借鉴之处.笔者知道,看这

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

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

《需求设计:构建用户想要和需要的产品》——3.10 学习型的组织

3.10 学习型的组织 如果IT部门的员工能够采取积极措施来改进其技能与流程,那么IT部门里的很多困难就可以得到缓解.IT部门应该通过下列做法,将自己变成一个学习型的组织. 记录项目的各项指标. 分享设计方案,并为设计工作制定最佳做法. 在部门内部就整个项目或其中的某一方面做展示,以呈现其发展态势的优劣. 给程序员一定的时间(可能是在两个项目之间),让他们去尝试新的技术. 与其他部门分享这些经验. 像是情境驱动设计这样的设计框架,有助于促成这种学习氛围.我们应该找出本组织的弱项及强项,并找到改进

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

3.6 迭代 迭代可以分为三种:1.系统测试迭代(systems test iteration).每位程序员都有一些工作要完成,他们对写好的代码进行本地测试(例如,在程序员自己的计算机上测试),然后将其载入系统测试环境之中.接下来,执行新版的系统测试.此时我们有可能会发现一些版本不匹配的问题,也有可能探查出程序员之间对工作的一些误解.频繁地进行系统测试迭代,可以尽早消除这些问题,从而使项目能够更为顺畅地推进.2.设计迭代(design iteration).我们有时会把新的系统测试迭代所产生的成

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

2.9 小结 笔者以业务应用程序为重点,展示了IT应用程序的设计轮廓.本章概述了每一种设计所要做的事情,以及这些设计之间的信息流动情况,这为后续各章打下了知识基础.情境设计的输出物,显然是情境设计方案本身.用户界面设计的成果,是逻辑用户界面以及服务接口描述.数据库设计的成果是数据库的schema,而技术设计的成果,则是一份提供给程序员及利益相关者的简报,以及一个可以运作的系统测试应用程序,该应用程序能够接收由程序员所编写的实现代码.在这些设计制品(design artifact)之中,除了情境设