第一讲 软件危机与软件工程
1软件危机
10
Βιβλιοθήκη Baidu
软件工程
解
决
软
计算机科学、数学用于构造模型与
件 算法,工程科学用于制定规范、设计范
危 机 的
型、评估成本及确定权衡,管理科学用 于计划、资源、质量、成本等管理。
途
径
2020/1/7
11
软件工程的本质特性
解
决 ① 软件工程关注于大型程序的构造。
软 ② 软件工程的中心课题是控制复杂性。
件 ③ 软件经常变化。
6.编码和单元测试
本阶段的任务是编写软件程序。 程序员应根据目标系统的要求,选取 适合的程序设计语言,把详细设计的 结果编制成程序,并对每一个模块进 行单元测试。
需要考虑软件平台、开发工具等 等。
2020/1/7
33
生命周期各阶段的任务
7.综合测试
本阶段的任务是通过各种测试以 及相应的调试,使软件达到预定的要 求。
前述含义下的软件所涉及的理论、方法、技术所
构成的学科。
2020/1/7
4
软件开发过程的演化
第一个时期:40—60年代,个体时期
软 件
(程 序时期)
开 第二个时期:60—70年代,软件作坊时
发 期(程序+文档)
过 程
第三个时期:70年代以后,软件工程时
期。
软件危机与软件工程
解
决 2 .可行性分析
软
本阶段需要回答的是:“上一阶段
件 确定的问题有无可行的解决方案,是
危 否值得解决?”。
机
更进一步明确项目的规模和目标,
的 从技术可行性、经济可行性、操作可
途 行性、法律可行性、社会可行性等方
径 面进行研究,确定是否开发本项目。
2023/11/3
24
解 决 软 件 危 机 的 途 径
13
解
软件工程
决 软
软件工程
件
是一门指导计算机软件开发和维 护
危 的工程学科,是一类求解软件包的工程。
机 它应用计算机科学、数学及管理科学等原
的 途
理,借鉴传统工程的原则、方法,创建软
径 件以达到提高质量、降低成本的目的。
2023/11/3
14
软件工程
解
决
软
计算机科学、数学用于构造模型与
件 算法,工程科学用于制定规范、设计范
途 基本原则。
径
2023/11/3
16
软件工程基本原理
解
决1.用分阶段的生命周期计划严格管理
软
有人统计,在不成功的软件项目中有50%左
件 右是由于计划不周造成的。应该把软件生命周期
危 机 的
划分为若干阶段,并制定出相应的切实可行的计 划,严格按照计划对开发和维护进行管理。
第一讲 软件工程概述(软件危机)
第一讲软件工程概述(软件危机)
软件工程概述(软件危机)
1·软件工程的定义
软件工程是一门工程学科,旨在应用系统性、可量化的方法来
开发和维护软件。它涉及软件开发的各个方面,包括软件需求分析、设计、编码、测试和维护等。
2·软件发展的历史
2·1 软件危机的出现
在20世纪60年代末和70年代初,随着计算机应用的快速发展,软件开发面临了一系列的问题,被称为软件危机。这些问题包括项
目延期、成本超支、质量低下等。
2·2 软件危机的原因
软件危机的主要原因包括:
2·2·1 需求不明确
在软件开发过程中,需求的变化和需求不明确是导致软件危机
的主要原因之一。客户往往无法准确地描述他们的需求,而开发人
员也往往无法准确地理解需求。
2·2·2 缺乏有效的管理方法
软件开发过程往往缺乏有效的管理方法,导致项目进展缓慢、
进度不可控、团队合作不顺畅等问题。
2·2·3 技术限制和约束
过去的软件开发技术受到硬件性能和软件工具的限制,导致开
发效率低下和质量不可靠。
3·软件工程的基本原理和方法
3·1 需求工程
需求工程是软件工程的关键环节,旨在通过系统的方法来理解、分析和定义软件系统的需求。
3·2 结构化设计
结构化设计是一种将软件系统划分为各个模块,并定义它们之
间的关系的方法。
3·3 面向对象设计
面向对象设计是一种将软件系统设计为一组相互协作的对象的
方法。它包括类的定义、继承和多态等概念。
3·4 软件测试
软件测试是验证和验证软件系统是否满足要求的过程。它包括
单元测试、集成测试、系统测试等不同层次的测试。
3·5 软件维护
软件维护是指对已发布的软件进行修改、优化和错误修复的过程。
软件危机与软件工程
软件危机与软件工程
软件危机与软件工程
概述
软件危机是指软件开发过程中出现的一连串问题和挑战,导致项目延期、超出预算或质量不佳的情况。而软件工程则致力于解决软件开发过程中的各种挑战和问题,并提供一种可靠且高效的方法来开发高质量的软件。
软件危机的原因
软件危机的原因有多方面的因素,主要包括以下几点:
1. 需求不明确:在软件开发初期,客户对软件的需求往往模糊不清或者发生变化,导致软件开发团队无法准确理解客户的需求,从而难以开发出满足客户期望的软件。
2. 技术挑战:软件开发涉及多种技术和复杂的编程环境,开发人员需要不断学习和适应新的技术,但往往时间紧迫,导致技术跟不上进展,造成软件质量不佳。
3. 人员管理:软件开发涉及多个团队成员的合作,如果人员之间无法有效沟通和协作,就会影响软件的开发进度和质量。
4. 项目管理:项目管理对软件开发至关重要,如果项目管理不善,容易导致进度延误、资源浪费等问题。
软件工程的解决方案
软件工程是一种以工程化的方式来开发软件的方法,并提供了解决软件开发挑战的一系列技术和方法。以下是软件工程在解决软件危机中的一些解决方案:
1. 需求工程:通过系统化的需求搜集和分析方法,帮助开发团队更全面地理解客户需求,避免需求不明确的问题。
2. 软件架构设计:通过良好的软件架构设计,可以确保软件的可扩展性和可维护性,降低软件开发过程中的技术难题。
3. 项目管理:采用敏捷的项目管理方法可以更好地应对需求变化和项目进度控制,保证软件开发的高效进行。
4. 质量保证:软件是软件工程中的重要环节,通过各种方法如单元、集成和系统等,可以确保软件质量。
第1部分 软件危机与软件工程
1
案例描述
如同盖一座大楼时所做的工作不仅仅是砌砖和垒墙一样,软 如同盖一座大楼时所做的工作不仅仅是砌砖和垒墙一样, 件开发过程所涉及到的环节和活动也不仅仅是编写代码这样 简单。比如:在编码之前, 简单。比如:在编码之前,我们要了解编写的程序是为了解 决什么样的问题,即实现何种功能; 决什么样的问题,即实现何种功能;对软件的系统要进行规 架构工作;编码完成之后, 划、架构工作;编码完成之后,要采用特定的方法和途径来 减少软件系统中存在的错误;软件产品交付给用户后, 减少软件系统中存在的错误;软件产品交付给用户后,还要 对软件系统进行维护。另外,在这个过程中, 对软件系统进行维护。另外,在这个过程中,要保证软件产 品的质量。 品的质量。 软件工程就是一门将所有与软件开发相关的活动归纳在一起, 软件工程就是一门将所有与软件开发相关的活动归纳在一起, 并形成系统的方法和理论的学科。 并形成系统的方法和理论的学科。
软件项目管理
项目管理、软件过程
3
知识分析 :
什么是软件危机 软件危机的表现及其产生原因 软件工程的基本原理 软件生命周期与软件生命周期模型 项目管理与软件项目管理 影响软件项目成功的因素
4
§1.1 软件危机
1、软件危机 (1) 早期软件的特点(20世纪 年代以前) 早期软件的特点( 世纪 年代以前) 世纪60年代以前 使用机器代码或汇编语言编写软件 使用机器代码或汇编语言编写软件 机器代码或汇编语言 软件的规模比较小 软件的编写者和使用者是同一人 软件产品除了源代码清单外, 软件产品除了源代码清单外,几乎没有其他文档资料 软件开发方式随意,采用“手工作坊” 软件开发方式随意,采用“手工作坊”的开发方式
软件危机与软件工程
软件危机与软件工程
第一章引言
软件危机是指在软件开发过程中出现的一系列问题,如超出预算、延期交付、功能缺失等。该问题的根本原因在于软件开发过程缺乏规范和有效管理。为了解决软件危机问题,软件工程作为一门学科应运而生。
第二章软件工程的定义与范围
软件工程是一门将工程原理、方法和工具应用于软件开发的学科。它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试和维护等阶段。
第三章软件危机的原因
1.需求不清晰:需求不明确或不完整导致软件项目后期出现功能缺失和修改需求的情况。
2.规模估算不准确:对软件项目的规模估算不准确会导致资源分配不合理,进而引发预算超支和进度延误。
3.项目管理不善:软件项目缺乏有效的管理方法和工具,导致资源分配不均衡,任务分配不明确,人员合作不协调。
4.技术选型不当:选择不合适或技术过时的开发工具和平台会导致开发效率低下和后期维护困难。
5.缺乏测试与质量保证:软件开发过程中忽视测试环节和质量保证措施,导致系统稳定性和可靠性问题。
第四章软件工程的方法与实践
1.需求分析:通过对用户需求进行深入调研和分析,建立准确的需求文档,为后续设计与开发提供准确的参考。
2.结构化设计:采用模块化开发的方式,将系统划分为多个独立可测试的模块,提高开发和维护的效率。
3.敏捷开发:采用敏捷开发方法,将开发过程划分为多个迭代周期,每个周期交付可用的软件产品,持续优化和改进。
4.质量管理:通过严格的测试和质量保证流程,确保软件系统的稳定性、可靠性和安全性。
5.风险管理:通过风险分析和风险控制策略,预测和应对潜在的开发风险,减少项目失败的风险。
软件工程与软件危机
软件工程与软件危机
软件在开发和维护的过程中,会遇到很多问题,软件工程作为一门学科,是为了解决软件危机的,那么什么是软件危机?
一、软件危机
软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要表现:
1 软件开发进度难以预测
拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。
2 软件开发成本难以控制
投资一再追加,令人难于置信。往往是实际成本比预算成本高出一个数量级。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
3 用户对产品功能难以满足
开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。
在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种"闭门造车"的开发方式必然导致最终的产品不符合用户的实际需要。
4 软件产品质量无法保证
系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。
软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。
5 软件产品难以维护
软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以
替代。除非是开发者本人,否则很难及时检测、排除系统故障。
为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。
6 软件缺少适当的文档资料
文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。
第一讲 软件工程概述(软件危机)
第一讲软件工程概述(软件危机)
第一讲软件工程概述(软件危机)
软件工程是一门综合性学科,旨在研究如何以科学的方法,规范的过程和工程化的方式开发、维护和管理软件系统。软件工程的发展离不开软件危机的触发和推动。本文将详细介绍软件工程概述以及软件危机的背景和原因。
1.软件工程的定义和范畴
1.1 软件工程的定义
1.2 软件工程的发展历程
1.3 软件工程的目标和原则
1.4 软件工程的生命周期
2.软件危机的背景和原因
2.1 软件危机的概念
2.2 软件危机的背景
2.3 软件危机的原因
2.4 软件危机的影响和后果
3.软件危机的解决方案
3.1 软件过程改进
3.2 软件工程方法学
3.3 软件工程工具和环境
3.4 软件工程的标准和认证
4.软件工程的未来趋势
4.1 敏捷开发和DevOps
4.2 和机器学习在软件工程中的应用
4.3 云原生和微服务架构
4.4 软件工程与其他学科的交叉融合
附录:________
本文档涉及附件:________
法律名词及注释:________
1.版权法:________指规范作品著作权及相应权利的法律法规。
2.专利法:________指规范发明、实用新型和外观设计专利权
的法律法规。
3.商标法:________指规范商标注册、商标权利保护和商标侵
权行为处罚的法律法规。
4.反不正当竞争法:________指规范商业主体之间竞争行为的
合法性和合规性的法律法规。
附件:________
法律名词及注释:________
1.版权法:________指规范作品著作权及相应权利的法律法规。
2.专利法:________指规范发明、实用新型和外观设计专利权
第一讲软件危机与软件工程
2001年印度软件销售总额102.3亿美元,软件企业约 6000家,从业人员40万。
2001年我国软件的出口额仅为7.2亿美元,2000年与 1999年分别为4亿美元及2.5亿美元。
印度在软件出口方面,则一直保持高速的增长。1990年 印度软件出口只有5000万美元,1999年就达到了39亿 美元,2000年达到了62亿美元,而2001年印度软件出 口额为77.8亿美元,已经占到了印度全部出口总额的 10.5%。
软件的生产与硬件不同,在它的开发过程 中没有明显的制造过程
在软件的运行和使用期间,没有硬件那样 的机械磨损,老化问题
软件的特点
软件的特点
软件的开发和运行常受到计算机系统的限 制,对计算机系统有着不同程度的依赖性
软件本身是复杂的
▪ 实际问题的复杂性 ▪ 程序逻辑结构的复杂性
软件成本相当昂贵 相当多的软件工作涉及到社会因素
消除软件危机的途径
了解产生软件危机的原因,澄清错误认识, 建立起关于软件开发和维护的正确概念, 还仅仅是解决软件危机的开始,全面解决 软件危机需要一系列综合措施。 —— 软件工程 Software Engineering
第一讲 软件工程概述(软件危机)
第一讲软件工程概述(软件危机)
软件危机
在计算机科学发展的早期,软件开发的过程中出现了一系列严重的问题,被称为软件危机。软件危机主要表现在以下几个方面:
1. 项目延期和超预算
软件开发项目常常会因为技术、人员或者需求变更等原因导致延期和超预算。这让开发者和客户都感到沮丧,并对软件开发过程的可行性和有效性产生质疑。
2. 软件质量低下
由于软件开发的复杂性,很容易出现缺陷和错误。软件质量低下会导致系统不稳定、易于崩溃、功能不完备等问题。
3. 缺乏可维护性和可重用性
由于缺乏系统化的工程方法和设计规范,很多软件很难进行维护和重用。这不仅增加了开发者的工作量,也浪费了大量的时间和资源。
4. 项目管理困难
软件开发涉及多个工作环节和不同的团队成员,项目管理的难度非常大。缺乏有效的管理方法和工具,往往导致项目进度难以掌控,人员协调困难等问题。
软件工程的出现
为了解决软件危机所带来的问题,软件工程这一概念应运而生。软件工程旨在通过系统化的方法和工程化的思维来开发和维护软件。
1. 系统化的方法
软件工程提供了一套系统化的方法,包括需求分析、系统设计、编码、测试等环节,以确保软件开发过程的可控和可靠性。
2. 工程化的思维
软件工程借鉴了工程学科的思维方式,将软件开发过程看作是一个工程项目,强调规划、设计、组织和管理等方面。
3. 软件开发生命周期
软件工程将软件开发过程划分为不同的阶段,形成了软件开发生命周期的概念,包括需求分析、设计、编码、测试、发布等阶段。每个阶段都有不同的任务和目标,确保软件开发的高质量和高效率。
第 章 软件危机与软件工程优秀文档
总结
设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。
熟度等级认证标准。被国际软件界公认为软件工 一个软件产品从形成概念开始,经过开发、使用和维护,直到最后退出使用的全过程称为软件生存周期。
设计的软件应在功能、性能等方面都符合要求,并能可靠地运行。 (2)与明确成文的开发标准的一致性。
程学的一项重大成果。该模型可用来评估软件开
▪ ① 软件需求是衡量软件质量的基础,不符 合需求的软件就不具备质量。设计的软件应在功 能、性能等方面都符合要求,并能可靠地运行。
▪ ② 软件结构良好,易读、易于理解,并易 于修改、维护。
▪ ③ 软件系统具有友好的用户界面,便于用 户使用。
▪ ④ 软件生存周期中各阶段文档齐全、规范, 便于配置、管理。
软件的生命周期
一个软件产品从形成概念开始,经过开发、 使用和维护,直到最后退出使用的全过程称为软 件生存周期。软件生存周期根据软件所处的状态, 以及软件开发活动的目的和任务,可划分为若干 个阶段。一般软件生存周期包括软件定义、软件 开发以及软件使用与维护3个部分。
软件生命周期的5个阶段
•需求分析 •设计 •编程 •测试 •运行和维护 见教材表1-1,测试占有重要的地位
软件过程成熟度(Software Process Maturity):是指一个具体的软件过程被明确地定义、管理、评价、控制和产生实效的程度。
第一讲 软件工程概述(软件危机)
第一讲软件工程概述(软件危机)
软件危机的背景和概念
软件危机是指在软件开发过程中,出现了大量的开发延期、超出预算和质量问题的现象。这种危机主要是由于软件工程领域在早期阶段的蓬勃发展,导致了开发过程的混乱和不规范,也暴露了软件复杂性带来的挑战。软件危机的存在对于软件行业的发展和应用产生了重要的影响。
软件危机的原因和表现
软件危机的产生主要有以下几个原因:
1. 项目管理不规范:许多早期软件项目缺乏清晰的目标和明确的需求,在项目开发过程中缺乏有效的管理和控制手段,导致项目进展缓慢和低效。
2. 软件复杂性增加:随着软件规模的不断扩大和功能的不断增加,软件系统变得越来越复杂,而人类对于复杂系统的认知和理解能力有限,这给软件开发带来了很大的困难。
3. 缺乏有效的开发方法和工具:早期的软件开发方法和工具相对较为简单和粗糙,无法满足软件开发过程中的需求,导致开发过程存在很多不确定性和风险。
软件危机的表现主要体现在以下几个方面:
1. 延期交付:很多软件项目无法按照原定的计划和时间要求准
时交付,导致项目进度拖延和成本增加。
2. 超出预算:由于开发过程中存在不确定性和风险,许多软件
项目的开发成本超出了最初的预算,给项目管理带来了很大的压力。
3. 质量问题:软件开发过程中的不规范和管理不足导致了软件
质量的下降,出现了很多的缺陷和bug。
软件工程的发展和作用
为了解决软件危机带来的问题,软件工程作为一门新兴的学科
逐渐兴起并取得了长足的发展。软件工程的主要目标是通过建立一
套科学的方法论和规范,来管理和控制软件开发过程,以提高软件
第一讲软件工程概述软件危机
1.1软件危机的介绍 什么是软件危机?
计算机软件的开发和维护过程所遇到的一系列严重问题.
软件危机的特征是什么?
对软件开发成本和进度的估计常常很不准确。 用户对“已完成的”软件系统不满意的现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 软件通常没有适当的文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序: DO 5 I=1,3 误写为:DO 5 I=1 . 3
1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁。
100%
0%
1955
1970
1985
———— 以上列举的仅仅是软件危机的一些明显的表现,与软件开发和维护有关的问题远远不止这些
软件危机著名案例
IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美圆,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。 OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“…像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。…”
软件危机与软件工程
软件危机与软件工程
软件危机与软件工程
引言
软件危机是指软件开发过程中出现的各种问题和挑战,导致软
件项目难以按时交付、超出预算或不符合客户需求的现象。软件危
机的存在是由于软件开发的困难性、复杂性和不可预测性所导致的。为了应对软件危机,软件工程从理论和实践上提供了一套系统化的
方法和工具,以提高软件开发过程的可管理性和效率。
软件危机的原因
需求管理不足
软件开发过程中需求明确且可管理性良好是项目成功的基础。
然而,在软件开发的早期阶段,往往对需求的理解有限,需求的不
完整性和变化性导致了软件项目的延期和超预算。
缺乏系统化的开发方法
在软件开发初期,缺乏系统化的开发方法会导致开发过程的混
乱和低效。缺乏标准化的开发过程和规范的开发方法,容易产生代
码质量低下、维护成本高等问题。
人员技术水平不足
软件开发需要高水平的技术人员进行需求分析、设计和编码等
工作。如果团队中缺乏经验丰富的开发人员或人员技术水平不足,
就容易导致开发过程中的问题积累和质量问题的出现。
缺乏合适的开发工具和环境
软件开发过程中需要使用合适的开发工具和环境,以提高开发
效率和质量。然而,一些软件项目由于预算有限或其他原因,无法
使用最新的开发工具和环境,导致开发过程中的困难和挑战。
软件工程的作用
系统化的开发方法
软件工程提供了一套系统化的开发方法,包括需求分析、设计、编码、测试和维护等阶段。通过按照规范的开发过程进行软件开发,可以提高开发效率和质量,并降低项目失败的风险。
强调软件质量管理
软件工程强调软件质量管理,包括质量评估、质量控制和质量
保证等。通过使用合适的软件开发工具和技术,可以提高软件的可
软件危机与软件工程
软件危机与软件工程
软件危机是指在软件开发和维护过程中所面临的一系列问题的总称。这些问题包括了软件项目延期、超出预算、质量低下等,给其所涉及
的组织和个人带来了巨大的困扰。为了解决这些问题并提高软件开发
的效率与质量,软件工程作为一门学科应运而生。软件工程旨在规范
和系统化地管理软件开发过程,并致力于提供可靠、高质量的软件产品。本文将探讨软件危机的原因和软件工程的解决方法。
一、软件危机的原因
软件危机的产生源于多种因素。以下将从技术、管理和人员三个
层面探讨其具体原因。
1. 技术因素
技术因素是软件危机的主要原因之一。随着科技的不断进步,软
件应用越来越广泛,对软件功能的需求也日益增加,这给软件开发带
来了巨大的挑战。然而,软件开发的技术和方法落后于需求的增长,
导致软件过于复杂、容易出错,难以满足用户的实际需求。此外,软
件开发的技术和工具的不断更新也给软件开发人员带来了学习和适应
的压力。
2. 管理因素
管理因素是软件危机的另一个主要原因。软件开发是一个复杂的
过程,需要统筹规划、合理安排资源和任务。然而,在很多软件项目中,管理层面存在着不足。缺乏有效的项目管理,导致项目计划不明
确、资源分配不均衡、进度无法控制等问题的出现。此外,对软件开
发过程的监督和评估也不够严格,导致问题难以及时发现和解决。
3. 人员因素
人员因素也是软件危机的重要原因之一。软件开发需要具备一定
的技术和经验,但现实情况是,很多软件开发人员的技术水平参差不齐。一方面,缺乏高水平的软件开发人员,导致开发质量和效率低下。另一方面,软件开发人员的流动性较大,使得团队的稳定性和协作效
《软件工程与开发环境》第一章软件危机与软件工程
software crisis The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem."
护工作以令人吃惊的比例耗费资源。更严重的是,许多程 序的个体化特性使得它们最终成为不可维护的。“软件危 机”就这样开始出现了。 在1968年和1969年北大西洋公约组织成员国软件工作者两 次召开会议(NATO会议),讨论摆脱软件危机的办法, 提出了软件工程的概念。 1972年IEEE的计算机协会第一次出版了《软件工程学报》, 软件工程术语被接受、流行。
6
不仅涉及许多技术问题,诸如分析方法、设计方法、 形式说明方法、版本控制等,更重要的是必须有严格而 科学的管理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程特点与安排
1. 课程特点:
概念性、综合性、实践性强,发展迅速
15:08:22
2. 课程安排(建议):
课堂教学(48学时)— 授课、案例分析、讨论 课程设计(课外为主,需求阶段及总体设计阶段 的答辩式评审共8学时) 课程设计以开发小组为单位进行。
3. 关于考试(建议) :
笔试:40分,课程设计:40分,平时:20分
In the early days:
Software=place a sequence of instructions together to get the computer do something useful User Computer
15:08:22
Later 1950’s:
智能网络 (Intelligent Web) • 从静态网到动态网 • 从被动方式到主动方式 • 从呈现信息和浏览的窗 口到智能生成的平台 • 从HTML到XML
15:08:22
一、全球软件产业的现状、趋势与挑战 The Challenges and Opportunities of the Global Software Industry.
新疆大学信息学院
软件工程
第一讲 软件危机与软件工程
主 讲 人:张琳琳 所在单位:新疆大学信息学院
开始之前
学习“软件工程”的目的和意义 本课程学习的主要内容 课程特点与安排 教材及主要参考书
15:08:22
学习“软件工程”的目的和意义
学会如何在现代IT企业的环境中做一个成功者; 学会如何做世界级的、高质量的研究; 学会如何创建大规模的软件产品。
15:08:22
—— 微软全球资深副总裁 原微软亚洲研究院院长 首席科学家 张亚勤
一、全球软件产业的现状、趋势与挑战 The Challenges and Opportunities of the Global Software Industry.
软件产业的网络化趋势 软件产业的服务化趋势 软件产业的全球化趋势
三、信息化建设中对复合型软件人才的需求
15:08:22
我国复合型软件人才匮乏,培养适应迅速 变化的市场需求的复合型软件人才已是迫在 眉睫。
复合型软件人才—具备不同专业背景、有市场 观念的开发管理、工程管理和软件经营等复合型软 件人才;
四、软件开发中的错误观点
15:08:22
只要掌握了1-2门程序设计语言,进行软件开发就 没有问题。 软件需求分析很困难,不管三七二十一先把软件 做了再说,反正软件是灵活的,随时可以修改。 只要有最好的开发工具、最好的计算机,一定能 做出优秀的软件。
参加人员数 研制期限 1 1 2-5 5-20 100-1000 2000-5000 1-4周 1-6月 1-2年 2-3年 4-5年 5-10年
源代码行数 0.5k 1k-2k 5k-50k 50k-100k 1M 1M-10M
软件的分类
小型软件
15:08:22
用于数值计算或数据处理,通常没有与其它程序的接口。 需求按一定的标准化技术、正规的资料书写以及定期的 系统审查。只是没有像大项目那样严格。
软件产业的网络化趋势 软件产业的服务化趋势 软件产业的全球化趋势
15:08:22
•
相对目前“打包式” 软件,为用户提供智 能化的“服务式”软 件。
一、全球软件产业的现状、趋势与挑战 The Challenges and Opportunities of the Global Software Industry.
软件危机
15:08:22
该项目负责人F.D.Brooks事后总结了他在组 织开发过程中的沉痛教训时说:
“…正像一只逃亡的野兽落到泥潭中做垂死的挣扎 一样,越是挣扎,陷得就越深,最后无法逃脱灭 顶的灾难。…程序设计工作正像这样一个泥潭, …一批批程序员被迫在泥潭中拼命挣扎,…谁也 没有料到问题会陷入这样的困境…IBM 360操作系 统的历史教训应为软件开发项目的工作人员们所 汲取。”
甚大型
若干个子项目,每一个子项目都是一个大型软件。子项目 之间具有复杂的接口 如远程通信系统、多任务系统、大型操作系统、大型数据 库管理系统、军事指挥系统通常具有这样的规模 显然,这类问题没有软件工程方法的支持,它的开发工作 是不可想象的
极大型
军事指挥、弹道防御系统
软件的分类
15:08:22
在微软流传着这样一个故事
15:08:22
有一次比尔.盖茨和上帝谈话,上帝对他说:“地球明 天就要毁灭了!由于你是如此的成功,因此我特许你从地 球上带一样东西到天堂!你想带什么?” 比尔.盖茨回答:“请允许我从微软选300个最优秀的 人,我要把他们带到天堂!”
尽管微软的Windows,Exchang,SQL,Office等都非常重要, 但如果没有象他们这些人才,微软也将一无所有。他们对我 们公司和微软来说是处于第一位的。
15:08:22
类似的例子还有…
ARIANE 5 火箭
1996 年6 月,耗资70 亿美元,发射37 秒后爆炸 发射失败的原因在于软件的错误
• 程序中试图将64 位浮点数转换成16 位整数时产生溢出 • 缺少错误处理程序对数据溢出进行管理 • 缺少备份软件复制
15:08:22
爱国者导弹
15:08:22
硬件/软件成本变化趋势
15:08:22
成 本
年份
软件的分类
软件的功能 软件规模进行 软件工作方式 软件服务对象的范围 使用的频度 软件失效的影响 …
15:08:22
软件的分类
按软件的功能划分
系统软件
• 使计算机系统各个部件、相关软件和数据协Biblioteka Baidu、高效地 工作的软件,如操作系统、数据库管理系统、设备驱动 程序等
15:08:22
支撑软件
• 协助用户开发软件的工具软件,如支持需求分析、设计、 实现、测试和管理的软件(CASE工具)
应用软件
• 如商业数据处理软件、工程与科学计算软件、CAD/CAM 等
软件的分类
按软件规模进行划分 类别 微型 小型 中型 大型 甚大型 极大型
2013/11/20
15:08:22
15:08:22
Middle to late 1960s:
Truly large software systems were attempted
After 1968
Software engineering
软件的角色
软件在社会上扮演了双重角色
它本身是一种产品
• 将计算机硬件的计算能力发挥出来
总之,错误认为:软件就是程序,开发软件就是 编写程序。
本课程学习的主要内容
传统的软件工程方法(重要)
15:08:22
面向对象的建模技术—UML统一建模语言(重要) 软件项目管理及CMM(了解)
本课程以传统的软件工程技术为基础,主要 讨论如何运用软件工程原理、技术、方法和工具, 进行软件开发,达到提高软件开发的水平和质量 的目的。
软件产业的网络化趋势 软件产业的服务化趋势 软件产业的全球化趋势
15:08:22
•强调开放性、交互性 •支持主流的开放式标准 •人才的全球化
对中国软件企业有什么启示和挑战?
二、现代软件开发对人才的要求
Talent Beyond Technology _What Kind of Talent We Need for Modern Software Development 扎实的基础 创新、独立的工作能力 主人翁精神和团队精神 沟通与协调能力 成就感强、有激情 自觉地干好工作 锲而不舍,从错误中学习
15:08:22
同时,它也是一种传递产品的工具
软件传递了我们这个时代最重要的产品:
信息
计算机和软件的历史观
70年代和80年代
“新的工业革命” “工业社会将转变为信息社会” …(大批量生产带来的产品过剩)
15:08:22
90年代
“知识的民主化将改变旧的权力结构”
21世纪初
按软件工作方式分
实时处理软件 分时软件 交互式软件 批处理软件
15:08:22
按软件服务对象的范围划分
项目软件 产品软件
软件的分类
按使用的频度进行划分
一次使用 频繁使用
15:08:22
按软件失效的影响进行划分
高可靠性软件 一般可靠性软件
软件的发展
软件危机
软件危机出现于20 世纪60 年代末 软件危机是指在计算机软件的开发和维护过程中 遇到的一系列严重问题。
软件开发的成本和进度难以准确估计,延迟交付甚至 取消项目的现象屡见不鲜 软件存在着错误多、性能低、不可靠、不安全等质量 问题 软件维护极其困难,而且很难适应不断变化的用户需 求和使用环境
15:08:22
失效率
15:08:22
软件的特点
软件的开发和运行常受到计算机系统的限制,对 计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂贵 相当多的软件工作涉及到社会因素
曾在海湾战争期间对抗伊拉克飞毛腿导弹 1991 年2 月,一次对抗失利中就有28 名美国士兵丧生 问题的症结在于导弹软件存在累加计时误差
“Y2K定时炸弹” “无处不在的计算” …
软件危机 引例
15:08:22
美国IBM公司在1963年至1966年开发的IBM360 机的操作系统。 该项目的平均工作量是5000人/年,最多时有 10000人投入开发工作,写出了近100万行源程 序… 据统计,这个操作系统每次发行的新版本都是 从前一版本中找出1000个程序错误而修正的结 果
15:08:22
什么是软件?
软件是计算机系统中与硬件相互依存的另部分, 它是包括程序、数据及其相关文档的完整集合
程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发、维护和使用有关的图文材料
15:08:22
软件的特点
软件是一种逻辑实体,而不是具体的物理实体, 因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有 明显的制造过程 在软件的运行和使用期间,没有硬件那样的机械 磨损、老化问题
中型软件
需要考虑软件人员之间、与用户之间的联系、协调的配 合关系。 计划、资料书写以及技术审查需要比较严格地进行。 如大多数应用程序和系统程序都属于中型软件 系统的软件工程方法是完全必要的。
软件的分类
大型软件
15:08:22
编译程序、小型分时系统、实时控制系统等 二级管理,若干小组,每组5个以下。人员调整往往不可 避免,新手的培训 采用统一的标准,实行严格的审查是绝对必要的
Computer became cheaper and more common High level languages were invented User Programmer Computer
easier
软件的发展
Early 1960s:
Very few large software projects were done by some experts
教材及主要参考书
软件工程导论(第5版)
作者:张海藩 出版社:清华大学出版社
15:08:22
软件工程实践者的研究方法(本科教学版)
作者:Roger S. Pressman著 郑人杰 等译 出版社:机械工业出版社
第一讲 软件危机与软件工程
本讲主要内容
软件的特点 软件的分类 软件的发展 软件危机 软件神话 软件工程(定义、要素、原理等) 我国软件业的现状
15:08:22
什么是软件以及软件所具有的特点?
当今社会,计算机软件已经成为一种驱动力,它 是进行商业决策的引擎;它是现代科学研究和工 程问题寻求解答的基础;它也是鉴别现代产品和 服务的关键因素。 它广泛应用于各行各业、各种类型的系统中:交 通、医疗、电信、军事、工业生产过程、娱乐、 办公、……难以穷举。 软件在现代社会中确实是必不可少的。而且我们 进入21世纪,软件将成为从基础教育到基因工程 的所有领域新进展的驱动器。