【软件构造】第二章

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

(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——检出,是常用命令。最为常用的两种情形是创建分支和切换分支。

 

 

posted @ 2019-03-29 17:01  AllenHIT  阅读(121)  评论(0编辑  收藏  举报