软件工程概论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一讲 软件工程概论与需求分析
2018/11/4
上海交通大学计算机科学与工程系
1
内容
软件危机 软件工程 传统开发模式 面向对象模式 UML 需求分析 基于用例的需求分析
2018/11/4
上海交通大学计算机科学与工程系
2
1. 软件危机
上海交通大学计算机科学与工程系
1.1 从千年虫问题谈起
2018/11/4
上海交通大学计算机科学与工程系
16
(2)需求分析
对待开发软件提出的需求进行分析并给出
详细的定义
编写软件需求说明书或系统功能说明书及
初步的系统用户手册
提交管理机构评审
2018/11/4
上海交通大学计算机科学与工程系
17
(3)设计
总体设计 — “如何解决问题”
可以列出多种解决方案进行比较 把各项需求转换成软件的体系结构。结构中每一组成 部分都是意义明确的模块,每个模块都和某些需求相 对应
2018/11/4
上海交通大学计算机科学与工程系
6
2018/11/4
上海交通大学计算机科学与工程系
7
2018/11/4
上海交通大学计算机科学与工程系
8
一些数据:
大约70%的软件开发项目超出了估算的时间,大型项 目平均超出计划交付时间20%到50%,90%以上的软 件项目开发费用超出预算,并且项目越大,超出项目 计划的程度越高
义
发
2018/11/4
上海交通大学计算机科学与工程系
15
(1)问题定义和可行性研究
确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源(计算机硬件,软件,人力等)、
成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研 究报告,提交管理部门审查
2018/11/4
上海交通大学计算机科学与工程系
13
3. 传统开发模式
上海交通大学计算机科学与工程系
3.1 瀑布模型
瀑布模型(Waterfall Model)
定 Definition Feasibility Study Requirements Analysis System Design 开 Program Design Coding & Module Testing Integration & System Testing 维护 Delivery & Maintenance
2018/11/4
上海交通大学计算机科学与工程系
11
2.2 要素
软件工程三要素:方法、工具和过程 软件工程方法为软件开发提供了 “如何做” 的技术 软件工具为软件工程方法提供了自动的或半自动的软件
支撑环境
软件工程过程定义了: 方法使用的顺序
要求交付的文档资料 为保证质量和适应变化所需要的管理
2018/11/4
上海交通大学计算机科学与工程系
5
美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一
项目花了5000人一年的工作量,最多时有1000人投入开发工作,写 出了近100万行源程序。......据统计,这个操作系统每次发行的 新版本都是从前一版本中找出1000个程序错误而修正的结 果。...... 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程 中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾 难。......程序设计工作正像这样一个泥潭,......一批批程序员 被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的 困境......”。IBM360操作系统的历史教训成为软件开发项目的典 型事例为人们所记取。
千年虫如同一个定时炸弹一样,十几年前就有人
提出了预警,但是无人注意 直到日期到来的前两年,才引起了恐慌
2018/11/4
上海交通大学计算机科学与工程系
4
1.2 软件危机的提出
“软件危机” 是1958年在NATO会议上作为一个正
式的议题被提出来
软件项目不成功的例子比比即是:
1999 年 10 月,耗资 1.25 亿美元的 NASA 的火星 气象卫星失踪,据信这是由于简单的数据转换错误所 导致的。人们发现卫星软件中,有些数据使用英制, 它们应被转换成公制。这个卫星应当充当另一项任务 中的火星极地着陆项目的通信转发器,那个任务也失 败了,原因不明。
详细设计 — 对每个模块要完成的工作进行具体
的描述,为源程序编写打下基础
编写设计说明书,提交评审。
2018/11/4
上海交通大学计算机科学与工程系
18
(4)编码
把软件设计转换成计算机可以接受的程序代码,
即写成以某一种特定程序设计语言表示的“源程 序清单”
写出的程序应当是结构良好、清晰易读的,且与
设计相一致的
2018/11/4
上海交通大学计算机科学与工程系
19
(5)测试
单元测试,查找各模块在功能和结构上存在的问
美国政府审计局:只有不到2%的合同定购软件在发 布时具有可用性——98%以上的项目都失败了
2018/11/4
上海交通大学计算机科学与工程系
9
2. 软件工程
上海交通大学计算机科学与工程系
2.1 定义
Boehm:运用现代源自文库学技术知识来设计并构造计
算机程序及为开发、运行和维护这些程序所必需 的相关文件资料 IEEE:软件工程是开发、运行、维护和修复软 件的系统方法 Fritz Bauer:建立并使用完善的工程化原则,以 较经济的手段获得能在实际机器上有效运行的可 靠软件的一系列方法
软件开发各个阶段完成的里程碑
2018/11/4
上海交通大学计算机科学与工程系
12
2.3 原理
⑴ 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控 制计划 验证计划 运行维护计划 ⑵ 坚持进行阶段评审
⑶ 实行严格的产品控制——基准配置管理 (Baseline configuration management) ⑷ 采用现代程序设计技术 ⑸ 结果应能清楚地审查— set standards ⑹ 开发小组的成员应该少而精 1+1 < 2 ⑺ 承认不断改进软件工程实践的必要性
2018/11/4
上海交通大学计算机科学与工程系
1
内容
软件危机 软件工程 传统开发模式 面向对象模式 UML 需求分析 基于用例的需求分析
2018/11/4
上海交通大学计算机科学与工程系
2
1. 软件危机
上海交通大学计算机科学与工程系
1.1 从千年虫问题谈起
2018/11/4
上海交通大学计算机科学与工程系
16
(2)需求分析
对待开发软件提出的需求进行分析并给出
详细的定义
编写软件需求说明书或系统功能说明书及
初步的系统用户手册
提交管理机构评审
2018/11/4
上海交通大学计算机科学与工程系
17
(3)设计
总体设计 — “如何解决问题”
可以列出多种解决方案进行比较 把各项需求转换成软件的体系结构。结构中每一组成 部分都是意义明确的模块,每个模块都和某些需求相 对应
2018/11/4
上海交通大学计算机科学与工程系
6
2018/11/4
上海交通大学计算机科学与工程系
7
2018/11/4
上海交通大学计算机科学与工程系
8
一些数据:
大约70%的软件开发项目超出了估算的时间,大型项 目平均超出计划交付时间20%到50%,90%以上的软 件项目开发费用超出预算,并且项目越大,超出项目 计划的程度越高
义
发
2018/11/4
上海交通大学计算机科学与工程系
15
(1)问题定义和可行性研究
确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源(计算机硬件,软件,人力等)、
成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研 究报告,提交管理部门审查
2018/11/4
上海交通大学计算机科学与工程系
13
3. 传统开发模式
上海交通大学计算机科学与工程系
3.1 瀑布模型
瀑布模型(Waterfall Model)
定 Definition Feasibility Study Requirements Analysis System Design 开 Program Design Coding & Module Testing Integration & System Testing 维护 Delivery & Maintenance
2018/11/4
上海交通大学计算机科学与工程系
11
2.2 要素
软件工程三要素:方法、工具和过程 软件工程方法为软件开发提供了 “如何做” 的技术 软件工具为软件工程方法提供了自动的或半自动的软件
支撑环境
软件工程过程定义了: 方法使用的顺序
要求交付的文档资料 为保证质量和适应变化所需要的管理
2018/11/4
上海交通大学计算机科学与工程系
5
美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一
项目花了5000人一年的工作量,最多时有1000人投入开发工作,写 出了近100万行源程序。......据统计,这个操作系统每次发行的 新版本都是从前一版本中找出1000个程序错误而修正的结 果。...... 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程 中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾 难。......程序设计工作正像这样一个泥潭,......一批批程序员 被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的 困境......”。IBM360操作系统的历史教训成为软件开发项目的典 型事例为人们所记取。
千年虫如同一个定时炸弹一样,十几年前就有人
提出了预警,但是无人注意 直到日期到来的前两年,才引起了恐慌
2018/11/4
上海交通大学计算机科学与工程系
4
1.2 软件危机的提出
“软件危机” 是1958年在NATO会议上作为一个正
式的议题被提出来
软件项目不成功的例子比比即是:
1999 年 10 月,耗资 1.25 亿美元的 NASA 的火星 气象卫星失踪,据信这是由于简单的数据转换错误所 导致的。人们发现卫星软件中,有些数据使用英制, 它们应被转换成公制。这个卫星应当充当另一项任务 中的火星极地着陆项目的通信转发器,那个任务也失 败了,原因不明。
详细设计 — 对每个模块要完成的工作进行具体
的描述,为源程序编写打下基础
编写设计说明书,提交评审。
2018/11/4
上海交通大学计算机科学与工程系
18
(4)编码
把软件设计转换成计算机可以接受的程序代码,
即写成以某一种特定程序设计语言表示的“源程 序清单”
写出的程序应当是结构良好、清晰易读的,且与
设计相一致的
2018/11/4
上海交通大学计算机科学与工程系
19
(5)测试
单元测试,查找各模块在功能和结构上存在的问
美国政府审计局:只有不到2%的合同定购软件在发 布时具有可用性——98%以上的项目都失败了
2018/11/4
上海交通大学计算机科学与工程系
9
2. 软件工程
上海交通大学计算机科学与工程系
2.1 定义
Boehm:运用现代源自文库学技术知识来设计并构造计
算机程序及为开发、运行和维护这些程序所必需 的相关文件资料 IEEE:软件工程是开发、运行、维护和修复软 件的系统方法 Fritz Bauer:建立并使用完善的工程化原则,以 较经济的手段获得能在实际机器上有效运行的可 靠软件的一系列方法
软件开发各个阶段完成的里程碑
2018/11/4
上海交通大学计算机科学与工程系
12
2.3 原理
⑴ 用分阶段的生命周期计划严格管理 项目概要计划 里程碑计划 项目控制计划 产品控 制计划 验证计划 运行维护计划 ⑵ 坚持进行阶段评审
⑶ 实行严格的产品控制——基准配置管理 (Baseline configuration management) ⑷ 采用现代程序设计技术 ⑸ 结果应能清楚地审查— set standards ⑹ 开发小组的成员应该少而精 1+1 < 2 ⑺ 承认不断改进软件工程实践的必要性