Hegel2011的博客

读书 - 工作 - 生活 - 笔记

实用软件需求

Kovitz的这本书大概是七八年前看DHH的博客时得知的,发现有中文版就买了回来。但一直没有读完。原因在于本书还是按比较正统的方法讲解如何写好明确的软件需求与规格。按作者的理解,软件开发细化的模式有二:

一. 所有内容都是渐进式细化的,先原型然后几轮迭代后深入到细节; 二. 每个开始的需求数量很少,但都很到位,每轮迭代就是新增几个需求并实现。

而在我大部分的工作都是采用的策略一,所以这本书对我的吸引力就不大。毕竟在老单位分工没有那么细,沟通相对简单,并不需要那么细节丰富的需求文档。但是,新单位就都不一样了。

现在的单位是一个公司人数不多,但规模建制很丰富的公司,即使我个人带的团队也大了许多,需求不单是项目负责人和客户之间沟通的东西,同时也是产品、ue、ui和研发、测试之间沟通甚至绝对对错的基础。这种情况下,如何书写需求(其实是要求产品如何书写),就变得相当重要了。

Kovitz 这本书的精华是第九第十章,讲的是如何描述领域中的集合(模型)和类之间的关系,以及这些模型对应的事件和发生序列。

集合包含两种类型:

  1. 实体类,或类。比如发票、客户
  2. 实体类之间的关系。(客户1, 发票1),(客户1,发票2)。。。,关系其实是类的集合

每个实体类要文档化的信息:
1. 实体类的基本信息说明;
2. 属性值列表,包括属性的定义,可能值的集合(取值范围、类型或者枚举集合)和含义
3. 存在的标识成员的属性(主键)
4. 与该类有关的实体类,这个主要用文字描述为主、画类图为辅,要在描述中说清楚一堆多,多对一的关系
5. 影响成员的每个事件,以及影响那些属性和关系。

基数是指多对一的配套关系。连线的秘密是这样的: * 竖线表示1 * 圈表示0 * 三条线表示乌鸦脚,没有合并 * 基数最靠近两端的表示最大值,次近两端的是最小值