01软件危机与软件工程

合集下载

软件危机与软件工程解析

软件危机与软件工程解析

软件危机与软件工程解析在当今数字化的时代,软件已经渗透到我们生活的方方面面,从智能手机中的各种应用程序,到企业的管理系统,再到医疗、交通等关键领域的控制软件。

然而,在软件的发展历程中,并非一帆风顺,曾经出现过被称为“软件危机”的困境。

与此同时,软件工程作为应对软件危机的解决方案应运而生。

要理解软件危机,我们首先得明确它的表现。

在过去,软件开发常常面临着严重的超期、超预算问题。

项目规划时预计几个月能完成的软件,可能拖到一两年还无法交付;原本预算几十万的项目,最终可能花费数百万还达不到预期效果。

这不仅给开发者带来巨大压力,也让用户和投资方感到失望。

软件质量的不可靠是软件危机的另一个突出问题。

许多软件在交付使用后频繁出现故障、错误,甚至导致系统崩溃,严重影响了用户的正常使用和工作效率。

比如,一些金融软件出现错误可能会导致巨大的经济损失,医疗软件的故障甚至可能危及患者的生命。

软件的维护难度大也是一大难题。

随着业务需求的变化和技术的更新,软件需要不断进行修改和升级。

但由于早期开发过程中的不规范和缺乏良好的设计,使得软件的维护变得异常困难,成本高昂。

那么,是什么导致了软件危机的产生呢?首先,软件开发的复杂性是一个重要因素。

软件系统的规模和功能日益增长,涉及的技术和领域越来越多,这使得开发过程变得异常复杂,难以掌控。

用户需求的不断变化也是一个关键原因。

在开发过程中,用户可能会提出新的需求或者改变原有的需求,这导致开发团队需要不断调整和修改软件,增加了开发的难度和成本。

软件开发人员之间的沟通不畅也会引发问题。

在一个大型软件开发项目中,涉及多个部门和不同专业的人员,如果沟通不顺畅,就容易出现理解偏差,导致开发工作出现错误和延误。

缺乏有效的管理和规范同样是导致软件危机的原因之一。

在软件开发过程中,如果没有明确的流程和规范,开发人员就可能随意编写代码,不注重软件的可维护性和可扩展性,从而导致软件质量下降。

为了解决软件危机,软件工程应运而生。

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程

第一讲.软件危机与软件工程第一讲软件危机与软件工程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。

从智能手机上的各种应用程序,到企业的管理系统,再到国家的关键基础设施,软件的身影无处不在。

然而,在软件的发展历程中,并非一帆风顺,而是经历了诸多挑战和困难,其中最为突出的就是软件危机。

那么,什么是软件危机呢?简单来说,软件危机指的是在软件开发和维护过程中所遇到的一系列严重问题。

这些问题包括但不限于软件开发成本和进度的失控、软件质量的低下、软件的维护困难等等。

在过去,软件开发常常被视为一种个体化的艺术创作,缺乏规范的方法和流程。

开发人员往往凭借个人的经验和直觉来进行开发,这导致了软件开发的效率低下和质量不稳定。

而且,由于对软件需求的理解不够准确和全面,很多软件在开发完成后并不能满足用户的实际需求,需要进行大量的修改和返工,这不仅浪费了时间和资源,还严重影响了软件的交付进度。

此外,软件的规模和复杂度也在不断增加。

过去,一个简单的程序可能只有几百行代码,而现在,一些大型的软件系统可能拥有数百万甚至数千万行代码。

这种规模的增长使得软件开发和维护变得异常困难。

代码的复杂性导致了理解和修改的难度加大,容易引入新的错误,而且软件的测试和调试也变得更加耗时和费力。

软件危机给软件开发带来了巨大的困扰,严重制约了软件行业的发展。

为了解决这些问题,软件工程应运而生。

软件工程是一门致力于研究软件开发和维护的方法、技术和管理的学科。

它的目标是提高软件开发的效率和质量,降低开发成本,增强软件的可维护性和可扩展性。

软件工程强调采用规范化、系统化的方法来进行软件开发。

在软件开发的早期阶段,就需要对软件的需求进行详细的分析和定义,确保开发出来的软件能够真正满足用户的需求。

同时,软件工程还引入了一系列的开发模型,如瀑布模型、迭代模型、敏捷开发模型等,以适应不同类型和规模的软件项目。

