从需求分析到软件设计的基本建模之商家搜索推荐系统
前提:
要求:参照码农的自我修养之从需求分析到软件设计——一种从需求分析到软件设计的基本建模方法,首先按需求类型分类,然后完成概念原型设计(应具有用例图+数据模型),并选择一个关键用例进行深入分析和设计(应具有分析和设计序列图),最终给出一个设计方案(应具有设计类图或者微服务架构图)。
设计实现对象:商家搜索推荐系统,系统主要功能为:推荐吃喝玩乐等信息,提供美食餐厅、酒店旅游、电影票、家居装修、美容美发、运动健身等各类生活服务。
一、需求分析
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端用户登陆使用该系统搜索附近的门店:
- 用户进入登陆界面进行登陆。
- 如果用户尚未注册,则用户进行注册。
- 服务器返回注册成功提示。
- 用户注册完成后跳转至登陆界面。
- 用户成功登陆系统,将用户的位置等个人信息发送给服务器。
- 服务器的推荐模块根据不同的场景规则,选取不同的模型。
- 推荐模块进行召回、排序、业务规则调整后,得到推荐结果列表。
- 服务器返回给用户推荐的门店列表和各种服务类目。
- 用户在搜索栏中输入关键字进行搜索对服务器进行访问。
- 服务器的搜索模块根据构建的语义模型,对关键字进行相关性分析,得到搜索结果列表。
- 服务器返回搜索结果,及用户搜索的门店信息列表。
| phase | subject | Action of Subject | Other Data/Object | Object 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.设计序列图

四、设计架构图

具体设计实现中,将系统主要分为如下几个模块:
- 后端业务模块:用于通用业务功能模型搭建,统一鉴权接入
- 后端存储模块:用于数据库,canal管道数据同步,elasticsearch中间件建设
- 搜索模块:用于搜索接入,语义构建,索引构建服务
- 推荐模块:用于推荐算法,推荐服务接入
- 交互界面:用于实现相关功能的交互和展示
https://github.com/xbb1973/Shop-Search-Recommend


浙公网安备 33010602011771号