三、需求是以接口为中心的

本质上,产品就是一组接口,这些接口与外部世界相通,产品内部“填充”着让这些接口正常工作的“东西”。产品需求应该主要关注产品和外部世界之间的接口:

​ 产品和用户之间的接口,如用户界面;

​ 产品和其他产品之间的接口,如USB 端口、互联网服务等。

与接口有关的需求一般是指你想让产品做什么,而与产品内部“填充物”有关的需求是指你如何让产品做它应该做的事情。大部分需求是前一种,后一种需求通常用来告诉设计师和开发者如何去做自己的工作,这是他们需要做的事,编写需求应该尽量围绕你想让产品做的事情展开。

提前把人机接口需求做完美相当困难,与人机界面一样,在产品开发过程中,物与物的接口也需要早做测试,有些接口更容易指定。例如,如果你的产品通过蓝牙和计算机通信,那么蓝牙接口要统一好。

但是,如果上升到蓝牙通信内容这个层面,问题的复杂程度则取决于通信的内容。在蓝牙通信中,有些类型的数据是有固定标准的,如耳机和手机、音乐播放器和无线音箱等。但是,如果标准蓝牙接口规范不支持传送的数据,就需要重新自定义高层数据格式和协议,以便发送方和接收方能够相互理解。

你从零开始对任何接口所提出的初始需求(比如内部子系统之间的接口需求)很可能是不完整、有歧义的,甚至是完全错误的。接口设计是一门技术活,除非你先前设计过且投产过非常相似的接口,否则会或多或少出现一些问题。

在开发产品之前,合理提出这些需求是非常重要的。此外,还应尽早地为测试子系统做好规定,并随着开发推进更新规定。随着产品开发的进展及外界的反馈,原来的产品需求会发生变化。因此,你要尽早并经常向外界暴露产品,以此完善需求。需求代表了工程师要实现的一组设计目标,并且代表了管理人员评估成本和项目时间的一种方式,同时还需要使用工具来管理需求。

就一款产品来说,花时间做需求计划可能要比实际实现需求更痛苦,不过有一点可以确认:在需求计划上花费的每一秒,都会为以后实现需求省下大量的时间。这一点对于硬件产品来说尤为重要,因为电路或机械部件的调整往往需要耗费几周甚至几个月的时间。在开发之前,先把所有细节整理好有助于避免以后反复修改,这可以为整个项目节省大量的时间和支出。