工程实践需求分析和概念原型设计

一、需求分析

1. 项目简介

职位搜索引擎的设计与实现:面向主题,针对特定主题的搜索引擎已成为搜索引擎发展中的一个重要方向。本课题通过数据抓取、分析、处理等过程实现一个完整的面向主题的搜索引擎。
本项目将构建职位搜索引擎,实现从职位数据采集,到数据整理、存储,到提供给用户搜索服务的一套完整流程,并通过数据挖掘、nlp等优化用户的搜索结果,构造更美观和更具有交互性的前端页面来增强用户体验。

2. 需求分析

  1. 数据采集
    利用抓包工具mitmproxy+selenium获取职位信息,实时采集各大网站最新的职位数据。

  2. 数据整理存储
    将采集到的数据进行整理,并以一定的形式持久化存储。

  3. 搜索服务
    提供前后端分离的搜索服务,向用户展示搜索结果。

  4. 关键字智能提示
    在用户输入搜索关键字时,向用户提示可能的搜索内容,如下图使用百度搜索时所示,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验。

  5. NLP(分词、个性化词库)
    当用户在搜索时输入了一句话,要能够合理的将这句话拆分成一个个关键词,尽量减少词语的无法识别率,减少不相关的搜索结果,以提升用户搜索体验。对于职位这个特定领域的搜索,要提供个性化词库来匹配搜索时出现的专有名词、特定名词等。

  6. 搜索排序
    根据用户查找关键词的相关性和重要性对搜索结果进行排序,帮助用户快速的找到需要的结果。

  7. 自动纠错
    当检测到用户输入词错误,自动纠正为正确的结果展示。这个是系统的容错性,减少了用户输入错误或者本身记忆错误(不知道某个字怎么写,不知道单词怎么拼)引起的问题。如下图所示:

  8. 联想推荐
    搜索的查询一般而言是多次查询的过程,在每次的查询过程中用户会不断的缩小范围或者搜索相关内容。实现机制是query的关联性,在这里主要实现的是扩展推荐,因为用户搜索的不够具体,会推荐该搜索词更细的分类。例如当用户搜索“前端”时,就会给他推荐“web前端”、“移动端前端”等等。

  9. 用户管理
    在用户登录后,根据用户注册信息自动推荐相关搜索关键词;管理员可对屏蔽词进行修改。

3. 用例建模

  1. 用户

    用例说明:用户可以进行注册可登录,也可以直接进行搜索查询操作。
  2. 管理员

    用例说明:管理员可以登录系统,在登录系统之后可对搜索屏蔽词进行增删改查的修改操作。

二、业务领域建模

业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。

1. 基本步骤

  1. 收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料
  2. 头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系
  3. 给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系
  4. 将结果用 UML 类图画出来

2. UML类图

本项目中的客户和管理员都有相同的登录、注册功能,都继承自用户类
所有管理员共同额外维护了一张有关屏蔽字的表,管理员可对该表内容进行增删改查等操作

三、数据模型

  1. 用户表
字段 类型 描述
id int 一个自增的序号
userName String 用户名
passWord String 密码
searchRecord List 搜索记录
  1. 管理员表
字段 类型 描述
id int 一个自增的序号
userName String 用户名
passWord String 密码
  1. 屏蔽字表
字段 类型 描述
id int 一个自增的序号
content String 关键字

四、概念原型

  1. 概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。
  2. 概念原型是一种虚拟的、理想化的软件产品形式。
  3. 概念原型 = 用例 + 数据模型

本项目的概念原型:涉及到的用例较为简单,角色包括管理员和用户两个部分
工作过程:

  • 管理员登录系统,可以查看该搜索系统的所有屏蔽词列表,通过点击某个屏蔽词,可对其进行删除、修改,或是点击新增一个屏蔽词
  • 用户可以不登录直接使用,通过在搜索框输入关键字进行查询,系统向用户反馈搜索结果,用户也可以选择注册登录,登陆后,每次查询都会记录,用户可以查看历史搜索记录

五、总结

通过对本次工程实践的项目进行需求分析与概念原型的设计,让我比较清晰的了解到了软件开发前期的大致工作流程,通过对项目原型的分析,逐渐对这个项目有了更深入的了解。

posted @ 2020-12-13 16:42  石卡口  阅读(219)  评论(0)    收藏  举报