软件工程概述
软件工程概述和发展趋势

软件工程概述和发展趋势软件工程是一门涉及软件开发、维护和管理的学科,旨在提高软件开发的效率和质量,以满足不断增长的软件需求。
本文将从软件工程的定义、发展历程以及当前的发展趋势进行探讨。
一、软件工程的定义和概述软件工程是将工程原理、方法和工具应用于软件开发和维护的学科。
它与传统的工程学科一样,采用系统化和结构化的方法来解决软件开发中的问题。
软件工程主要包括需求分析、设计、编码、测试和维护等阶段,并且强调团队合作和质量控制。
软件工程的发展是为了解决软件危机而起,软件危机指的是在软件开发过程中出现的成本超支、进度延误、质量不达标等问题。
软件工程的目标是通过规范化的过程和工具来提高软件项目的管理和控制,从而降低软件开发的风险。
二、软件工程的发展历程1. 面向过程的软件开发方法早期的软件开发方法主要关注程序编写的技术和算法,忽略了软件开发中的其他环节。
这导致了开发进程的混乱和质量的不稳定。
2. 结构化软件开发方法20世纪70年代,随着软件需求的增长,人们开始寻求更系统化的开发方法。
结构化软件开发方法将软件开发分解为模块化的子任务,有助于降低复杂度并提高可维护性。
3. 面向对象的软件开发方法20世纪80年代,面向对象的软件开发方法逐渐兴起。
它将现实世界中的实体和行为映射到软件模型中,提供了更灵活和可扩展的开发方式。
4. 敏捷开发方法21世纪初,敏捷开发方法成为热点。
敏捷开发强调迭代和自组织团队的工作方式,注重用户反馈和快速响应变化的需求。
三、软件工程的发展趋势1. 人工智能和机器学习的应用人工智能和机器学习的快速发展将在软件工程领域带来新的机遇和挑战。
通过智能算法和模型训练,可以提高软件开发、测试和维护的效率。
2. 软件工程的自动化随着自动化技术的进步,软件工程领域也在寻求自动化解决方案。
例如,自动化测试和持续集成工具的广泛应用,可以降低测试成本并提高交付速度。
3. 云计算和大数据的发展云计算和大数据技术的发展为软件工程提供了更好的资源管理和数据处理能力。
软件工程概述

3.克服危机的途径
1968年秋季,NATO(北约)的科技委员会召集了 近50名一流的编程人员、计算机科学家和工业界巨头, 讨论和制定摆脱“软件危机”的对策。由于认识到软 件的设计、实现、维护和传统的工程规则有相同的基 础,在那次会议上首次提出了“软件工程” (software engineering)这个概念。
计算机科学与工程学院
2018/7/2
27
软件工程方法:为软件开发提供“如何做”的技术。 它包括了项目计划、需求分析、系统设计、程序实现、 测试与维护等一系列的任务。 软件工程工具:为过程和方法提供自动的或半自动的 支持。这些软件工具被集成起来,建立起一个支持软 件开发的系统,称之为计算机辅助软件工程(CASE, Computer Aided Software Engineering)。CASE集成 了软件、硬件和一个存放开发过程信息的软件工程数 据库,形成了一个软件工程环境。
2018/7/2
计算机科学与工程学院
20
2.危机的原因
①用户对软件需求的描述不精确,可能有遗漏、有二 义性、有错误,甚至在软件开发过程中,用户还提出 修改软件功能、界面、支撑环境等方面的要求。 ②软件开发人员对用户需求的理解与用户的本来愿望 有差异,这种差异必然导致开发出来的软件产品与用 户要求不一致。 ③大型软件项目需要组织一定的人力共同完成,多数 管理人员缺乏开发大型软件系统的经验,而多数软件 开发人员又缺乏管理方面的经验。各类人员的信息交 流不及时、不准确、有时还会产生误解。
2018/7/2
计算机科学与工程学院
8
故 障 率
生命 初期 "磨损"后
故 障 率
实际曲线 修改
第1章软件工程和软件测试概述