在软件设计阶段,软件工程注重软件的架构设计和模块划分,通过合理的设计来提高软件的可维护性和可扩展性。

软件工程习题

软件工程习题

第1章软件危机与软件工程一、填空题1、软件工程是在1960 年代_末期提出的,这一概念的提出,其目的是倡导以工程和数学的原理、原则和方法进行软件开发,以期解决当时出现的软件危机。

2、软件包括了使计算机运行所需要的各种程序和数据及其有关的资料。

3、计算机程序及其说明程序的各种文档称为文件。

计算机任务的处理对象和处理规则的描述称为程序,有关计算机程序功能、设计、编制、使用的文字或图形资料称为文档。

4、20世纪60年代末至20世纪70年代初年代,“软件危机”一词在计算机界广为流传,其主要是针对当时存在的软件代价高和软件错误多的现象而提出的。

5、为了解决软件危机,要从技术、管理两方面入手。

引入“软件工程”的概念,就是为了解决软件开发过程中的技术和管理问题。

6、在软件开发、编码和测试过程中,必须将测试放在首要位置。

7、软件工程框架告诉我们,软件工程的目标是软件定义可靠性、软件开发可靠性、软件使用和维护可靠性。

8、软件工程的四条基本原则是:要选取适宜的开发模型,要采用合适的设计方法,要提供高质量的工程支持,要实行开发过程的管理。

9、软件工程活动主要包括需求、设计、实现、确认和支持等活动。

10、软件工程是指把系统的、规范化的、可以度量的方法运用于软件的开发、运行和维护的过程二、选择题1、软件是一种( B )产品。

A.有形B.逻辑C.物质D.消耗2、软件工程学的目的应该是最终解决软件生产的( B )问题。

A.提高软件的开发效率B.使软件生产工程化C.消除软件的生产危机D.加强软件的质量保证3、与计算机科学的理论研究不同,软件工程是一门( B )学科。

A.理论性B.工程性C.原理性D.心理性4、在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是( D )。

A.文档质量B.软件效率C.软件功能D.软件性能5、软件工程与计算机科学性质不同,软件工程着重于( C )。

A.原理探讨B.理论研究C.建造软件系统D.原理的理论6、软件工程学出现的主要原因是( C )。

软件危机与软件工程

软件危机与软件工程

软件危机与软件工程在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。

从手机上的各种应用程序,到企业的管理系统,再到复杂的科学计算软件,软件的身影无处不在。

然而,在软件的发展历程中,曾经出现过一段被称为“软件危机”的时期,给软件开发带来了巨大的挑战。

正是为了解决这些挑战,软件工程应运而生。

软件危机,简单来说,就是在软件开发过程中出现的一系列严重问题。

在 20 世纪 60 年代末到 70 年代初,随着计算机应用的日益普及,软件的规模和复杂度不断增加,而软件开发的方法和技术却相对滞后。

这导致了许多软件开发项目的失败,出现了诸如预算超支、进度延误、质量低下等问题。

预算超支是软件危机的一个显著表现。

由于在软件开发初期对项目的规模和难度估计不足,导致在开发过程中需要不断投入更多的资源,使得项目的成本远远超出了最初的预算。

进度延误也是常见的问题。

软件开发往往会因为各种原因而无法按照预定的时间表完成,这不仅会影响到软件的及时交付使用,还可能给用户带来巨大的损失。

而质量低下则是软件危机中最为严重的问题之一。

一些软件在投入使用后频繁出现故障,甚至无法正常运行,给用户带来了极大的困扰。

造成软件危机的原因是多方面的。

首先,软件本身的复杂性是一个重要因素。

随着软件功能的不断增强,其内部的逻辑结构变得越来越复杂,这使得开发人员难以准确理解和把握整个软件系统。

其次,软件开发过程中的不确定性也是导致危机的原因之一。

需求的变更、技术的更新换代等都可能给软件开发带来意想不到的困难。

此外,软件开发人员之间的沟通不畅、缺乏有效的管理和规范等也都对软件危机的产生起到了推波助澜的作用。

为了解决软件危机,软件工程作为一门学科逐渐发展起来。

软件工程的目标是通过采用一系列科学的方法和技术,提高软件开发的效率和质量,降低软件开发的成本和风险。

软件工程涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试、维护等阶段。

