当前课程知识点:软件工程 >  第6章 敏捷开发与配置管理 >  6.4 配置管理 >  讲课视频

返回《软件工程》慕课在线视频课程列表

讲课视频在线视频

下一节:讲课视频

返回《软件工程》慕课在线视频列表

讲课视频课程教案、知识点、字幕

软件开发过程中

经常需要修改代码

大家是否遇到过下面的问题

有的时候代码改乱了

想要返回到之前的某个版本

但是却没有保存

调试了半天代码

最后发现 问题的原因

是代码的版本不对

在没有经过允许的情况下

开发人员擅自修改了代码

结果造成系统出现新的问题

由于代码管理比较混乱

在人员流动时

发现有的代码并没有交接

在维护过程中

可能需要重新编译某个历史版本

但是因为缺少原有的开发工具

或者运行环境

造成无法重新编译

在协同工作过程中

代码修改混乱

比如说

自己新改好的代码

又被别人覆盖为旧的版本

软件项目开发过程

面临的一个主要问题

就是持续不断地变化

变化可以导致开发的混乱

软件配置管理

就是用于管理和控制

变化的有效手段

软件配置管理是一种标识

组织和控制修改的技术

它的目的是使错误达到最小

并且能够有效地提高开发效率

软件配置管理的作用

是记录软件产品的演化过程

确保开发人员

在软件生命周期的每个阶段

都可以获得精确地产品配置

最终保证软件产品的完整性

一致性和可追溯性

下面我们来介绍

软件配置管理的相关概念

软件配置项

是软件配置管理的对象

它是可以作为单独实体来处理的

一个工作产品或者软件

常见的软件配置项

包括文档数据 源代码和目标代码

还有一些构造软件的工具

和运行环境

也常常列入配置管理的范围

版本是在明确定义的时间点上

某个配置项的状态

版本管理

是软件配置管理的核心内容

它是对系统的不同版本

进行标识和跟踪的过程

从而保证

软件技术状态的一致性

一个配置项

比如说某一个源程序文件

可以有一个主干版本

像1.0 1.1 1.2 2.0等

也可以从某一个版本的状态

产生若干个分支

分支版本也可以合并到主干上面

基线

是软件配置项的一个稳定版本

它是进一步开发的基础

成为基线的配置项

只有通过正式地变更控制过程

才能修改

在迭代开发过程中

一次迭代包括了计划

需求 设计 实现 测试

等不同的阶段

基线一般是标志着

一个开发阶段的结束

比如说

需求文档经过正式评审之后

就成为一个基线

形成基线的文档

需要经过变更申请和批准之后

才能修改

在一次迭代结束后

就形成一个软件开发的里程碑

在软件开发过程中

程序员修改代码

可能会出现两种情况

第一种情况

每个程序员各自负责不同的模块

但是他们对源程序文件的修改

完全不存在交集

这个时候

每一个人都可以直接从代码库

读取文件

修改之后再存入代码库中

第二种情况

可能有两个程序员

同时修改同一个代码文件

这个时候

就会出现代码覆盖的问题

比如说Joe和Jane

从代码库中

都读取了同一个文件

然后分别进行修改

Joe先修改完

并且把修改的程序文件

存入代码库中

等Jane修改完存入的时候

如果不加控制

就会意外地覆盖了

Joe原来改过的部分

解决这种问题

有两种不同的方法

第一种是独占工作模式

就是一个程序员

在修改代码时

将独自占有代码文件

不允许其他程序员修改

当Joe读取文件之后

系统会对文件进行锁定

这个时候

如果Jane想修改文件

系统就不允许锁定的文件

再被修改

在Joe修改完成之后

把文件写入到代码库中

系统会对其进行解锁

这个时候

Jane才可以从代码库中

获取最新版本进行修改

系统会再进行加锁控制

第二种方法是并行工作模式

它支持多个人共同修改

同一个文件

首先

Joe和Jane同时读取一个文件

然后分别开始编辑文件

Joe先修改完之后

把文件写入代码库中

这个时候Jane再写入文件时

系统就会提示

文件的版本已经被更新

Jane需要将

代码库里的最新文件取出来

和自己的文件进行比较

然后把自己的修改合并进去

Jane将合并后的文件

写入代码库中

之后再从代码库读取的文件

就是合并后的新的版本

代码分支

是支持软件并行开发的常用机制

它实现了一个项目的文件树

及其发展历史

首先 代码库应该有一个

而且只有一个主分支

所有提供给用户使用的正式版本

都在主分支上发布

主分支只用来发布重大的版本

日常的开发

应该在另外的分支上完成

如果开发分支上的文件

需要正式对外发布

就在主分支上

对开发的分支进行合并

除了主干和日常开发分支之外

还有一些临时性的分支

用于应对一些

特定目的的版本开发

比如说

功能分支或者缺陷修复的分支等

需要注意的是

每一个分支的目的和用途

都要明确

运用分支可以实现

多人并行开发一个新的系统

同步地更改

多个并行版本的错误

以及同时集成和发布多个版本

软件配置管理

有很多成熟的工具

像IBM公司的ClearCase

微软公司的Sourcesafe

还有一些开源的工具

其中SVN和Git是两种流行的

开源版本控制工具

Git是一个

开源的分布式版本控制系统

具有处理速度快

分支和合并表现出色的特点

Github是一个

基于Git的开源项目托管库

目前已经成为全球最大的

开源社交编程

以及代码托管网站

在这门课中

我们推荐大家学习和掌握

Git工具

学会在Github上管理自己的代码

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

讲课视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。