软件工程导论(第一讲)
合集下载
软件工程导论 (1)
PPT文档演模板
软件工程导论 (1)
1.1 软件危机
二. 软件危机的表现形式(续)
4. 软件常常是不可维护的; 5. 软件通常没有适当的文档资料; 6. 软件成本在计算机系统总成本中所占的比
例逐年上升; 7. 软件开发生产率提高的速度跟不上计算机应
用普及的趋势。
PPT文档演模板
软件工程导论 (1)
在软件开发过程中,为了达到软件开发目标,必须遵循 下列原则:
抽象 一致性
模块化 完全性
信息隐藏 局部化 可验证性
PPT文档演模板
软件工程导论 (1)
1.2 软件工程
6. 软件工程的特性
(1)软件工程关注于大型程序的构造; (2)软件工程的中心课题是控制复杂性; (3)软件经常变化; (4)开发软件的效率非常重要; (5)和谐地合作是开发软件的关键; (6)软件必须有效地支持它的用户; (7)在软件工程领域中是由具有一种文化背景的人替另一 种文化背景的人创造产品。
软件工程
工具 为软件工程的过程和
方法提供自动化或半 自动化的工具支持
过程
贯穿软件开发
的各个环节
PPT文档演模板
方法 完成项目的技术手 段(传统方法学、 面向对象方法学)
软件工程导论 (1)
1.2 软件工程
3.软件工程发展阶段
软件工程的发展已经历了四个重要阶段: 1)第一代软件工程 — 传统的软件工程 2)第二代软件工程 — 对象工程 3)第三代软件工程 — 过程工程 4)第四代软件工程 — 构件工程
4)第四代软件工程 — 构件工程
PPT文档演模板
软件工程导论 (1)
本、进度的前提下,开发出具有: 有效性 、可修改性、 可靠性、 可理解性、可维护性、可 重用性、可适应性、 可追踪性 、 可移植性、 可互操作性 并满足用户需求的软件产品。
最新软件工程导论(第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)软件产品的开发主要是脑力劳动,还未完全摆脱手工开发 方式,大部分产品是“定做的”,生产效率低。
软件工程导论_第1章
软件工程
7
王素红
中北大学电子与计算机科学技术学院
3. 软件经常变化 绝大多数软件都模拟了现实世界的某一部
分。现实世界在不断变化,软件为了不被很快 淘汰,必须随着所模拟的现实世界一起变化。 因此,在软件系统交付使用后仍然需要耗费成 本,而且在开发过程中必须考虑软件将来可能 的变化。
软件工程
8
王素红
中北大学电子与计算机科学技术学院
软件工程
6
王素红
中北大学电子与计算机科学技术学院
2. 软件工程的中心课题是控制复杂性 通常,软件所解决的问题十分复杂,以致
不能把问题作为一个整体通盘考虑。人们不得 不把问题分解,使得分解出的每个部分是可理 解的,而且各部分之间保持简单的通信关系。 用这种方法并不能降低问题的整体复杂性,但 是却可使它变成可以管理的。注意,许多软件 的复杂性主要不是由问题的内在复杂性造成 的,而是由必须处理的大量细节造成的。
中北大学电子与计算机科学技术学院
第1章 软件工程学概述
1.1 软件工程
一、为什么要学习软件工程? 软件开发技术限制 开发方法不规范 软件人员本身素质 在软件开发过程中存在着难以解决的
问题,因此研究出的软件产品不能够满足 要求,由此产生了软件危机。
软件工程
1
王素红
中北大学电子与计算机科学技术学院
为解决软件危机,解决开发过程中的高成 本、低质量,提出了“软件工程”。 软件工程的主要思想:
王素红
中北大学电子与计算机科学技术学院
5. 结果应能清楚地审查 软件产品不同于一般的物理产品,它是
看不见摸不着的逻辑产品。 软件开发人员(或开发小组)的工作进展情
况可见性差,难以准确度量,从而使得软件产 品的开发过程比一般产品的开发过程更难于评 价和管理。
软件工程导论第一章
1.1.3 软件危机产生的原因
❖ 项目过程方面 设计低劣 缺少质量保证措施 缺少管理控制 太早和过于频繁的集成 项目估算时遗漏必要的任务 追赶计划 鲁莽编码
Back
1.1.4 缓解软件危机的途径
❖ 概念的修正 软件危机只有缓解,不可能消除!!
❖ 如何缓解? 只有通过从事软件研究的科技人员,不断的勤奋探索,推动软件的发展,改进软件的开发方法、 完善软件的开发工具,提高软件的生产率
1.1.2 软件危机的含义
❖ 软件危机的表现: 6、成本在计算机系统总成本所占的比例逐年上升
1.1.2 软件危机的含义 ❖ 软件危机的表现:
7、软件的发展跟不上硬件的发展速度与应用需求 ❖ 小知识:摩尔定律(Moore‘s Law):Intel公司创建人之一戈登·摩尔的经验法则,他预言微 处理器的处理能力每18个月到24个月将增加一倍,实际情况证明这一定律是对的。
1.1.2 软件危机的含义
❖ 关于软件危机的统计数据 大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划交付时间20%到50%,90% 以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高 美国政府审计局:只有不到2%的合同定购软件在发布时具有可用性——98%以上的项目都失败 了
第一章 软件工程
软件工程面向的是软件 软件面向的是信息
第一章 软件工程
第一节 软件危机 第二节 软件工程
❖ 1.1.1 计算机系统的发展历程 ❖ 1.1.2 软件危机的含义 ❖ 1.1.3 软件危机产生的原因 ❖ 1.1.4 缓解软件危机的途径
第一节 软件危机
1.1.1 计算机系统的发展历程
涉及的主要方面是什么?
软件工程适合用于各类软件系统的开发,它包含需求分析的规约、设计、构建、测试、运行和维护等 软件系统生存周期的所有阶段。
软件工程导论第一章.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章 软件工程概述
1.3 续
• 软件生命周期阶段的划分
问题定义 可行性研究 定义时期 需求分析 总体设计 详细设计 开发时期 编码和单元测试 综合测试 软件维护 维护时期 退役
1.3 续
• ⒈软件定义时期
– 软件定义时期的任务是:确定软件开发工程必须
完成的总目标;确定工程的可行性;导出实现工 程目标应该采用的策略及系统必须完成的功能; 估计完成该项工程需要的资源和成本,并且制定 工程进度表。
目标和完成期限,规定开发小组的责任和产品标 准,以便结果的审查。
1.2 续
• ⑹开发小组的人员应该少而精
– 软件开发小组人员素质和数量是影响软件质量和
开发效率的重要因素。
– 素质高的人员开发效率高,错误率低。 – 开发小组的成员之间要交流情况、讨论问题,随
着人数的增加,通信开销将急剧增加。
– 人员数:N
– 由系统分析员完成该阶段的系统分析工作。 – 软件定义时期可通过软件系统的问题定义、可行
性研究和需求分析三个阶段来完成。
1.3 续
• ⑴问题定义阶段
– 问题定义阶段必须回答的关键问题是:“要解决
的问题是什么?”。
– 问题定义阶段的任务是:确定软件系统的工程需
求,也就是要搞清“做什么?”。
– 通过对客户的访问调查,系统分析员扼要地写出
件工程支撑环境;
– 过程是为了获得高质量的软件所需要完成的一系
列任务的框架,它规定了完成各项任务的工作步 骤。
1.2 续
• 传统方法学
– 又称生命周期方法学,或结构化范型。 – 采用结构化技术来完成软件开发的各项任务,并
使用适当的软件工具或软件工程环境来支持结构 化技术的运用。
– 把软件生命周期的全过程依次划分为若干个阶段,
软件工程导论第一章
软件工程的发展
软件工程的发展经历了多个阶段,从早期的手工作坊式开发到结构化方法、面 向对象方法,再到现在的敏捷开发方法和DevOps等,不断推动着软件产业的快 速发展。
软件工程的研究对象与范围
研究对象
软件工程的研究对象包括软件开发过程中的各种技术、方法、工具和管理等方面 ,旨在提高软件开发的效率和质量,降低开发成本。
研究范围
软件工程的研究范围涵盖了软件开发的各个阶段,包括需求分析、设计、编码、 测试和维护等,同时也涉及到软件项目管理、软件质量保证和软件测试等方面。
软件工程的重要性
提高软件质量
通过采用先进的软件工程方法和工具,可以显著提高软件的质量,减 少软件中的缺陷和错误,提高软件的稳定性和可靠性。
降低开发成本
针对软件的最小可测试单元进行测试,确保每个单元的功能正 确无误。
将多个单元组合在一起进行测试,验证它们之间的接口和功能 是否正常。
对整个软件系统进行全面的测试,包括功能测试、性能测试、 安全测试等,确保软件满足需求和设计要求。
记录和管理测试过程中发现的缺陷,跟踪缺陷的修复进度和结 果,确保软件质量得到持续改进。
软件开发模型介绍
瀑布模型
瀑布模型是一种线性的软件开发模型,按照固定的顺序进行开发,每个阶段都有明确的输入和输出。它的优点是易于 理解和管理,但缺点是缺乏灵活性,难以应对需求变更。
螺旋模型
螺旋模型是一种迭代式的软件开发模型,强调风险分析和控制。它在每个迭代周期中都包括需求定义、风险分析、工 程实现和评审等步骤,适用于大型、复杂的软件项目。
将软件划分为独立的模块,降低 模块间的耦合度,提高代码的可 重用性和可维护性。
02
版本控制工具
使用版本控制工具(如Git)管理 代码,记录代码的变更历史,方 便团队协作和代码回溯。
软件工程的发展经历了多个阶段,从早期的手工作坊式开发到结构化方法、面 向对象方法,再到现在的敏捷开发方法和DevOps等,不断推动着软件产业的快 速发展。
软件工程的研究对象与范围
研究对象
软件工程的研究对象包括软件开发过程中的各种技术、方法、工具和管理等方面 ,旨在提高软件开发的效率和质量,降低开发成本。
研究范围
软件工程的研究范围涵盖了软件开发的各个阶段,包括需求分析、设计、编码、 测试和维护等,同时也涉及到软件项目管理、软件质量保证和软件测试等方面。
软件工程的重要性
提高软件质量
通过采用先进的软件工程方法和工具,可以显著提高软件的质量,减 少软件中的缺陷和错误,提高软件的稳定性和可靠性。
降低开发成本
针对软件的最小可测试单元进行测试,确保每个单元的功能正 确无误。
将多个单元组合在一起进行测试,验证它们之间的接口和功能 是否正常。
对整个软件系统进行全面的测试,包括功能测试、性能测试、 安全测试等,确保软件满足需求和设计要求。
记录和管理测试过程中发现的缺陷,跟踪缺陷的修复进度和结 果,确保软件质量得到持续改进。
软件开发模型介绍
瀑布模型
瀑布模型是一种线性的软件开发模型,按照固定的顺序进行开发,每个阶段都有明确的输入和输出。它的优点是易于 理解和管理,但缺点是缺乏灵活性,难以应对需求变更。
螺旋模型
螺旋模型是一种迭代式的软件开发模型,强调风险分析和控制。它在每个迭代周期中都包括需求定义、风险分析、工 程实现和评审等步骤,适用于大型、复杂的软件项目。
将软件划分为独立的模块,降低 模块间的耦合度,提高代码的可 重用性和可维护性。
02
版本控制工具
使用版本控制工具(如Git)管理 代码,记录代码的变更历史,方 便团队协作和代码回溯。
软件工程导论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
软件的发展
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 •消费者的影响
第四阶段 •强大的桌面系统 •面向对象技术 •专家系统 •人工神经网络 •并行计算 •网路计算机
软件质量得不到保证
软件应用面的扩大:科学计算、军事、航空航天、工业控制、 企业管理、办公、家庭
01软件工程导论(A01-2)
16
关于什么是问题,需要区别目标与手段
关键在于获取应用领域的知识,理解用户的准 确需求(目标)——不是内在的能力,而是外 在的价值。
2021/4/6
17
要点7:构成问题的要素是价值和事实这两个方面的信 息
1. 价值信息——即基于不同观点和标准的评价信息。
2. 事实信息——现有的事实信息是判断问题存在与否 的客观依据——所以科研工作首先是调研及文献阅 读,目的是采集到我们对课题目标(或待解决问题 )的事实依据。如查新。
你认为是问题,别人不这样看,你该怎么办?
问题为何得不到解决?
解决问题的过程是什么?还会遇到什么问题?
…
2021/4/6
4
要点3:所谓“问题”,即指“目标与现实之间存在 的障碍(差距)”。
即在你努力使现实接近目标时,妨碍你接近目标的根源 和现象。——注意,不要直接把目标当作问题,那会妨 碍你明确问题。
2021/4/6
3
要点2:工科的科研活动,主要是为解决问题的求解活 动。
——最佳的工科教育,是培养学生“拥有解决一切问题的能 力”——这显然预示着“终生教育”的理念。
但是,首先要明确什么是问题以及和问题相关的问 题:
什么是问题?怎样认识问题?Fra bibliotek怎样求解问题?
问题范围太广太复杂,找不到解决问题的答案的时候,又 该怎么办?
2021/4/6
14
要点5:给问题下定义,必须明确三点:价值、限制、 范围
1. 明确问题的价值
——即解决问题的动机。如效益、影响等方面的重要性、必 要性、关键性等;
2. 明确解决问题时被允许的时间以及解决方案的有效 期
——即实效性、反复性、突破性、基础性、新颖性、创造性 等,以及科研周期、项目期限等风险因素。
软件工程导论第1章(第4版)
普通高校本科计算机专业特色教材精选
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论01
软件开发与维护的方法不正确
忽视软件需求分析的重要性 轻视软件维护 只重视程序而忽视软件配置其余成分的糊涂观念
WHPU
3-9
图1.1 引入同一变动付出的代价随时间变化的趋势
主讲教师: 主讲教师 丁月华 Email:ding_mickey@
1.1.3 消除软件危机的途径
软件组成: 程序、 软件组成 程序、数据及相关文档的完整集合
WHPU
坚持进行阶段评审 坚持进行阶段评审
① ②
实行严格的产品控制 实行严格的产品控制
①
3-16
1.2.2 软件工程的基本原理
著名的软件工程专家B.W.Boehm综合软件工程的专家学者 综合软件工程的专家学者 著名的软件工程专家 们的意见并总结了TRW公司多年开发软件的经验,于1983 公司多年开发软件的经验, 们的意见并总结了 公司多年开发软件的经验 年在一篇论文中提出了软件工程的7条基本原理 年在一篇论文中提出了软件工程的 条基本原理 7大基本原理 大基本原理
WHPU
3-7
[实例]
Middle to late 1960s: Truly large software systems were attempted. 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。 IBM公司在1963年至1966年开发的IBM360机的操作系统 例: 美国IBM公司在1963年至1966年开发的IBM360机的操作系统。 这一项目花了5000人一年的工作量,最多时有1000人投入开发 这一项目花了5000人一年的工作量,最多时有1000人投入开发 5000人一年的工作量 1000 工作,写出了近100万行源程序。......据统计 100万行源程序 据统计, 工作,写出了近100万行源程序。......据统计,这个操作系统 每次发行的新版本都是从前一版本中找出1000 1000个程序错误而修 每次发行的新版本都是从前一版本中找出1000个程序错误而修 正的结果。 正的结果。...... 这个项目的负责人F. Brooks事后总结了他在组织开发过程 这个项目的负责人F. D. Brooks事后总结了他在组织开发过程 中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中 中的沉痛教训时说: ......正像一只逃亡的野兽落到泥潭中 做垂死的挣扎,越是挣扎,陷得越深, 做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾 ......程序设计工作正像这样一个泥潭 ......一批批程 程序设计工作正像这样一个泥潭, 难。......程序设计工作正像这样一个泥潭,......一批批程 序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷 序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷 入这样的困境...... IBM360操作系统的历史教训成为软件开 ......”。 入这样的困境...... 。IBM360操作系统的历史教训成为软件开 发项目的典型事例为人们所记取。 发项目的典型事例为人们所记取。 Software Crisis !
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/8/17
Introduction to Software Engineering
8
第一章 软件危机与软件工程
§1.软件危机 (Software Crisis)
In the early days:
“Software” = “Place a sequence of instructions together to get the computer to do something useful”.
User Computer Late 1950’s: Computer became cheaper and more common
High level languages were developed easier
User Programmer Computer
2020/8/17
Introduction to Software Engineering
张海藩编著,软件工程导论(第四版),清华大学出版社 (2007)
2020/8/17
Introduction to Software Engineering
3
参考书目
实用软件工程 (第二版)
郑人杰 殷人昆 陶永雷 清华大学出版社(2001)
2020/8/17
软件工程 -实践者的研究方 法(英文版 第四版)
Software Crisis!!!!
2020/8/17
Introduction to Software Engineering
10
§1.软件危机
问题的主要表现:
⑴ 项目没有被很好地理解;计划不周,最终导 致进度拖延。
⑵ 没有充分的文档资料(documentation) 人与人的交流比写程序困难得多。
2020/8/17
Introduction to Software Engineering
6
课程讲授和考核方法 课堂讲授、自学与分组实践相结合
学期结束前提交软件工程研发课题 《患者监护系统》实践报告
2020/8/17
Introduction to Software Engineering
7
课程教学大纲
主观原因:
和软件开发与维护的方法不当有关
错误的积累效应和放大效应
变化出现的时期
2020/8/17
Introduction to Software Engineering
12
解决问题的想法:
§1.软件危机
Better management
Different team organizations
Better languages & tools
2020/8/17
Introduction to Software Engineering
13
§1.软件危机
• 据07年国外媒体报道,微软高级工程师Eric Traut透露, 微软将对Windows Vista之后的下一代操作系统Windows 7 进行“瘦身”。
• 与前几代 操作系统相比,Windows Vista的体积相当庞大。 Windows Vista包含了5000万行代码,比XP多出了40%。 此外,Windows Vista还集成了19500个驱动程序,而 Windows XP只集成了10000个驱动。
少学习,多思考?!
埃德蒙·费希尔——美国华盛顿大学教授、1992 年诺贝尔医学奖得主,2004年11月10日在同济大学 演讲台上,他充满激情地表达了自己的科学理念和 对中国学生的期望:“少学习,多思考”。他认为 科学的本质和艺术是一样的,需要直觉和想象力。 而把太多信息塞入大脑,会让学生没有时间放松, 没有时间发展想象力。“牛顿本来是一个没有什么 特别之处的学生。但在剑桥大学休学的两年里,静 下心来充分发展想象力,于是产生了伟大的发现。”
Roger S. Pressman
机械工业出版社
Introduction to Software Engineering
4
参考书目
Fundamentals of Software Engineering Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli Prentice-Hall, Inc. (1991)
⑶ 软件可靠性(reliability)缺少度量的标准,质量 无法保证。
⑷ 软件难以维护(maintainability) 不易升级(evolvability)
2020/8/17
Introduction to ware Engineering
11
§1.软件危机
问题症结所在:
客观原因:
软件本身的特点-逻辑部件
9
§1.软件危机
Early 1960s:
Very few large software projects were done by some experts.
Middle to late 1960s:
Truly large software systems were attempted.
个体作坊式
Uniform coding conventions
必须意识到:“软件” 编程,它有自己的
生命周期 (life cycle)。大型软件系统的开发与其它 工程项目如建造桥梁、制造飞机、轮船等的开发 是同理的。
“软件工程”(Software Engineering)
NATO Conference , Garmisch , Germany , 1968.
除了学习扎实的知识,更重要的是要留点时间 去梦想。
2020/8/17
Introduction to Software Engineering
1
软件工程
Software Engineering
夏顺仁
Tel:87951703,13336196169
E-mail : srxia@
教材
Software Engineering , Theory and Practice Shari Lawrence Pfleeger , Prentice-Hall, Inc.(1998)
2020/8/17
Introduction to Software Engineering
5
参考书目
Object-Oriented Programming Using C++ , Ira Pohl Benjamin/Cummings Publishing Company , Inc. (1993)