在需求分析阶段,开发人员需要与用户进行充分的沟通,了解用户的需求和期望,为后续的开发工作奠定基础。

第一讲软件危机与软件工程

第一讲软件危机与软件工程

我国软件业的现状
2001年,世界软件产品市场销售额超过 1865亿美元,我国当年的销售额为285亿 元人民币,只占世界市场不到2%的份额。
国内软件市场有限的份额中大部分为国外 软件厂商所瓜分,国内所开发的软件产品 仅占小部分。
我国软件业的现状
2001年我国软件销售总额96.3亿美元,软件企业约 5000家,从业人员29万。
High level languages were invented
User Programmer Computer
Early 1960s:
Very few large software projects were done by some experts.
Middle to late 1960s:
软件工程
Fritz Bauer:建立并使用完善的工程化原 则,以较经济的手段获得能在实际机器上 有效运行的可靠软件的一系列方法
IEEE:软件工程是开发、运行、维护和修 复软件的系统方法
软件工程的本质特性
1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化
错误 ➢ 为什么在软件开发过程总是难以度量其进展
造成以上问题的原因主要是:
➢ 软件行业发展的速度太快,对经验总结不足 ➢ 人们对自身处理能力的认识不清
解决的方法:
➢ 多实践,积累成功和失败的案例 ➢ 总结、思考、提取经验 ➢ 建立软件的模型和模式
软件工程
软件工程是指导计算机软件开发和维护的 工程学科。采用工程的概念、原理、技术 和方法来开发与维护软件,把经过时间考 验而证明正确的管理技术和当前能够得到 的最好的技术方法结合起来,以经济地开 发出高质量的软件并有效地维护它

软件工程与软件危机

软件工程与软件危机

软件工程与软件危机软件在开发和维护的过程中,会遇到很多问题,软件工程作为一门学科,是为了解决软件危机的,那么什么是软件危机?一、软件危机软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机主要表现:1 软件开发进度难以预测拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。

2 软件开发成本难以控制投资一再追加,令人难于置信。

往往是实际成本比预算成本高出一个数量级。

而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。

3 用户对产品功能难以满足开发人员和用户之间很难沟通、矛盾很难统一。

往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。

在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种"闭门造车"的开发方式必然导致最终的产品不符合用户的实际需要。

4 软件产品质量无法保证系统中的错误难以消除。

软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。

软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。

5 软件产品难以维护软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。

除非是开发者本人,否则很难及时检测、排除系统故障。

为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。

6 软件缺少适当的文档资料文档资料是软件必不可少的重要组成部分。

实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。

缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。

软件危机原因分析:1 用户需求不明确在软件开发过程中,用户需求不明确问题主要体现在四个方面:在软件开发出来之前,用户自己也不清楚软件开发的具体需求;用户对软件开发需求的描述不精确,可能有遗漏、有二义性、甚至有错误;在软件开发过程中,用户还提出修改软件开发功能、界面、支撑环境等方面的要求;软件开发人员对用户需求的理解与用户本来愿望有差异。

软件危机与软件工程

软件危机与软件工程软件危机与软件工程概述软件危机是指软件开发过程中出现的一连串问题和挑战,导致项目延期、超出预算或质量不佳的情况。

而软件工程则致力于解决软件开发过程中的各种挑战和问题,并提供一种可靠且高效的方法来开发高质量的软件。

软件危机的原因软件危机的原因有多方面的因素,主要包括以下几点:1. 需求不明确:在软件开发初期,客户对软件的需求往往模糊不清或者发生变化,导致软件开发团队无法准确理解客户的需求,从而难以开发出满足客户期望的软件。

2. 技术挑战:软件开发涉及多种技术和复杂的编程环境,开发人员需要不断学习和适应新的技术,但往往时间紧迫,导致技术跟不上进展,造成软件质量不佳。

3. 人员管理:软件开发涉及多个团队成员的合作,如果人员之间无法有效沟通和协作,就会影响软件的开发进度和质量。

4. 项目管理:项目管理对软件开发至关重要,如果项目管理不善,容易导致进度延误、资源浪费等问题。

软件工程的解决方案软件工程是一种以工程化的方式来开发软件的方法,并提供了解决软件开发挑战的一系列技术和方法。

以下是软件工程在解决软件危机中的一些解决方案:1. 需求工程:通过系统化的需求搜集和分析方法,帮助开发团队更全面地理解客户需求,避免需求不明确的问题。

