软件工程 清华 刘强

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


面向对象的设计方法:以 JAVA 语言为典型代表
22
如何评价软件质量 ?
McCall 质 量 模 型
23
如何评价软件质量 ?
维护人员
良好的文档 可读的代码 良好的设计 可重用性
最终用户
功能性 易使用 易学习
可靠性 正确性 有效性
降低成本 可移植性 增强产品性
客户
24
如何评价软件质量 ?

举例:某学生使用JAVA语言开发了一个计算器程序,可以 实现加、减、乘、除四种操作。 请阅读和分析该程序,并完成以下内容:

软件工程

软件的质量属性 软件工程的基本要素 软件工程的发展与挑战

软件工程学科

软件工程知识体系 软件工程职业道德规范
4
什么是软件 ?

软件的定义
软件是计算机程序、规程以及运行计算机系统可能需要的 相关文档和数据。 软件 = 程序 + 数据 + 文档

软件的本质
软件是客观世界中问题域与求解域的具体描述,它实质上 是客观事物的一种反映,是知识的“提炼”和“固化”。 软件 = 知识 + 程序 + 数据 + 文档
—— Ian Sommerville
2
引言

什么是软件? 什么是软件危机? 如何评价软件的质量? 什么是软件工程? 什么是软件过程? 什么是软件工程方法? 什么是软件工程工具? 当前软件工程面临什么挑战? 软件工程学科与哪些学科相关?
3
内容概要

软件

软件的定义与发展 软件危机引起的思考
13



举例 5:丹佛国际机场

丹佛新国际机场希望被建成现代 的机场,它将拥有计算机控制的 自动化行李处理系统,而且还有 5300 英里长的光纤网络。

不幸的是,系统存在一个严重的 程序缺陷,导致行李箱被绞碎,居然还开着自动行李车往 墙里面钻。

机场启用推迟 16 个月,预算超过 32 亿美元,并且废弃了 这个自动化的行李处理系统,使用手工处理行李。
整合许多的 第三方软件…
改良对硬件标准的支持 并整合到桌面上…
Windows 2.0 Windows 1.0 MS-DOS
用户图形界面…
改进界面、内存管理 添加声音I/O的基本多媒体 支持、TrueType字体…
Windows的功能演化
90年 95年 18 98年 00年 01年 06年
85年
87年
VCS2 VCS1
V7
V6
溶解滤镜 图层控制+ 矢量编辑+
RAW3.* 图像扭曲 点恢复笔刷 红眼工具 RAW2.* 镜头校正滤镜 阴影、高光 智能锐化 颜色匹配 镜头模糊滤镜 … 实时柱状图 …
历史概念 … 吸取 矢量图像


Photoshop软件的演化
95年 96年 19 99年 00年 02年 03年 05年
6
软件的发展

软件业务模式

通用软件:Microsoft,Oracle 水平应用软件:SAP, Siebel;用友、金蝶、神州数码 垂直应用软件:神州数码、亚信及东软 定制软件:系统集成

软件行业规律

通用性越高的软件,其集约效应越强,具有“胜者通吃”的特点; 通用性越弱、定制性越强的软件,其垄断性、集约性就越小。 桌面操作系统:微软第一占 87% 市场, Apple第二仅有 4% 份额 ERP 软件:排名第一的 SAP 和 排名第二的仁科之间竞争非常激烈
问题定义 需求开发 软件设计 软件实现 软件测试
构想文档 用例模型
分析模型 软件需求规 格说明
设计模型 软件体系结 构文档 软件详细设 计文档
源程序 目标代码 可执行构件
测试规程 测试用例 测试报告
软件开发管理 (软件项目管理计划、软件配置管理计划、软件质量保证计划、评审记录……)
分析:将复杂的问题分解成 可理解并能够处理的若干小 问题进行研究和分析。
合成:在分析的基础上,针 对各个不同部分给出解决方 案,并将这些小的构造块组 合成一个大的系统。
27
软件工程的目标

