这篇文章是对哈工大2022软件构造第三讲“软件构造过程与配置管理”的一些总结和思考。
目录
前言
这一讲中我们将会了解软件开发的基本过程、传统的软件开发过程模型、敏捷开发模式、SCM软件配置管理、Git作为软件配置管理的使用这些方面。这一讲主要关心的是软件开发从0到1的具体过程,从1到好的过程,以及每个阶段中的子过程。
一、软件开发生命周期
上图介绍了软件从0到1逐渐出现所需要的过程,主要包括计划(planning)、分析(analysis)、设计(design)、执行(implementation)、测试(testing&integration)、维护(maintenance)这六个部分。
上图介绍了软件从1到好需要走过的一些步骤,是需要不断修改,版本不断迭代的。
二、传统的软件过程模型
传统的软件过程模型有两种基本类型:线性过程和迭代过程。现在存在的模型类型有:瀑布过程、增量过程、V字模型、原型过程、螺旋模型等等。
2.1瀑布过程
以下位瀑布过程的具体特点:
2.2增量过程
以下为增量过程的具体特点:
2.3迭代过程
迭代即是开发出来之后由用户试用/评审,发现问题反馈给 开发者,开发者修改原有的实现,继续交给用户评审。循环往复这个过程,直到用户满意为止。 时间代价高,但开发质量也高。具体的实现流程如下图所示:
三、敏捷开发
敏捷开发:通过快速迭代和小规模 的持续改进,以快速适应变化。下图为敏捷宣言:
敏捷编程可以通过任务板、双人编程、每日汇报工作具体进行。
四、软件配置管理(SCM)和版本控制系统(VCS)
软件配置管理:追踪和控制软件的变化。核心:版本控制和基线的确立。
古老的版本控制方法:通过复制文件并修改文件名
现在的版本控制方法可以进行团队协作,显示每个人修改了什么,不仅在本地有仓库进行管理,在远程服务器上也有远程仓库,可以供人们上传或是下载文件。
五、Git 作为 SCM 工具的一个例子
下图为Git中的各个状态和使用的Git指令,Git指令可以将文件在这些状态中进行转换。
在Git中每个文件有三个状态:已修改、已暂存、已提交。
传统的软件配置管理是保存各个版本之间发生变化的行,在Git中是存储发生变化的文件,只要文件内容发生了变化就会存入,如果文件没发生变化,仓库中还会仍然存储原来的文件,没有变化的文件只会存储一次。
分支是在版本控制下对对象的复制,以便可 以沿两个分支平行进行修改。分支控制使用的指令主要有:git merge、git checkout、git branch等。
六、软件构建的一般流程
七、软件构建的窄义过程
粗略理解build:build-time → run-time,借助于工具,将软件构造各阶段的活动“自动化”(编译、打包、静态分析、测试、生成文档、部署、…)尽可能脱离“手工作业”,提高构造效率。
总结
这一讲主要介绍了软件在构造时的一些流程,如瀑布过程、敏捷编程、线性过程、迭代过程等等。还介绍了SCM和VCS(软件配置管理和版本控制系统),重点介绍了Git这个版本控制系统的例子,介绍了Git中文件的各种状态:已修改、已暂存、已提交,还介绍了Git中的各种指令,可以控制文件在各种状态间转换。Git与传统的版本控制系统不同的点在于,Git在版本控制时是通过保存修改后的文件,没有修改的文件只储存一次即可,而传统的版本控制系统是通过存储发生变化的行进行版本控制的。