后端开发流程 | 青训营笔记

71 阅读3分钟

软件生命周期

软件生命周期:可行性分析、项目计划、需求分析、总体设计、详细设计、编码测试、运行维护等阶段

软件过程模型

瀑布模型

image.png

优点:

  • 可强迫开发人员采用规范的方法
  • 严格地规定了每个阶段必须提交的文档
  • 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证 缺点:
  • 开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果
  • 各个阶段划分完全固定,阶段之间产生大量文档
  • 早期的错误可能要等到后期测试阶段才能发现,进而带来严重的后果

增量模型

优点:

  • 人员分配灵活

缺点:

  • 至始至终开发者和客户必须在一起,直到完全版本出来。

螺旋模型

image.png

优点:

  • 对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。

缺点:

  • 需要相当的风险分析评估技术,比较复杂

喷泉模型

image.png

敏捷开发

  • The Scale Agile Framework (SAFe)

开发流程拆解

需求阶段

MVP思想(最小化可行产品)

  • 站在用户的角度思考
  • 收集用户反馈,快速迭代

开发阶段

云原生下的开发

容器化:

  • 容器是在操作系统中虚拟出来的
  • 通过cgroup,namespace和Union Mount等技术实现了容器之间的相互隔离,同时容器只有很低的开销
  • 应用和其依赖作为一个整体,打包镜像交付 微服务架构:
  • 各个功能在不同的服务中
  • 不同模块需要进行RPC通信
  • 不同模块可以独立扩缩器
  • 每个服务的代码仓库仅由少部分人维护

团队的分支策略

  • 团队成员各自什么分支开发
  • 修改冲突
  • 版本回滚

代码规范、自测和文档

代码规范:

  • 良好的注释习惯
  • 重复的逻辑抽象成公共的方法,不要copy代码
  • 正确地使用IDE的重构功能,防止修改错误

自测:

  • 单元测试
  • 功能环境测试
  • 测试数据构造

文档:

  • 大型改造需要有技术设计文档,方案评审
  • 好的接口文档更方便和前端进行沟通

测试阶段

功能环境:

  • 需要一个能模拟线上的环境进行开发和测试
  • 环境和环境之间能够隔离,不影响其他功能的开发和测试

集成环境:

  • 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷
  • 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷

回归环境:

  • 确保新的功能不对老的功能产生影响
  • 回归测试一般会借助自动化测试脚本

发布阶段

各种发布模式

  • 蛮力发布
  • 金丝雀发布
  • 滚动发布
  • 蓝绿发布
  • 红黑发布

运维阶段

流程优化

DevOps 解决方案

  • 代码管理
  • 自动化测试
  • 持续集成
  • 持续交付