一.软件的生命周期和配置管理
(1)经典软件模型
两个基础类型:线性、迭代
现有的模型:
-瀑布(线性的,非迭代的)-增量(非迭代的)- v型模型(用于验证)-原型(迭代)-螺旋(迭代)瀑布模型:线性类型
通过概念、启动、分析、设计、构建、测试、实现和维护的阶段,进展被视为稳步向下流动(就像瀑布一样)。易于使用,但事后更改的成本高得令人望而却步。
增量模型:线性类型
产品的设计、实现和测试是递增的(每次增加一点),直到产品完成为止。它增量地应用瀑布模型。
-系统被分解成许多小型开发项目。-建立部分系统以生成最终系统。-首先处理最高优先次序的要求。-一旦开发出增量部分,则冻结该部分的需求。
·V模型:线性类型
- 避免错误
- 强化测试:对代码、文件等进行分析
原型法:迭代类型
- 预发布简化版确定用户需求
- 为新开发的技术做市场实验
·螺旋模型:迭代类型
- 每做完一个层面进行评估
(2)敏捷开发
快速迭代:从需求驱动变为成果驱动
- 用户参与
- 短期开发
- 大量测试
极限编程
- 情景对话表达需求
- 原型法设计
- 结对编程,自动构建
- 持续集成,持续发布
- 测试驱动的开发
(3)协同软件开发
·开源软件构建模型
(4)软件配置管理(SCM)和版本控制系统(VCS)
<1> 软件配置管理
SCM的任务是跟踪和控制软件中的变更。SCM实践包括修订控制和基线的建立。
基线:软件配置项各个版本组成的标准线,是版本变化的基础
软件配置项(SCI): SCM的基本结构单元。软件的任何组成部分(源代码、数据、文档、硬件、各种环境)都可以随着软件生命周期中的时间而更新。
<2>版本控制系统的优点
·个人
- 易获得历史版本
- 可比较不同版本的差异
- 将完整的版本推送到其他位置
- 将历史记录从其他位置找回
- 合并早期版本的衍生版本
·团队
- 便于开发团队沟通交流
- 具有日志功能,记录不同开发人员的作品以便审核
<3>分支和进化图
部分人员并行开发,在新功能完成之前不将其加入软件
<4>版本控制系统
1.三种管理模式
·本地管理
集中式管理:客户通过云端交互
分布式管理:用户可以直接交互或通过云端交互
<2>.版本控制的术语
·存储库:我们项目中的版本的本地或远程存储
·工作副本:我们可以处理的项目的本地可编辑副本
·版本或修订:记录我们项目在某个时间点的内容
·更改或差异:两个版本之间的差异
<3>.特点
·可靠:可以保持版本不变,允许备份
·支持多个文件:跟踪项目的版本,而不是单个文件
·可还原:恢复全部或部分旧版本
·可审查历史:查看整个项目或个别文件
·允许合作:版本合并、并行工作、跟踪责任、作品共享
<5> 实例:Git
1.Git存储库有三部分:
·.git目录:存储所有版本控制数据
·缓存区:在内存中
·工作目录:本地文件系统
2.每个文件属于以下三种状态之一:
修改(工作目录中的文件是不同于一个git存储库中,但不是在暂存区域)
缓存(文件修改和添加到暂存区域)
提交(文件保持在工作目录和git目录)
3.Git中的对象图:Git对象图存储在存储库的. Git目录中。从另一台机器/服务器复制git项目意味着复制整个对象图。对象图是一个有向无环图(DAG),它是Git项目的历史记录。不重复保存各版本中没有发生变化的文件。Git对象图只存储单个文件的每个版本,并允许多个提交共享该副本。每个提交都是整个项目的快照,Git用一个treenode表示。
4.分支是在修订控制下的对象的复制,以便修改可以沿着两个分支并行进行。
git checkout——检出,是常用命令。最为常用的两种情形是创建分支和切换分支。