《设计模式之美》实战一(上):针对业务系统的开发,如何做需求分析和设计?

王争《设计模式之美》学习笔记

需求分析

  • 文中举例,一个积分兑换系统的开发实战,技术人员应该更多地参与到产品设计中。
  • 作为技术人,我该怎么做产品设计呢?首先,一定不要自己一个人闷头想。一方面,这样做很难想全面。另一方面,从零开始设计也比较浪费时间。所以,我们要学会“借鉴”。
  • 除了“借鉴”的思路,还可以通过产品的线框图、用户用例(user case )或者叫用户故事(userstory)来细化业务流程,挖掘一些比较细节的、不容易想到的功能点。
  • 用户用例有点儿类似我们后面要讲的单元测试用例。它侧重情景化,其实就是模拟用户如何使用我们的产品,描述用户在一个特定的应用场景里的一个完整的业务操作流程。
  • 有关积分有效期的用户用例,我们可以进行如下的设计:
    • 用户在获取积分的时候,会告知积分的有效期
    • 用户在使用积分的时候,会优先使用快过期的积分
    • 用户在查询积分明细的时候,会显示积分的有效期和状态(是否过期)
    • 用户在查询总可用积分的时候,会排除掉过期的积分。
  • 通过上面讲的方法,积分系统的需求如下:
    • 积分赚取和兑换规则:
      • 积分的赚取渠道包括:下订单、每日签到、评论等。
      • 对于积分的有效期,我们可以根据不同渠道,设置不同的有效期。
    • 积分消费和兑换规则:
      • 积分的消费渠道包括:抵扣订单金额、兑换优惠券、积分换购、参与活动扣积分等。
      • 积分到期之后会作废;在消费积分的时候,优先使用快到期的积分。
    • 积分及其明细查询:查询用户的总积分,以及赚取积分和消费积分的历史记录。

系统设计

合理地将功能划分到不同模块

  • 第一种划分方式是:积分赚取渠道及兑换规则、消费渠道及兑换规则的管理和维护(增删改查),不划分到积分系统中,而是放到更上层的营销系统中。
    • 这样积分系统就会变得非常简单,只需要负责增加积分、减少积分、查询积分、查询积分明细等这几个工作。
    • 比如,用户通过下订单赚取积分,营销系统根据拿到的订单信息,查询订单对应的积分兑换规则(兑换比例、有效期等),计算得到订单可兑换的积分数量,然后调用积分系统的接口给用户增加积分。
  • 第二种划分方式是:积分赚取渠道及兑换规则、消费渠道及兑换规则的管理和维护,分散在各个相关业务系统中,比如订单系统、评论系统、签到系统、换购商城、优惠券系统等。
    • 用户下订单成功之后,订单系统根据商品对应的积分兑换比例,计算所能兑换的积分数量,然后直接调用积分系统给用户增加积分。
  • 第三种划分方式是:所有的功能都划分到积分系统中,包括积分赚取渠道及兑换规则、消费渠道及兑换规则的管理和维护。
    • 用户下订单成功之后,订单系统直接告知积分系统订单交易成功,积分系统根据订单信息查询积分兑换规则,给用户增加积分。
  • 为了避免业务知识的耦合,让下层系统更加通用,一般来讲,我们不希望下层系统(也就是被调用的系统)包含太多上层系统(也就是调用系统)的业务信息,但是,可以接受上层系统包含下层系统的业务信息。
  • 综合考虑,我们更倾向于第一种和第二种模块划分方式。

设计模块与模块之间的交互关系

  • 比较常见的系统之间的交互方式有两种,一种是同步接口调用,另一种是利用消息中间件异步调用。第一种方式简单直接,第二种方式的解耦效果更好。
  • 上下层系统之间的调用倾向于通过同步接口,同层之间的调用倾向于异步消息调用。

设计模块的接口、数据库、业务模型

  • 下节课详细讲解。

你可能感兴趣的:(课程学习笔记)