项目 | 内容 |
---|---|
课程 | 2022春季软件工程(罗杰 任健) |
要求 | 计划阶段要求-技术规格说明书 |
目标 | 制定技术规格说明书 |
文章目录
一、技术栈
1.1 前端部分
-
主要框架:vue.js v2.96
-
UI库:vuetify v2.x
-
vue插件:vue-router、vuex v2.x
-
css扩展:sass
-
测试开发环境:windows 10,nodejs v16.14.2 , npm v6.14.10
-
实际部署环境:(未知)
1.2 后端部分
-
主要框架:SpringBoot v2.6.6 Mybatis v2.2.2
-
数据库:MySQL v5.6.51
-
测试开发环境:javav1.8 maven v4.0.0
-
实际部署环境:(未知)
二、软件的总体架构
2.1 子系统
-
服务端:处理数据
-
客户端:展示数据
-
stomp框架:处理即时通讯
2.2 子系统内部
- 服务端:controller层负责与前端交互,处理请求转发并调用service层;service层负责对数据进行处理,数据库连接并对数据库操作
三、系统的开发目标
3.1 代码编写
前端模块
-
首先完成各个组件功能的vue编写
-
根据页面的布局设计,完成css调整
-
根据api文档的设计,完成javascript函数编写
-
测试时,需要编写单元测试代码
后端模块
-
首先完成数据库的搭建与连接
-
根据需求编写相应功能函数
-
根据api文档,完成函数设计
-
对每个功能函数进行单元测试
3.2 单元测试
前端模块
- 完成一个功能模块进行一次简单的UI手动测试,并记录操作,总结成Jest单元测试代码。完成一个功能,便实现一次回归测试。
后端模块
- 对每个实现的函数进行单元测试,看能否正常实现对数据操作,完成一部分后总结为测试代码以便后续进行回归测试
前后端Json交互格式
code:表示交互结果代码依据业界规范,我们将使用20000、40000、40001等代码表示i前后端交互
data:封装交互数据
message:返回系统提示信息
{
"code": 20000,
"data": {},
"message": ""
}
3.3 系统压力测试
-
压力测试的目标主要是以下几点
-
负载能力:在正常的响应时间中,系统能够支持的最多的客户端的数量。
-
响应能力:在各种负载压力情况下,系统的响应时间。
-
可靠性:在连续工作时间状态下,系统能够正常运行的时间。
-
-
具体指标:
-
响应时间:100毫秒以内
-
TPS(Transaction per Second):200-300
-
错误率:不高于0.6%
-
3.4 API设计规范
注意:
- 在apifox中,我们设置了四种接口状态。请开发人员使用接口时,及时更新状态。
待确定:前后端都未开发和使用。
开发中:后端已开发。
联调中:前端已使用该接口。
已发布:后端已开发且前端已使用。
APIfox缩略图:
- 若需修改或新建接口,应尽快在群里提出,并协商。后端开发人员可以先完成底层函数的开发,最后再开发接口,防止接口变动导致重新写接口。
数据库结构敏捷设计:
3.5 系统业务逻辑
系统层面:
运行环境
-
服务端运行环境:Ubuntu-latest
-
应用端运行环境:Chrome v100.0.4896.127
系统设计
-
代码设计
-
信息的隐藏和封装
- 将前后端各自封装,通过API进行交流,传递是json格式文件,这样不会暴露各自的内部细节。后端在代码实现的过程中的controller类、service类和Mapper类各自都是拥有私有的数据和公共的方法,很好地将信息进行了封装。
-
模块化
-
将前端的代码分为 assets, plugins, components 等文件夹,分别开发具有不同功能的代码,并且使用面向对象的设计思想,复用vue中的 template 实现功能的标准化,模块化。
-
后端的功能函数是进行封装的,各种操作被集合在service层的类中,如果需要修改接口或者增加需要只要对相应的类进行修改即可,controller层或是前端数据的传回都无需修改。
-
-
-
架构设计
-
前后端分离
-
前端采用 vue.js 编写,通过 https 以及 stomp等功能与后端进行数据交互,前后端两组人员各自编写代码,从而实现前后端分离。
-
后端使用SpringBoot作为整体框架,通过controller层来接收前端数据并传给service层进行处理。后端并不关心前端如何展示以及如何获取数据。
-
-
系统性能
-
对于将来数据IO操作较多的情况下可能会采用主从结构,一个主库负责写操作,从库负责读操作,从而分担读写的压力。但是采用主从结构可能会略微增加延迟,该点需要注意。
-
实际上我们系统的性能是相对较好的, 但由于我们所使用的服务器较小,在用户量过大的情况下支持性会较差,导致响应速度变慢。
业务流程层面
-
前端所传回的数据理论上是合法的,前端会检验用户输入数据的格式等是否符合要求,如不符合则反馈错误信息给用户。如果数据格式上符合要求并正确地传给后端,后端会进行判断,比如所添加好友的ID是否存在、所查找的群是否存在等,并返回相应数据给前端。
-
如果前端传回了错误的数据那么后端就无法利用该信息找到相应的对象,那么可以用try-catch模式给前端反馈错误信息,前端可以要求用户重新输入以便传回正确的数据。
3、Alpha阶段初始任务分配
一、Alpha阶段目标:
- 完成基础功能开发:
- 用户登陆注册
- 用户信息编辑
- 用户之间的聊天以及交互
- 团队群组的交互和交流
- 普通会议的开启和参与
- 在基础功能的基础上添加细节:额外需求将在敏捷开发过程中敏捷迭代
二、Alpha阶段任务分配及计划:
时间:4.11~5.8
说明:未完成状态均为进行中或者尚未开始
项目冷启动阶段:阶段Ⅰ——7天
PM小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
wzx | 调研相关产品 | 4h | ❤️ |
hw | 调研相关产品 | 2h | ❤️ |
wzx | 依据初步构想设计UI图 | 4h | ❤️ |
hw wzx | 进行市场调研和需求分析 | 4h | ❤️ |
wzx | 设计产品初始化方案 | 3h | ❤️ |
hw | 工业界以及学生采访 | 3h | ❤️ |
hw wzx | 需求文档+规格文档+时间规划+团队贡献制定初步设定 | 6h | ❤️ |
hw wzx | 召开团队会议,制定阶段目标,增强团队凝聚力 | 6h | ❤️ |
hw | 在会议中讨论设计初步系统框架 | 2h | ❤️ |
前端小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
xjl | 调研UI布局体系 | 3h | ❤️ |
hw | 收集UI图库资源 | 3h | ❤️ |
xjl | 依据草图搭建“毛坯”框架 | 5h | ❤️ |
yy | 熟悉Vuetify以及相关组件设计 | 4h | ❤️ |
xjl | 前端Vue+Js技术栈扩展 | 5h | ❤️ |
hw | 前端Vue+css技术栈扩展 | 5h | ❤️ |
yy | 前端Vue+Js技术栈扩展 | 4h | ❤️ |
xjl | 参考同类产品设计并提出构想 | 4h | ❤️ |
xjl yy | 熟悉ajax数据请求以及cookie配置 | 3h | ❤️ |
后端小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
zzy | 后端Springboot技术栈扩展 | 5h | ❤️ |
czr | 后端Springboot技术栈扩展 | 5h | ❤️ |
dxt | 后端Springboot技术栈扩展 | 5h | ❤️ |
czr | 设计初步ER图 | 4h | ❤️ |
zzy+czr | 设计初步API接口文档以及迭代规范 | 4h | ❤️ |
dxt | 调研SpringSocket实时通讯功能 | 4h | ❤️ |
czr+zzy | 依据修正ER图设计数据库表单结构并优化到3NF | 3h | ❤️ |
zzy | 调试服务器配置,部署docker | 4h | ❤️ |
zzy czr dxt | 完成后端Spring框架初始化和封装结构 | 4h | ❤️ |
项目热开发阶段:阶段Ⅱ——14天
PM小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
wzx | 继续调研用户需求,分析应用场景 | 4h | ❤️ |
hw | 完善功能规格以及任务分配 | 6h | ❤️ |
hw wzx | 组织团队会议并记录团队进程,推动项目开发 | 4h | 💔 |
前端小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
xjl | 完成整体框架UI设计 | 4h | ❤️ |
yy | 完成登录注册界面以及后端交互邮箱验证 | 4h | ❤️ |
hw | 丰富整体细节CSS以及Html设计 | 5h | 💔 |
xjl | 好友+团队群组信息列表的展示和通知获取 | 4h | 💔 |
yy | 个人信息修改和展示处理 | 5h | 💔 |
hw | 时间轴设计以及布局 | 5h | 💔 |
yy xjl | 聊天内容以及实时交互显示 | 5h | 💔 |
hw | 团队会议阶段提醒与状态设置 | 5h | 💔 |
yy xjl | 文档上传和展示处理 | 4h | 💔 |
后端小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
zzy | 部署API FOX接口测试环境 | 2h | ❤️ |
czr | 通讯录相关接口设计 | 4h | 💔 |
zzy | 用户交互和信息相关接口设计 | 4h | 💔 |
dxt | 实时通讯相关技术接口设计 | 4h | 💔 |
zzy | 用户信息修改、聊天、文档、团队管理功能实现 | 8h | 💔 |
czr | 通讯录处理以及团队用户关系交互设计 | 6h | 💔 |
dxt zzy | 聊天内容即时通讯 | 5h | 💔 |
dxt zzy | 团队会议接口设计以及时间轴信息处理 | 5h | 💔 |
zzy czr dxt | 数据库管理和其他细节处理 | 4h | 💔 |
项目冷开发阶段:阶段Ⅲ——7天
PM小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
wzx | 继续迭代需求 | 4h | 💔 |
hw | 完善功能规格以及文档说明 | 6h | 💔 |
hw wzx | 组织团队会议并记录团队进程,推动项目开发 | 4h | 💔 |
测试小组:
姓名 | 任务 | 预计时长 | 是否完成 |
---|---|---|---|
前端两人 后端两人 | 完善细节增加功能 | 8h | 💔 |
前端一人 后端一人 | 协作单元测试,进行覆盖性测试 | 6h | 💔 |
前端团队 后端团队 | 系统流量、吞吐量、服务器性能测试 | 4h | 💔 |
分配任务:
三、会议安排
由于团队成员构成丰富,包含不同专业的本科生、硕博,各自实验任务较重,时间调停难度大,暂定每周天完21:00~22:30进行线下会议;每周3,5举行线上会议推动项目进展。