当前课程知识点:软件工程 >  第1章 初识软件工程  >  1.3 软件工程的产生与发展 >  讲授视频

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

讲授视频在线视频

下一节:讲授视频

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

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

前面讲过

软件具有复杂性

一致性 可变性和不可见性

这些特性使软件开发

其管理变得很难控制

最终的产品质量也难以保证

美国Standish集团

是一个专门跟踪调查

软件项目的研究机构

这幅图显示了该机构

在1994-2010年期间

对软件开发项目的调查统计结果

研究数据表明

软件项目的平均成功率

大概在30%左右

这里成功的含义是指

在计划的时间和预算内

实现项目的目标

大概有一半左右的项目

超出预算和最后期限

或者存在这样那样的缺陷

另外还有20%左右的项目

彻底失败了

即使投入了极大努力

最终完成的软件项目

所开发的软件也总是存在着

错误多 性能低 不可靠

不安全等质量问题

有的甚至造成了严重的后果

下面我们看几个

软件失败的典型事例

1996年6月4日

欧洲航天局Ariane 5火箭

在发射37秒之后

偏离了它的飞行路径

突然发生爆炸

火箭上载有

价值数亿美元的通信卫星

事后的调查显示

导致事故的原因

是程序中试图将64位浮点数

转化成16位整数的时候

产生了溢出

而系统又缺乏

对数据溢出的错误处理程序

这段程序是开发人员

复用Ariane 4火箭的一段程序

那Ariane 4火箭

为什么没有出现问题呢

主要原因在于

Ariane 5火箭

比Ariane 4的速度高出近5倍

这样在计算时

超出了一个16位数的范围

发生了溢出

显然开发人员

在设计Ariane 5火箭的时候

只是简单地重用了这部分程序

并没有检查它所基于的假设

Windows Vista系统

是曾经被微软

寄予厚望的一个桌面操作系统

也是微软历史上最艰难 最曲折

开发时间最长的一个项目

这个系统从2001年开始研发

整个过程历时5年

耗资数十亿美元

代码规模超过5000万行

由于系统过于庞杂

给整个开发带来了很大的困难

很多的时间都用在了

互相沟通和重新决策上

应该在2003年面世的Vista系统

一再地推迟

最后在取消了一些高级功能之后

于2006年11月正式发布

即使这样

Vista系统在面世之后

仍然暴露出

运行效率低 兼容性差

频繁死机等严重缺陷

可以说这是一款失败的软件产品

那么国内开发的软件系统

情况又如何呢

我们大家可能都在

12306网站上买过火车票

这个系统历时两年研发成功

耗资3亿元人民币

于2011年6月投入使用

在2012年春运期间

一天网站点击量超过14亿次

系统出现了网站崩溃

登录缓慢 无法支付

扣钱不出票等严重的问题

当年在中秋和“十一”黄金周

网站的日点击量又创新高

发售客票超过当年的春运

系统继续出现网络拥堵

重复排队等现象

另外在2014年春运期间

由于网站对身份证信息缺乏审核

出现了用虚假身份证

可以直接购票的现象

同时网站还曝出大规模串号

购票日期穿越等漏洞

显然 软件开发一直面临着诸多的挑战

主要表现在以下方面

软件产品的交付质量难以保证

许多功能不是用户需要的

用户使用的时候

出现很多Bug

由于客户需求的不确定性

和持续的变化

给整个开发过程带来了不可控

开发团队专注于技术

忽视对风险的管理

从而造成了整个开发成本的超支

另外

如何提升团队的能力和效率

一直是一个难题

古人云 诸事有道

软件之道何在

软件工程就是致力于

探索软件开发问题的解决之道

1968年北大西洋公约组织

在德国的一个小镇召开国际会议

首次提出了

“软件工程”这个术语

这也标志着一个新学科的开始

当时的会议报告中这样写道

我们特意选择‘软件工程’

这个颇具争议性的词

是为了暗示这样一种意见

软件的生产

有必要建立在某些理论基础

和实践指导之上

在工程学的

某些成效卓著的分支中

这些理论基础和实践指导

早已成为了一种传统

软件工程的发展

大概经历了四个阶段

在1968年以前

都是属于软件工程的史前阶段

在这个时期

没有什么工程化的开发方法可循

更多的是个人作坊式的开发

于是20世纪60年代末

爆发了软件危机

从1968年开始

软件工程开始了一个新的时期

一直到20世纪80年代末

瀑布模型

成为软件开发的经典模型

整个软件开发过程

被划分成需求 设计 编码

测试等不同阶段

这些阶段

也是按照线性的方式执行的

从1983-1995年

人们开始意识到过程质量

对产品质量的重大影响

这个时期面向对象的方法

和过程改进运动逐渐盛行

提出了

CMM/ISO9000/SPICE等

质量标准体系

从20世纪90年代至今

互联网技术和应用迅速发展

为了应对需求变化

和快速交付的需要

人们开始尝试一种新型的

敏捷开发方法

这种方法采用迭代

和增量的开发过程

强调更紧密的团队协作

目前 敏捷开发方法

已经广泛地应用于软件企业之中

给软件行业带来了巨大的变化

今天

软件工程已经成为

现代软件产业一个关键的技术

并且正在向成熟发展

在未来对网络时代的软件开发

将有更大的推动力

软件工程课程列表:

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

-第一部分:基础知识

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

--编程与测试(选做)

讲授视频笔记与讨论

也许你还感兴趣的课程:

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