1.1软件工程概述- 软件工程
• 1968年北大西洋公约组织的计算机科学家在联邦 德国召开国际会议,讨论软件危机问题,在这次 会议上正式提出并使用了“软件工程”这个名词。 • 软件工程是指导计算机软件开发和维护的一门工 程学科,它是采用工程的概念、原理、技术和方 法来开发与维护软件,把经过时间考验而证明正 确的管理技术和当前能够得到的最好的技术方法 结合起来,以经济地开发出高质量的软件并有效 地进行维护。
• 实际问题的复杂性 实际问题的复杂性 • 程序逻辑结构的复杂性 程序逻辑结构的复杂性
5
1.1软件工程概述- 软件的分类
• 按软件的功能进行划分: 按软件的功能进行划分:
– 系统软件
• • • • • • • • • 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
– 支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 支持需求分析、设计、实现、测试和支持管理的软件
• 软件是计算机系统中与硬件相互依存的另一部
它是包括程序 及其相关文档 分,它是包括程序,数据及其相关文档的完整集 它是包括程序,数据及其相关文档的完整集 其中: 合。其中:
– 程序 程序(instructions)是按事先设计的功能和性能要求 是按事先设计的功能和性能要求 执行的指令序列 – 数据 数据(data)是使程序能正常操纵信息的数据结构 是使程序能正常操纵信息的数据结构 – 文档 文档(documents)是与程序开发,维护和使用有关的 是与程序开发, 是与程序开发 图文材料
– 问题定义 – 可行性研究 – 需求分析
18
1.1软件工程概述-软件开发时期
• 开发时期具体设计和实现在前一个时期定 义的软件,它通常由下述4个阶段组成
软件工程概述

瀑布模型 瀑布模型把软件生存期划分为计划、开发和运行三个时期,每个时期 又划分为若干个阶段,规定了制定开发计划、进行需求分析和说明、 软件设计、程序编码、测试及运行维护等各项工程活动,如图1—6所 示。 在整个瀑布模型中贯穿有以下几个观点: 1)各阶段具有顺序性,一个阶段的开始是以上一阶段工作作为基础的。
•
•
6)开发小组的人员应少而精
7)承认不断改进软件工程实践的必要性
软件工程的目标与原则
软件工程开发的目标: • 1)能够满足基本需要
• 2)开发成本要小
• 3)较低的维护费用 • 4)及时完工并交付使用
• 5)可移植性好
更具体的产品性能指标是,开发的软件产品应该具有可修改性、有效性、可 靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和 可互操作性。
ö Á Ô ¿ 3
æ · ¸ ñ Ë µ Ã ÷
ö Á Ô ¿ n
æ · ¸ ñ Ë µ Ã ÷
è » É Æ
µ Ï Ê Ö ¹ Í » ¯ ³ É
º · ¼ ¶ ¿ Í º §
螺旋模型
螺旋模型是生命周期模型和快速原型模型的结合,其基本思想是借助构建原型来降低 风险,把软件开发的每一个阶段都看作是增加了风险分析的快速原型模型。螺旋模型 的每一个周期都包括需求定义、风险分析、工程实现和评审4个部分,软件开发的整个 过程就是这4个部分的迭代,每迭代一次,过程就完成一个周期,软件开发就前进一个 层次,系统就生成一个新的版本。 螺旋模型结构图如图1-9所示。 螺旋模型的特点:
专业应用程序
•操作系统 •操作环境 •数据库管理系统 •通信管理器
•系统应用程序 • 执行管理器 • 安全管理器
•程序设计语言 •翻译器 •程序设计环境 •计算机辅助
软件工程专业描述及就业方向分析

