开发模型:
软件开发生命循环:1.计划 2.分析 3.设计 4.实现 5.测试和集成 6.维护
瀑布模型:原始模型,整体开发流程如同瀑布,从上到下分为几个阶段:概念(conception), 初始化(initiation), 分析(analysis), 设计(design), 构造(construction),测试 (testing), 实现(implementation) 维护(maintenance),利于使用,但若需求有变化,应对变化的代价高,可能要重来好几遍。
原型模型:先制造一个满足基本需求的工程原型,通常可忽略细节。从顾客处获得使用的反馈,在对原型进行修改。在项目早期可以获得用户的反馈。用户判断软件是否符合规格说明。对软件进行估算。
增量模型:将整个产品分成不同的增量,逐一完成。等同以增量的方式实施瀑布模型。将整个软件工程划分为很多小的开发项目。每部分综合起来是完整的系统。通常首先实现优先级最高的需求,一旦开始开发某增量,则该增量的对应需求被冻结。
螺旋模型:一种风险驱动的过程模型。在每个阶段增加风险分析模型,利用原型开发等方法降低风险。
V模型:是瀑布模型的扩展,强化测试阶段。使用V型开发阶段代替瀑布模式的线性开发。包含了单元测试和整体系统测试;清楚的标识了开发和测试的各个阶段;自上而下逐步求精,每个阶段分工明确,便于整体的把控。但是和瀑布模型一样,测试工作在编码之后,就导致错误不能及时的进行修改。
迅捷开发: 提倡适应性规划、演化开发、 尽早交付和持续改进,并鼓励对变化作出快速和灵活的响应。强调以用户为中心进行软件开发,需要持续集成,持续交付。
软件管理:
软件配置管理(Software Configuration Management):追踪和控制软件的变化
包括:
- revision(修改)control
- establishment of baseline(软件持续变化过程中的稳定时刻,对外发布的版本)
- CMBD:配置管理数据库,储存软件各配置项随时间发生变化的信息+基线。
版本控制系统(VCS):版本(version)指软件的任一特定时刻的形态指派一个唯一的编号,作为”身份标识“。
为什么需要版本控制?
对于个人开发者:
- 为了可能的版本回滚
- 比较两个版本的差异
- 备份软件版本历史
- 获取备份
- 合并软件版本(beta合并为standard)
对于研发团队:
- 在多个开发者间共享和协作
- 记录每个开发者的动作。便于“审计”
VCS的演化:
- 复制文件修改文件名
- 本地VCS:仓库存于本地,不共享
- centralized VCS:仓库存储与服务器,支持多开发者协作。
- Distributed VCS:仓库存储于独立的服务器+每个开发者的本地机器,如github。
Git 结构:workspace, staging, local repository, remote repository.
Git repository的三部分:
- .git文件夹——>本地CMDB
- 工作目录:本地文件系统
- 暂存区
每个文件处于三种状态之一:①已修改;②已暂存;③已提交
Git object graph:对git的所有操作都是对一个包含该版本所有文件的图结构的操作
Git命令对文件的影响:
- git commit: 文件从staging area(内存中)->object graph
- git branch/merge: 分支指在版本控制下,一个项目在多个平行分支中同时进行测试开发。merge是合并两个分支,但不会覆盖掉(cover)原来的分支。