当前课程知识点:软件工程与软件自动化 >  第一章 软件工程基础 >  1.2 万变不离其宗 >  授课视频1/3

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

授课视频1/3在线视频

下一节:授课视频2/3

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

授课视频1/3课程教案、知识点、字幕

大家好,下面我们讨论软件的开发活动

也就是说我们要了解一下

软件一般的过程是什么样子的

这一点我们在本科时了解过

下面我们来回顾一下

首先我们来看一个幽默

这个幽默很有意思

这个程序员他自认为他的代码没有bug

我们每个人都这么认为,对吧

程序员嘛,我们写的代码谁敢说有问题?

没问题

软件测试发现了20个bug

这是我们保证软件产品质量的一个手段

这没问题,也没问题。你写代码,他们做测试

程序员说10个bug,我认,没问题

没问题,是我写的,写错了,我改

另外10个根本不是bug

是你们不会测

或者是你们的环境有问题

总之不赖我

然后呢,测试组根据程序员提交的修改

进行确认的时候发现

你不是改了10个么

这5个你根本就更差了

根本就没有办法进行测试,没有办法工作

同时发现了更多的bug

这也很正常,bug从理论上来说

不可能被完全发现的

于是程序员和测试人员

拉锯一样重复了这样的活动

发现问题,修改,修改完了再测

一有问题,再测,翻来覆去的这样做

程序员和测试员这样玩游戏可不行

我们的产品是有压力的

当初呢,我们产品承诺要在什么样的情况下

什么样的节点发布

我们要先于竞争对手

没办法,产品必须上市

结果可想而知

用户发现了更多的bug

我们知道,测试人员测试的时候

有的时候并不能完全模拟终端用户的这种无知的行为

可以这么说

大家回顾一下自己在使用计算机软件和硬件的时候

很少有人,这里面有个统计数字

有相当比例的人员

从来不看说明书

上来直接就用

当他发现问题的时候

用错的时候,他才想起来去看说明书

当然现在随着网络的发展

说明书也不用看了

直接上网搜索解决方案

搜完一圈之后发现

说明书当中解决了这个问题

也就是说呢,我们不能期望我们的用户

非常严谨的按照我们设定的流程去做

最后呢,很幽默的一段话

程序员跑了,知道我写的代码有问题

新项目组,老的程序员跑了

新的程序员,新的项目组继续修正

修正完了之后呢

发现了更多的bug

这是很幽默的一句话

程序员跑了之后呢,又刺激一下测试组

当初的死对头,现在你看我享受呢,你们苦哈哈的,对吧

最后我们的产品因为我们太多的bug

满足不了用户的需求

导致我们的公司被竞争对手恶意收购

收购的时候呢

软件中带着783个bug

新的CEO

新的程序员

新的程序员又写出他认为没有bug的代码

非常有意思

说它很幽默,它其实在实践的开发活动当中

还经常出现

下面我来看一看在整个软件开发过程当中

我们提到一个周期的概念

或者我们叫周期模型

软件和硬件不同

这里其实我想区分一下

软件的生存周期和软件的开发周期

很多资料上把生存周期和开发周期认为是一个周期

我个人认为这个开发周期

我们比较重点的关注软件开发过程

当然了,随着我们软件开发活动的延续

我们的维护阶段其实也涵盖在

我们这个软件生存周期的

但一般情况下,在实际的开发过程中

我们团队作战,作战完之后

用户验收之后,项目组解散

或者去做其他的项目

我们留一部分,一小部分人员

或者公司里面有专门的维护部门

他们接手对这个项目的后期维护

所以从现实意义上来说

我们说我们的开发活动就结束了

这个地方我们做一个小的区分

谈到了这种生存曲线

对硬件来说

硬件的生存曲线是一个经典的浴缸曲线,

你买了一个新的硬件

开始的时候老出问题

后面经过磨合磨合磨合之后

就像汽车一样,刚出厂的时候有个磨合期

后面零部件经过磨合之后

进入一个非常好的状况

后来随着寿命的临近结束

故障又多了,该换一个新的硬件了

这是我们说的典型的硬件的生存曲线

对于软件来说

第二个小图说的是理想的软件

这个软件开始的时候

它有很多故障,很多错误

随着不断的维护和修复

软件的故障越来越少

理想的软件期限是这样的,软件么,它不像硬件,它没有劳损的说法

但是实际上的软件生存曲线是这样的

也就是说呢,开始的时候

这个软件是故障多

慢慢的修复后少了

但是后面的每次修复可能带入新的问题

所以它不是一个理想的曲线

一直降低,还可能增加的

这个故障率随着修复引入新的故障

导致这个软件用着用着可能就成本太高了

最后考虑升级换代

开发新的产品

这是我们软件开发的周期和周期模型

对于模型我想说的是,软件开发的基本活动都一样

都是需求分析

系统分析与设计,编码,测试

这是几个主要的基本活动

无论你怎么开发

这几个基本活动都得有,对吧

只不过是这些活动的组织方式不一样

是按顺序来呢

还是迭代来呢

还是螺旋形的呢

所以我们在书上都会提到软件的开发周期模型

典型的软件开发周期模型

当然最经典的就是瀑布模型

这个瀑布模型,水啊,瀑布啊

从高处流下来

先流经需求分析

再流经系统分析设计,编码,测试

这是一个典型的瀑布

这个瀑布啊,或者说原始的瀑布模型它有个特点

就是水往低处流

这个水是不能再回来的

这是它的典型的一个特点

到了这个节点

前面的活动就终止了

就完事了,就完美了

进入下一个阶段

一直往前走,不回头

这是我们典型的瀑布

后来还有其他的像喷泉啊,螺旋啊

还有一个典型的迭代模型

一些主要的流程阶段经过n次迭代

通过这个图大家可以看得出来

第一次迭代的时候

需求是主要的活动,然后呢

后面就可以继续往下做

第二次迭代的时候呢

重点做计划

第三次迭代呢,就是逐步往前推进

你会发现随着迭代次数的增加

最后我整个项目重心

活动的重心

集中在了不同的活动当中去

我们可以说,软件开发的基本活动包括这几个方面

我们强调一下

可行性分析,需求分析,系统分析与设计

详细设计,编码,测试

部署和维护

这是一个相对完整的基本流程

相对于瀑布和其他的一些模型

我们近年来大家比较公认的

就是这种。我们想象一下啊

我们想象一下,瀑布是一个平铺的各个阶段

现在我把各个阶段首尾相接

形成一个圈

这个圈呢构成一个轮子

那么轴啊,就是变更

后面我们对这个模型还会有个详细的讨论

那么以变更管理为轴,滚动前进

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

授课视频1/3笔记与讨论

也许你还感兴趣的课程:

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