2. 软件架构设计:通过良好的软件架构设计,可以确保软件的可扩展性和可维护性,降低软件开发过程中的技术难题。

3. 项目管理:采用敏捷的项目管理方法可以更好地应对需求变化和项目进度控制,保证软件开发的高效进行。

4. 质量保证:软件是软件工程中的重要环节,通过各种方法如单元、集成和系统等,可以确保软件质量。

软件危机背后的挑战虽然软件工程提供了一套解决软件危机的方法和技术,但在实践中仍然面临一些挑战:1. 技术进步:软件开发领域的技术在不断进步,开发团队需要不断学习和适应新的技术,才能跟上潮流并提供高质量的软件。

2. 项目规模:随着软件项目规模和复杂度增加,开发团队需要更多的资源和时间来完成项目,项目管理和资源分配成为挑战。

软件危机与软件工程

软件危机与软件工程第一章引言软件危机是指在软件开发过程中出现的一系列问题,如超出预算、延期交付、功能缺失等。

该问题的根本原因在于软件开发过程缺乏规范和有效管理。

为了解决软件危机问题,软件工程作为一门学科应运而生。

第二章软件工程的定义与范围软件工程是一门将工程原理、方法和工具应用于软件开发的学科。

它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试和维护等阶段。

第三章软件危机的原因1.需求不清晰:需求不明确或不完整导致软件项目后期出现功能缺失和修改需求的情况。

2.规模估算不准确:对软件项目的规模估算不准确会导致资源分配不合理,进而引发预算超支和进度延误。

3.项目管理不善:软件项目缺乏有效的管理方法和工具,导致资源分配不均衡,任务分配不明确,人员合作不协调。

4.技术选型不当:选择不合适或技术过时的开发工具和平台会导致开发效率低下和后期维护困难。

5.缺乏测试与质量保证:软件开发过程中忽视测试环节和质量保证措施,导致系统稳定性和可靠性问题。

第四章软件工程的方法与实践1.需求分析:通过对用户需求进行深入调研和分析,建立准确的需求文档,为后续设计与开发提供准确的参考。

2.结构化设计:采用模块化开发的方式,将系统划分为多个独立可测试的模块,提高开发和维护的效率。

3.敏捷开发:采用敏捷开发方法,将开发过程划分为多个迭代周期,每个周期交付可用的软件产品,持续优化和改进。

4.质量管理:通过严格的测试和质量保证流程,确保软件系统的稳定性、可靠性和安全性。

5.风险管理:通过风险分析和风险控制策略,预测和应对潜在的开发风险,减少项目失败的风险。

第五章软件工程的工具与框架1.需求管理工具:如JIRA、TFS等,用于管理和追踪需求的变更和进度。

2.设计工具:如Axure、Visio等,用于绘制系统架构图和界面设计。

3.编码工具:如IDE、代码管理工具等,用于编写、管理和调试代码。

4.测试工具:如Selenium、Junit等,用于进行自动化测试和质量监控。

第一讲 软件工程概述(软件危机)

第一讲软件工程概述(软件危机)软件危机在计算机科学发展的早期,软件开发的过程中出现了一系列严重的问题,被称为软件危机。

软件危机主要表现在以下几个方面:1. 项目延期和超预算软件开发项目常常会因为技术、人员或者需求变更等原因导致延期和超预算。

这让开发者和客户都感到沮丧,并对软件开发过程的可行性和有效性产生质疑。

2. 软件质量低下由于软件开发的复杂性,很容易出现缺陷和错误。

软件质量低下会导致系统不稳定、易于崩溃、功能不完备等问题。

3. 缺乏可维护性和可重用性由于缺乏系统化的工程方法和设计规范,很多软件很难进行维护和重用。

这不仅增加了开发者的工作量,也浪费了大量的时间和资源。

4. 项目管理困难软件开发涉及多个工作环节和不同的团队成员,项目管理的难度非常大。

缺乏有效的管理方法和工具,往往导致项目进度难以掌控,人员协调困难等问题。

软件工程的出现为了解决软件危机所带来的问题,软件工程这一概念应运而生。

软件工程旨在通过系统化的方法和工程化的思维来开发和维护软件。

1. 系统化的方法软件工程提供了一套系统化的方法,包括需求分析、系统设计、编码、测试等环节,以确保软件开发过程的可控和可靠性。

