- 软件开发过程
考点是
-
-
- 根据用户不同需求设计不同的开发过程
- 概括区别
- 传统开发过程
- 线性过程
- 最基本的就是线性,问题在于软件开发不同于盖房子,它不能对过程进行监督和检查,只有在最后一刻才能看见全貌。
- 迭代过程
- 上面两种都是基本开发过程,由此延申出其他。
- 瀑布模型
- 优点:线性推进;阶段划分清楚;无迭代
- 缺点:不适应需求变化+大量报告+修改量大
- 增量模型(Incremental (non-iterative))
- 将单独功能模块变成小的可执行的产品切块
- 局限
- 对增量的划分必须有经验
- 架构公开,新增加不能大量修改已有增量
- V字模型
- 是瀑布模型的延伸
- 展示了SDLC的每个阶段与其测试阶段之间的关系
- 原型模型
- 用户需求不明确
- 线性过程
-
先开发一个原型用于展示,不一定可以运行
-
-
-
- 优点:弄清客户需求并改变
- 缺点:忽略程序结构的设计;整体结构不是很好
- 螺旋模型
- 增加风险分析环节,多轮迭代遵循瀑布模式和原型过程
- 缺点:开发周期长,是由于一些大型软件:EX:操作系统的开发
-
- 敏捷开发
- 快速迭代+小规模持续改进
- 适用于一些开发周期要求特别短的比如一些互联网产品
- 考点:考试考过:
- 交互高于过程和工具
- 可工作的软件高于全面的软件
- 客户协作高于谈判
- 适应变化高于适应计划
-
总结:人的交互协作,能跑起来就行,适应变化
- Git
- Git当中的每个操作都会对图形成具体影响
- Git和传统版本控制工具的区别:传统描述的是相对于上一个版本文件的变化情况,不会记录整体。问题是创建分支的时候需要获取整体情况,需要从初始版本开始叠加。创建分支的时间与版本的复杂度挂钩,而git(snapshot模式)会存储改变后的整个文件,不变的就用指针或者链表指向文件。
- 考点:考查在执行一系列指令之后的图是什么样子的
-
-
- 考点:Object Graph
- 是个有向无环图
- 对于每个版本来说:
- 父版本:0(初始版本)/1(commit)/2(morge)
- 子版本:任意
-