一个电商需求分析demo - LaravelChina

一篇清晰简约的需求分析的文章。原文:https://laravel-china.org/courses/laravel-shop/5.7/module-division/2738

用例分析

Laravel Shop 是我们整套课程将要构建的项目名称,是一个单商户的电商系统。本章节将简单地从产品用例的角度上来分析 Laravel Shop 的需求,好让大家对我们即将开发的项目有个基础的概念。我们主要从以下三种元素入手:

  1. 角色
  2. 信息
  3. 动作

接下来做单独分解。

1. 角色

在我们的 Laravel Shop 里,将会出现以下角色:

  • 游客 —— 没有登录的用户;
  • 用户 —— 注册用户, 可以购买商品;
  • 运营 —— 可以上架、下架商品,处理订单;
  • 管理员 —— 权限最高的用户角色,可以管理运营。

2. 信息结构

主要信息有:

  • 用户 —— 模型名称 User;
  • 收货地址 —— 模型名称 UserAddress,包含地址和收货人姓名、电话;
  • 商品 —— 模型名称 Product,比如 iPhone X 就是一个商品;
  • 商品 SKU —— 模型名称 ProductSKU,同一商品下有个别属性可能有不同的值,比如 iPhone X 256G 和 iPhone X 64G 就是同一个商品的不同 SKU,每个 SKU 都有各自独立的库存;
  • 订单 —— 模型名称 Order;
  • 订单项 —— 模型名称 OrderItem,一个订单会包含一个或多个订单项,每个订单项都会与一个商品 SKU 关联;
  • 优惠券 —— 模型名称 CouponCode,订单可以使用优惠券来扣减最终需要支付的金额;
  • 运营人员 —— 模型名称 Operator,管理员也属于运营人员。

3. 动作

角色和信息之间的互动称之为『动作』,动作主要有以下几个:

  • 创建 Create
  • 查看 Read
  • 编辑 Update
  • 删除 Delete

用例

1.游客

  • 游客可以查看商品列表;
  • 游客可以查看单个商品内容。

2. 用户

  • 用户可以查看自己的收货地址列表;
  • 用户可以新增收货地址;
  • 用户可以修改自己的收货地址;
  • 用户可以删除自己的收货地址;
  • 用户可以收藏商品;
  • 用户可以将商品加入购物车;
  • 用户可以将购物车中的商品打包下单;
  • 用户可以在下单时使用优惠券;
  • 用户可以通过微信、支付宝支付订单;
  • 用户可以查看自己的订单信息;
  • 用户可以对已支付的订单申请退款;
  • 用户可以将已发货的订单标记为确认收货;
  • 用户可以对已购买的商品发布评价。

3. 运营

  • 运营可以看到所有的用户列表;
  • 运营可以发布商品;
  • 运营可以编辑商品内容;
  • 运营可以编辑商品 SKU 及其库存;
  • 运营可以下架商品;
  • 运营可以将用户已支付的订单标记为已发货;
  • 运营可以对申请退款的订单执行退款;
  • 运营可以创建、编辑、删除优惠券。

4. 管理员

  • 管理员可以查看运营人员列表;
  • 管理员可以新增运营人员;
  • 管理员可以编辑运营人员;
  • 管理员可以删除运营人员。

file

很多时候,当开发团队开始启动一个项目时,区分功能模块的优先顺序尤其重要,否则你都不知道从哪里下手。这里我们使用一个简单的分析框架,来决策功能模块的开发优先级。你也可以使用其对大部分的 Web 项目进行模块开发的优先级分析。

模块清单

首先,基于我们的需求分析,我们将系统拆分成如下几大模块:

  • 用户模块
  • 商品模块
  • 订单模块
  • 支付模块
  • 优惠券模块
  • 管理模块

依赖关系

有了模块清单,接下来我们需要思考,他们之间的依赖关系是怎样的。在上面的功能清单中,『订单模块』依赖于『用户模块』和『商品模块』,『支付模块』和『优惠券模块』又依赖于『订单模块』。各个模块之间的依赖关系可以用下图来表示:

file

上层的模块依赖于下层的模块,因此在开发过程中我们会优先构建下层的模块。

开发顺序

所以我们各个模块开发的顺序如下:

  1. 用户模块
  2. 商品模块
  3. 订单模块
  4. 支付模块
  5. 优惠券模块

『管理模块』是一个特殊的模块,既包含本身的逻辑(管理后台的权限控制等),又与其他业务模块都有关联,因此在开发过程中会与其他模块穿插开发。

MVP 产品

是的,作为工程师,我们不需要了解产品的方方面面,那是产品经理的工作。但是作为一位优秀的开发者,在开发项目时,对将要完成的产品 MVP 要了然于胸,MVP 是 Minimum Viable Prodcut (最小化可行性产品)的简称。如何得出产品的 MVP 产品呢?可以先问这样的问题:

对于这个产品来讲,哪些功能是必不可缺的?

电商产品是一个用户购买商品的地方,产品存在的核心价值是『用户购买商品』,那首先需要用户、然后需要商品、购买需要付款。所以在我们的电商项目里,用户、商品、订单和支付模块都是必不可少的。

优惠券功能并不是购物流程中必备的一环,属于附加的功能,锦上添花的东西。我们在设计和开发项目时,应优先完成基础的功能,让流程能尽快跑起来,尽早交付,快速迭代。

Web 开发是个速度至上的领域,最小产品功能先上,测试的工作量也不会太大。不能憋大招,一个上线就是一大堆功能,复杂度增加的是无限的开发和调错时间,项目上线期限无尽延长。另一方面,用户能在最短时间内接触到产品,产品经理也可以尽快听到用户的反馈,及时调整产品战略,产品离成功会更进一步,这是一个多赢的方案。

这个思路也与敏捷开发的思路不谋而合:

敏捷开发即是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

结语

功能模块的开发优先级,我们已经有了,接下来就是要动手开始写代码了。


批量调整word中插入的图片大小 - 到处玩的 又一个 webdav 服务器