当前课程知识点:软件工程 >  第14章 软件交付与维护 >  14.2 软件演化与维护 >  讲课视频

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

讲课视频在线视频

下一节:编程与测试(选做)

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

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

我们在这门课的第一讲中

提到过可变性

是软件的本质特性

软件在投入使用之后

由于出现新的需求

商业环境的变化 修复缺陷

软硬件升级

以及进一步提升性能等原因

都会导致软件的不断修改

这种变化

说明软件具有使用价值

但是修改又会带来副作用

所以关键的问题

是需要采取适当的方法

有效地实施和管理这种变化

IBM公司的Lehman博士

通过对IBM OS360系统的研究

提出了关于演化的一系列法则

系统维护是不可避免的

当系统环境发生改变时

就会产生新的需求

系统就要修改

修改后的系统重新投入使用

又会促进环境的变化

于是进入新一轮的修改循环

随着系统的改变

系统的结构有可能发生退化

大型系统自身的动态特性

是在开发早期建立的

它决定了系统维护过程中的

一个总趋势

和系统变更可能次数的一个极限

绝大多数大型项目

是在一种饱和状态下进行运作

也就是说

资源和人员的变化

对系统长期演化的影响

是不易察觉的

向系统添加新功能

难免会引入新的缺陷

一个大的功能增量

意味着后面

要紧跟着一个版本

来修补系统新引入的缺陷

这个修补版本中

新的功能会比较少

所以一个版本中

如果有大的功能增量

在预算时应该考虑

还需要缺陷的修复

软件演化包括软件维护

和软件再工程两种策略

软件维护是为了修改软件的缺陷

或者增加新的功能

而对软件进行修改

这种修改通常只发生在局部

一般不会改变整个结构

软件再工程

是为了避免软件本身的退化

而对软件的一部分

进行重新地设计和构造

以便提高软件的可维护性

和可靠性

软件维护

包括改正性维护 适应性维护

和完善性维护三种类型

其中改正性维护

是修改使用之后发现的缺陷

适应性维护是修改软件

使它适应不同的操作环境

完善性维护

是增加或者修改系统功能

使它适应业务的变化

其中完善性维护的比例最高

大概达到所有维护的2/3左右

软件维护的成本是非常高的

通常是开发成本的1-4倍以上

软件维护工作

受到很多因素的影响

大部分情况下

负责维护的人员

并不是原来的开发人员

维护人员

需要对系统进行理解和掌握

才能做好维护

开发人员

往往不喜欢做软件的维护

感觉没有成就感

维护人员的技术水平

也会对维护工作产生很大影响

系统使用越长久也就越难以维护

比如说 很多银行系统

甚至是20世纪60年代开发的

现在已经很少有人熟悉

当时的编程语言

一般的软件维护过程

需要分析变更产生的影响

再决定是立即修改

在后续版本修改或者暂时不修改

变更实现过程

也与正常开发过程类似

有时候

会有一些需要紧急处理的情况

比如说

出现了严重缺陷需要马上修复

这时就会直接修改源代码

进行解决

当软件的修改

造成系统结构受到影响

或者某些部分修改频繁

这个时候

可以考虑用再工程的方法

进行维护

再工程

就是通过再构造

和再文档化的方法

使系统更易于维护

它不会改变系统的功能

再工程需要对现有系统

进行理解和转换

具体的方法

是首先使用逆向工程

把系统重新文档化

然后进一步修改程序结构

同样也需要对数据进行再工程

最后得到一个改善了结构的

再工程系统

逆向工程和开发过程相反

它是从源代码

得到软件系统的规格说明

和设计信息

现在也有很多逆向工程的工具

但是它们在实际应用中

存在一些障碍

由于软件缺少形式化的表示方法

加上代码编写不规范

或者结构比较混乱

在用工具进行逆向工程的时候

有可能得到的建模信息

没有太大价值

所以逆向工程

仍然是一个在探索的

软件工程领域

软件工程课程列表:

第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章 期末考试与总结

-第一部分:基础知识

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

--编程与测试(选做)

讲课视频笔记与讨论

也许你还感兴趣的课程:

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