软件工程的目标

在规定的时间和规定的预算内开发出高质量的软件 提高软件的质量与生产率,最终实现软件的工业化生产
软件工程概述
清华大学软件学院 刘强
引言
Software engineers can be rightly proud of their achievements. Without complex software we could not have explored space, would not have the Internet and modern telecommunications, and all forms of travel would be more dangerous and expensive. Software engineering has contributed a great deal, and I am convinced that, at the discipline matures, its contributions in 21st century will be even greater.
5
软件的发展
网络增值服务 面向大众的 成套软件 企业解决方案 软件产品 独立编程服务
• 代表:CSC • 特点:为单个客 户提供定制软件, 包括技术咨询、 软件编程和维护; 软件销售是一次 性的。 • 代表: Informatics • 特点:保护知识产 权,以许可证方式 销售软件产品。 • 代表:Oracle • 特点:面向领域, 以企业解决方案供 应商的面目出现。 • 代表:Microsoft • 特点:基于个人 计算,服务大众 市场。 • 代表:Google • 特点:向端用户 收小头,向寄生 在服务上的广告 商要大头。

软件工程的基本要素

方法
过程:支持软件生命周期的所有活动 方法:为软件开发过程提供“如何做” 的技术
质量

工具:为软件开发方法提供自动的或 半自动的软件支撑环境
工具 过程
28
软件过程
用户需求 开发过程
产品
用户需求
开发过程
产品
反馈
29
软件过程

软件过程是一个为建造高质量软件所需完成的任务框架

按照微软公司最初的计划,该系统面世时间 应该在 2003 年,之后推迟到 2004 年下半年 再到 2005 年初,最终在取消一些高级功能 后于 2006 年 11 月正式发布。

从 Vista Beta 1 进入公开测试以来,程序错误总数已经超过 2 万个,这其中还不包括微软内部未公开的一些错误。
[CMU, பைடு நூலகம்990]
软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地 解决软件问题。
[IEEE, 1993]
软件工程是 ①将系统性的、规范化的、可定量的方法应用于软件的开 发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。
26
什么是软件工程 ?

软件工程是一种解决问题的工程活动

7
软件危机

软件危机是指在计算机软件的开发和维护过程中遇到的一 系列严重问题。

软件危机的具体表现

软件延迟交付甚至取消项目 软件开发成本超支 软件错误多、性能低、不可靠、不安全 软件维护十分困难 ……
8
软件危机
9
举例 1:ARIANE 5 火箭

1996 年 6 月 4 日,Ariane 5 火箭在发射 37 秒之后偏离其飞行路径并突然发生爆 炸,当时火箭上载有价值 5 亿美元的通 信卫星。 事故原因在于软件的缺陷
(1)结合软件质量属性,综合评价该程序的质量。 (2)根据以上分析,重新设计出更好的计算器程序。 (3)通过这个事例,总结所获得的启示和体会。

程序代码:
25
什么是软件工程 ?
[Bauer, 1972]
软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建 立和使用的一系列好的工程化原则。
90年
93年
时间
软件是演化的

软件修改对质量的冲击

人们总是认为软件是容易修改的,但忽视了修改所带来的副作用 不断的修改最终导致软件的退化,从而结束其生命周期 软 件 的 失 效 率 曲 线
失效率
由于修改造成 失效率的提高
修改 实际曲线 理想曲线
时间
20
软件是不可见的
软件人员太像“皇帝的新衣”故事中的裁缝了。当我来 检查软件开发工作时,所得到的回答好象对我说:我们 正忙于编织这件带有魔法的织物。只要等一会儿,你就 会看到这件织物是及其美丽的。但是我什么也看不到, 什么也摸不到,也说不出任何一个有关的数字,没有任 何办法得到一些信息说明事情确实进行得非常顺利,而 且我已经知道许多人最终已经编织了一大堆昂贵的废物 而离去,还有不少人最终什么也没有做出来。

