第二章主要是讲软件开发周期和软件的配置管理。
开发过程主要有传统阶段以及敏捷的开发过程以及这两种的区别。
每一个软件肯定是有开发周期的,因为每一个软件都需要维护,可能是修复bug,可能是增加新的功能,但是如果增加的代码太多,那么在软件上进行修改就更加困难,所以软件的质量上升过程肯定是波浪形的。
在软件的开发过程中肯定不是一蹴而就的,所以肯定是会有很多的不同版本。软件的开发过程主要有两种类型,线性过程以及迭代过程。对于线性过程,需要从头到尾一个阶段一个阶段走,按部就班。这种开发过程需要的时间很长,而且需要最后软件的成品。而迭代过程不同,它在每一个阶段都可以返回到上一个阶段进行修改,比较方便。程序的常用开发过程有以下几种:瀑布模型,也就是按阶段线性推进的模型,开发很简单,但是无法适应用户的需求改变,无迭代过程,需要项目的需求非常明确的时候。然后是增量模型,也就是将系统划分为多个模块进行开发,但是这要求开发的模块接口很精细,能够继承。然后是V模型,这是一个强调测试的模型,每一个阶段的产品都得能够通过测试。然后是原型模型,也就是通过用户使用原型来帮助用户确定需求。最后是螺旋模型,适用于长周期,综合了瀑布模型以及原型模型的开发过程。
传统的开发过程注重文档,而敏捷的开发过程不太注重步必要的文档,强调小规模快速的开发,它认为可工作的软件是比文档重要的。这是一种极限的迭代与用户参与的开发过程。
接下来是软件配置管理,我们只要将软件形成相应的版本,所有版本放在一个版本库里即可。我们可以使用版本控制工具来方便我们多人协作,还可以在不同的版本之间形成线性的结构或者分支。版本控制工具分为三种,本地控制工具,集中式控制工具以及分布式控制工具。本地的无法共享以及协作,是现在不提倡的,集中式的版本控制系统要保证服务器对版本的保存的稳定性。分布式可以将版本存储在不同的机器上,就算一个服务器出了问题,也可以从别的机器上直接拷贝过来。
对于传统的版本控制工具,存储的是不同版本之间的变化,所以我们可以很容易地看出不同版本之间的差别,而缺点在于我们很难直接获得新版本的文件。
git则存储发生变化的文件,对于不变化的文件是不必重复存储的,但是也难以看出不同版本之间的不同。 优点在于git可以创建任意多的分支,而且分支创建的时间与已有分支的数目是无关的。很方便并行化的开发。
git中commit对象如果是由分支创建的,那么就会有两个父节点,而如果是由commit命令创建的,就只有一个父节点。
对于git,如果两个版本的文件是不同的,那么会对两个文件都进行存储,而如果两个版本文件相同,那么新的一个版本会有一个指针来指向前一个版本的文件。
对于广义的软件开发过程,是由Design Programming Debug Testing Build Release组成的。而狭义的软件构造过程只是build过程,也就是Validate Compile Link Test Package Install Deploy组成的。
对于广义的软件开发过程,我们可以使用Eclipse来进行。对于build过程,我们可以使用maven以及gradle等工具来进行。
软件构造 第四周 总结
最新推荐文章于 2023-05-26 15:01:48 发布