需求是驱动软件架构和功能实现的源动力,把握住需求则把握住了软件架构的方向。
IM 系统的每一项功能,理解很容易,但是数量繁多;作为 IM 系统的业务架构师,怎样对其进行有效的分类和梳理呢?见下图。
这里列举了与 IM 系统相关的常见需求,关于每一项需求的具体含义,因为在后面的技术文章中我们都会详细分析,所以这里不再赘述。
我们今天需要重点分析的是一个普适性的【需求模型】或【需求框架】,它可以帮助我们快速对繁多的需求点进行分类和整理,以达到掌控全局和了然于胸的目的,见下图。
首先,我们需要对所有的需求点进行筛选,区分出【功能需求】和【非功能需求】,这一步非常容易。
然后,对【功能需求】进行分析,识别出【基础功能需求】和【扩展功能需求】,这样则将一团需求点从同一视角出发拆分成了同类要素,化繁为简。
【基础功能需求】是整个系统的核心,典型特征就是 “稳定” 和 “原子化”;这一部分功能点轻易不会受到后续需求变动的影响,而且这一部分功能足够小,很难再进行拆分。举例:在电商系统中,“商品”、“订单”、“支付”等就属于【基础功能需求】;IM 系统的【基础功能需求】比如: “私信消息”、“好友联系人”等。
【扩展功能需求】是对【基础功能需求】的扩展,这一部分需求的典型特征就是 “变动” 和 “扩展”;这一部分需求是最不稳定的,而且实现该部分功能往往是基于 【基础功能】进行的。举例:在电商系统中,各种运营活动需求就是典型的【扩展功能需求】;在 IM 系统中,“群消息” 是【扩展功能需求】,它是基于 “私信消息” 这一【基础功能需求】进行实现的。
按照二八原则,【基