在启动机器时,计算机控制软件并没有切断 X 光束,病人一直在治 疗台上接受着过量的 X 光照射。
12
举例 4:网络蠕虫病毒

1988 年,美国康奈尔大学研究生莫里斯编写的蠕虫病毒, 造成了数千台计算机停机。 2003 年 1 月 26 日,一种 “2003 蠕虫王” 病毒横扫全球, 造成网络严重堵塞、域名服务器瘫痪、网络访问迟缓、电 子邮件故障、银行自动提款机停止服务、网络订票及信用 卡等系统不能正常运行,直接经济损失超过 12 亿美元。 2003 年 8 月 11 日,出现所谓冲击波的网络蠕虫病毒,它以 大约每小时感染 2500 台计算机的速度在网络中快速传播, 仅两天时间感染的计算机数量就高达 22.8 万台。 软件系统存在漏洞是造成安全隐患的主要原因。
软件是演化的
版本升级
Windows XP / 2000 Windows 2000 / 98 V5 V4 V3 Windows95 V2 Windows3.1 V1 system7
图层、色彩平衡 饱和度调节 路径… 调色板 标签 矢量编辑 … 多次撤销 色彩管理 文字矢量化 修复刷子 新绘画引擎 支持相机RAW1.* …


程序中试图将 64 位浮点数转换成 16 位整数时产生溢出 缺少错误处理程序对数据溢出进行管理 备份软件通过复制而成
10
举例 2:Windows Vista 系统

该系统从 2001 年开始研发,整个过程历时 5 年,先后有 9000 位开发人员投入其中, 耗资 60 亿美元,代码规模超过 5000 万行。
30
软件建模分析

软件工程关注系统建模
问 题 域 模 型
求 解 域 模 型
31
软件建模分析

举例:USB 协议
本体模型:USB协议
实例化
软件:USB2.0 接口驱动程序
抽象与规范
32
软件设计方法

面向过程的设计方法:以 C 语言为典型代表

以算法作为基本构造单元,强调自顶向下的功能分解,将功能和数 据进行了一定程度的分离。
14
一个值得思考的问题

为什么一个看似简单的东西,却很有可能变成一个落后进 度、超出预算、存在大量缺陷的怪物?
15
软件是复杂的

Linux 全局内核函数网络图
Linux内核有630个函数, 存在1814个函数调用。
图中将函数表示为节点, 调用关系表示为边。
16
软件是复杂的

应用服务器支撑软件 Tomcat
该软件含1019个类, 类与类之间有2109 个继承或聚合关系。
图中将类表示为节点, 关系表示为边。
17
软件是演化的
升级版本 Vista Windows XP Windows 2000 Windows 98 Windows 95 Windows 3.*
借鉴Mac OS… 通过IE给系统桌面提供 HTML支持… 面向商业,包含NTFS文 件系统、EFS文件加密、 增强硬件支持等… “安全优先”的设计理念,引入许多新的安 全机制和技术,提高用户终端的安全性…
11
举例 3:Therac 25 放射治疗仪

20 世纪 80 年代中期,Therac 25 放射 治疗仪在美国和加拿大发生了多次医疗 事故,5 名患者治疗后死亡,其余患者 则受到了超剂量辐射而严重灼伤。

事故原因在于操作员的失误和软件的缺陷

当操作员熟练操作之后,发现输入错误而马上纠正,系统则显示错 误信息,操作员不得不重新启动机器。
—— F.D. Brooks, Manager of OS/360 “The Mythical Man-Month”, 1974
21
内容概要

软件

软件的定义与发展 软件危机引起的思考

软件工程

软件的质量属性 软件工程的基本要素 软件工程的发展与挑战

软件工程学科

软件工程知识体系 软件工程职业道德规范
相关文档
最新文档