技术规格说明书

技术规格说明书

项目 内容
课程:北航-2020-春-软件工程 博客园班级博客
作业要求 技术规格说明书
我们在这个课程的目标是 提升团队管理及合作能力,实践软件工程开发
这个作业在哪个具体方面帮助我们实现目标 介绍团队项目,定义项目技术规格和相关特性

产品概述

这是一个基于聊天软件一个表情管理小程序。我们提供了以下功能:管理自己的表情,搜索查找平台上的表情,识别表情并分组,制作表情。

技术栈

本节将详细介绍本项目开发的技术栈结构。

前端框架

  • 底部设置tabBar导航栏,设置3-5个tab来与主要功能页面一一对应。
  • 目前与tabBar绑定的功能页面为:主页,自动推荐表情、提供搜索功能、分类显示表情;本地管理页面,通过用户授权访问本机相册、提供上传与下载功能;商店页面,显示用户信息、金币系统管理、创作激励模块。
  • 另设若干页面,实现细分功能。以上述与tabBar绑定的页面之中的功能按钮、图片等组件为入口,跳转到细分功能页面,实现查看图片、编辑图片、查看收藏等具体功能。

后端框架

首先对用户模型,表情模型,标签模型在云数据库上来建立相应的数据库集合,然后利用云函数实现对于数据库集合的相关操作(增,删,查,改等),提供相应的功能接口给前端使用。

数据库

主要建立用户,表情和标签三大类集合,集合的每个单独的数据都有唯一的id辨识符,每个用户拥有自己所收藏表情的容器,每个表情有其对应的描述以及对应标签,每个标签包含其名称(字符串)。

云环境

当前云环境:小程序云开发所提供的云环境,提供大量服务于小程序的深度包装的API接口,且仅能在小程序中使用。

后期的机器学习

  • 引导用户输入描述一个表情的文本。
  • 通过分词提取该文本中的标签。
  • 引导用户根据这些标签评分。
  • 最终得到表情关于每个标签的权重

接口规格(暂定)

用户相关请求

# 用途 请求方法 返回信息
1 通过用户信息获取用户id
2 通过用户id获取用户的表情库 user_id images[]
3 给用户添加表情 user_id,exp_id success
4 给用户删除表情 user_id,exp_id success
5 展示特定用户的所有收藏表情 user_id images[]

表情相关请求

# 用途 请求方法 返回信息
1 通过表情id获取url user_id str
2 上传表情文件并分配id 客户端所选择的image exp_id
3 给用户添加表情 user_id,exp_id success
4 给用户删除表情 user_id,exp_id success
5 给表情标签添加权重 user_id,weight success

标签相关请求

# 用途 请求方法 返回信息
1 给所用表情增加标签 tag success
2 通过一个标签获取相关表情 tag exp_id[]
3 通过一组标签获取相关表情 tag exp_id[]
4 给特定的表情添加标签 exp_id,tag success
5 给特定的用户,特定的表情添加标签 exp_id,user_id,tag success

抽象&模块化

开发软件时,为了减少工作量、防止过度冗余,这就需要我们把代码封装起来,实现"抽象化"、"模块化";

1.分层,我们的软件结构遵循经典的三层模型(展现层、逻辑层、数据层),每一层主要关注本层相关的信息,简化了整个系统的设计;

2.每个函数只负责一个任务,符合单一职责原则,做好抽象、模块化;

3.争取实现开放封闭原则,当需求改变时,可以扩展模块以满足新的需求(开放);扩展时,不需要修改原模块(封闭);

4.在编程之前,做好技术说明书,针对每个任务、函数,定义好各个框架之间的输入、输出关系,实现模块化编程,既便于分工,又便于调试、编写。

海量数据适应性

  • 存储

    对象存储(COS):能够存储海量数据的分布式存储服务,用户可随时通过互联网对大量数据进行批量存储和处理;利于共享且存储读写快。

  • 加载

    内容分发网络(CDN):提供的静态内容(如网页样式、图片、小文件)加速分发处理能力,极大地缩减了站点响应时间,实现复杂内容快速加载。

信息封装和隐藏

只提供必要入口。

  • 前端 微信小程序前端框架

    与React,Vue相似,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,且具有以下特性:

    • 打包后进行审核发布;
    • 具有全套的开发工具。
  • 后端 面向对象

    采用面向对象的思想,对于外部只提供对应访问和修改的接口:

    • 敏感数据设置私有方法;
    • 给予公开函数修改和访问指定数据。

界面和实现的分离

为方便团队进行分工,实现界面和实现(前后端)分离。

  • 前端

    提出需求,与后端结合设定接口。

  • 后端

    设计算法及功能实现,简单编写前端界面方便交接时展示功能。

应对变化的灵活性

页面扁平化管理

所有的页面都放在一个文件夹中,通过路径管理,因此增删页面非常方便。

统一的设计格式

界面设计格式同一设计,保证了更改的灵活性和设计的统一性。

数据库的独立性

单独的云函数,同一个后台更新这些云函数,和前端无关

posted @ 2020-04-08 20:56  好好编程BUAA_SE  阅读(560)  评论(2编辑  收藏  举报