2. 工程化的思维软件工程借鉴了工程学科的思维方式,将软件开发过程看作是一个工程项目,强调规划、设计、组织和管理等方面。

3. 软件开发生命周期软件工程将软件开发过程划分为不同的阶段,形成了软件开发生命周期的概念,包括需求分析、设计、编码、测试、发布等阶段。

每个阶段都有不同的任务和目标,确保软件开发的高质量和高效率。

4. 软件工程的原则和方法软件工程提出了一系列原则和方法,如模块化、结构化、面向对象、迭代开发、敏捷开发等,用来指导和规范软件开发过程。

软件工程是解决软件危机的一种有效途径。

通过系统化的方法和工程化的思维,可以提高软件开发的质量和效率,降低项目风险和成本。

软件工程对于现代社会的发展具有重要的意义,对于软件开发者和项目管理者来说,也是必不可少的知识和技能。

【大学课件】软件工程 软件危机与软件工程


ppt课件
12
1.2.2 软件工程的目标
软件工程的目标可概括为:在给定成本、进度的前 提下,开发出具有可修改性、有效性、可靠性、可理 解性、可维护性、可重用性、可适应性、可移植性、 可追踪性和可互操作性并满足用户需要的软件产品。
应该特别指出;“可靠性”这个目标在软件工程中有 着重要的意义。广义上讲,它涉及到产品设计的一系 列 问题,从而使产品能在相当长的期间内稳定工作。狭 义上讲,可靠性是软件成功运行的概率度量,可靠性 分析和可靠性测试可作为p衡pt课件量软件质量和其他开发1过3
1985
计算机系统硬件/软件成本变化趋势
在开发一个新型计算机系统或修改一个现有系统的过 程中,最大部分的资金是用在软件系统开发方面。
ppt课件
6
1.1.2 软件开发和维护中的严重问题
1、软件危机
计算机系统发展的早期时代所形 成的错误概念与做法,已经严重阻 碍了计算机软件的开发,更严重的 是:用错误方法开发的软件几乎根 本无法维护,只好提前报废。
本书强调内容的实用性,以问题带知识点的方式 来阐述,内容精练,重点突出,概念清楚,针对性和实 际操作性强。
ppt课件
2
第一章 软件危机与软件工程
学习要点:
软件工程是在20世纪60年代末期提出的。这 一概念的提出,其目的是倡导以工程的原理、 原则和方法进行软件开发,以期解决当时出现 的“软件危机”。
软件工程
ppt课件
1
前言
本书是依据教育部《高职高专教育基础课程教学的基 本要求》和《高职高专教育专业人才培养目标与规格》 编写而成。全书共15章,内容主要包括:软件危机与软 件工程;软件开发模型;计算机系统工程,需求分析, 总体设计,详细设计,编码与测试,软件维护,面向对 象技术,快速原型技术,重用技术,人机界面设计。书 中含有丰富的例题与习题,便于教学与自学。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:
DO 5 误写为:DO 5 I=1,3 I=1 . 3
软件系统维护难度大;
软件开发过程无规范(无文档资料);
……
软件缺陷引发的严重后果
一触即发的第三次世界大战
1980年,北美防空联合司令部曾报告称美国遭受导弹袭击。后 来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑 故障问题引发的误报。 1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告 诉他这是误报,后来事实证明的确是误报。 幸亏这些误报没有激活“核按钮”。在上述两个案例中,如果 对方真的发起反击,核战争将全面爆发,后果不堪设想。
第一章 软件工程概述
1.1 软件危机
1.2
1.3
软件工程
软件生命周期
1.4
软件过程
1.1 软件危机
什么是软件?
软件是计算机系统中与硬件相互依存的另一部 分,是程序、数据及其相关文档的完整集合。 程序是能够完成预定功能和性能的可执行的指 令序列。 数据是使程序能够适当地处理信息的数据结构。 文档是开发、使用和维护程序所需要的图文资 料。
软件缺陷引发的严重后果
致命的辐射治疗 1985到1987年,Therac-25辐射治疗设备卷入 多宗因辐射剂量严重超标引发的医疗事故,其罪 魁祸首是医疗设备电力软件的Bug。据统计,大量 患者接受高达100倍的预定剂量(治疗),其中至 少3人直接死于辐射剂量超标。 另一宗辐射剂量超标的事故发生在2000年的 巴拿马城(巴拿马首都)。从美国Multidata公司 引入的治疗规划软件,其(辐射剂量的)预设值 有误。有些患者接受了超标剂量的治疗,至少有5 人死亡。后续几年中,又有21人死亡,但很难确 定这21人中到底有多少人是死于本身的癌症,还 是辐射治疗剂量超标引发的不良后果。
图:改正一个问题需付出的代价
早期软件开发的个体化特点,使相当多的软件 开发人员忽视软件需求的重要性,轻视软件维 护。 ……
改正一个问题需付出的代价
改正 2000 一个 1000 问题 的估 计费 200 用
5.0 改正 2.5 一个
问题 估计 的工 0.5 作量
(美元) 20 需 求 分 析 结 构 设 计 详 编集 系 现 细 码成 统 场 设 测 测 计 试 试
0.05 (人天)
解决软件危机的途径
组织管理措施
软件开发应该是一种组织良好、管理严密、各类人 员协同配合、共同完成的工程项目。必须充分吸取 和借鉴人类长期以来从事各种工程项目所积累的行 之有效的管理经验。
技术措施
方法 工具
1.2
软件工程 (software engineering)
“软件工程”术语首次出现:1968年NATO会议。 (North Atlantic Treaty Organization ) 软件工程是指导计算机软件开发和维护的一 门工程学科。 采用工程的概念、原理、技术和方法来开发 与维护软件,把经过时间考验而证明正确的管 理技术和当前能够得到的最好的技术方法结合 起来。 核心内容是“以工程化的方式组织软件的开 发”。
软件缺陷引发的严重后果
12306网站于2011年6月1日正式上线,在2012年 春节期间就因为访问量过大而出现瘫痪。大量用 户无法登录,页画刷新时间长达30分钟,定票付 了款却无法购票。不少购票者无奈地怒斥12306 网站形同虚设。2012年9月,12306网站在中秋国 庆长假来临之前再一次瘫痪。
软件工程是一门交叉学科
软 件 工 程 主 要 研 究 内 容

