软件代码与质量管理(更新版)(一)

简介: 软件代码与质量管理(更新版)(一)

开发者学习笔记【阿里云DevOps助理工程师认证(ACA)课程软件代码与质量管理(更新版)(一)

课程地址:https://edu.aliyun.com/course/3112069/lesson/18999


软件代码与质量管理(更新版)(一)

 

内容介绍:

一、版本控制

二、代码规约

三、单元测试基础

 

一、版本控制

版本控制在软件工程学里有一个正式的定义,它是指追踪和控制软件变更的实践。版本控制系统是用来辅助进行版本控制的工具。

图片179.png

我们先来看版本控制系统的发展历史。最早在 1982 年出现第一个版本控制系统RCS,它的全称是 revision control system,然后在 1990 年的时候出现一个著名的广泛使用的版本控制系统。 CBS 的全称是 concurrent version control system,虽然它并不是并行的,也并不是分布式的,但是我不知道为什么它的名字里出现concurrent。然后 CBS 是最早大范围使用的,曾经在工作站上非常的流行,大概在像 San 的 slots 和 IBM 的工作站上,惠普的工作站上基本上是所有的 Unix 工作站上都有CBS。在 1992 年的时候, IBM 出品一个著名的里程碑式的版本控制系统,叫 clear case,那时 clear case 是非常有名,非常高端,特别昂贵,只有很少的人使用过。大概在 2000 年的时候出现subversion,这是目前为止上一代用的最为广泛的版本控制系统。大概在 205 年的时候出现现代的分布式版本控制系统,包括Git,Mercury和 TFS,还包括像Bazar,这些都是分布式的版本控制系统。

为什么需要版本控制系统

图片180.png

首先版本控制系统它能记录下你所有的activity,包括是谁在什么时间做了什么事情。 commit message,它还提供你做的事情的这个额外的信息,解释变更的原因,然后由这个信息我们可以帮助软件进行发布管理。 同时现代的版本控制系统,像Git,SUB, Mercurio 和 TFS 这些分布式的版本控制系统,它还可以进行同步和并行,这样辅助多人团队进行协作,因为它是分布式。git,不光是 git 所有的版本控制系统,它还有一个辅助的功能,是帮助你进行 bug 调试,比如有一次改动,比如你的线上的版本出现一个问题,但是你知道在那之前的某一个版本是没有问题的,就可以利用版本控制系统,这中间可能有 10 次变更,你一次一次的去看到底是哪一次变更导致你的问题,你就可以把这一次变更到底改了什么拿出,这样可以极大的缩小你的追踪的范围,可以让 bug 调试变得简单。


现代的版本控制系统都支持分支和分支的合并,分支策略是版本控制里面一个非常重要的组成部分。分支策略现在大概分成主要的分支策略有三种,第一种是主干开发,分支发布,可以看图里面所有的开发的动作都在主干上完成,而一旦需要做一个分支的做一个发布的时候,我们就拉出一个分支,然后在这个分支上进行发布。 它的主要的优势是管理比较简单,大家从图上就能直观的看出这种管理方式是相对的简单一些。但是它也有一个弱点,就是主干的问题会阻碍开发的进程,因为一旦主干出现问题,这个时候想发布就没有一个稳定的地方可以发布。主干上现在有问题,就不能拉出一个分支来进行发布。


我们看第二个分支策略叫做分支开发,主干发布所有的开发活动都在分支上面进行,然后一旦这个分支稳定,需要进行发布的时候,就把它合并回主干,然后做一次发布。这有一个优点跟第一个不一样,它的开发是在分支上进行,和主干的代码提供一个可靠的隔离。但是它和第一个分支策略也有同样的问题,主干的问题会阻碍开发的进程。比如这一个分支已经准备好,你需要发布的时候,这个时候如果同一时间主干上的代码有问题,就没有办法合并到主干上,然后使用一个能用的分支进行发布。所以这也就是主干问题会阻碍开发的进程。

第三个分支策略是什么呢?


分支开发,分支发布,它可以兼顾上面两个策略的优点,比如它可以开发分支,提供了可靠的代码隔离,然后它主干的问题也不会阻碍发布,因为它是分支上发布完之后再合并回主干。但是这个同时会导致另一个问题,就是集成的时间点可能会比较延后。不过这个问题其实相对于阻碍开发进程的问题,这是一个相对较小的问题。所以现在用分支开发,分支发布这种策略的公司会比较多,当然不是仅仅是简单的这种分支开发,分支发布,这种有的时候会有一些变通。

图片181.png

相关文章
|
算法 计算机视觉
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
1440 0
数字图像处理实验(四)|图像压缩与编码实验{JPGE编码、离散余弦变换DCT、图像分块dctmtx|blkproc}(附matlab实验代码和截图)
|
缓存 Java 数据库
SpringBoot缓存注解使用
Spring Boot 提供了一套方便的缓存注解,用于简化缓存管理。通过 `@Cacheable`、`@CachePut`、`@CacheEvict` 和 `@Caching` 等注解,开发者可以轻松地实现方法级别的缓存操作,从而提升应用的性能和响应速度。合理使用这些注解可以大大减少数据库的访问频率,优化系统性能。
758 89
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
642 60
|
存储 安全 Linux
网络请求的高效处理:C++ libmicrohttpd库详解
网络请求的高效处理:C++ libmicrohttpd库详解
|
存储 小程序 前端开发
毕业设计:微信小程序健康管理系统的开发与实现(一)
毕业设计:微信小程序健康管理系统的开发与实现
794 0
毕业设计:微信小程序健康管理系统的开发与实现(一)
|
存储 人工智能 并行计算
系统崩了,我的【Conda等Jupyter人工智能环境】怎么办?
系统崩了,我的【Conda等Jupyter人工智能环境】怎么办?
358 0
|
Dubbo 前端开发 Java
Dubbo全链路追踪日志的实现
微服务架构的项目,一次请求可能会调用多个微服务,这样就会产生多个微服务的请求日志,当我们想要查看整个请求链路的日志时,就会变得困难,所幸的是我们有一些集中日志收集工具,比如很热门的ELK,我们需要把这些日志串联起来,这是一个很关键的问题,如果没有串联起来,查询起来很是很困难,我们的做法是在开始请求系统时生成一个全局唯一的id,这个id伴随这整个请求的调用周期,即当一个服务调用另外一个服务的时候,会往下传递,形成一条链路,当我们查看日志时,只需要搜索这个id,整条链路的日志都可以查出来了。
777 0
|
数据可视化 大数据
Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
396 0
Nat. Genet. | 基于遗传学主导的方法定义免疫相关性状的药物靶标
|
19天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32068 116
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
8天前
|
应用服务中间件 API 网络安全
3分钟汉化OpenClaw,使用Docker快速部署启动OpenClaw(Clawdbot)教程
2026年全新推出的OpenClaw汉化版,是基于Claude API开发的智能对话系统本土化优化版本,解决了原版英文界面的使用壁垒,实现了界面、文档、指令的全中文适配。该版本采用Docker容器化部署方案,开箱即用,支持Linux、macOS、Windows全平台运行,适配个人、企业、生产等多种使用场景,同时具备灵活的配置选项和强大的扩展能力。本文将从项目简介、部署前准备、快速部署、详细配置、问题排查、监控维护等方面,提供完整的部署与使用指南,文中包含实操代码命令,确保不同技术水平的用户都能快速落地使用。
4700 4