项目 | 内容 |
---|---|
这个作业属于那个课程 | 2021春季学期软件工程(罗杰、任健) |
这个作业的要求在哪里 | 团队项目-计划 |
更新日期 | 2021年5月4日 |
描述 | 大幅更新了数据库和API接口设计 |
更新人 | LQ |
版本号 | 1.3 |
前端所使用的编程语言为HTML, CSS和JavaScript语言。
前端框架使用Vue框架。
Vue框架的优点:
后端所使用的编程语言为Python(主要因为有爬取数据的核心需求),开发环境为Python3.8。
后端框架使用flask框架。flask是基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。和Django不同,Flask轻巧、简洁,通过定制第三方扩展来实现具体功能,且支持noSQL等新型数据库。
数据库首选MySQL,版本为MySQL8.0.21
Apache或者Nginx均是目前较为流行的Web引擎。目前偏向于选择Nginx,其相较于Apache具有轻量、抗并发、高度模块化的特点。
前端
后端
服务器端
数据获取端
UML图如下
属性 | 类型 | 描述 |
---|---|---|
time | DATE() | 日期 |
areaName | VARCHAR(size) | 国家/地区名称 |
currentNum | BIGINT(size) | 现存确诊人数 |
totalNum | BIGINT(size) | 累计确诊人数 |
addNum | INT(size) | 新增确诊人数 |
cured | BIGINT(size) | 累计治愈人数 |
totalDead | INT(size) | 累计死亡人数 |
addDead | INT(size) | 新增死亡人数 |
infRate | FLOAT(size,d) | 感染率 |
属性 | 类型 | 描述 |
---|---|---|
time | DATE() | 日期 |
areaName | VARCHAR(size) | 国家/地区名称 |
totalNum | BIGINT(size) | 累计接种人数 |
addNum | INT(size) | 新增接种人数 |
vacRate | FLOAT(size,d) | 接种率 |
属性 | 类型 | 描述 |
---|---|---|
time | DATE() | 意见接受时间 |
text | String(800) | 意见内容 |
属性 | 类型 | 描述 |
---|---|---|
parentArea | String(100) | 父区域姓名 |
childArea | String(100) | 子区域姓名 |
number | BIGINT | 子区域总人数 |
请求方法 | 请求路径 | 用途 |
---|---|---|
GET | /vaccineHome/worldMapVaccineDataMsg | 请求世界地图的接种数据 |
GET | /vaccineDetail/countryMapVaccineDataMsg/<country> | 请求某一国家的接种数据 |
GET | /infectHome/worldMapInfectionDataMsg | 请求世界地图的感染数据 |
GET | /infectDetail/countryMapInfectionDataMsg/<country> | 请求某一国家的感染数据 |
GET | /vaccineHomeHeadbar/vaccineSum | 请求今日全球接种数据 |
GET | /vaccineHomeHeadbar/vaccineSumAdd | 请求今日全球新增接种 |
GET | /vaccineHomeHeadbar/vaccineCover | 请求今日全球接种率 |
GET | /vaccineHomeHeadbar/vaccineCoverAdd | 请求今日全球新增接种率 |
GET | /vaccineDetailSidebar/vaccineSum/<country> | 请求今日某国家接种数据 |
GET | /vaccineDetailSidebar/vaccineSumAdd/<country> | 请求今日某国家新增接种 |
GET | /vaccineDetailSidebar/vaccineCover/<country> | 请求今日某国家接种率 |
GET | /vaccineDetailSidebar/vaccineCoverAdd/<country> | 请求今日某国家新增接种率 |
GET | /wordData | 请求世界各国总体数据 |
GET | /countryInfection/<country> | 请求某国家感染情况数据 |
GET | /CountryVaccine/<country> | 请求某国家接种情况数据 |
GET | /provinceInfection/country/province | 请求某省份感染情况数据 |
GET | /infectHomeHeadbar/infectSum | 请求今日全球累计感染人数 |
GET | /infectHomeHeadbar/infectSumAdd | 请求今日全球新增感染人数 |
GET | /infectHomeHeadbar/infectDeath | 请求今日全球累计死亡人数 |
GET | /infectHomeHeadbar/infectDeathAdd | 请求今日全球新增死亡人数 |
GET | /infectHomeHeadbar/infectCure | 请求今日全球累计治愈人数 |
GET | /infectHomeHeadbar/infectCureAdd | 请求今日全球新增治愈人数 |
GET | /infectDetailSidebar/infectSum/<country> | 请求今日某国家累计感染人数 |
GET | /infectDetailSidebar/infectSumAdd/<country> | 请求今日某国家新增感染人数 |
GET | /infectDetailSidebar/infectDeath/<country> | 请求今日某国家累计死亡人数 |
GET | /infectDetailSidebar/infectDeathAdd/<country> | 请求今日某国家新增死亡人数 |
GET | /infectDetailSidebar/infectCure/<country> | 请求今日某国家累计治愈人数 |
GET | /infectDetailSidebar/infectCureAdd/<country> | 请求今日某国家新增治愈人数 |
GET | /infectSidebar/infectSum | 请求今日全球累计感染人数 |
GET | /infectSidebar/infectSumAdd | 请求今日全球新增感染人数 |
GET | /infectSidebar/infectCure | 请求今日全球累计治愈人数 |
GET | /infectSidebar/infectCureAdd | 请求今日全球新增治愈人数 |
POST | /feedback | 反馈意见传入后端数据库 |
文件 | 名称 | 返回值 | 用途 |
---|---|---|---|
dao.py |
saveInfMessage(List<InfMessage> messages) | void | 存储感染信息 |
dao.py |
saveVacMessage(List<VacMessage> messages) | void | 存储接种信息 |
dao.py |
saveAdvice(String message, String time) | void | 存储用户意见 |
dao.py |
getInfMessage(String name, String time) | InfMessage | 返回某地区某时间的感染信息 |
dao.py |
getInfMessageInclude(String name, String time) | List<InfMessage> | 返回该区域某时间所包含的国家/地区的感染信息 |
dao.py |
getVacMessage(String name, String time) | VacMessage | 返回某地区某时间的接种信息 |
dao.py |
getVacMessageInclude(String name, String time) | List<VacMessage> | 返回该地区某时间所包含的国家/地区的接种信息 |
对于编写的代码,均需要完成单元测试,一般是以函数或类为单位,尤其是对接口进行单元测试,具体可见接口设计部分
目前认为需要对以下几个方面针对性做压力测试:
前端渲染速度、页面大小、数据库设计及访存速度、网站的最大并发量、响应时间、吞吐量等
模拟并发用户数,测试峰值并发数;
响应时间:90%用户的响应时间小于0.5秒
并发用户数(同时发出请求的用户数):2000个用户
大量用户同时访问网站
短时间内存在大量请求
需求文档:详细明确的需求文档。对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。
概要设计文档:概要设计文档包括数据库概要设计文档和软件概要设计文档,粒度较粗,可以作为软工项目的中间产物。
详细设计文档:
部署文档:部署到服务器,运行环境等的详细文档
用户手册:本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。
测试分析报告:测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。
软件维护手册:主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。
软件问题报告:指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。
软件修改报告:软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响作出详细的描述,提交审批。