从需求分析到软件设计的基本建模之商家搜索推荐系统

前提:

要求:参照码农的自我修养之从需求分析到软件设计——一种从需求分析到软件设计的基本建模方法,首先按需求类型分类,然后完成概念原型设计(应具有用例图+数据模型),并选择一个关键用例进行深入分析和设计(应具有分析和设计序列图),最终给出一个设计方案(应具有设计类图或者微服务架构图)。

设计实现对象:商家搜索推荐系统,系统主要功能为:推荐吃喝玩乐等信息,提供美食餐厅、酒店旅游、电影票、家居装修、美容美发、运动健身等各类生活服务。

一、需求分析

1. 功能需求

1.1 系统使用人员

  • 业务运营人员
  • c端消费者等

1.2 运营后台功能

  • 1.运营登录功能:
    • 输入用户名,密码登录运营后台
  • 2.运营商家管理功能,包含:
    • 商家创建:商户名,商家评分
    • 商家列表查询:商户id,商户名,商户评分
    • 商户启用禁用
  • 3.服务类目管理功能,包含:
    • 类目创建:名称,图标,排序
    • 类目列表查询:类目id,名称,图标,排序
  • 4.门店管理功能,包含:
    • 门店创建:名字,人均价格,评分,地址,标签,营业时间
    • 门店列表查询:门店id,名字,人均价格,评分,地址,标签,营业时间

1.3 c端功能

  • 1.用户注册功能:
    • 手机号,密码注册
  • 2.用户登录功能:
    • 手机号,密码登录
  • 3. 服务分类:
    • 服务类目按照运营后台预设的功能排序展示图标和名称
  • 4.推荐功能:
    • 根据lbs和评分为用户推荐商家
    • 个性化推荐(千人千面/常规推荐算法、构建点击率预估模型)
  • 5.搜索功能:
    • 根据lbs和关键字搜索用户附近的服务门店,根据服务类目,标签做筛选,通过价格做排序
    • 构建包含相关性语义的智能理解的搜索模型
    • 自适应学习、个性化搜索(千人千面、构建点击率预估模型)

2. 质量需求/非功能性需求

  • 界面需求:界面简洁直观
  • 易用性需求:操作简单易上手,防呆等
  • 安全性需求:采用统一鉴权登陆,密码加密单独存储等方式,保障用户数据的安全性
  • 正确性需求:能够正确的完成上述功能
  • 健壮性需求:程序应该有健壮性,对于错误能够及时正确的进行处理
  • 性能需求:用户的操作反馈具有实时性
  • 可扩充与可维护性需求:可在不修改代码的情况下,扩充系统的负载能力

3. 设计约束

  • 考虑到使用场景,运营后台采用pc端接入,而c端采用移动端h5接入
  • 系统采用垂直架构进行快速原型设计
  • 后端业务采用springboot;
    后端存储使用mysql、mybatis、mybatis+;
    搜索功能使用ElasticSearch、canal;
    推荐功能使用spark mllib;
    前端采用html、css、js

4. 过程约束

  • 运营后台的更新商家信息后才将数据导入到c端系统,以避免运营平台的操作对c端系统的影响
  • 搜索、推荐的商家应在合理范围内 

二、概念原型设计

1. 用例图

1.1运营平台用例图

1.2c端用例图 

 

2. 数据模型

2.1数据库设计 E-R图

 

2.2关联类及关系数据模型

 

三、关键用例分析

1.剧情描述

 分析c端用户登陆使用该系统搜索附近的门店:

  • 用户进入登陆界面进行登陆。
  • 如果用户尚未注册,则用户进行注册。
  • 服务器返回注册成功提示。
  • 用户注册完成后跳转至登陆界面。
  • 用户成功登陆系统,将用户的位置等个人信息发送给服务器。
  • 服务器的推荐模块根据不同的场景规则,选取不同的模型。
  • 推荐模块进行召回、排序、业务规则调整后,得到推荐结果列表。
  • 服务器返回给用户推荐的门店列表和各种服务类目。
  • 用户在搜索栏中输入关键字进行搜索对服务器进行访问。
  • 服务器的搜索模块根据构建的语义模型,对关键字进行相关性分析,得到搜索结果列表。
  • 服务器返回搜索结果,及用户搜索的门店信息列表。
phasesubjectAction of SubjectOther Data/ObjectObject Acted Upon
1 c端用户 进入系统的登陆界面   服务器
1.1 如果,c端用户尚未注册 用户注册 用户信息(账号密码) 服务器
1.1.1 服务器 返回注册成功   c端用户
1.2 c端用户 登陆系统 用户信息(账号密码位置信息等) 服务器
1.2.1 服务器推荐模块 选取模型,执行推荐逻辑,获取推荐列表    
1.2.1.1 服务器 返回推荐模块的结果列表 推荐列表 c端用户
1.2.1.2 服务器 返回服务类目 服务类目信息 c端用户
1.3 c端用户 搜索栏中输入关键字进行搜索  关键字 服务器 
1.3.1 服务器搜索模块 通过语义模型分析关键字,获取结果列表    
1.3.2 服务器 返回搜索结果 搜索结果 c端用户

2.设计序列图 

 四、设计架构图

具体设计实现中,将系统主要分为如下几个模块:

  1. 后端业务模块:用于通用业务功能模型搭建,统一鉴权接入
  2. 后端存储模块:用于数据库,canal管道数据同步,elasticsearch中间件建设
  3. 搜索模块:用于搜索接入,语义构建,索引构建服务
  4. 推荐模块:用于推荐算法,推荐服务接入
  5. 交互界面:用于实现相关功能的交互和展示

 

https://github.com/xbb1973/Shop-Search-Recommend

 

 

posted @ 2020-04-23 00:17  xbb1973  阅读(429)  评论(0)    收藏  举报