传统的开发模型有两种基本的类型:线性过程、迭代过程。选择合适的过程模型的依据:用户参与程度、开发效率/管理复杂度、开发出的软件的质量。
传统的开发模型有好几种。1、瀑布过程:特点:线性推进、整体推进、非迭代。优点:管理简单。缺点:无法适应需求增加/变化。2、增量过程:特点:线性推进、增量式(多个瀑布的串行)、非迭代。优点:比较容易适应需求的增加3、V模型:V 模型可以看作瀑布模型的优化,它仍然是线性推进的,瀑布模型存在的问题大多在 V-model 中也存在。 每个开发阶段都有相应的测试对齐进行验证,但是测试与开发是串行而非并行进行的,也就是测试需要等开发完成后再开始。4、原型过程:开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审,循环往复这个过程,直到用户满意为止。重点在于在原型上持续不断地迭代发现用户变化的需求。 特点:迭代推进。优点:开发质量高。缺点:时间代价高。5、螺旋过程:多轮迭代基本遵循瀑布模式。每轮迭代有明确的目标 ,遵循“原型”过程。进行严格的风险分析, 方可进入下一轮迭代。
进入近现代以来,传统的开发模型已经很难适应快节奏的需求了,因此有了一种名为敏捷开发的模型,他是通过快速迭代和小规模的持续改进,以快速适应变化。敏捷宣言有四个维度:个体和互动高于流程和工具。工作的软件高于详尽的文档。客户合作高于合同谈判。响应变化高于遵循计划。
敏捷开发就是增量和迭代的集合,每次只迭代处理很小的一个增量。
接下来要讲的是软件配置管理和版本控制。
版本控制的分类有三种:1、本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作。2、集中式版本控制系统:仓库存储于独立的服务器, 支持多开发者之间的协作。3、分布式版本控制系统:仓库存储于独立的服务器 + 每个开发者的本地机器。Git就是一个分布式版本控制系统。
Git与传统的VCS相比,VCS是存储版本之间的变化(行)而Git:存储发生变化的文件(而非代码行), 不变化的文件不重复存储。
软件构造的一般过程包括编码、重构、调试、测试、性能分析、代码评审、构建。编码从用途上划分:编程语言、建模语言、配置语言、构建语言。从形态上划分:基于语言学的构造语言、基于数学的形式化构造语言、基于图形的可视化构造语言。