软件开发模型 软件开发方法 软件立项到终止的全过程 软件开发工具 软件开发环境 计算机辅助软件工程(CASE) 软件工程管理 软件工程经济学
软件工程的三个要素
软件工程包括三个要素:方法、工具和 过程。 1) 软件工程方法为软件开发提供了“如 何做”的技术。 2) 软件工具为软件工程方法提供自动的 或半自动的软件支撑环境。 3) 软件工程过程指将软件工程的方法和 工具综合起来,以达到合理、及时地进 行计算机软件开发的目的。
软件发展阶段
程序设计阶段
— 50至60年代
程序系统阶段
软件工程阶段
— 60至70年代
— 70年代以后
时期 程序设计 特点 软件所指 程序设计语言 软件工作范围 需求者 开发组织 软件规模 决定质量因素 开发技术手段 维护责任者 硬件特征 软件特征 程序 汇编及机器语言 程序编写 程序设计者本人 个人 小型 个人程序设计技术 子程序、程序库 程序设计者 程序及说明书 高级语言 包括设计和测试 少数用户 开发小组 中、小型 小组技术水平 结构化程序设计 开发小组 程序、文档及数据 软件语言* 软件生存期 市场用户 开发小组及大、 中型软件 开发机构 大、中、小型 管理水平 数据库,开发工具,开发 环境,工程化开发方法, 标准和规范 专职维护人员 程序系统 软件工程
快速原型模型
由于在项目开发的初始阶段人们对软件的 需求认识常常不够清晰,因而开发项目难 于做到一次开发成功,出现返工再开发在 所难免。 做两次:
第一次只是试验开发,其目标只是在于探索可 行性,弄清软件需求。(原型) 第二次则在此基础上获得较为满意的软件产品。
优点:开发工期短,满足用户真实需求,质 量有保证。
原型范型
听取用 户意见
建造/修改 原型
用户测试 运行原型
增量模型(渐增模型)
优点: 能在较短时间内向用户提交可完成 部分工作的产品 逐步增加产品功能,从而使用户有 比较充裕的时间学习和适应新软件, 减少全新软件给客户组织带来的冲 击
螺旋模型
(Spiral Model)
B.W.Boehm于1988年提出。 将瀑布模型、原型模型等结合起来,并强调风 险分析。 特别适用于庞大而复杂、高风险的系统。 螺旋模型沿着螺线旋转,在四个象限上分别表 达四个方面的活动,即:
六类计划
2)坚持进行阶段评审。
及早发现错误。
3)实行严格的产品控制。
谨慎改变需求 基准配臵管理(变动控制)
4)采用现代程序设计技术。 5)结果应能清楚地审查。
提高开发过程可见性
6)开发小组的人员应少而精。 7)承认不断改进软件工程实践的必要性。
软件工程项目的基本目标
付出较低的开发成本。 达到要求的软件功能。 取得较好的软件性能。 开发的软件易于移植。 需要较低的维护费用。 能按时完成开发工作,及时交付使用。 概括:优质、高效、低价。


