第1章软件工程学概论.pptx
合集下载
第1章软件工程学概述
1.2.1 软件工程的概念
诸多软件工程的定义所揭示的软件工程 的本质认识是一致的:
软件工程一般更关注于大型软件系统的开发; 其中心任务是控制整个软件系统的复杂性,提高软 件开发的效率,加强人员和技术的管理,更好地满 足用户的需要。
1.2.2 软件工程的基本原理
(1)用分阶段的生命周期计划严格管理
(2)软件产品质量较差,可靠性低。
软件开发过程中不能坚持严格的审查、复审和测试, 使得软件可靠性差、质量问题多。
1.1.2 软件危机的表现
(3)用户对开发出来的软件产品不满意。
开发人员与用户之间的交流不充分,仅对用户需求 有了一个模糊的认识就匆忙开始写程序。这样的结果就 是用户对于所谓已经完成的软件很不满意。
1.1.1 软件危机的定义
➢ 定义
“在计算机软件的开发和维护过程 中所遇到的一系列严重的问题。”
1.1.2 软件危机的表现
(1)对软件开发成本和进度的估计常常很不准确。
实际成本往往大大超过估计成本,或开发进度比计 划推迟几个月或一年以上。这种现象极大地影响了软件 开发组织的信誉,也会引起用户的强烈不满。
1.1.1 软件的定义
➢ 软件的经典定义:
软件=“完成特定功能的程序+数据结构+文档”
➢ 软件的特征:
1、软件是开发的,而不是制造的; 2、软件不磨损,但退化; 3、自定义。
1.1.1 软件的定义
➢ 软件发展中的相关问题:
硬件的发展超过软件; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使升级和维护十分困难。
(4)软件常常是不可维护的。
在实际项目中,很多程序的错误往往难以修改,而 且不能适应软硬件环境的变化,也无法添加用户需要的 一些新功能。
第1章-软件工程概述PPT课件
第1章 概述
教学目标
● 了解软件工程的产生和发展 ● 掌握软件工程的概念、内容和原理 ● 熟悉软件生存周期及阶段任务 ● 掌握软件开发模型
案例1-1 IBM 公司研发初期的OS/360,共约100万条指令,
花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误 多达2000 个以上,系统根本无法正常运行。OS/360 系统的负责 人Brooks 这样描述开发过程的困难和混乱:“像巨兽在泥潭中 垂死挣扎,挣扎得越猛,泥浆沾得越多陷入更深,最后没有一个 野兽能够逃脱淹没在泥潭中的命运” 。
自定 义软
表1-1 软件技术各发展阶段的典型技术
程序 系统 阶段
多 用户
实 时处 理
数 据库
软
软件 工程 阶段
分布 式系 统 嵌入 “智 能” 低成 本硬
创新完 善软 件工程 阶段
强大桌 面系统 面向对 象技术 专家系 统、神 经网络、 8并行计
1.1 软件工程的发展
“软件工程”的发展经历了4个重要阶段: 1.传统软件工程
质量难以保证,甚至在开发过程中就被迫中断。 (3) 软件开发管理差,对成本和进度的估计时常不准确。 (4) 系统时常出现无法维护、升级或更新现象。 (5) 软件开发没有标准、完整、统一规范的文档资料。计算机软件不
仅只是程序,还应当有一整套规范的文档资料和售后服务。 (6) 软件开发效率低,无法满足计算机应用迅速发展与提高的实际需
软件工程原理 软件工程过程
软件工程技术 软件工程方法
软件工程模型 软件工程管理 软件工程度量 软件工程环境 软件工程应用
软件目标、原则、学科基础 开发过程、运作过程、维护过程,如获取、供应、管理、开 发、运作、维护、支持、裁减 开发技术、管理技术、度量技术、维护技术、应用技术
软件工程概述PPT课件
南京理工大学计算机学院
18
前一页 休息
第1章 软件工程概念
软件的神话——管理者的神话
➢ 神话:如果我们已落后于计划,可以增加更 多的程序员来赶上进度。
➢ 事实:软件开发并非像制造一样是一个机械 过程。用Brooks的话来说,“给一个已经延 迟的软件项目增加人手只会使其更加延迟”。 看起来,这句话与人的直觉正好相反。但实 际上,增加新人,原来正在工作的开发者必 须花时间来培训新人,这样就减少了他们花 在项目开发上的时间。人手可以增加,但只 能在计划周密、协调良好的情况下。
2.软件的生产于硬件不同。
3.在软件的运行和使用期间,没有硬件那样的 机械磨损,老化问题。
失
效 磨合
率
调整
磨损 用坏
硬件失效曲线
时间
失 效 率
实际曲线
软件失效曲线
理想曲线 时间
南京理工大学计算机学院
5
前一页 休息
第1章 软件工程概念
软件的特点
4.软件的开发和运行常常受到计算机系统的限 制,对计算机系统有着不同程度的依赖。
南京理工大学计算机学院
17
前一页 休息
第1章 软件工程概念
软件的神话——管理者的神话
➢ 神话:我们已经有了很多很好的软件开发工具, 而且,我们为它们买了最新的计算机。
➢ 事实:为了使用最新型号的计算机、工作站和 PC机去开发高质量的软件,我们已经投入了 太多的费用。实际上,计算机辅助软件工程 (CASE)工具比起硬件而言,对于获得高质 量和高生产率更为重要,但大多数软件开发者 并未使用它们。
13
前一页 休息
第1章 软件工程概念
什么是软件危机
定义:软件危机是计算机软件在它的开发和 维护过程中所遇到的一系列严重问题。
第一章软件工程PPT
2020/3/19
(3)详细设计
详细设计是针对单个模块的设计。目的是 确定模块的过程结构,详细说明实现该模块功 能的算法和数据结构,有时也称算法设计。详 细设计的完成是用图形或伪代码描述的模块设 计说明书。
(3)编码
编码的任务是根据模块设计说明书,用指 定的程序设计语言把模块的过程性描述翻译成 源代码。与“需求分析”和“设计”相比,“ 编码”要简单得多。
2020/3/19
定义 阶段
2020/3/19
可行性研究与计划
需求分析
开
设计
发
阶
编码
段
测试
维护阶段
图2 瀑布模型
运行维护
瀑布模型的特点: ✓ 阶段间具有顺序性和依赖性; ✓推迟实现的特点; ✓每个阶段必须完成规定的文档; ✓每个阶段结束前完成文档审查,及早改正错误 。 瀑布模型的优点:
开发阶段清晰、便于评审、审计、跟踪、管 理和控制。 瀑布模型的缺点: ✓ 2020/3/19 不能对付含糊不清和不完整的用户需求;
2020/3/19
软件的概念
为了弄清软件的概念,首先要知道什么是程 序的概念。
一般认为,程序是计算机为完成特定的任务 而执行的指令的有序集合。更通俗的讲,
面向过程的程序=算法+数据结构 面向对象的程序=对象+消息 面向构件的程序=构件+构架 通常,软件可定义为: 软件=程序+数据+文档
2020/3/19
2020/3/19
听取用 户意见
建造/修改 原型
用户测试 运行原型
2020/3/19
图3 原型范型
原型化模型的特点: 原型驱动。因此必须先有一个模型,至少要
有一个原型的核心。 原型化模型的优点:
(3)详细设计
详细设计是针对单个模块的设计。目的是 确定模块的过程结构,详细说明实现该模块功 能的算法和数据结构,有时也称算法设计。详 细设计的完成是用图形或伪代码描述的模块设 计说明书。
(3)编码
编码的任务是根据模块设计说明书,用指 定的程序设计语言把模块的过程性描述翻译成 源代码。与“需求分析”和“设计”相比,“ 编码”要简单得多。
2020/3/19
定义 阶段
2020/3/19
可行性研究与计划
需求分析
开
设计
发
阶
编码
段
测试
维护阶段
图2 瀑布模型
运行维护
瀑布模型的特点: ✓ 阶段间具有顺序性和依赖性; ✓推迟实现的特点; ✓每个阶段必须完成规定的文档; ✓每个阶段结束前完成文档审查,及早改正错误 。 瀑布模型的优点:
开发阶段清晰、便于评审、审计、跟踪、管 理和控制。 瀑布模型的缺点: ✓ 2020/3/19 不能对付含糊不清和不完整的用户需求;
2020/3/19
软件的概念
为了弄清软件的概念,首先要知道什么是程 序的概念。
一般认为,程序是计算机为完成特定的任务 而执行的指令的有序集合。更通俗的讲,
面向过程的程序=算法+数据结构 面向对象的程序=对象+消息 面向构件的程序=构件+构架 通常,软件可定义为: 软件=程序+数据+文档
2020/3/19
2020/3/19
听取用 户意见
建造/修改 原型
用户测试 运行原型
2020/3/19
图3 原型范型
原型化模型的特点: 原型驱动。因此必须先有一个模型,至少要
有一个原型的核心。 原型化模型的优点:
第一单元 软件工程概述PPT课件
软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
第1章 软件工程的基本概念PPT课件
19
2 软件的发展和软件危机
20
软件的发展的几个阶段
软件发展阶段
国外
国内
➢程序设计阶段 60年代 70年代 ➢系统设计阶段 70年代 80年代 ➢软件工程阶段 80年代 90年代
21
软件的发展
➢第一代 算法技术 ➢第二代 结构化软件技术 ➢第三代 面向对象技术 ➢第四代 分布式面向对象技术 ➢第五代 软件构件技术
3
学习本章课程的目的
➢了解软件概念、特点及分类方法。 ➢了解软件发展及软件危机的起因。 ➢了解软件工程的概念及其要素。 ➢了解软件工程的基本目标和原则。 ➢了解软件工程的近期研究的课题。
4
1 软件的定义、特点和分类
5
软件的定义
程序、软件与软件产品
独唱-->小合唱-->合唱-->万人大合唱
|
|
简单程序 较复杂程序
软件过程是将软件工程
定义了:
过程
的方法和工具综合起来, 进行软件开发。
方法使用的顺序
要求交付的文档资料
22
软件危机
计算机软件的开发和 维护过程所遇到的一 系列严重问题。
23
软件危机的具体体现
➢ 软件开发进度难以预测 ➢ 软件开发成本难以控制 ➢ 用户对产品功能难以满足 ➢ 软件产品质量无法保证 ➢ 软件产品难以维护
24
软件危机及产生原因
➢ 用户需求不明确 ➢ 缺乏正确的理论指导 ➢ 软件开发规模越来越大 ➢ 软件开发复杂度越来越高
软件工程
Software engineering
珠海市软件行业协会专家委员会主任
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
2 软件的发展和软件危机
20
软件的发展的几个阶段
软件发展阶段
国外
国内
➢程序设计阶段 60年代 70年代 ➢系统设计阶段 70年代 80年代 ➢软件工程阶段 80年代 90年代
21
软件的发展
➢第一代 算法技术 ➢第二代 结构化软件技术 ➢第三代 面向对象技术 ➢第四代 分布式面向对象技术 ➢第五代 软件构件技术
3
学习本章课程的目的
➢了解软件概念、特点及分类方法。 ➢了解软件发展及软件危机的起因。 ➢了解软件工程的概念及其要素。 ➢了解软件工程的基本目标和原则。 ➢了解软件工程的近期研究的课题。
4
1 软件的定义、特点和分类
5
软件的定义
程序、软件与软件产品
独唱-->小合唱-->合唱-->万人大合唱
|
|
简单程序 较复杂程序
软件过程是将软件工程
定义了:
过程
的方法和工具综合起来, 进行软件开发。
方法使用的顺序
要求交付的文档资料
22
软件危机
计算机软件的开发和 维护过程所遇到的一 系列严重问题。
23
软件危机的具体体现
➢ 软件开发进度难以预测 ➢ 软件开发成本难以控制 ➢ 用户对产品功能难以满足 ➢ 软件产品质量无法保证 ➢ 软件产品难以维护
24
软件危机及产生原因
➢ 用户需求不明确 ➢ 缺乏正确的理论指导 ➢ 软件开发规模越来越大 ➢ 软件开发复杂度越来越高
软件工程
Software engineering
珠海市软件行业协会专家委员会主任
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
软件工程学概述第1章PPT课件
14
1.3 软件生命周期
一、定义 软件生命周期(software life cycle):表明一个计算机软件从功
能确定、设计,到开发成功投入使用,并在使用中不断地修改、增 补和完善,直至被新的需要所替代而停止该软件的使用的全过程。
15
二、 软件生命周期的基本任务
软件生命周期由软件定义、软件开发和运行维护三个时 期组成,每个时期又可进一步 划分成若干个阶段,每个阶 段 实现不同的任务。
4
学习本课程要求
三、作业内容 5、面向过程:系统需求分析报告、系统数据流程图、系
统详细设计和系统概要设计等四个大内容。 面向对象:系统的用例模型,系统的域模型,系统的 动态模型。
5
学习本课程要求
6、具体作业要求: 1)调研选题5%; 2)需求分析报告15%; 3)可行性报告15%; 4)详细设计与概要设计报告25%; 5)系统实现与测试40%; 四、评分办法 6、作业+考勤+考试 作业50%+考勤10%+考试40%。
18
基本任务具体解释
3.需求分析 这个阶段的任务仍然不是具体地解决客户的问题,
而是准确地回答“目标系统必须做什么”这个问题。 这个阶段的另外一项重要任务,是用正式文档准确地 记录对目标系统的需求,这份文档通常称为规格说明 (specification)。
19
基本任务具体解释
4.概要设计 这个阶段的基本任务是,概括地回答“怎样实现目
以上列举的仅仅是软件危机的一些明显的表现, 与软件开发和维护有关的问题远远不止这些。
9
三、 产生软件危机的原因
产生软件危机的原因很多,除与软件本身固有的特征有关外,还与软 件开发范型、软件设计方法。软件开发支持以及软件开发管理有关。 1、用户对软件需求的描述不精确,有遗漏、二义性、错误,甚至软件开 发过程中不断修改软件功能、界面、支撑环境等要求。 2、软件开发人员急于求成,未能与用户达成一致就着手编写程序。 3、大型软件项目开发需要组织一定的人力共同完成,各类人员的信息 交流不及时、不准确、甚至产生误解,是一个主要原因。 4、重开发,轻维护也是一个重要原因。 5、软件不同于硬件,其开发进展情况较难衡量,质量也较难评价,因此 管理和控制软件开发过程相当困难。
1.3 软件生命周期
一、定义 软件生命周期(software life cycle):表明一个计算机软件从功
能确定、设计,到开发成功投入使用,并在使用中不断地修改、增 补和完善,直至被新的需要所替代而停止该软件的使用的全过程。
15
二、 软件生命周期的基本任务
软件生命周期由软件定义、软件开发和运行维护三个时 期组成,每个时期又可进一步 划分成若干个阶段,每个阶 段 实现不同的任务。
4
学习本课程要求
三、作业内容 5、面向过程:系统需求分析报告、系统数据流程图、系
统详细设计和系统概要设计等四个大内容。 面向对象:系统的用例模型,系统的域模型,系统的 动态模型。
5
学习本课程要求
6、具体作业要求: 1)调研选题5%; 2)需求分析报告15%; 3)可行性报告15%; 4)详细设计与概要设计报告25%; 5)系统实现与测试40%; 四、评分办法 6、作业+考勤+考试 作业50%+考勤10%+考试40%。
18
基本任务具体解释
3.需求分析 这个阶段的任务仍然不是具体地解决客户的问题,
而是准确地回答“目标系统必须做什么”这个问题。 这个阶段的另外一项重要任务,是用正式文档准确地 记录对目标系统的需求,这份文档通常称为规格说明 (specification)。
19
基本任务具体解释
4.概要设计 这个阶段的基本任务是,概括地回答“怎样实现目
以上列举的仅仅是软件危机的一些明显的表现, 与软件开发和维护有关的问题远远不止这些。
9
三、 产生软件危机的原因
产生软件危机的原因很多,除与软件本身固有的特征有关外,还与软 件开发范型、软件设计方法。软件开发支持以及软件开发管理有关。 1、用户对软件需求的描述不精确,有遗漏、二义性、错误,甚至软件开 发过程中不断修改软件功能、界面、支撑环境等要求。 2、软件开发人员急于求成,未能与用户达成一致就着手编写程序。 3、大型软件项目开发需要组织一定的人力共同完成,各类人员的信息 交流不及时、不准确、甚至产生误解,是一个主要原因。 4、重开发,轻维护也是一个重要原因。 5、软件不同于硬件,其开发进展情况较难衡量,质量也较难评价,因此 管理和控制软件开发过程相当困难。
第1章 软件工程概述课件
16
1.2 软件工程的概念
软件工程是指导计算机软件开发和维护的 工程学科,采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明 正确的管理技术和当前能够得到的最好的技术 方法结合起来,这就是软件工程。
第1章 软件工程概述
17
软件工程具有的本质特性
软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 • 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户 • 在软件工程领域中是由具有一种文化背景的
软件是由计算机程序的发展而形成的一种概念。 程序是按既定算法,用某种计算机语言所规定的指令或 语句编写的一系列指令或语句的集合。 软件是程序再加上程序实现和维护程序时所必须的文档 的总称。
第1章 软件工程概述
8
软件
被普遍接受的软件的定义是:
软件(software)是计算机系统中与硬件(hardware)相 互依存的另一部分,它包括程序(program)、相关数据 (data)及其说明文档(document)。
第1章 软件工程概述
27
1.4 开发模型
瀑布模型 演化模型 螺旋模型 喷泉模型 RUP开发 敏捷过程与极限编程 微软过程
第1章 软件工程概述
28
1.4.1瀑布模型(Waterfall Model)
计划 时期
开发 时期
运行维 护时期
问题定义
(目标与范围说明书)
可行性研究
(可行性论证论告)
需求分析
(需求说明书)
第1章 软件工程概述
31
1.4.1瀑布模型
3.质量保证的观点 为了保证质量,瀑布型软件开发在各个阶段坚持了两
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Software Crisis ! • 11
软件危机
欠缺文档
欠缺设计,急于编程
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致 进度拖延。
例: 在20世纪60年代后期,一位热情的年青工程师受命为一个自动化 制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整 个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编 语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件 工程,更不要说项目进度安排和跟踪了。
7•
即并仅针按为对其特软定使件用某工的个作软客户件方的。式又要划称求,工分:
程软件,实特时点处是理有软明件确的合同, 严格的工分期时,软约件定的维护期等。 如"XXX交公互司式XX软X件系即统针"。对某一领域客户的共有需求
批处理软件而能丰开富发而的软冗余件,。通特点过是一次通性用、的功购
买行为获得等。如操作系统软件、
老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续 努力工作,准备好一周后再汇报一次工作进度。
一周后老板将年轻人叫到办公室,问他说:“现在进度如 何?”
“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。 我会排除这些困难,很快就可以回到正轨上来。”
“你觉得在最后期限之前能否完成?”老板问道。 “没有问题”工程师答道。“我差不多已经完成了90%” 问题:年轻工程师在整个项目工期内始终停留在90%的进 度上,(在别人的帮助下)直到交付期限之后一个月才做完。
(3) 软件产品的质量往往靠不住。可靠性和 质量保证欠缺,缺少测试。
(4) 软件常常是不可维护的。设计死板,没 有整体考虑。
• 16
(5) 软件通常没有适当的文档资料。缺少设 计资料、难以维护,写文档嫌麻烦。
(6) 软件成本在计算机系统总成本中所占的 比例逐年上升。软件过于庞大,成本过高。
(7) 软件开发生产率提高的速度,远远跟不 上计算机应用迅速普及深入的趋势。跟不上计算 机和软件技术的发展速度,技术落后。
程序是按事先设计的功能和性能要求执行的 指令序列。
数据是使程序能正常操纵信息的数据结构。 文档是与程序开发,维护和使用有关的图文
材料。
3
软件的表现形式:
软件分为有形部分和无形部分: 软件的有形部分:是软件的各种具体表现形 式,包括软件文档,程序代码,二进制代码,用户 界面,输出报表等。 软件的无形部分:是软件的内部逻辑,是软件 本身所包含的思想。
按软件服务对数象据的库范软件围、划CA分D:软件等。
项目软件
产品软件
8
软件发展阶段:
程序设计阶段 — 50至60年代 程序系统阶段 — 60至70年代 软件工程阶段 — 70年代以后
9
软件开发工具的变迁:
穿孔机打孔编程 汇编语言(Z80、 M6800、8086/88) 高级语言 (Cobol、Basic、Dbase、Turbo C、 FoxBase、Foxpro等) C/S、B/S 体系结构的开发工具(VFP、VC、VB、 Delphi、Powerbuilder、C++ Builder、Oracle Developer/2000、 Java、MS .net等等)
软件工程
张聚礼 zhjl@
兰州理工大学计算机与通信学院
1
第1章 软件工程学概述
1.0 什么是软件? 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题
2
§1.0 什么是软件?
软件是计算机系统中与硬件相互依存的另一 部分,它是包括程序、数据及其相关文档的 完整集合。
10
§1.1 软件危机
美国IBM 公司在1963年至1966年开发的IBM360机的 操作系统。这一项目花了5000人一年的工作量,最多时 有1000人投入开发工作,写出了近100万行源程序。据统 计,这个操作系统每次发行的新版本都是从前一版本中 找出1000个程序错误而修正的结果。......
这个项目的负责人事后总结了他在组织开发过程中的沉痛 教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的 挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。...... 程序设计工作正像这样一个泥潭,......一批批程序员被迫在 泥潭中拼命挣扎,......”
软件开发付出代价分析
根据美国一些软件公司的统计资料,在后期引 入一个变动比在早期引入相同变动所需付出的代价 高2~3个数量级。图1.1定性地描绘了在不同时期 引入一个变动需要付出的代价的变化趋势。
他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年 轻人被告知该项目必须在两个月之内完成。
他阅读了这些手册,想好了解决方法,就立即编写代码。两周后,老板 将他叫到办公室询问项目进展情况。
• 12
软件危机
“非常好”工程师以年轻人的热情回答道,“这个项目远 比我想像的简单。我差不多已经完成了75%的任务。
如何保证软件产品的质量,是非常复杂困难 的问题。特别对于规模庞大的软件。
⑷ 软件难以维护(maintainability) 不易升级(evolvability)
15
软件危机的产生的原因及总结
(1) 对软件开发成本和进度的估计常常很不 准确。拖期,项目管理经验欠缺。
(2) 用户对“已完成的”软件系统不满意的 现象经常发生。模糊的需求 、闭门造车、忙于 编程,仓促上阵。
4
软件的分类:
按软件的功能进行划分:
系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序 等
5•
支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持
管理的软件
6•
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件
• 13
软件危机
⑵ 没有充分的文档资料(documentation)
Managers —— 评价, 进程跟踪, ...... Programmers —— 与其它程序的通信接口 Maintainers ——维护
人与人的交流比写程序困难得多。
• 14
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 无法保证。
软件危机
欠缺文档
欠缺设计,急于编程
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致 进度拖延。
例: 在20世纪60年代后期,一位热情的年青工程师受命为一个自动化 制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整 个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编 语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件 工程,更不要说项目进度安排和跟踪了。
7•
即并仅针按为对其特软定使件用某工的个作软客户件方的。式又要划称求,工分:
程软件,实特时点处是理有软明件确的合同, 严格的工分期时,软约件定的维护期等。 如"XXX交公互司式XX软X件系即统针"。对某一领域客户的共有需求
批处理软件而能丰开富发而的软冗余件,。通特点过是一次通性用、的功购
买行为获得等。如操作系统软件、
老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续 努力工作,准备好一周后再汇报一次工作进度。
一周后老板将年轻人叫到办公室,问他说:“现在进度如 何?”
“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。 我会排除这些困难,很快就可以回到正轨上来。”
“你觉得在最后期限之前能否完成?”老板问道。 “没有问题”工程师答道。“我差不多已经完成了90%” 问题:年轻工程师在整个项目工期内始终停留在90%的进 度上,(在别人的帮助下)直到交付期限之后一个月才做完。
(3) 软件产品的质量往往靠不住。可靠性和 质量保证欠缺,缺少测试。
(4) 软件常常是不可维护的。设计死板,没 有整体考虑。
• 16
(5) 软件通常没有适当的文档资料。缺少设 计资料、难以维护,写文档嫌麻烦。
(6) 软件成本在计算机系统总成本中所占的 比例逐年上升。软件过于庞大,成本过高。
(7) 软件开发生产率提高的速度,远远跟不 上计算机应用迅速普及深入的趋势。跟不上计算 机和软件技术的发展速度,技术落后。
程序是按事先设计的功能和性能要求执行的 指令序列。
数据是使程序能正常操纵信息的数据结构。 文档是与程序开发,维护和使用有关的图文
材料。
3
软件的表现形式:
软件分为有形部分和无形部分: 软件的有形部分:是软件的各种具体表现形 式,包括软件文档,程序代码,二进制代码,用户 界面,输出报表等。 软件的无形部分:是软件的内部逻辑,是软件 本身所包含的思想。
按软件服务对数象据的库范软件围、划CA分D:软件等。
项目软件
产品软件
8
软件发展阶段:
程序设计阶段 — 50至60年代 程序系统阶段 — 60至70年代 软件工程阶段 — 70年代以后
9
软件开发工具的变迁:
穿孔机打孔编程 汇编语言(Z80、 M6800、8086/88) 高级语言 (Cobol、Basic、Dbase、Turbo C、 FoxBase、Foxpro等) C/S、B/S 体系结构的开发工具(VFP、VC、VB、 Delphi、Powerbuilder、C++ Builder、Oracle Developer/2000、 Java、MS .net等等)
软件工程
张聚礼 zhjl@
兰州理工大学计算机与通信学院
1
第1章 软件工程学概述
1.0 什么是软件? 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题
2
§1.0 什么是软件?
软件是计算机系统中与硬件相互依存的另一 部分,它是包括程序、数据及其相关文档的 完整集合。
10
§1.1 软件危机
美国IBM 公司在1963年至1966年开发的IBM360机的 操作系统。这一项目花了5000人一年的工作量,最多时 有1000人投入开发工作,写出了近100万行源程序。据统 计,这个操作系统每次发行的新版本都是从前一版本中 找出1000个程序错误而修正的结果。......
这个项目的负责人事后总结了他在组织开发过程中的沉痛 教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的 挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。...... 程序设计工作正像这样一个泥潭,......一批批程序员被迫在 泥潭中拼命挣扎,......”
软件开发付出代价分析
根据美国一些软件公司的统计资料,在后期引 入一个变动比在早期引入相同变动所需付出的代价 高2~3个数量级。图1.1定性地描绘了在不同时期 引入一个变动需要付出的代价的变化趋势。
他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年 轻人被告知该项目必须在两个月之内完成。
他阅读了这些手册,想好了解决方法,就立即编写代码。两周后,老板 将他叫到办公室询问项目进展情况。
• 12
软件危机
“非常好”工程师以年轻人的热情回答道,“这个项目远 比我想像的简单。我差不多已经完成了75%的任务。
如何保证软件产品的质量,是非常复杂困难 的问题。特别对于规模庞大的软件。
⑷ 软件难以维护(maintainability) 不易升级(evolvability)
15
软件危机的产生的原因及总结
(1) 对软件开发成本和进度的估计常常很不 准确。拖期,项目管理经验欠缺。
(2) 用户对“已完成的”软件系统不满意的 现象经常发生。模糊的需求 、闭门造车、忙于 编程,仓促上阵。
4
软件的分类:
按软件的功能进行划分:
系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序 等
5•
支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持
管理的软件
6•
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件
• 13
软件危机
⑵ 没有充分的文档资料(documentation)
Managers —— 评价, 进程跟踪, ...... Programmers —— 与其它程序的通信接口 Maintainers ——维护
人与人的交流比写程序困难得多。
• 14
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 无法保证。