【青训营】软件开发流程

news/2024/11/25 6:27:51/

文章内容总结自:字节跳动青训营

软件开发流程

软件开发模型简介

image.png

传统瀑布模型

将流程视作为一条线:
完成需求分析后开发,开发完成后测试,测试完成后发布,发布完成后进行运维。这是最直观的一个模型,其流程是非常的严格的区分的。适用于银行、支付等对软件质量要求很高的领域,是以流程为本,理想化的模型。

这种流程的缺点是十分低效的

image.png

敏捷开发

为了提高开发的效率,敏捷开发的思想被提了出来,敏捷开发并不是一个具体的开发模型,但是敏捷开发主张:

  • 个体和互动高于流程和工具
  • 工作的软件高于详尽的文档
  • 客户合作高于合同谈判
  • 响应变化高于遵循计划

敏捷开发重视在变化中开发软件,敏捷开发以小团队快速迭代,团队成员之间合作更紧密,并且强调以人为本,而用户沟通,其中接触的最多的是scrum方法,有关于scrum方法可以参考以下这2篇文章

https://zhuanlan.zhihu.com/p/369842971

image.png
这是Scruum中的一次Sprint迭代的时间表,其中输入侧用于输入需求,消费侧用于消费需求,另外其中有一些关键会议:

  • 待办事项整理会议Backlong Grooming Meeting是产品负责人描述下一个迭代希望实现的用户故事,PM提出需求列表
  • 迭代计划会议(Sprint Planning Meeting)用于选择迭代的任务和估算工作量
  • 每日站会:昨天你做了什么,今天你将要做什么,有什么需要帮助的地方
  • 评审会:小组向产品负责人展示迭代工作成果
  • 反思会:在每次迭代后召开简短的反思会,总结哪些事情做得好,哪些做得不好

其中专有名词解释如下:

  • RD 研发
  • PM 产品经理
  • PRD 需求文档
  • UED 用户体验设计
  • QA 测试
  • Scrum1 敏捷团队1
  • P0 优先级为0
  • Backlog 规划列表

开发流程的拆解和介绍

需求阶段

需求阶段的准则:
不要浪费时间讨论不该存在的问题
一些需求一开始就是不合理,应该在最开始砍掉,以防止之后投入精力进行开发。

除了砍需求之外,还需要以用户思维,合理地增加需求,这时候需要最小化可行产品思想MVP

image.png

其实这种思想就是先实现部分可行的功能,或者让功能简单能跑,然后交由客户并且接受反馈,再逐步改进

除此之外还可以:
安排自己任务的时候可以按照四象限法切分任务

image.png
其中的百分比表示花费在该事情上的比例

开发阶段

云原生改变了开发阶段
在传统虚拟机开发中:

  • 物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
  • 运维人员负责维护和交付虚拟机
  • 每个虚拟机中都要安装对应的相应以来环境

容器化后:

  • 容器是在操作系统中虚拟出来的,也就是一个操作系统中有多个容器
  • 通过cgroup, namespace和Union Mount等技术实现了容器之间的相互隔离,这样使得不同的容器里可以选择不同的运行环境,而不像传统虚拟机中需要交由运维负责
  • 应用和其他以来作为一个整体,打包成镜像交付

image.png

另外一个改变是将单体结构变成微服务结构。微服务架构各功能在不同的服务中,不同模块之间使用RPC通信,不同模块可以独立扩缩容,并且每个服务的代码仓库只需要由少部分人维护

如今开发环境也逐渐云原生化,Fass、PaaS等技术,让开发逐渐从本地IDE向线上转变

团队的分支策略
需要清晰了解团队的分支策略,什么时候提交,什么时候回滚等

另外还需要养成良好的代码规范,对待代码进行自测试,并且完善技术设计文档,好的接口文档能够更方便和前端沟通

测试阶段

image.png

错误修复得越早,其修复成本就越低,因此要在单元测试中尽量将缺陷修复

测试应该如何确定测试环境?
功能环境:

  • 需要一个能够模拟线上的环境进行开发和测试
  • 环境和环境之间能够隔离

集成环境:

  • 不同人开发的功能合并在一起测试,相互之间的影响可能出现缺陷

回归测试:

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

发布阶段

蛮力发布

image.png

金丝雀发布

image.png

滚动发布

image.png

蓝绿发布

image.png


http://www.ppmy.cn/news/22812.html

相关文章

初阶C语言——函数【详解】(重点:函数的递归)

文章目录1.什么是函数2. 函数分类2.1 库函数:2.2 自定义函数3.函数的参数3.1 实际参数(实参)3.2 形式参数(形参)4. 函数的调用:4.1 传值调用4.2 传址调用4.3 练习5. 函数的嵌套调用和链式访问5.1 嵌套调用5…

产品用户手册难写在哪里?

产品手册不仅是一份产品使用说明书,更是企业通过互联网宣传和推销自己产品的一种普遍形式,对产品外观内容进行详细介绍对业务操作流程的详细讲解,通过产品手册对目标客户灌输产品意义和价值观。 生活中总会见到各式各样的产品手册&#xff0…

LaTeX使用graphicx+subfig实现子图合并+标题+子图标题

一、应用场景/需求 今天在LaTeX写论文的时候,发现自己需要使用几个图拼凑在一起,然后合到一张大图中去。也就是一张图包含若干张子图,然后若干张子图的大小可以自己设置,子图下面有子标题,而总的大图也有一个标题。例如…

PythonWeb开发基础(三)类Flask框架请求封装

课程地址:Python 工程师进阶技术图谱 文章目录类Flask框架请求封装HTTP请求解析的python实现1、解析查询字符串2、多值问题使用webob库解析请求Bug记录bug:AttributeError: module cgi has no attribute parse_qs类Flask框架请求封装 Web服务器 本质是…

Vue2与Vue3共存于一台电脑 保姆级教程

文章目录前言一、共存的前置条件二、共存的操作步骤三、最后一步,配置环境变量,实现全局调用四、 使用vue3报错前言 本文讲解了如何在一台电脑上使vue-cli2.x与vue-cli3.x共存,如果本文对你有所帮助请三连支持博主,感谢各位的支持…

正大国际期货:做恒指要懂得顺势而为

做恒指,究竟是应该做长线还是做短线,想必是一个有较大争议的话题。当然,选择短线操作是绝大多数人的选择,长线操作者在这个市场是寥寥无几的。说起恒指期货操作方法,其实很简单,那就是:做恒指要…

Unity三体运行模拟体验

Unity三体运行模拟体验 这两天看完三体电视剧,很想体验一把三体人的世界…于是,说干就干。 先来看看效果吧 先来个上帝视角的 Unity三体模拟上帝视角然后再来个三体人视角的(行星视角)Unity三体运行模拟(行星视角上…

国产高清卫星影像时代来了,打造中国版“谷歌地球”!

随着国家数字化战略转型进程不断加快,卫星遥感影像作为基础数据,应用越来越广泛。目前已经成为资源环境调查、监测、评价和管理等不可或缺的技术手段。 不止于此,在推动行业发展、提高生产力以及节约成本等方面,卫星遥感影像都实…