螺旋模型
喷泉模型
瀑布模型 (顺序模型)
瀑布模型规定了各项软件工程活动,包括: 制定软件项目计划,进行需求分析和定义,软 件设计,程序编码,测试及运行维护,并且规 定了它们自上而下,相互衔接的固定次序,如 同瀑布流水,逐级下落。
瀑布模型
按瀑布模型开发软件的特点
1).阶段间具有顺序性和依赖性。
5、软件的开发至今尚未完全摆脱手工艺的开发方式。 (高强度的脑力劳动) 6、软件本身是复杂的。
实际问题的复杂性。 程序逻辑结构的复杂性。
7、软件成本相当昂贵。
硬、软件成本比例变化图 8、软件工作涉及到社会因素。(涉及机构、体制、管 理方式、观念、心理等。)
失效率曲线
1995
硬、软件成本比例变化 图
软件的特点
1、软件是一种逻辑实体,而不是具体的物理实体。因而 它具有抽象性。 2、软件的生产与硬件不同,在它的开发过程中没有明显 的制造过程。 3、在软件的运行和使用期间,没有硬件那样的机械磨损, 老化问题。(软件退化,软件维护) 失效率曲线 4、软件的开发和运行常受到计算机系统的限制,对计算 机系统有着不同程度的依赖性。(软件移植)
软件缺陷引发的严重后果
消失在太空
美国航宇局1999年10月2日宣 布,由于研制“火星气候探测器” 的公司提供的数据是英制,而航宇 局的地面导航者们又以为是公制, 两种制式的差异以及地面控制中心 又未能及时发现这一问题,导致探 测器从距离火星表面130英尺的高度
垂直坠毁。此项工程成本耗费3.27
亿美元,这还不包括损失的时间(该 探测器从发射到抵达火星将近一年
时间)。
软件缺陷引发的严重后果
2009年2月Google的Gmail故障,是最近因软件 故障而受到广泛关注的事件。据Google后称, 那次故障是因数据中心之间的负载均衡软件的 Bug引发的。
Gmail故障还仅是导致用户几个小时内无法访问 邮箱,并没有造成伤亡。 IE7 XML解释引擎出现溢出漏洞,造成不得不掐 断物理连接网络。在这个XML漏洞的攻击代码已 经散播后,微软化了三个星期修复,上海政府很 多保密部门不得不物理断网以等待修复.
软件工程特性
软件工程关注大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐的合作是开发软件的关键 软件必须有效地支持它的用户 在软件工程领域中是由具有一种文化背景的替具有 另一种文化背景的人创造产品
软件工程的七条原理
B.W.Boehm于1983年提出,最小集合。 1)用分阶段的生命周期计划严格管理。
软件缺陷引发的严重后果
阿丽亚娜5型火箭的杯具处女秀
1996年6月4日,阿丽亚娜5型运载火箭的首航,原计划将运载4颗 太阳风观察卫星到预定轨道,但因软件引发的问题导致火箭在发射39 秒后偏轨,从而激活了火箭的自我摧毁装置。阿丽亚娜5型火箭和其 他卫星在瞬间灰飞烟灭。 后来查明的事故原因是:代码重用。阿5型的发射系统代码直接重 用了阿4型的相应代码,而阿4型的飞行条件和阿5型的飞行条件截然 不同。此次事故损失3.7亿美元。
2).推迟实现的观点。
3).质量保证的观点。
每个阶段必须完成规定的文档。
每个阶段结束前完成文档评审,及 早发现问题,改正错误。
瀑布模型的优缺点
相关文档
最新文档