软件工程专业描述及就业方向分析软件工程是一门涉及软件开发、测试、维护和管理的学科,旨在培养学生具备软件系统设计与开发的专业能力。
随着信息技术的飞速发展,软件工程专业已成为当今热门的职业选择之一。
本文将对软件工程专业的概要描述以及就业方向进行分析。
一、软件工程专业概述1.1 课程设置软件工程专业的课程设置主要包括计算机基础知识、编程语言、软件开发工具、数据库原理、算法与数据结构、人机交互与界面设计等方面的学习内容。
通过学习这些课程,学生可以获得从事软件开发与工程管理所需的理论基础和实践能力。
1.2 技能要求软件工程专业要求学生具备良好的逻辑思维能力、系统分析与设计能力、编程实现能力、问题解决与调试能力、团队合作精神以及不断学习和创新的能力。
此外,沟通能力和项目管理能力也是软件工程师需具备的重要素质。
二、软件工程专业的就业方向2.1 软件开发工程师软件开发工程师是软件工程专业毕业生最常见的就业方向之一。
软件开发工程师主要负责软件系统的设计、编码、调试与测试工作。
他们熟悉各种编程语言和开发工具,能够按照客户需求进行软件开发并保证软件的质量。
2.2 系统分析师系统分析师负责对软件开发项目进行需求分析和系统设计。
他们与客户沟通,了解并明确客户需求,将其转化为具体的功能要求和系统设计方案。
系统分析师需要具备较强的业务分析能力和沟通能力,能够有效地协调各方利益,实现项目的顺利进行。
2.3 软件测试工程师软件测试工程师负责对软件产品进行全面而系统的测试,确保软件的质量和稳定性。
他们需要编写测试用例、执行测试计划并进行缺陷管理。
软件测试工程师需要具备优秀的问题解决能力和分析能力,能够快速定位和解决软件缺陷问题。
2.4 项目经理项目经理负责软件开发项目的规划、组织和管理以及与客户的沟通。
他们需要协调项目团队成员,合理分配任务和资源,并确保项目按时交付和达到客户要求。
项目经理需要具备较强的组织和协调能力,能够在项目管控过程中避免和解决各种问题。
第一章软件工程概述

第一章软件工程概述第一章软件工程概述1.1软件危机1.1.1软件危机的介绍1)软件危机在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机的典型表现:(2)用户对“已完成的”软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入趋势。
1.1.2产生软件危机的原因软件本身特点:缺乏可见性,在运行之前往往难以衡量,质量也难以评价不会因为长期使用而用坏,软件维护通常意味着修正或修改原来的设计,较难维护。
规模庞大,需分工合作,如何保证每个人的工作合在一起是极端复杂的问题。
软件开发与维护的方法不正确产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术。
软件生命周期:一个软件从定义、开发、使用和维护直到最早被废弃。
软件产品必须由一个完整的配置组成(程序、文档、数据)1.1.3消除软件危机的途径正确认识计算机软件认识到软件开发是一个协同配合、共同完成的工程项目并吸取经验。
推广使用已总结的开发软件成功的技术和方法开发使用更好的软件工具1.2软件工程的介绍软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程关注于大型程序的构造软件工程的中心课题是控制复杂性软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
第1章 软件工程概述

因而软件成本相当昂贵;
(6)相当多的软件开发涉及到社会因素。
2017/10/26 第4页 软件工程
3、软件的分类:
(1)按功能分类 a、系统软件:支持计算机系统各个部件、相关的软件
和数据协调、高效地工作的软件。如:OS、DBMS、
DRIVER、COMMUNICATION-SYSTEM。 b、支撑软件:协助用户开发软件的工具性软件,文本 编辑软件。如:PSL/PSA(问题描述语言、问题描述分析 器)、图形软件包、预编译程序、静态分析程序。
是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级
别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐 一种方案。最后确定一种方案。 (4)完成的任务:可能的解法(每种解法的系统流程图和成本效益分析),推 荐的系统结构(层次图或结构图)。 总体设计结束的标志是提交总体设计说明书、数据库或数据结构说明书和 集成测试计划等文件。
软件工程
2017/10/26
第1页
软件工程
第一章 软件工程概述
软件 软件危机 软件工程
2017/10/26
第2页
软件工程
1.1 软
1、什么叫软件?
件
(1)广义软件:相对于有形物理实体,把技术条件、管理法
规以及人员素质等无形因素称为软件。 (2)计算机软件:是与计算机硬件相对应的计算机组成部分, 包括程序、数据及其相关文档的完整集合。 Boehm:“软件是程序以及开发、使用和维护程序所需的所有
2017/10/26
第6页
软件工程
(4)按功能软件服务对象分类 a、项目软件:受特定客户委托由一个或多个软件 开发机构在合同的约束下开发出来的软件。 b、产品软件:提供给市场的商品。
软件工程概述

