软件开发流程
1. 需求分析[产品经理]
完成需求规格说明书,产品原型编写。
需求规格说明书:一般来说就是使用Word文档来描述当前项目的各个组成部分,如:系统定义,应用环境,功能规格,性能需求等,都会在文档中描述。
产品原型:一般是通过网页的形式展示当前的页面展示什么样的数据,页面的布局是什么样的,点击某个菜单,打开什么页面,点击某个按钮,出现什么样的效果,都可以通过产品原型看到。
2.角色分工
岗位/角色 | 对应阶段 | 职责/分工 |
---|---|---|
项目经理 | 全阶段 | 对整个项目负责,任务分配、把控进度 |
产品经理 | 需求分析 | 进行需求调研,输出需求调研文档、产品原型等 |
UI设计师 | 设计 | 根据产品原型输出界面效果图 |
架构师 | 设计 | 项目整体架构设计、技术选型等 |
开发工程师 | 编码 | 功能代码实现 |
测试工程师 | 测试 | 编写测试用例,输出测试报告 |
运维工程师 | 上线运维 | 软件环境搭建、项目上线 |
在实际项目中,有一些项目组由于人员配置紧张,可能并没有专门负责的架构师和测试人员,这个时候就需要项目经理和程序员身兼数职了。
3.软件环境
作为软件开发工程师,在编码的过程中不可避免的会接触到多种软件环境,我们主要来分析在工作中经常遇到的三套环境:开发环境,测试环境,生产环境。
3.1 开发环境[开发工程师]
作为软件开发人员,在开发阶段使用的环境,就是开发环境,一般外部用户无法访问。比如我们在开发中使用的是Mysql数据库和其他的一些常用软件,我们就可以安装在本地,也可以安装在一台专门的电脑上,这些应用程序仅仅是软件开发过程中使用,项目测试,上线时,我们不会使用这套环境了,这个就是开发环境。
3.2 测试环境[测试工程师]
当软件开发工程师,将项目的功能模块开发完毕,并且每个单元测四hi通过后,就需要讲项目部署到测试服务器上,让测试人员对项目进行测试,那这个台测试服务器就是专门给测试人员使用的环境,也就死测试环境,用于项目测试,一般外部用户无法访问。
3.3 生产环境[运维工程师]
当项目开发完毕后,并且由测试人员测试通过之后,就可以上线项目,将项目部署到线上环境,并且正式对外提供服务,这个线上环境也被称为生产环境。
3.4 环境切换流程
4. 项目架构
各个具体业务功能模块的设计
5. 产品原型
用于展示项目的业务功能,一般由产品经理进行设计。
6. 技术选型
一般从用户层、网关层、应用层、数据层 这几个方面进行分析。
6.1 用户层[前端工程师]
一般项目中在构建系统管理后台的前端页面,我们会用H5,Vue.js,ElementUI,apache aecharts等技术,而在构建移动端应用是,我们会使用微信小程序。
6.2 网关层[以Nginx为例]
Nginx是一个服务器,主要用于Http服务器,部署静态资源,访问性能高,在Nginx还有两个重要的作用,反向代理和负载均衡,在进行项目部署的时候,要实现Tomcat的负载均衡就可以通过Nginx来实现,
6.3 应用层
技术 | 功能 |
---|---|
SpringBoot 企业实用: | 快速构建Spring项目, 采用 “约定优于配置” 的思想, 简化Spring项目的配置开发。 |
SpringMVC 配置繁琐: | SpringMVC是spring框架的一个模块, |
Spring Task: | 由Spring提供的定时任务框架。 |
httpclient : | 主要实现了对http请求的发送。 |
Spring Cache: | 由Spring提供的数据缓存框架 |
JWT 安全性高: | 用于对应用程序上的用户进行身份验证的标记。 |
阿里云OSS: | 对象存储服务,在项目中主要存储文件,如图片等。 |
Swagger企业实用: | 可以自动的帮助开发人员生成接口文档,并对接口进行测试。 |
POI: | 封装了对Excel表格的常用操作。 |
WebSocket: | 一种通信网络协议,使客户端和服务器之间的数据交换更加简单,用于项目的来单、催单功能实现。 |
6.4 数据层
组件 | 功能 |
---|---|
MySQL企业实用: | 关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。 |
Redis提高访问性能: | 基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存。 |
Mybatis企业实用: | 本项目持久层将会使用Mybatis开发。 |
pagehelper: | 分页插件。 |
spring data redis: | 简化java代码操作Redis的API。 |
6.5 工具
工具 | 作用 |
---|---|
git企业实用: | 版本控制工具, 在团队协作中, 使用该工具对项目中的代码进行管理.maven企业实用: 项目构建工具。 |
junit: | 单元测试工具,开发人员功能实现完毕后,需要通过junit对功能进行单元测试。 |
postman/Apifox: | 接口测工具,模拟用户发起的各类HTTP请求,获取对应的响应结果。 |