【软件构造】第二章 软件构建的过程和工具(1)

一.软件的生命周期和配置管理

1. 软件的生命周期

1)从01

·计划:确定领域

·分析:转换用户需求

·设计:架构、语言的使用

·实行:编写软件

·测试:检验功能

·维护:延长至计划寿命

2)从10

·软件的更新与老化

·不同软件之间相互取代演化

3)经典软件模型

·两个基础类型:线性、迭代

·瀑布模型:线性类型

- 按步骤依次实现

- 需求稳定,修改困难

 

·增量模型:线性类型

- 分治思想,选择最核心的需求

- 每个增量各自开发时使用瀑布模型

 

·V模型:线性类型

- 避免错误

- 强化测试:对代码、文件等进行分析

 

·原型法:迭代类型

- 预发布简化版确定用户需求

- 为新开发的技术做市场实验

 

·螺旋模型:迭代类型

- 每做完一个层面进行评估

 

4)敏捷开发

·开发宣言

- 人以及人的互动胜于过程和工具(实时评审)。

- 可运行的软件胜于面面俱到的文档。

- 客户合作胜于合同谈判。

- 响应变化胜于遵循计划。

·快速迭代:从需求驱动变为成果驱动

- 用户参与

- 短期开发

- 大量测试

·极限编程

- 情景对话表达需求

- 原型法设计

- 结对编程,自动构建

- 持续集成,持续发布

- 测试驱动的开发

·任务墙和过程管理:类似流水线

5)协同软件开发

·开源软件构建模型:没有协同管理控制

·模式细节

 

2. 软件配置管理

1基本概念

·版本控制:配置管理的主要工具

·基线:软件配置项各个版本组成的标准线,是版本变化的基础

·检入、检出:检入解封,检出锁死

 

2)版本控制系统的优点

·个人

  - 易获得历史版本

  - 可比较不同版本的差异

  - 将完整的版本推送到其他位置

  - 将历史记录从其他位置找回

  - 合并早期版本的衍生版本

·团队

  - 便于开发团队沟通交流

  - 具有日志功能,记录不同开发人员的作品以便审核

3)分支和进化图

·部分人员并行开发

·在新功能完成之前不将其加入软件

4)三种管理模式

·本地管理

 

·集中式管理:客户通过云端交互

 

·分布式管理:用户可以直接交互或通过云端交互

5)一些术语

·存储库:我们项目中的版本的本地或远程存储

·工作副本:我们可以处理的项目的本地可编辑副本

·版本或修订:记录我们项目在某个时间点的内容

·更改或差异:两个版本之间的差异

6)特点

·可靠:可以保持版本不变,允许备份

·支持多个文件:跟踪项目的版本,而不是单个文件

·可还原:恢复全部或部分旧版本

·可审查历史:查看整个项目或个别文件

·允许合作:版本合并、并行工作、跟踪责任、作品共享

3. 实例:Git

(1)Git存储库

·.git目录:存储所有版本控制数据

·缓存区:在内存中

·工作目录:本地文件系统

(2)文件的三种状态

·修改:工作目录中的文件与git存储库中的文件不同,但不在临时区域中

·分阶段:文件已修改并已添加到暂存区

·提交:该文件在工作目录和git目录中保持相同

(3)Git中的对象图:Git所有操作的基础,存储在存储库的.git目录中

·从另一台机器/服务器复制git项目意味着复制整个对象图。

·对象图中的代码

  - 不重复保存各版本中没有发生变化的文件

  - 每个文件的每个版本只保存一次,多个提交可共享副本

(4)分支:commit -> branch -> merge

posted @ 2018-03-12 08:21  长安蒹葭  阅读(307)  评论(0编辑  收藏  举报