【二食堂】技术规格说明书

项目 内容
这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 技术规格说明书
我们在这个课程的目标是 学习敏捷开发之道
这个作业在哪个具体方面帮助我们实现目标 项目技术规格说明

技术规格说明书

技术栈

我们团队的产品时在线文本标注系统,主要实现文本中专业术语的标注和生成知识图谱功能。

前端

前端暂时没有过多的需求,所以使用原生的js+css+html完成,以后根据需求的增加可能会使用其他前端框架进行开发,以增加可维护性。

为了绘制关系图,我们使用ECharts ,这是一个使用 JavaScript 实现的开源可视化库,提供了丰富的可视化类型。

后端框架

后端框架使用 Python 下的 Web 框架 Django。优点是免费开源,可以快速搭建高性能、优雅的网站,学习曲线较缓。Django在一定程度上借鉴了 mvc (Model, View, Controller) 的架构模式,可以基本满足我们前后端交互的需求。

数据库

数据库使用最常用的MySQL,优点是易于上手,用户基数大所以相关技术解答都比较成熟,而且与 Django 的连接也比较简单。

产品设计

接口规格(暂定)

# 请求方式 路径 参数 描述
1 POST /user/login user_id, user_password 用户登录
2 POST /user/register user_id, user_name, user_password 用户注册
3 POST /user/info_update user_id, user_password 用户信息更改
4 GET /user/info 查看用户信息
5 GET /project/info 查看所有项目信息
6 POST /project/new project_name 创建项目
7 POST /project/enter project_id 进入项目
8 POST /project/invite user_id 邀请他人进入项目
9 GET /project/file_info 获取项目下所有文件信息
10 POST /project/import_file file_path 导入文件
11 GET /project/generate 生成知识图谱
12 POST /project/export file_path 导出知识图谱
13 POST /project/add_entity entity_name 添加实体
14 POST /project/delete_entity entity_name 删除实体
14 POST /project/entity/add_relation relation, entity_name 添加与其他实体的关系
15 POST /project/entity/delete_relation entity_name 删除与某个实体的关系

错误处理

  • 前端
    前端的错误信息主要来源于用户的注册、登录信息以及用户邀请。可能的错误类型有:

    • 密码错误
    • 用户已存在
    • 用户名不合法
    • 密码不合法
    • 确认密码与密码不同
    • 未找到该用户
    • 该用户不在线/已在其他编辑任务中

    这些错误都可以通过Django的ORM去查询数据库中的用户信息进行处理。

  • 后端
    后端的错误主要来源于:

    • 未找到改实体
    • 实体已经存在,无法再次添加

    这样的错误信息可以在预留的接口中处理。我们就错误处理的错误信息形式还没有一个完备的设计。在后续的开发工程中我们会逐步完善错误信息的处理。

设计原则

  • 内聚与耦合

    Django采用了MVC的框架模式,而这种框架模式的优点就在于其高内聚,低耦合。视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

  • 抽象和模块化

    通过Django的ORM框架,将实体封装成面向对象的形态。类名对应数据库中的表名,类属性对应数据库里的字段,类实例对应数据库表里的一行数据(实体)。Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句。

  • 信息隐藏和封装

    我们留了若干接口来实现前后端的分离。关于实体和知识图谱的相关数据全部存储在数据库中,只能通过接口来进行增删查改。前端只负责从接口读取数据信息,进行图形化界面的渲染。界面设计见功能规格说明书

  • 应对变化的灵活性

    所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可。

  • 对大量数据的处理能力

    优化数据库的结构时提高大量数据的最佳途径。而在多用户的并发处理上,通过优化sql语句,事务锁等多种方式优化处理过程。

posted @ 2020-04-08 21:12  二食堂很难排队  阅读(201)  评论(2编辑  收藏  举报