软件工程导论第1章课件-概论()
合集下载
软件工程导论(全)张海藩PPT课件
与方法。
张
主要内容包括:软件工程概述、软件生存周期及软件
海 藩
需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开
发的整个过程。为了让学生真正得以实践,结合实际软件
开发项目,让学生从问题定义开始,经过可行性研究、需
求分析、概要设计、详细设计、编码直到最后要对自己开
软制品
张
(软体)
海
藩
软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/8/1
软
件 工
2、软件特点
程
导
. 软件是一种逻辑实体,而不是具体的物理实体
. 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械
张
磨损,老化问题
海
藩
失
磨合
修改点 失
实际曲线
张 海 藩
具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些
则不能?为什么有些软件能够在市场上成功
,而有些则受到冷落?由此可见,开发软件
并不一定难,难就难在如何开发有用的软件。
微软凌小宁博士
2020/8/1
支持管理: 标准检验程序 库管理程序
2020/8/1
软
件 工
2、按软件的规模进行划分
程 导
按开发软件所需的 人力、时间以及完成的
源代码行数。
张 海
类别
参加人数
研制期限 产品规模(源代码行数)
藩
微型
1
1-4周
约500行
软件工程导论(共65张PPT)可编辑全文
–期刊管理系统之借阅子系统
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙
– 学生选课系统 软件
Microsoft Visio; Rational Rose
高级程序语言 作业递交方式:
来信标题注明 :班级 、学号、姓名、章节
第1章 软件工程学概述
1.1 软件危机
软件危机的出现:60年代中期到70年代中期, 许多软件最终成为不可维护的,这就是软件危 机.
不能用象硬件替换部件的方式修复软件的故障 使用增量模型的困难是,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
出现了“软件作坊”,软件作为一种产品被广泛使用;
使用个体化开发方式;
软件的发展史_2
随着软件数量的增加及软件需求的日趋复杂, 维护难度与来越大,开发成本高,质量低 导致“软件危机”
➢相同点:都将软件开发划分为分析、设计、编码、 测试等阶段 ➢不同点:思想不同,方法不同。另外,传统软件 工程更关注功能模块,面向对象软件工程更关注对 象的抽取和设计
➢ 两类软件工程方法学没有绝对的替代关系
1.3软件生命周期
生命周期方法学
从时间角度对软件开发和维护的复杂问题进行分解,把软件生命 的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务, 然后逐步完成每个阶段的任务。
关注大型程序的构造 中心问题是控制复杂性 软件经常变化 开发效率非常重要 和谐地合作是开发软件的关键 有效地支持它的用户 具有一种文化背景的人替另一种文化背景的人
创造产品
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组成员应少而精 承认不断改进软件工程实践地必要性
软件工作涉及到很多社会因素。 由于对象概念的引入,表达分析、设计及实现等活动只用对象类和关系,从而可以较容易地实现活动的迭代和无间隙
最新软件工程导论(第1章)概要教学讲义ppt课件
1)软件工程学:主要应用工程的方法和技术 研究软件开发与维护的方法、工具和管理的一 门交叉学科。
2)程序设计方法学:主要应用数学的方法研 究程序的性质以及程序设计的理论和方法的学 科。
1.2 软件工程
1.2.1 软件工程的介绍 1968年NATO会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。
③ 需求分析
这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了 解决这个问题,目标系统必须做什么”,主要是确定目标系统必 须具备哪些功能。用户了解他们所面对的问题,知道必须做什么, 但是通常不能完整准确地表达出他们的要求,更不知道怎样利用 计算机解决他们的问题;软件开发人员知道怎样用软件实现人们 的要求,但是对特定用户的具体要求并不完全清楚。因此,系统 分析员在需求分析阶段必须和用户密切配合,充分交流信息,以 得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典 和简要的算法表示系统的逻辑模型。
3. 工具:应该开发和使用更好的软件工具。在软件开
发的每个阶段都有许多繁琐重复的工作需要做,在 适当的软件工具辅助下,开发人员可以把这类工作 做得既快又好。
如果把各个阶段使用的软件工具有机地集 合成一个整体,支持软件开发的全过程, 则称为软件工程支撑环境。
为了解决软件危机产生的问题,软件工程与 方法学逐渐形成,然后出现了两个相互相承又 各有侧重的学科:
② 把所有对象划分为类(Class):每个类定义了一组数据和一组操 作。
③ 按照父类(基类)和子类(派生类)的关系,把若干个相关类 组成一个层次结构的系统。子类能够继承。
④ 对象彼此间仅能通过发送消息互相联系。对象是数据处理的主 体,具有封装性特点。
2)程序设计方法学:主要应用数学的方法研 究程序的性质以及程序设计的理论和方法的学 科。
1.2 软件工程
1.2.1 软件工程的介绍 1968年NATO会议:软件工程就是为了经济地获 得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。
③ 需求分析
这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了 解决这个问题,目标系统必须做什么”,主要是确定目标系统必 须具备哪些功能。用户了解他们所面对的问题,知道必须做什么, 但是通常不能完整准确地表达出他们的要求,更不知道怎样利用 计算机解决他们的问题;软件开发人员知道怎样用软件实现人们 的要求,但是对特定用户的具体要求并不完全清楚。因此,系统 分析员在需求分析阶段必须和用户密切配合,充分交流信息,以 得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典 和简要的算法表示系统的逻辑模型。
3. 工具:应该开发和使用更好的软件工具。在软件开
发的每个阶段都有许多繁琐重复的工作需要做,在 适当的软件工具辅助下,开发人员可以把这类工作 做得既快又好。
如果把各个阶段使用的软件工具有机地集 合成一个整体,支持软件开发的全过程, 则称为软件工程支撑环境。
为了解决软件危机产生的问题,软件工程与 方法学逐渐形成,然后出现了两个相互相承又 各有侧重的学科:
② 把所有对象划分为类(Class):每个类定义了一组数据和一组操 作。
③ 按照父类(基类)和子类(派生类)的关系,把若干个相关类 组成一个层次结构的系统。子类能够继承。
④ 对象彼此间仅能通过发送消息互相联系。对象是数据处理的主 体,具有封装性特点。
软件工程导论第一章PPT
2015年5月11日
第1章
概述
第15页
1.2.2 软件工程的研究内容和基本原理
软件工程的研究内容 软件工程的主要研究内容是指软件开发技术和软件开发过程 管理两个方面。
– 在软件开发技术方面主要研究软件开发方法、软件开发过程、软 件开发工具和技术。 – 在软件开发过程管理方面主要研究软件工程经济学和软件管理学。
“软件工程”一词是由北大西洋公约组织(North Atlantic Treaty Organization,NATO)的计算机科学家 在联邦德国召开的国际会议上首次提出来的。产生软件工 程这门学科的时代背景是“软件危机”。软件工程的发展 和应用不仅缓和了软件危机,而且促使一门新兴的工程学 科诞生了。 本章将讲述软件、软件危机及软件工程的相关概念、历史 发展和开发模型。
2015年5月11日
第1章
概述
第10页
1.1.3 软件危机的产生原因及解决途径
产生原因
(1) 软件是计算机系统中的逻辑部件,软件产品往往规模 庞大,结构复杂。 (2) 软件开发的管理困难。 (3) 软件开发费用不断增加,维护费用急剧上升,直接威 胁计算机应用的扩大。 (4) 软件开发技术落后。 (5) 生产方式落后。 (6) 开发工具落后,生产效率提高缓慢。
2015年5月11日 第1章 概述 第6页
1.1.1 软件的定义、特点及分类
二、软件的特点 软件是一种特殊的产品,与传统的工业产品相比,它具有以下 一些独特的特点。 (1)软件是一种逻辑产品,而不是具体的物理实体,具有抽象 性。 (2)软件产品的生产主要是开发研制,没有明显的制造过程。 (3)软件产品在使用过程中,不存在磨损、消耗、老化等问题 (4)软件产品的开发主要是脑力劳动,还未完全摆脱手工开发 方式,大部分产品是“定做的”,生产效率低。
软件工程导论(ppt 42页)
第1章 软件工程引论
1.1 软件产品的概念与特征 1.2 软件危机 1.3 软件工程的产生及其发展
1.1 软件产品的概念与特征
1.1.1 软件产品的概念与分类
就本质而言,软件就是一个信息转换器,它的功能不外是 产生、管理、获取、修改、显示或转换信息。它担任着双重角 色,首先,它是一种产品,表达了由计算机硬件体现的计算潜 能;其次,它又是开发和运行产品的载体,是计算机控制(操作 系统)、信息通信(网络)的基础,也是创建和控制其他软件(软 件工具和开发环境)的基础。
(3) 软件产品不会“磨损”。和硬件产品类似,软件产品 也会出现故障。所不同的是,硬件产品的故障多来自外在条件 导致的“磨损”或“老化”,而软件产品如果发生故障,无一 例外的是在设计开发过程中留有隐患。因此,硬件的故障可以 通过简单的更换部件解决,而软件的故障必须通过全面的软件 维护活动才有望克服。同时,不完善的维护活动又可能在软件 中注入新的故障,导致软件质量的“退化”。也就是说,软件 故障的修复要比硬件故障的修复复杂得多。因此,衡量软件产 品质量的一个重要指标就是它的“可维护性”。图1.1是软、硬 件产品的失效率曲线。
(2) 软件的生产与硬件不同。软件是由开发或工程化而形成 的,不是由传统意义上的制造过程生产的。虽然软件开发和硬件 制造之间有一些相似之处,可是两者在本质上是不同的。这两者 都能够通过良好的设计获得高质量的产品,但即使有了良好的设 计和优秀的样品,硬件在批量制造过程中仍然可能引入质量问题, 这种情况对于软件而言几乎不存在。
1 M 1~10 M
1.1.2 软件产品的特征
在制造硬件时,人的创造性的劳动过程(分析、设计、建 造、测试)能够完全转换成物理的形式,但软件是逻辑的而不 是物理的产品,因此软件具有和硬件完全不同的特征:
1.1 软件产品的概念与特征 1.2 软件危机 1.3 软件工程的产生及其发展
1.1 软件产品的概念与特征
1.1.1 软件产品的概念与分类
就本质而言,软件就是一个信息转换器,它的功能不外是 产生、管理、获取、修改、显示或转换信息。它担任着双重角 色,首先,它是一种产品,表达了由计算机硬件体现的计算潜 能;其次,它又是开发和运行产品的载体,是计算机控制(操作 系统)、信息通信(网络)的基础,也是创建和控制其他软件(软 件工具和开发环境)的基础。
(3) 软件产品不会“磨损”。和硬件产品类似,软件产品 也会出现故障。所不同的是,硬件产品的故障多来自外在条件 导致的“磨损”或“老化”,而软件产品如果发生故障,无一 例外的是在设计开发过程中留有隐患。因此,硬件的故障可以 通过简单的更换部件解决,而软件的故障必须通过全面的软件 维护活动才有望克服。同时,不完善的维护活动又可能在软件 中注入新的故障,导致软件质量的“退化”。也就是说,软件 故障的修复要比硬件故障的修复复杂得多。因此,衡量软件产 品质量的一个重要指标就是它的“可维护性”。图1.1是软、硬 件产品的失效率曲线。
(2) 软件的生产与硬件不同。软件是由开发或工程化而形成 的,不是由传统意义上的制造过程生产的。虽然软件开发和硬件 制造之间有一些相似之处,可是两者在本质上是不同的。这两者 都能够通过良好的设计获得高质量的产品,但即使有了良好的设 计和优秀的样品,硬件在批量制造过程中仍然可能引入质量问题, 这种情况对于软件而言几乎不存在。
1 M 1~10 M
1.1.2 软件产品的特征
在制造硬件时,人的创造性的劳动过程(分析、设计、建 造、测试)能够完全转换成物理的形式,但软件是逻辑的而不 是物理的产品,因此软件具有和硬件完全不同的特征:
软件工程导论课件(全)
《软件工程》
Software Engineering
2020/10/11
微软凌小宁博士
在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。
于1968年 NATO 组织在 德国召开的一次会议上提出
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
2020/10/11
2、 软件工程学
软件工程学
软件开发技术
软件开发方法学 软件工具 软件工程环境
软件工程管理
软件工程管理学 软件经济学
---- 软件工程学的范畴
系应支 统用撑 软软软 件件件
2020/10/11
支撑软件
2020/10/11
2、按软件的规模进行划分
按开发软件所需的 人力、时间以及完成的 源代码行数。
2020/10/11
3、按软件开发划分
软软 件件 项产 目品 开开 发发
2020/10/11
1.2 软件工程的概念及范畴
1、“软件工程”----Software Engineering
2020/10/11
微软企业文化宗旨部分内容
Wake up every day with a feeling of passion for the different technology will make in people’s Life.
Software Engineering
2020/10/11
微软凌小宁博士
在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。
于1968年 NATO 组织在 德国召开的一次会议上提出
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
2020/10/11
2、 软件工程学
软件工程学
软件开发技术
软件开发方法学 软件工具 软件工程环境
软件工程管理
软件工程管理学 软件经济学
---- 软件工程学的范畴
系应支 统用撑 软软软 件件件
2020/10/11
支撑软件
2020/10/11
2、按软件的规模进行划分
按开发软件所需的 人力、时间以及完成的 源代码行数。
2020/10/11
3、按软件开发划分
软软 件件 项产 目品 开开 发发
2020/10/11
1.2 软件工程的概念及范畴
1、“软件工程”----Software Engineering
2020/10/11
微软企业文化宗旨部分内容
Wake up every day with a feeling of passion for the different technology will make in people’s Life.
软件工程导论第一章.ppt
参考书目
- 软件工程导论(第5版)张海藩 清华大学出版社 - 软件工程(第二版)齐治昌、谭庆平、宁洪 编著,高等教育出版社 - Shari Lawrence P fleeger 软件工程——理论与实践(第2版)(高教出版社 影印版),2003
考核方式:闭卷考试 70% 平时成绩(考勤+作业) 30%
(2) 需求分析
本阶段要回答的关键问题是“目标系统应当做什么?”
(3) 软件设计
设计是软件工程的技术核心。本阶段要回答的关键问题是“如何实现目 标系统?”
1.3 软件生命周期(6)
各个阶段所要完成的基本任务 (4) 程序编码和单元测试
1963年美国飞往火星的火箭爆炸,造成1000万美元的损失 。原因是FORTRAN程序:
DO 5 I=1,3 误写为:DO 5 I=1.3
1967年苏联“联盟一号”载人宇宙飞船在返航时, 由于软件忽略一个小数点,在进入大气层时因打不开降 落伞而烧毁。
1.1 软件与软件危机(5)
产生软件危机的原因
- 在软件开发和维护的过程中存在这么多严重问题,一方面与 软件本身的特点有关,另一方面也和软件开发与维护的方法 不正确有关。 ➢客观:软件本身特点 - 逻辑部件 - 规模庞大 ➢主观:不正确的开发方法 - 忽视需求分析 - 错误认为:软件开发=程序编写 - 轻视软件维护 - …….
1.2 软件工程及其基本原理(2)
软件工程的目标
- 软件工程的目标是运用先进的软件开发的周期、较低的成本
生产出高质量 的软件产品,并最终实现软件的工业化生产。
- 软件的质量特性:功能性、可靠性、可使用性、效率、可维 护性和可移植性。
1.2 软件工程及其基本原理(3)
软件开发时期
- 软件工程导论(第5版)张海藩 清华大学出版社 - 软件工程(第二版)齐治昌、谭庆平、宁洪 编著,高等教育出版社 - Shari Lawrence P fleeger 软件工程——理论与实践(第2版)(高教出版社 影印版),2003
考核方式:闭卷考试 70% 平时成绩(考勤+作业) 30%
(2) 需求分析
本阶段要回答的关键问题是“目标系统应当做什么?”
(3) 软件设计
设计是软件工程的技术核心。本阶段要回答的关键问题是“如何实现目 标系统?”
1.3 软件生命周期(6)
各个阶段所要完成的基本任务 (4) 程序编码和单元测试
1963年美国飞往火星的火箭爆炸,造成1000万美元的损失 。原因是FORTRAN程序:
DO 5 I=1,3 误写为:DO 5 I=1.3
1967年苏联“联盟一号”载人宇宙飞船在返航时, 由于软件忽略一个小数点,在进入大气层时因打不开降 落伞而烧毁。
1.1 软件与软件危机(5)
产生软件危机的原因
- 在软件开发和维护的过程中存在这么多严重问题,一方面与 软件本身的特点有关,另一方面也和软件开发与维护的方法 不正确有关。 ➢客观:软件本身特点 - 逻辑部件 - 规模庞大 ➢主观:不正确的开发方法 - 忽视需求分析 - 错误认为:软件开发=程序编写 - 轻视软件维护 - …….
1.2 软件工程及其基本原理(2)
软件工程的目标
- 软件工程的目标是运用先进的软件开发的周期、较低的成本
生产出高质量 的软件产品,并最终实现软件的工业化生产。
- 软件的质量特性:功能性、可靠性、可使用性、效率、可维 护性和可移植性。
1.2 软件工程及其基本原理(3)
软件开发时期
软件工程导论1概述PPT课件
1968年10月,北大西洋公约组织(NATO)的科学家在德 国召开的学术会议上正式提出了软件危机问题。
14
(2)软件危机 A.软件危机的表现 B.产生软件危机的原因 C.解决软件危机的途径
15
A.软件危机的表现
成本高
IBM 360 OS, 5000多人 年,耗时4年(1963- 1966),花费2亿多美元
美国空军:1955年软件占 总费用(计算机系统)的 18%,70年60%,85年 达到85%
美国全球军事指挥控制系统, 硬件1亿美元,软件高达 7.2亿美元
计算机软件和硬件费用比
90 80 70 60 50 40 30 20 10 0
60年代
80年代
16
计算机软件 计算机硬件
A.软件危机的表现
24
1.2 软件工程定义(1)
The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer)
维护成本越来越高
55%到70%
维护带来的问题
13
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 •消费者的影响
第四阶段 •强大的桌面系统 •面向对象技术 •专家系统 •人工神经网络 •并行计算 •网路计算机
软件质量得不到保证
软件应用面的扩大:科学计算、军事、航空航天、工业控制、 企业管理、办公、家庭
软件工程导论全套精品课件(第六版)(张海潘编著)
2
第1章 软件工程学概述
引言
3
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
主要内容
4
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
1.1 软件危机
1.1 软件危机
1.1.1 软件危机的介绍
14
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
15
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
与软件本身特点有关
软件不同于硬件, 1管理和控制软件 开发过程相当困 难。 软件在运行过程 2中不会因为使用 时间过长而被 “用坏 “如果运 行中发现了错误, 很可能是遇到了 一个在开发时期 引入的在测试阶 段没能检测出来 的错误。 软件不同于一般 3程序 ,它的一个 显著特点是规模 庞大 ,而且程序 复杂性将随着程 序规模的增加而 呈指数上升。
9
错误的认识和做法 6主要表现为忽视软 件需求分析的重要 性,认为软件开发 就是写程序并设法 使之运行,轻视软 件维护等
第一章 软件工程导论共30页PPT资料
4、可理解性(understandability) 系统具有清晰的结构,能直接反映问题的需求。
5、可维护性(maintainability) 软件产品交付用户使用后能够对它进行修改,
以便改正潜伏的错误,改进性能和其他属性,使 软件产品适应环境变化。
6、可重用性(reusebility) 概念或功能相对独立的 一个或一组相关模块
计算机软件是与计算机系统操作有关的程序、规程、规则及任 何与之有关的文档和数据。它有两部分组成:一是机器可执行的 程序及有关数据。二是机器不执行的,与软件开发、运行、维护、 使用和培训有关的文档。
软件=程序+文档+(数据)
程序(program)是用程序设计语言描述的,适合于计算机处 理的语句序列,是软件开发人员根据用户需求开发出来的。
1.2.2原因
1、用户对软件需求的描述不精确(遗漏、 二义性、修改)。
2、开发者对用户需求的理解有差异。 3、大型软件项目管理不善(开发者没有管
理经验;管理者,没有开发经验)。 4、开发人员难以独立自主地处理大型软件
的全部关系和各分支。 5、缺乏有力的方法学和工具方面的支持。 6、软件产品的特殊性和人类智力的局限性。
软件工程
软件工程的主要内容包括支持与软件 开发和维护有关的理论、方法、技术、 标准以及计算机辅助工具和环境管理。
软件工程的范围很广,可以覆盖软 件开发技术(形式化和非形式方法)、 软件工程环境、软件经济学、软件心理 学以及软件工程管理等内容。
第一章 软件、软件危机和软件工程
1.1软件
1.1.1软件的组成
优点:不会磨损和老化。 只要需要一个久
经考验的优秀软件可以长期使用下去,这一点 是硬件做不到。(如 Fortran,Basic语言存于第 一代计算机)
5、可维护性(maintainability) 软件产品交付用户使用后能够对它进行修改,
以便改正潜伏的错误,改进性能和其他属性,使 软件产品适应环境变化。
6、可重用性(reusebility) 概念或功能相对独立的 一个或一组相关模块
计算机软件是与计算机系统操作有关的程序、规程、规则及任 何与之有关的文档和数据。它有两部分组成:一是机器可执行的 程序及有关数据。二是机器不执行的,与软件开发、运行、维护、 使用和培训有关的文档。
软件=程序+文档+(数据)
程序(program)是用程序设计语言描述的,适合于计算机处 理的语句序列,是软件开发人员根据用户需求开发出来的。
1.2.2原因
1、用户对软件需求的描述不精确(遗漏、 二义性、修改)。
2、开发者对用户需求的理解有差异。 3、大型软件项目管理不善(开发者没有管
理经验;管理者,没有开发经验)。 4、开发人员难以独立自主地处理大型软件
的全部关系和各分支。 5、缺乏有力的方法学和工具方面的支持。 6、软件产品的特殊性和人类智力的局限性。
软件工程
软件工程的主要内容包括支持与软件 开发和维护有关的理论、方法、技术、 标准以及计算机辅助工具和环境管理。
软件工程的范围很广,可以覆盖软 件开发技术(形式化和非形式方法)、 软件工程环境、软件经济学、软件心理 学以及软件工程管理等内容。
第一章 软件、软件危机和软件工程
1.1软件
1.1.1软件的组成
优点:不会磨损和老化。 只要需要一个久
经考验的优秀软件可以长期使用下去,这一点 是硬件做不到。(如 Fortran,Basic语言存于第 一代计算机)
软件工程导论PPT课件
软件(software)是计算机系统中与硬件 (hardware)相互依存的另一部分,
它包括程序(program)、 相关数据(data)及其 说明文档(document)。
软件特指大型复杂的程序
2021
5
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
是把软件当作一种工业产品,要求 “采用工程化的 原理与方法对软件进行计划、开发和维护 ”。
2021
21
围棋与软件工程的感想
围棋
围棋棋谱拿过来的时候, 大师问“后面应该走哪里?”
十个初级爱好者选择的落
点散布在棋盘各处…… 十个职业棋手说的落子点
都差不多,甚至包括后面的几 步……
这就是高手和低手的差
别……
2021
13
软件危机的原因
● 一方面是与软件本身的特点 有关
● 另一方面是由软件开发和维 护的方法不正确有关
2021
14
软件开发工作量分配比例
40% ~ 50%
10% ~ 20%
测试
程序
其它
2021
15
引入同一变化付出的代价随时间变化的趋势
2021
16
费用分配比例
55%~70%
软件维护 其它
2021
25
总之: 软件工程是应用计算机科学、 数学及管理科学等原理开发软 件的工程。它借鉴传统工程的 原则、方法,以提高质量,降 低成本为目的。
2021
26
软件工程是一门交叉学科
软件工程的主要研究内容
软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境
软件工程管理:软件管理学 软件经济学 软件心理学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 计算任务:以计算机为处理工具的任务 • 处理对象:数据(如数据、文字、图形、图象、 声音等,它们只是表示,而无含义)或信息(数 据及有关的含义) • 处理规则:一般指处理的动作和步骤。程序必须 装入计算机内才能工作
– 文档是为了便于了解程序所需的阐明性资料
4
软件的发展
• 1946-1956年 从计算机问世到实用的高级程序语言出现前
38
增量模型
1 交流 计划
2 3
软 件 功 能 性 和 特 征 4 5
建模(分析, 设计)
构造(编码, 测试) 部署(发布, 反馈) 增量2
增量n 1 2 … 2 3
3
4
5
第n次增量发布
增量1 1 2
1
4
5
5
第2次增量发布
3
4
第1次增量发布
项目日历时间
39
• 增量模型将软件的开发过程分成若干个 日程时间交错的线性序列,每个线性序 列产生软件的一个可发布的“增量”版 本,后一个版本是对前一版本的修改和 补充,重复增量发布的过程,直至产生 最终的完善产品。 • 增量模型融合了瀑布模型的基本成分 (重复地应用)和演化模型的迭代特征
26
• 计算机系统工程
计算机系统包括计算机硬件、软件、使 用计算机系统的人、数据库、文档、规 程等系统元素 计算机系统工程的任务
确定待开发软件的总体要求和范围,以及 它与其它计算机系统元素之间的关系 进行成本估算,做出进度安排 进行可行性分析,即从经济、技术、法律 等方面分析待开发的软件是否有可行的解 决方案,并在若干个可行的解决方案中作 出选择
存储容量比较小,运算速度比较慢 采用个体工作方式,用低级语言编写程序 应用领域主要是以数值数据处理为主的科学计算, 其特点是输入、输出量较小,但计算量大 衡量程序质量的标准主要是功效,即运行时间省、 占用内存小 主要研究内容是科学计算程序、服务性程序和程 序库,研究对象是顺序程序
35
系统工程 需求分析 与规约 设计与 规约 编码与 单元测试
瀑布模型
集成测试 系统测试
运行与 维护
36
• 1970年W.Royce提出瀑布模型 • 特征
接受上一阶段的结果作为本阶段的输入 利用这一输入实施本阶段应完成的活动 对本阶段的工作进行评审 将本阶段的结果作为输出,传递给下一阶段 缺乏灵活性,难以适应需求不明确或需求经常 变化的软件开发 开发早期存在的问题往往要到交付使用时才发 现,维护代价大
• 目标:
生产具有正确性、可用性以及价格合宜的产品 正确性反映软件产品实现相应功能规约的程度 可用性反映软件的基本结构、实现及其文档为 用户可用的程度 价格合宜反映软件开发与运行的总代价满足用 户要求的程度
23
• 过程 生产一个最终满足需求且达到工程目 标的软件产品所需要的步骤 软件工程过程包括:开发过程、运作 过程、维护过程、管理过程、支持过程、 获取过程、供应过程、剪裁过程等
37
• 缺点
演化模型
•许多软件项目在开发早期对软件需求的认识是模糊的、 不确定的,因此软件很难一次开发成功 •可以在获取了一组基本的需求后,通过快速分析构造 出该软件的一个初始可运行版本,称之谓原型 (prototype),然后根据用户在试用原型的过程中 提出的意见和建议、或者增加新的需求,对原型进行 改造,获得原型的新版本,重复这一过程,最终得到 令客户满意的软件产品 •演化模型的开发过程就是从构造初始的原型出发,逐 步将其演化成最终软件产品的过程 •演化模型适用于对软件需求缺乏准确认识的情况 •典型的演化模型有:增量模型、原型模型、螺旋模型
图1.1 引入同一变动付出的代价随时间变化的趋势
轻视维护是一个最大的错误。许多软件产品的使用 寿命长达10年甚至20年,在这样漫长的时期中不仅 必须改正使用过程中发现的每一个潜伏的错误,而 且当环境变化时(例如硬件或系统软件更新换代) 还必须相应地修改软件以适应新的环境,特别是必 须经常改进或扩充原来的软件以满足用户不断变化 的需要。所有这些改动都属于维护工作,而且是在 软件已经完成之后进行的,因此维护是极端艰巨复 杂的工作,需要花费很大代价。 统计数据表明,实际上用于软件维护的费用占软件 总费用的55%~70%。软件工程学的一个重要目标就 是提高软件的可维护性,减少软件维护的代价。
32
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CASE工具与环境
33
软件过程模型
• 软件过程模型是软件开发全部过程、活 动和任务的结构框架 • 也称软件开发模型 或软件生存周期模型
34
软件过程模型
• 典型的软件过程模型有:
– – – – – – – 瀑布模型(waterfall model) 演化模型(evolutionary model) 增量模型(incremental model) 原型模型(prototyping model) 螺旋模型(spiral model) 喷泉模型(water fountain model) 基于构件的开发模型(component-based development model) – 形式方法模型(formal methods model)
24
• 原则 选取适宜的开发模型 采用合适的设计方法 提供高质量的工程支持 重视软件工程的管理
25
软件生存周期 ( software life cycle)
• 软件有一个孕育、诞生、成长、成熟、衰 亡的生存过程。这个过程即为计算机软件 的生存周期 • 软件生存周期大体可分为如下几个活动: 计算机系统工程、需求分析、设计、编码、 测试、运行和维护
10
在软件开发的不同阶段进行修改需要付出的代价是 很不相同的,在早期引入变动,涉及的面较少,因 而代价也比较低;而在开发的中期软件配臵的许多 成分已经完成,引入一个变动要对所有已完成的配 臵成分都做相应的修改,不仅工作量大,而且逻辑 上也更复杂,因此付出的代价剧增;在软件“已经 完成”时再引入变动,当然需要付出更高的代价。 根据美国一些软件公司的统计资料,在后期引入一 个变动比在早期引入相同变动所需付出的代价高2~ 3个数量级。 图1.1定性地描绘了在不同时期引入一个变动需要付 出的代价的变化趋势。
5
• 1956-1968年
从实用的高级程序语言出现到软件工程出现前 存储器容量大,外围设备得到迅速发展,出现 了高级程序设计语言 应用领域包括数据处理(非数值数据),其特 点是计算量不大,但输入、输出量却较大 高速主机与低速外围设备的矛盾突出,出现了 操作系统、并发程序、数据库及其管理系统 20世纪60年代初提出了软件一词,开始认识到 文档的重要性 研究高级程序设计语言、编译程序、操作系统、 支持编程的工具及各种应用软件 工作方式逐步从个体方式转向合作方式 出现软件危机 6
20
软件语言
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CASE工具与环境
21
软件工程定义
• 计算机科学技术百科全书:软件工程是应用计算机 科学、数学及管理科学等原理,开发软件的工程。 软件工程借鉴传统工程的原则、方法,以提高质量、 降低成本为目的
22
软件工程的框架
软件工程
第1章 概论
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CA程 • 软件过程 • 软件过程模型 • CASE工具与环境
3
计算机软件
• 计算机软件指计算机系统中的程 序及其文档
– 程序是计算任务的处理对象和处理规则的描 述
详细设计的任务是设计各个组成成分的实现 细节,包括局部数据结构和算法等
29
• 编码 用某种程序设计语言,将设计的结果转换 为可执行的程序代码 • 测试 发现并纠正软件中的错误和缺陷。测试主 要包括单元测试、集成测试、确认测试和 系统测试 • 运行和维护 在软件运行期间,当发现了软件中潜藏 的错误或需要增加新的功能或使软件适应 外界环境的变化等情况出现时对软件进行 修改
7
软件危机
许多软件项目不能满足客户的要求 许多软件项目超出预算和时间安排
8
软件危机的表现
• • • • • • 对软件开发成本和进度的估计常常很不正确 用户对“已完成的”软件系统不满意的现象经常发生 软件产品的质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本在计算机系统总成本中所占的比例逐年上升
15
硬件失效率
软件失效率
16
其它特点: • 软件的开发和运行常受到计算机硬件 的限制,对计算机硬件有着不同程度 的依赖性
• 软件的开发至今尚未完全实现自动化 • 软件成本相当昂贵 • 相当多的软件工作涉及到社会因素
17
软件的分类
• 系统软件:位于计算机系统中最靠近硬件的一层, 其它软件一般都通过系统软件发挥作用,它与具 体的应用领域无关。如操作系统、编译程序等。 • 支持软件:支持软件的开发和维护的软件。如数 据库管理系统、网络软件、软件开发环境等。 • 应用软件:特定应用领域专用的软件。如实时软 件、嵌入式软件、科学和工程计算软件、事务处 理软件、人工智能软件等。
• 1968年-至今 从软件工程出现到现在
硬件向巨型机和微型机二个方向发展,出现了 计算机网络,软件方面提出了软件工程,出现 了“计算机辅助软件工程”(CASE) 计算机的应用领域渗透到各个业务领域,出现 了嵌入式应用,其特点是受制于它所嵌入的宿 主系统 开发方式逐步由个体合作方式转向工程方式 软件工程方面的研究主要包括软件开发模型、 软件开发方法及技术、软件工具与环境、软件 过程、软件自动化系统等 软件方面研究以智能化、自动化、集成化、并 行化、以及自然化为标志的软件开发新技术
• 软件开发生产率提高的速度远远跟不上计算机应用迅 速普及深入的趋势
– 文档是为了便于了解程序所需的阐明性资料
4
软件的发展
• 1946-1956年 从计算机问世到实用的高级程序语言出现前
38
增量模型
1 交流 计划
2 3
软 件 功 能 性 和 特 征 4 5
建模(分析, 设计)
构造(编码, 测试) 部署(发布, 反馈) 增量2
增量n 1 2 … 2 3
3
4
5
第n次增量发布
增量1 1 2
1
4
5
5
第2次增量发布
3
4
第1次增量发布
项目日历时间
39
• 增量模型将软件的开发过程分成若干个 日程时间交错的线性序列,每个线性序 列产生软件的一个可发布的“增量”版 本,后一个版本是对前一版本的修改和 补充,重复增量发布的过程,直至产生 最终的完善产品。 • 增量模型融合了瀑布模型的基本成分 (重复地应用)和演化模型的迭代特征
26
• 计算机系统工程
计算机系统包括计算机硬件、软件、使 用计算机系统的人、数据库、文档、规 程等系统元素 计算机系统工程的任务
确定待开发软件的总体要求和范围,以及 它与其它计算机系统元素之间的关系 进行成本估算,做出进度安排 进行可行性分析,即从经济、技术、法律 等方面分析待开发的软件是否有可行的解 决方案,并在若干个可行的解决方案中作 出选择
存储容量比较小,运算速度比较慢 采用个体工作方式,用低级语言编写程序 应用领域主要是以数值数据处理为主的科学计算, 其特点是输入、输出量较小,但计算量大 衡量程序质量的标准主要是功效,即运行时间省、 占用内存小 主要研究内容是科学计算程序、服务性程序和程 序库,研究对象是顺序程序
35
系统工程 需求分析 与规约 设计与 规约 编码与 单元测试
瀑布模型
集成测试 系统测试
运行与 维护
36
• 1970年W.Royce提出瀑布模型 • 特征
接受上一阶段的结果作为本阶段的输入 利用这一输入实施本阶段应完成的活动 对本阶段的工作进行评审 将本阶段的结果作为输出,传递给下一阶段 缺乏灵活性,难以适应需求不明确或需求经常 变化的软件开发 开发早期存在的问题往往要到交付使用时才发 现,维护代价大
• 目标:
生产具有正确性、可用性以及价格合宜的产品 正确性反映软件产品实现相应功能规约的程度 可用性反映软件的基本结构、实现及其文档为 用户可用的程度 价格合宜反映软件开发与运行的总代价满足用 户要求的程度
23
• 过程 生产一个最终满足需求且达到工程目 标的软件产品所需要的步骤 软件工程过程包括:开发过程、运作 过程、维护过程、管理过程、支持过程、 获取过程、供应过程、剪裁过程等
37
• 缺点
演化模型
•许多软件项目在开发早期对软件需求的认识是模糊的、 不确定的,因此软件很难一次开发成功 •可以在获取了一组基本的需求后,通过快速分析构造 出该软件的一个初始可运行版本,称之谓原型 (prototype),然后根据用户在试用原型的过程中 提出的意见和建议、或者增加新的需求,对原型进行 改造,获得原型的新版本,重复这一过程,最终得到 令客户满意的软件产品 •演化模型的开发过程就是从构造初始的原型出发,逐 步将其演化成最终软件产品的过程 •演化模型适用于对软件需求缺乏准确认识的情况 •典型的演化模型有:增量模型、原型模型、螺旋模型
图1.1 引入同一变动付出的代价随时间变化的趋势
轻视维护是一个最大的错误。许多软件产品的使用 寿命长达10年甚至20年,在这样漫长的时期中不仅 必须改正使用过程中发现的每一个潜伏的错误,而 且当环境变化时(例如硬件或系统软件更新换代) 还必须相应地修改软件以适应新的环境,特别是必 须经常改进或扩充原来的软件以满足用户不断变化 的需要。所有这些改动都属于维护工作,而且是在 软件已经完成之后进行的,因此维护是极端艰巨复 杂的工作,需要花费很大代价。 统计数据表明,实际上用于软件维护的费用占软件 总费用的55%~70%。软件工程学的一个重要目标就 是提高软件的可维护性,减少软件维护的代价。
32
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CASE工具与环境
33
软件过程模型
• 软件过程模型是软件开发全部过程、活 动和任务的结构框架 • 也称软件开发模型 或软件生存周期模型
34
软件过程模型
• 典型的软件过程模型有:
– – – – – – – 瀑布模型(waterfall model) 演化模型(evolutionary model) 增量模型(incremental model) 原型模型(prototyping model) 螺旋模型(spiral model) 喷泉模型(water fountain model) 基于构件的开发模型(component-based development model) – 形式方法模型(formal methods model)
24
• 原则 选取适宜的开发模型 采用合适的设计方法 提供高质量的工程支持 重视软件工程的管理
25
软件生存周期 ( software life cycle)
• 软件有一个孕育、诞生、成长、成熟、衰 亡的生存过程。这个过程即为计算机软件 的生存周期 • 软件生存周期大体可分为如下几个活动: 计算机系统工程、需求分析、设计、编码、 测试、运行和维护
10
在软件开发的不同阶段进行修改需要付出的代价是 很不相同的,在早期引入变动,涉及的面较少,因 而代价也比较低;而在开发的中期软件配臵的许多 成分已经完成,引入一个变动要对所有已完成的配 臵成分都做相应的修改,不仅工作量大,而且逻辑 上也更复杂,因此付出的代价剧增;在软件“已经 完成”时再引入变动,当然需要付出更高的代价。 根据美国一些软件公司的统计资料,在后期引入一 个变动比在早期引入相同变动所需付出的代价高2~ 3个数量级。 图1.1定性地描绘了在不同时期引入一个变动需要付 出的代价的变化趋势。
5
• 1956-1968年
从实用的高级程序语言出现到软件工程出现前 存储器容量大,外围设备得到迅速发展,出现 了高级程序设计语言 应用领域包括数据处理(非数值数据),其特 点是计算量不大,但输入、输出量却较大 高速主机与低速外围设备的矛盾突出,出现了 操作系统、并发程序、数据库及其管理系统 20世纪60年代初提出了软件一词,开始认识到 文档的重要性 研究高级程序设计语言、编译程序、操作系统、 支持编程的工具及各种应用软件 工作方式逐步从个体方式转向合作方式 出现软件危机 6
20
软件语言
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CASE工具与环境
21
软件工程定义
• 计算机科学技术百科全书:软件工程是应用计算机 科学、数学及管理科学等原理,开发软件的工程。 软件工程借鉴传统工程的原则、方法,以提高质量、 降低成本为目的
22
软件工程的框架
软件工程
第1章 概论
内容摘要
• 计算机软件 • 软件工程 • 软件过程 • 软件过程模型 • CA程 • 软件过程 • 软件过程模型 • CASE工具与环境
3
计算机软件
• 计算机软件指计算机系统中的程 序及其文档
– 程序是计算任务的处理对象和处理规则的描 述
详细设计的任务是设计各个组成成分的实现 细节,包括局部数据结构和算法等
29
• 编码 用某种程序设计语言,将设计的结果转换 为可执行的程序代码 • 测试 发现并纠正软件中的错误和缺陷。测试主 要包括单元测试、集成测试、确认测试和 系统测试 • 运行和维护 在软件运行期间,当发现了软件中潜藏 的错误或需要增加新的功能或使软件适应 外界环境的变化等情况出现时对软件进行 修改
7
软件危机
许多软件项目不能满足客户的要求 许多软件项目超出预算和时间安排
8
软件危机的表现
• • • • • • 对软件开发成本和进度的估计常常很不正确 用户对“已完成的”软件系统不满意的现象经常发生 软件产品的质量往往靠不住 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本在计算机系统总成本中所占的比例逐年上升
15
硬件失效率
软件失效率
16
其它特点: • 软件的开发和运行常受到计算机硬件 的限制,对计算机硬件有着不同程度 的依赖性
• 软件的开发至今尚未完全实现自动化 • 软件成本相当昂贵 • 相当多的软件工作涉及到社会因素
17
软件的分类
• 系统软件:位于计算机系统中最靠近硬件的一层, 其它软件一般都通过系统软件发挥作用,它与具 体的应用领域无关。如操作系统、编译程序等。 • 支持软件:支持软件的开发和维护的软件。如数 据库管理系统、网络软件、软件开发环境等。 • 应用软件:特定应用领域专用的软件。如实时软 件、嵌入式软件、科学和工程计算软件、事务处 理软件、人工智能软件等。
• 1968年-至今 从软件工程出现到现在
硬件向巨型机和微型机二个方向发展,出现了 计算机网络,软件方面提出了软件工程,出现 了“计算机辅助软件工程”(CASE) 计算机的应用领域渗透到各个业务领域,出现 了嵌入式应用,其特点是受制于它所嵌入的宿 主系统 开发方式逐步由个体合作方式转向工程方式 软件工程方面的研究主要包括软件开发模型、 软件开发方法及技术、软件工具与环境、软件 过程、软件自动化系统等 软件方面研究以智能化、自动化、集成化、并 行化、以及自然化为标志的软件开发新技术
• 软件开发生产率提高的速度远远跟不上计算机应用迅 速普及深入的趋势