IM专题:IM 需求分析模型

需求是驱动软件架构和功能实现的源动力,把握住需求则把握住了软件架构的方向!

IM 系统的每一项功能,理解很容易,但是数量繁多;作为 IM 系统的业务架构师,怎样对其进行有效的分类和梳理呢?见下图。

IM专题:IM 需求分析模型

这里列举了与 IM 系统相关的常见需求,关于每一项需求的具体含义,因为在后面的技术短文中我们都会详细分析,所以这里不再赘述。

我们今天需要重点分析的是一个普适性的【需求模型】或【需求框架】,它可以帮助我们快速对繁多的需求点进行分类和整理,以达到掌控全局和了然于胸的目的,见下图。

IM专题:IM 需求分析模型

首先,我们需要对所有的需求点进行筛选,区分出【功能需求】和【非功能需求】,这一步非常容易。

然后,对【功能需求】进行分析,识别出【基础功能需求】和【扩展功能需求】,这样则将一团需求点从同一视角出发拆分成了同类要素,化繁为简。

【基础功能需求】是整个系统的核心,典型特征就是 “稳定” 和 “原子化”;这一部分功能点轻易不会受到后续需求变动的影响,而且这一部分功能足够小,很难再进行拆分。举例:在电商系统中,“商品”、“订单”、“支付”等就属于【基础功能需求】;IM 系统的【基础功能需求】比如:“私信消息”、“好友联系人”等。

【扩展功能需求】是对【基础功能需求】的扩展,这一部分需求的典型特征就是 “变动” 和 “扩展”;这一部分需求是最不稳定的,而且实现该部分功能往往是基于 【基础功能】进行的。举例:在电商系统中,各种运营活动需求就是典型的【扩展功能需求】;在 IM 系统中,“群消息” 是【扩展功能需求】,它是基于 “私信消息” 这一【基础功能需求】进行实现的。

按照二八原则,【基础功能需求】往往占整个系统的 20%,【扩展功能需求】大概占到整个系统的 80%。

了解这一需求模型对我们有什么好处呢?

  1. 当我们开发一套新系统时,或者我们刚加入一家公司面对一套陌生的系统时,切忌眉毛胡子一把抓,只要分析出系统的【基础功能需求】,对其深度分析和掌握,就基本掌握了整套系统;作为业务架构师,工作重点是 【基础功能需求】。
  2. 【扩展功能需求】往往基于【基础功能需求】进行实现,这可以辅助我们评估资源;举例:IM 系统的 “私信消息” 属于【基础功能需求】,开发这一功能用了 10 个人日,那么开发【扩展功能需求】的 “群消息” 需要多少人日呢?是不是因为 “群消息” 比 “私信消息” 涉及到了更多的用户,开发会需要更多的时间呢?肯定不是的,“群消息” 的开发可能只需要 2 个人日就够了 ,因为其大部分逻辑,【基础功能需求】已经实现好了(在后面的技术短文中我们会详细分析这一逻辑)。

这一需求分析模型,不只适用于 IM 系统,对大多数软件系统都适用。对 IM 系统需求点进行分类和整理,如下图。

IM专题:IM 需求分析模型

对于 IM 系统来说,【基础功能需求】包括三部分,分别是:“用户”、“联系人” 和 “消息”;“用户” 描述的是当前登录者;“联系人” 描述的是当前登录用户的好友;“消息” 是 IM 系统最核心的功能,在【基础功能需求】中包括 “私信消息”、“系统消息”、“云消息” 和  “离线消息”。

IM 系统的【基础功能需求】决定了 整个 IM 的基础框架;IM 系统的【扩展功能需求】,如:“群消息”、“多媒体消息”、“子母号”、 “红包” 等都是基于 IM的 【基础功能需求】实现的。初次接触 IM 系统的同学,在研究和学习的过程中,一定要从 【基础功能需求】的设计和实现入手,将更多的精力花在【基础功能需求】上,然后【扩展功能需求】的实现就会水到渠成了。据说,微信的 “摇一摇” 功能,是由三个实习生用了不到一周时间就上线的功能。

最后分析一下 【非功能需求】,互联网系统的【非功能需求】通常是指 “高扩展”、“高吞吐” 和 “稳定性”。

  1. 高扩展,高扩展包括两个方面,分别是功能的高扩展和容量的高扩展;功能的高扩展是指基于现有功能和代码,通过简单改造就可以轻松实现新的功能,这是产品经理特别希望看到的,这要求系统的【基础功能】的实现做到合适粒度的 “高内聚” 和 “低耦合”;容量的高扩展是指可以轻松地对集群进行线性横向扩容,以容纳更高用户规模的访问请求;在后续的技术短文中,我们会结合实际的IM场景进行讨论分析。
  2. 高吞吐高吞吐是互联网系统孜孜不倦的永恒的所追求的目标。那怎么提高系统的吞吐量呢?需要从两个方面着手,一是提高系统的并发量,一是提高系统的处理性能;也就是 “高吞吐” 依赖 “高并发” 和 “高性能”,这个地方需要注意,严格地说,在系统资源未耗尽之前提高并发量可以在一定程度上提高吞吐量;【高吞吐】【高并发】【高性能】是关于系统在同一个维度三个不同视角的描述,我们平时在说到 “三高”系统时,切忌同时提到这几个词。关于如何提升 IM 系统的并发量,如何提高 IM 系统的处理性能,我们仍然在后续的技术短文中,结合场景进行描述。
  3. 稳定性稳定性包括两个方面,分别是可用性和可靠性;可用性是指系统持续工作的能力,比如系统可以 7 * 24 连续工作;可靠性是指系统对于正确的输入一定会有正确的输出。可用性通常依赖于系统的整体架构设计,而可靠性通常更多的依赖于程序编写。

对于系统的【非功能需求】也可以理解为系统的三高需求,即:高扩展、高吞吐(或高并发、或高性能)、高稳定(或高可用)。

最后,总结文中关键:

  1. 普适的需求模型:首先区分【功能需求】和【非功能需求】,对【功能需求】分析出【基础功能需求】和【扩展功能需求】,将一团需求点拆分成同类要素,化繁为简;
  2. 【基础功能需求】是整个系统的核心,典型特征是 “稳定” 和 “原子化”,大概占系统的 20%左右;【扩展功能需求】从【基础功能需求】中进行扩展,典型特征是 “变动” 和 “扩展”,大概占系统的 80% 左右;
  3. 【非功能需求】是系统的三高需求,即:高扩展、高吞吐和高稳定;高扩展包括功能扩展和容量扩展两部分;高吞吐依赖高并发和高性能;高稳定包括高可用和高可靠。

作者:棕生

来源:架构之魂(公众号)

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论