1 软件开发流程
需求分析->设计->编码->单元测试->集成测试->上线运维
1.1 需求分析
交付结果:完成需求规格说明书、产品原型
需求规格说明书:系统定义、应用环境、功能规格、性能需求
产品原型:一般通过网页的形式展示当前页面的布局、样式、交互行为、数据展示。
1.2 设计
交付结果:UI设计、数据库设计、接口设计
UI设计:用户界面的设计,主要设计项目的页面效果,小到一个按钮,大到一个页面布局,还有人机交互逻辑。
数据库设计:当前项目设计哪些数据库,每一个数据库里面包含哪些表,表结构之间的关系是如何的,表中的字段有哪些。
接口设计:通过分析原型图,来设计接口。
首先,粗粒度地分析每个页面有多少个接口,
然后,细粒度地分析每个接口的传入参数,返回值参数,还有接口路径及请求方式。
1.3 编码和单元测试
交付结果:编写项目代码、并完成单元测试。
项目代码编写:对项目的模块功能分析,进行编码实现。
单元测试:对编码完成的功能进行单元测试。
1.4 集成测试
由测试人员对部署在测试环境的项目进行功能测试,并出具测试报告
1.5 上线运维
上线之前,运维人员准备服务器上的软件环境安装、配置,配置完毕后,再将开发完成的项目部署到服务器上。
2 苍穹外卖系统
2.1 需求分析
该项目是针对餐饮企业定制一款软件产品,包括系统管理后台和小程序端应用两部分。其中,系统管理后台主要给企业员工内部使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行设计,同时还有语音播报功能。小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。
2.2 设计
2.2.1 总体设计
本项目包含后台管理端和前台用户端,管理端主要功能包含员工管理、分类管理、菜品管理、套餐管理、订单管理、工作台、数据统计、来单提醒。用户端主要功能包含微信登录、商品浏览、购物车、用户下单、微信支付、历史订单、地址管理、用户催单。
2.2.2 功能设计
管理端功能:
员工管理:员工的登录/退出,员工的信息管理(员工信息的新增、修改、删除、查找)、员工账号的管理(启用/禁用)。
分类管理:主要对餐厅经营的菜品分类 或 套餐分类 进行管理维护,包含查询、新增、修改、删除等功能。
菜品管理:主要维护各个分类下的菜品信息,包含查询、新增、修改、删除、启售、停售等功能。
套餐管理:主要维护当前餐厅中的套餐信息,包含查询、新增、修改、删除、启售、停售。
订单管理:主要维护移动端下的订单信息,包含查询、取消、派送、完成,以及订单报表下载等功能。
数据统计:主要完成对餐厅的各类数据统计,如营业额、用户数量、订单等等。
工作台:当前正在执行的订单。
来单提醒:当有订单出现,有来单消息提醒。
用户端:
登录退出:用户可以使用微信登系统,以及退出系统
点餐模块:用户可以查找菜品、添加菜品到购物车、删除购物车、清空购物车等功能。
订单支付:用户选完菜品后,可以对购物车菜品进行结算支付,支付成功,等待商家接单。
历史订单:用户可以查看、删除自己历史订单信息,包括订单提交时间,支付时间,派送时间、完成派送时间。
地址管理:用户可以管理自己的下单地址。
用户催单:用户可以在商家接单后开始催单,催单后,商家会接收催单消息。
2.2.3 详细设计
包含各个功能的详细流程,算法设计等等。
2.2.4 技术选型
本项目分为用户层、网关层、应用层、数据层、工具层,针对不同层选择合适的技术。
用户层:对于管理端的前端页面,使用H5、Vue.js、ElementUI、apache echarts等技术。对于用户端的前端使用微信小程序。
网关层:该层使用Nginx服务器,用于部署静态资源,可以提供较高的性能,反向代理和负载均衡。
应用层:该层主要用户后端的任务开发,主要使用
SpringBoot: 快速构建Spring项目,采用“约定优于配置"的思想,简化Spring项目的配置开发。
SpringMVC: 处理前端和后端之间的请求响应。
Spring Task: Spring提供的定时任务框架。
HttpClient: 主要实现了对Http请求的发送。
Spring Cache: Spring提供的数据缓存框架。
JWT: 用于对用户进行身份验证和授权。
阿里云OSS: 对象存储服务,在项目中主要存储文件,图片等资源。
Swagger: 接口开发工具,自动生成接口文档,对接口进行测试。
POI: 封装了对Excel表格的常用操作。
WebSocket: 一种通信协议,使客户端和服务器之间的数据交换更加简单,用户项目的来单、催单功能实现。
数据层:该层用于后端与数据库之间的交互。
MySQL: 关系型数据库,本项目的核心数据库
Redis: 基于k-v的内存数据库,访问速度快,经常使用它做缓存
MyBatis: 后端的持久层orm框架,简化与数据库的交互
pagehelper: 分页插件
Spring data redis : 简化java代码操作Redis的API
工具层:项目开发过程中使用的一些项目管理和高效开发的工具
Git: 远程版本控制工具,在团队中协作开发人员进行项目版本控制
Maven: 项目构建管理工具
Junit: 单元测试工具
Postman: 接口测试工具
2.3 开发环境搭建
本项目主要包含前端和后端,前端为管理端(Web端)和用户端(微信小程序端),后端为Java开发。
2.3.1 前端环境搭建
前端工程主要在nginx上搭建
2.3.2 后端环境搭建
1.项目分析
sky-take-out: 父工程
sky-common: 子模块,存放公共类,工具类、常量类、异常类等等。
sky-pojo: 子模块,存放实体类、VO、DTO等(VO:用于在前端展示的数据实体,DTO数据传输对象:用于各层之间传递数据,POJO:普通的Java对象,只有属性和对应的gettter和setter,Entity: 实体,通常和数据库中的表对应)。
sky-server: 子模块,后端服务,存放配置文件、Controller、Service、Mapper、启动类等。
2.Git版本控制
- 创建Git本地仓库
- 创建Git远程仓库
- 将本地文件推送到Git远程仓库
- 提交文件至本地仓库
- 添加Git远程仓库地址
- 推送
3.数据库环境搭建
序号 | 表名 | 中文名 |
---|---|---|
1 | employee | 员工表 |
2 | category | 分类表 |
3 | dish | 菜品表 |
4 | dish_flavor | 菜品口味表 |
5 | setmeal | 套餐表 |
6 | setmeal_dish | 套餐菜品关系表 |
7 | user | 用户表 |
8 | address_book | 地址表 |
9 | shopping_cart | 购物车表 |
10 | orders | 订单表 |
11 | order_detail | 订单明细表 |
2.3.2 前后端联调
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
前端请求的地址通过Nginx的反向代理,得到一个新的请求地址,新的请求地址到后端,请求数据。