注:我们采用了“系统分析与设计”课程的项目作为“软件工程综合实验”的课程设计。两课程的团队成员相同。

1 技术选型及理由

1.1 前端

1.2 后端

1.3 路由

nginx + uwsgi

理由:

1.4 数据库

SQLite

理由:

2 架构设计

2.1 逻辑架构

逻辑架构由四层模型(表示层、业务层、服务层、持久化层)构成。

2.1.1 表示层

用户端使用 Web 作为表示层, 提供问卷系统、问答系统、用户系统、闲钱交易系统

2.1.2 业务层

服务器充当业务层的角色, 为表示层的各个子系统提供相应的服务模块, 根据表示层系统来调用不同的服务模块

2.1.3 服务层

从各种数据访问对象检索和创建模型, 更新各个存储对象的值, 执行特定于程序的逻辑和操作等

2.1.4 持久化层

SQLite 提供了数据的持久化服务

2.2 架构问题

2.2.1 可靠性和可恢复性

2.2.2 可支持性和可适用性

2.3 解决方案说明

2.3.1 如何提高服务端性能

2.4 逻辑视图

2.5 物理视图

3 模块划分

3.1 前端

3.2 后端

4 技术与实现

持续集成与自动部署

Server 使用 Travis-CI 进行持续集成、测试与部署,定义文件为.travis.yml

大致如下:

language: python
python:
  - 3.6
install: true
addons:
  ssh_known_hosts: 118.89.65.154
before_install:
- openssl aes-256-cbc -K $encrypted_b0e4a20bf5fb_key -iv $encrypted_b0e4a20bf5fb_iv
  -in id_rsa.enc -out id_rsa -d
- eval "$(ssh-agent -s)"
- chmod 600 id_rsa
- ssh-add id_rsa
script:
  - pwd
  - bash script/deploy.sh

5 API设计

API 规范:REST API

API 文档:Swagger

6 测试