6.1 交付过程
我们先来介绍软件交付的全过程。根据第5章介绍的一个典型的软件交付过程,我们对软件交付过程的全貌有了基本的了解。我们大体可以把软件交付过程划分为三个层级,它们有不同的变更颗粒度和不同的生命周期。
• 第一个层级:代码改动累积并最终提交。从在一行代码上做了一点改动开始,改动不断累积,同时不断进行质量验证,直到把累积起来的改动提交到服务器端的代码库。
• 第二个层级:特性改动累积并最终提交。从特性分支收到代码改动的提交开始,特性代码改动的提交不断累积,同时不断进行质量验证,直到完整实现的特性提交集成。
• 第三个层级:集成并最终发布。从集成分支收到特性改动的提交开始,特性改动的提交不断累积,同时不断进行质量验证,直到这些特性发布上线。
上面的第二个层级可能被省略,而在某些大型系统或大型项目中也可能有更多的层级。我们还是针对典型情况进行分析。
这三个层级有不同的颗粒度和执行的频繁程度。一次特性改动提交通常包含了一两个开发人员的若干次代码改动提交,而一次发布则通常包含了多个开发人员完成的多个特性。
这三个层级有一个共同的特点:每个层级都可以分为先后两个部分,先是在不断累积代码改动的同时持续地验证质量;后是等改动都完成后进行最后的质量验证,验证通过就意味着这个层级完成了。具体来说:
• 在第一个层级,先是开发人员在本地IDE中进行开发工作,不断累积代码改动,并随时进行构建、代码扫描、单元测试、自测试等活动,持续地验证质量;后是等改动完成,且构建等活动也没有问题后,把累积起来的改动提交到服务器端的代码库。
• 在第二个层级,先是特性分支不断收到代码改动的提交,不断累积代码改动,同时不断进行质量验证;后是这个特性分支上的改动完成,使用合并请求管理特性改动的提交过程,直到这个特性分支上的改动都合并到集成发布分支。
• 在第三个层级,先是集成发布分支不断收到特性分支的合入,不断累积代码改动,同时不断进行质量验证;后是在集成了本次计划发布的所有特性之后,进行发布前的一系列质量验证工作,直到最终发布上线。
在考查软件交付的全过程时,我们将按这三个层级中每个层级的先后两个部分分别考查,即一共考查6个细分领域。