《编程的逻辑》读后感(第4章)需求模型

凡事都有一个开头,软件项目也不例外,对于软件项目来说,需求就是项目最开始的一个输入。所以需求很重要,发现客户的问题,并且引导客户将需求调整为更合理的需求,我们要想做好需求分析,要时刻抓住”客户的问题和价值“。

需求是对客户来说有价值的事情,功能是系统为了实现需求而具备的能力,修复需求错误的成本非常高,所以需求分析的目的是挖掘客户的问题,实现客户的价值尤为重要。需求分析步骤总结下来是:5W + 1H + 8C

5W:When、Where、Who、What、Why

1H:How

8C:8个约束和限制,即Constraints,包括性能Performance、成本Cost、时间Time、可靠性Reliability、安全性Security、合规性Compliance、技术性Technology、兼容性Compatibility

(1) 5W

    Who:就是需求利益相关人,我们按照需求的生命周期流程来分类,包括购买者->管理者->使用者->评估者,评估者一般是政府机构、第三方咨询公司、各类组织等”;

    When:就是指需求相关的时间,这里可以指季节,如春夏秋冬;也可以指作息时间,例如白天晚上,所有和时间相关的信息都属于此类”

    Where:就是需求相关的地点,这里可以指国家,如美国和中国;也可以指场所,例如室内、街道等

    What:就是需求的最终输出,即客户希望得到什么东西,例如一份文件、一个报表、一辆车;

    Why:就是需求的驱动力,即客户为什么提这个需求,客户的问题在哪里;

  【一个长颈鹿的实例:5W】:

有一个建筑公司的需求分析人员收到了一个客户需求给我建一栋很大的房子’,于是建筑公司就建了房子,房子是欧式风格,又大又宽敞,全套宜家家居,全木地板,进口电器。。。。。简直是应有尽有,结果客户来收房子的时候说了一句话,让建筑公司吐血,客户说:“先生们,我是要一栋房子给我们的长颈鹿住!”

    对上照上面:

   “Who:这套房子的购买者是动物园、管理者是动物园的饲养员、使用者是长颈鹿、评估者可能是动物管理协会、卫生局等政府部门”

   “When:这个可能要求一年四季了,如果长颈鹿知识运来展览一下,那么就是展览的这几个月。”

   “Where:这个房子要建在动物园,而不是其它居民小区,那么动物园肯定有一些相关的规定”

   “What:要求一套房子,但不是简单意义上的房子,而是长颈鹿住的房子,这就需要考虑高度、围栏等”

   “Why: 这个就可能动物园要临时展览,也可能要引进长颈鹿,也有可能是原来的长颈鹿房子破旧了”

    此外,这5个W中有“Why”是最重要的,如果这个W错了,那么即使其它W都正确了,那么也是一个完美的错误需求,因为这才是需求的驱动力,也是需求的价值所在。

需求最终就是要解决客户的问题的,而Why就是真正的问题所在。

(2) 1H

    How是指需求本身的流程(注意:它不是不是指如何实现需求,那是设计阶段的事情)

    有的需求可能很简单,客户想要的东西也很明确;但有的需求比较复杂,涉及到多次交互,或者多个状态变化等,这种情况就要把需求的流程描述清楚。举个例子,取款是一个需求,但取款本身包含多次交互,要插卡、输入密码、输入金额、打印账单、取钱这些步骤,How就是用来描述这整个流程是如何运行的。也就是说涉及多个动作、多个步骤、多个状态、多个处理的需求要写清楚How 。

(3) 8C

  “性能Performance:主要包括响应时间和吞吐量”

   “成本Cost:就是客户愿意为这个需求花多少钱”

   “时间Time:指客户要求什么时候交付需求”

   “可靠性Reliability:指系统长时间正确运行的能力,银行、证券、电信这些公司,对宕机时间要求很严格的”

   “安全性Security:指对信息安全的保护能力,涉及到钱、身份证、社会保险号等需求对这个要求很高”

   “合规性Compliance:指满足各种行业标准、法律法规、规范等,例如3C、SOX、3GPP、ITUT等”

   “技术性Technology:有的客户可能要求我们采用某种技术,例如客户现在都是Windows的机器,那么就可能要求我们基于Windows平台开发”

   “兼容性Compatibility:指我们的产品与系统与客户其它已有的产品或者系统的兼容能力,要知道现在很少有产品是孤立运行的,特别是在大企业、大公司中,多个系统都是互相交互、互相配合的”

   需求分为功能属性和质量属性,前面的5W+1H是属于功能属性,而8C是属于质量属性,一个需求最终是否被正确的实现了,既要看功能属性是否正确,也要看质量属性是否正确,两者缺一不可。