软件工程概述软件工程是指应用系统化、规范化、可重复的方法构建和维护软件的一门学科。
它涵盖了软件开发的全过程,包括需求分析、设计、编码、测试、部署和维护等环节。
软件工程旨在提高软件开发过程的效率和质量,以满足不断增长的软件需求。
本文将从软件工程的定义、发展历程以及核心概念等方面进行综述。
1. 软件工程的定义软件工程是一门工程学科,它应用了工程原理、管理原则和科学方法来开发和维护软件。
软件工程是一种系统化、规范化的方法论,旨在提高软件开发过程的效率和质量,以满足用户需求。
2. 软件工程的发展历程软件工程的起源可以追溯到20世纪50年代,当时软件开发项目规模越来越大,传统的编程方法已经无法满足需求。
于是人们开始探索一种更有效的软件开发方法。
在20世纪60年代末,软件工程开始被正式提出并逐渐成为软件开发的主流方法。
在20世纪70年代,软件工程的概念逐渐得到了认可,并且出现了一系列软件工程方法论,如结构化设计、模块化、自顶向下等。
这些方法大大提高了软件开发的效率和质量。
进入21世纪,随着互联网和移动互联网的兴起,软件工程的发展进入了一个新的阶段。
敏捷开发、DevOps等新方法被广泛采用,以适应快速迭代和持续交付的需求。
3. 软件工程的核心概念(1)需求分析:需求分析是软件工程的第一步,它关注的是用户的需求和期望。
通过与用户充分沟通、访谈和调研,软件工程师能够准确把握用户的需求,为后续的设计和开发工作打下基础。
(2)设计:软件设计是根据需求分析的结果,将软件系统划分为一系列的模块,并定义模块之间的接口和交互关系。
设计阶段需要考虑软件的可维护性、可扩展性和安全性等问题。
(3)编码:编码是将设计好的软件模块转化为机器语言的过程。
在编码过程中,开发人员需要遵循编码规范和最佳实践,确保代码的可读性、可维护性和高效性。
(4)测试:测试是保证软件质量的关键环节。
通过设计和执行测试用例,测试工程师能够发现和修复软件中的错误和缺陷,以确保软件在交付给用户之前达到预期的质量标准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 软件工程
软件工程的定义
软件工程的理解: 软件工程学科是一门指导计算机软件开发和维护的工程学科; 软件工程不是科学,其目的是创造而不是发现; 软件工程不是传统意义的工程:没有成熟的系统化方法。
软件工程的7条基本原理
(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术
29
增量模型
增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征。采用随着时间的 进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增 量”。
增量模型
30
增量模型
增量模型
主要特点:
(1)人员分配灵活,刚开始不用投入大量人力资源,如果核心产品很受欢 迎,则可增加人力实现下一个增量 。 (2)当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出 核心产品的途径,这样就可以先发布部分功能给客户,以满足客户的局部 需求 。 (3)能够有计划地管理技术风险 主要缺点:
软件的评价因素
(1)易用性:指软件产品对用户来说有效、易学、高效、好记、少错 和令人满意的程度 。 (2)可靠性:指在给定的时间内,计算机软件系统能实施应有功能 的能力。 (3)可维护性:指软件维护人员对该软件进行维护的难易程度。 (4)安全性:确保软件系统不会被内部或外部因素危及的能力。
3
1 软件的基础知识
操作提示
可以通过上网查阅相关资料获取软件过程模型更为详细的信息。
32
原型模型
原型模型
是从需求收集开始, 在获得一定的需求后, 进行“快速设计”,在 此基础上创建软件系统 的原型,并由用户对原 型进行评估并进一步精 化待开发软件的需求。
原型模型
33
RAD模型
RAD模型
是一个增量型的软件 开发过程模型,强调极 短的开发周期。RAD模 型是瀑布模型的一个 “高速”变种,通过大 量使用可复用构件,采 用基于构件的建造方法 实现快速开发。
(3)遵循编码规范
(4)进行单元测试
8-综合测试
通过各种类型的测试及相应
的调试,保证软件达到预定的的 要求。最基本的测试是集成测 试和验收测试。
9-软件维护
(1)改正性维护
(2)适应性维护
(3)完善性维护 (4)预防性维护
21
作业
操作要求
(1)怎样理解软件生存周期模型? (2)软件生存周期模型中各阶段的主要描述工具有哪些? (3)需求分析在软件生存周期过程中处于怎样的地位? (4)查找一份需求规格说明书,通过阅读该说明书准确的获取系统的需求。 (5)查找一份总体设计说明书 (6)查找一份详细设计说明书
软件的发展
1.程序设计阶段(20世纪50至60年代) 2.程序系统阶段(20世纪60至70年代) 3.软件工程阶段(20世纪70年代中后期) 4.第四阶段(约20世纪90年代以来)
软件发展的四个阶段出现的典型技术和主要特点
4
1 软件的基础知识
软件的特点
1.抽象性
指软件生产无明显制造过程,软件是一种逻辑实体,而不是具体的物理实体 。
瀑布模型
24
瀑布模型
瀑布模型
主要特点:
(1)上一阶段活动的成果作为本阶段活动的输入; (2)利用这一输入实施本阶段活动应完成的内容; (3)得到本阶段活动的工作成果,再传递传给下一阶段活动; (4)在每一阶段活动结束时,对阶段活动的工作成果进行评审,如果工作 成果得到确认,则继续下一项活动,否则返回前一阶段,甚至更前阶段的 活动进行返工。
喷泉模型
28
喷泉模型
喷泉模型
主要特点:
(1)软件的某个部分(如:组件)通常被重复工作多次 ; (2)可以实现并行开发,提高软件项目开发效率,节省开发时间 ; (3)适应于面向对象的软件开发过程 ;
主要缺点: (1)由于喷泉模型在各个开发阶段是重叠的,因此,在开发过程中,需要 大量的开发人员,不利于项目的管理; (2)喷泉模型要求对文档的管理较为严格,审核的难度加大,尤其是面对 可能随时加入各种信息、需求与资料。
11
软件生存周期模型
任务目标 了解软件生存周期模型及软件生存周期的 阶段划分及各阶段的主要任务
学习方法
资料查询法 类比学习法
12
4 软件生存周期
定 义 时 期
软 件 生 存 周 期
开 发 时 期 维 护 时 期
软件生存周期模型和各阶段文档
13
软件生存周期
1-问题定义
“要解决的问题是什么?” 系统分析员应该提出关于问题性质、工程目标和规模的书面报告。 并组织认真讨论这份 书面报告。问题定义阶段是软件生存周期中最简 短的阶段,一般只需要一天甚至更少的时间。
14
软件生存周期
2-可行性研究(系统流程图)
15
软件生存周期
3-需求分析
1.什么是软件需求 IEEE软件工程标准中关于需求的定义 用户解决问题或达到目标所需的条件或权能。
系统或系统部件要满足合同、标准、规范或其它正式规定文档
所需具有的条件或权能。 一种反映上面两条所描述的条件或权能的文档说明。 2.需求的特点 (1)需求是根本的 (2)需求是变化的 (3)需求是多层次的
2.可复制性
指软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在 研制、开发中被创造出来的,它可以很简单的制作副本。
3.不会磨损
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,而只有版 本更新和升级的问题。
4.依赖性
软件的开发和运行经常受到计算机系统的限制,对计算机系统和用户需求有 着不同程度的依赖性。
(2)中等成本的解决方案。
(3)高成本的完美的解决方案。
19
软件生存周期
5-详细设计
“应该怎样具体地实现这个系统
呢?” 通常用HIPO图或PDL语言 或程序流程图描述详细设计的结果 。
20
软件生存周期
7-编码和单元测试
也称为软件的实现,也是程序员的主要工作。 (1)选择程序设计语言 (2)养成程序设计风格
25
螺旋模型
螺旋模型
将瀑布模型和演化模型结合起来,融合了两个模型的优点,而且还强 调了其他模型均忽略了的风险分析和评价。
螺旋模型
26
螺旋模型
螺旋模型
主要特点:
在“瀑布模型”的每一个开发阶段前,引入一个非常严格的风险识别、 风险分析和风险控制。它把软件项目分解成一个个小项目,每个小项目都 标识一个或多个主要风险,直到所有的主要风险因素都被确定。 螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决 策提供了方便,有助于提高目标软件的适应能力,为项目管理人员及时调 整管理决策提供了便利,从而降低了软件开发风险。 主要缺点:
5.开发效率低
软件的开发至今尚未完全摆脱手工的开发方式,软件也很难象其它工业产品 一样实现标准化、自动化生产。
6.开发费用高
随着社会的发展和信息化进程的推进,在计算机系统中,软件费用占有的比 例越来越大。
5
1 软件的基础知识
软 件 的 分 类
6
2 软件危机
什么是软件危机
指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而 导致软件开发与维护过程中出现一系列严重问题的现象 (始于20 世纪 60年代 )。 从宏观上,主要是指 (1)软件的发展赶不上计算机硬件的发展, (2)软件的发展赶不上社会对软件需求的增长。 从具体的的软件来说 (1)软件往往不能按时完成,按预算、按时完成。 (2)已开发的软件不能很好地使用,甚至很快就不能用。
软件工程概述
1
本章学习要点
软件的定义与及分类 软件工程的定义和基本思想 软件生存周期思想 软件生存期模型 面向对象软件工程的基本思想和OOA, OOD,OOP的基本内容
2
1 软件的基础知识
软件的定义
软件是人们写给计算机的一系列指令以及相关文档的集合。 软件由以下三部分组成: (1)在运行中能提供所希望的功能和性能的指令集(即程序)。 (2)使程序能够正确运行的数据。 (3)描述程序研制过程、方法所用的文挡。
10
3 软件工程
新的设计原则
(1)确定性 是指软件开发过程中所有概念的表达应是确定的,无歧义性 的,规范的。 (2)一致性 指整个软件系统(包括程序,文档和数据)的各个模块应使 用一 致的概念。 (3)完备性 指软件系统不丢失任何重要成分,可以完全实现系统所要求 功能的程度。为了保证系统的完备性,在软件过程中需要严格的 技术评审。 (4)可验证性 指开发大型的软件系统需要对系统自顶向下,逐层分解,系 统分解应遵循系统易于检查,测试,评审的原则,以确保系统的 正确性。
7
2 软件危机
软件危机的特征
(1)软件开发费用和进度失控 丹佛新国际机场 。 (2)软件的可靠性差 “阿丽阿娜”运载火箭 (3)生产出来的软件难以维护 典型例子--IBM360的操作系统
软件危机的原因
(1)与软件本身的特点有关 (2)与软件开发人员本身的弱点有关
用户需求不明确 缺乏正确的理论指导 软件开发规模越来越大 软件开发复杂度越来越高
(1)过多的迭代次数会增加开发成本,延迟提交时间。 (2)采用螺旋模型,需要具有相当丰富的风险评估经验和专门知识。在风 险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
27
喷泉模型
喷泉模型
以用户需求为动力, 以对象为驱动的模型, 主要用于描述面向对象 的软件开发过程。喷泉 模型认为软件开发过程 自下而上周期的各阶段 是相互重叠和多次反复 的
如果增量包之间存在相交的情况且不能很好地处理,就必须做全盘的系 统分析。
31
作业
操作要求
(1)讨论瀑布模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用瀑布模型。 (2)讨论螺旋模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用螺旋模型。 (3)讨论喷泉模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用喷泉模型。 (4)讨论增量模型的主要特点,并举例说明在哪些类型的软件系统开发中 可以采用增量模型。