第一章软件与软件工程
《软件工程》PPT课件

第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
软件工程PPT课件

授课时间:54学时 考核方式(平时+作业)20分+(闭卷考
试)80分
1
整体概述
概况一
点击此处输入相关文本内容 点击此处输入相关文本内容
概况二
点击此处输入相关文本内容 点击此处输入相关文本内容
概况三
点击此处输入相关文本内容 点击此处输入相关文本内容
2
讲授的内容 Contents
4
1.1 软件 Software
软件的概念与特征 软件的发展历程 软件的分类 软件开发的案例分析
5
软件的概念与特征
软件的定义
软件是程序和所有 使程序正确运行所需 要的相关文档和配置 信息。
Software = Program + Data + Document
软件的特征
➢ 软件是无形的 (intangible)
1950
1960
1970
1980
1990
2000
7
软件的分类
基于不同工程对象划分 基于软件规模的划分软件产品 Generic -由软件开发机构制 作,市场上公开销售,独立使用。
( developed to be sold to a range of different customers)
➢ 软件副本制作简 单
➢ 软件无磨损
6
软件的发展历程
早期 •面向批处理 •有限的分布 •自定义软件
第二阶段 •多用户 •实时 •数据库 •软件产品
第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 •消费者的影响
第四阶段 •强大的桌面系统 •面向对象技术 •专家系统 •人工神经网络 •并行计算 •网路计算机
软件工程第一章

1.3.2、 1.3.2、软件开发模型
• 2、螺旋模型
• 1988 年B.Boehem 提出了螺旋模型,它加入了风 险分析,通常用来指导大型软件项目的开发。软件 风险分析的目标是在造成危害之前及时对风险进行 识别、分析,采取对策,进而消除或减少风险的损 害。
1.3.2、 1.3.2、软件开发模型
1.1.1、软件的定义、特点、 1.1.1、软件的定义、特点、种类和软件的发展 • 4、软件的发展:
1.1.2、 1.1.2、软件危机
• 软件危机指的是软件开发和维护过程中遇 到的一系列严重问题。 • 软件危机包含下述两方面的问题:如何开 发软件,怎样满足对软件的日益增长的需 求;如何维护数量不断膨胀的已有软件。
1.3.2、 1.3.2、软件开发模型
• 1、瀑布模型
• 瀑布模型即生存周期模型,由B.M.Boehm 提出, 是软件工程的基础模型。其核心思想是按工序将问 题化简,将功能的实现与设计分开,便于分工协作。 其最为突出的缺点是该模型缺乏灵活性,特别是无 法解决软件需求不明确或不准确的问题。
1.3.2、 1.3.2、软件开发模型
1.1、软件 1.1、软件
• 这一节包括两大方面的内容:
• 1.1.1、软件的定义、特点、种类和软件的 发展 • 1.1.2、软件危机
1.1.1、软件的定义、特点、 1.1.1、软件的定义、特点、种类和软件的发展 • 1、软件的定义: • ----1983 年IEEE 为计算机软件下的定义是: 计算机程序、方法、规则和相关的文档资 料以及在计算机上运行时所必需的数据。 • ----目前对计算机软件通俗的理解为:包括 程序、数据及其相关文档资料的完整集合, 即软件=程序+数据+文档资料。
第1章软件工程和软件测试概述

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

教学目的:1. 了解软件、软件危机等概念2. 掌握软件工程的定义、原理、目标和原则教学重点:软件工程的定义、原理、目标和原则教学难点:软件工程的目标和原则第一章软件与软件工程1.1 软件(Software)1.1.1 软件与软件的组成程序设计语言三种类型:1.机器语言、汇编语言:依赖于机器,面向机器2.高级语言:独立于机器,面向过程或面向对象3.面向问题语言:独立于机器,非过程式语言(4GL)文档(document)—一种数据媒体和其上所记录的数据。
文档记录软件开发活动和阶段成果,具有永久性,可供人或机器阅读。
文档可用于专业人员和用户之间的通信和交流;软件开发过程的管理;运行阶段的维护。
1. 软件的特点软件是逻辑产品,硬件是物理产品。
特点:(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
2. 软件的发展第一阶段——20世纪60年代中期以前,软件开发处于个体化生产状态。
在这一阶段中,软件还没有系统化的开发方法。
目标主要集中在如何提高时空效率上。
第二阶段——从20世纪60年代中期到70年代末期。
软件开发已进入了作坊式生产方式,即出现了“软件车间”。
软件开发开始形成产品。
到20世纪60年代末,“软件危机”变得十分严重。
第三阶段——从20世纪70年代中期到20世纪80年代末期。
软件开发进入了产业化生产,即出现了众多大型的“软件公司”。
在这一阶段,软件开发开始采用了“工程”的方法,软件产品急剧增加,质量也有了很大的提高。
软件工程 复习资料

软件工程复习大纲考试主要章节:第一章软件与软件工程第二章软件项目管理第三章计算机系统工程第3.2节第五章面向数据流的分析方法第八章软件设计基础第十四章软件测试其他:上课讲义题型一、选择题(单选或多选)1、软件的主要特性是()A、无形性B、高成本C、包括程序和文档D、可独立构成计算机系统(●软件是一种逻辑产品,具有无形性;●软件产品的生产主要是研制;●软件不存在磨损和老化问题,但存在退化问题;●软件产品的生产主要是脑力劳动;●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
)2、软件工程三要素()A、技术、方法和工具B、方法、工具和过程C、方法、对象和类D、过程、模型和方法3、包含风险分析的软件工程模型是()A、螺旋模型B、瀑布模型C、增量模型D、喷泉模型4、软件危机的主要表现是()A、软件成本太高B、软件产品的质量低劣C、软件开发人员明显不足D、软件生产率低下5、软件工程的目标()A、易于维护B、低的开发成本C、高性能D、短的开发周期(注意:缩短开发周期是他的目标,但短的开发周期就不是了)6、需求分析的主要目的是(BC)。
A) 系统开发的具体方案B) 进一步确定用户的需求C) 解决系统是“做什么的问题”D) 解决系统是“如何做的问题”7、SA法的主要描述手段有(B)。
A) 系统流程图和模块图B) DFD图、数据词典、加工说明C) 软件结构图、加工说明D) 功能结构图、加工说明8、画分层DFD图的基本原则有(ACD)。
A) 数据守恒原则B) 分解的可靠性原则C) 子、父图平衡的原则D) 数据流封闭的原则9、在E-R模型中,包含以下基本成分(C)。
A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性D) 实体、属性、联系10、画DFD图的主要目的是(A D)。
A) 作为需求分析阶段用户与开发者之间交流信息的工具B) 对系统的数据结构进行描述C) 对目标系统的层次结构进行描述D) 作为分析和设计的工具11、数据字典是数据流图中所有元素的定义的集合,一般由以下四类条目组成(C)。
第1章-软件工程学概述1-1

• 软件用后不磨损
• 随着时间的推移,应用程序
的某些部分可能会变得不再 相关(例如,需求改变时), 而需要修改
• 但是,没有备件的概念
1.1、软件的定义
硬件和软件故障率曲线
由于副作用造成 故障率的提高 原来的软件已经面目全非了!
故障率
磨损后
生命初期
修改
硬件的故障率曲线 实际曲线
软件故障率的理想曲线
1.2、软件危机
软件危机案例
3 . 软件产品的质量靠不住 [案例]:
ARIANE 5 火箭 1996 年6 月,耗资70 亿美元,发射
本章内容
1.1、软件的定义 1.2、软件危机 1.3、软件工程 1.4、软件生存期 1.5、软件过程
1.2、软件危机
软件危机
Crisis!
“软件危机”(Software crisis) 的出现是由于软件的规模越来越大,复杂 度不断增加,软件需求量增大。而软件开 发过程是一种高密集度的脑力劳动,软件 开发的模式及技术不能适应软件发展的需 要。致使大量质量低劣的软件涌向市场, 有的花费大量人力财力,而在开发过程中 就夭折。
时间
1.1、软件的定义
硬件和软件故障率曲线的比较
软件不会用坏(wear out).
软件会退化( deteriorate)!
1.1、软件的定义
软件的特点-7
要求
软件产品不允许误差
软件产品的高质量取决于好的设计( High quality is achieved through) 依赖于人(Depend on people) 需要对产品进行构造(Require the construction of a “product”)
第1章软件工程学概述

(3)软件经常变化 (4)开发软件的效率非常重要 (5.) 和谐地合作是开发软件的关键 (6.) 软件必须有效地支持它的用户 开发软件的目的就是支持用户的工作,满足 用户对软件的需求 (7. )在软件工程领域中通常由具有一种文 化背景的人替具有另一种文化背景的人创 造产品
37
软件工程的研究内容
软件是计算机系统中与硬件(hardware)相互依存 的另一部分,与硬件合为一体完成系统功能。 软件定义包括如下几点: (1)功能和性能的指令集(即程序); (2)程序能正常操纵信息的数据结构(即相关数 据); (3)与程序开发维护和使用有关的各种图文数据 (即说明文档)。
16
软件=程序+数据+相关文档
软件的发展主要经历了以下3个发展阶段:
第一阶段(20世纪50年代初期至20世纪60年 代中期) 特点:(1)称为程序设计阶段 (2)软件生产以个体化为主 (3)编写程序的工具只有低级语言 (4)软件规模小,几乎没有系统化的 标准可循
11
(5)软件由软件使用者自己开发和编写,适 合个人应用 (6)没有“软件”概念,对于程序有关的文 档的重要性认识不足,开发主要围绕硬件 进行 (7)工程规模小,使用工具单一,开发者之 间没有明确分工 第二阶段(20世纪60年代中期至70年代末期) 称程序系统阶段
7
ENIAC诞生于二战时期,最初是作为辅助炮兵计 算炮弹轨迹的工具,在盟军登陆西欧前一年开始 制造,但直到1945年停火时还没完成。在冷战初 期军方就发现了ENIAC的大量用途,它的17468 根真空管被用来测试氢弹的早期设计的可行性。 这台计算机每秒能执行5000条指令,在当时的情 况下它的运算速度比电动式计算机快1000倍。当 然,现在iPhone 6每秒能响应250亿条指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程的定义
软件工程 Fritz Bauer[nau69] 为了经济的获得可靠的,在实际机器上高
效运行的软件,而建立和使用的好的工程原 则。 软件工程 [ 教材]
软件工程是运用工程、科学和数学的原则与方法 研制、维护计算机软件的有关技术和管理的方法。 软件工程[IEEE93]
将系统的、规范的、可度量的方法应用于软件的 开发、运行和维护的过程。
软件工程目标
在给定成本、进度的前提下,开发出 具有 可修改性、有效性 、可靠性、 可适应性、可追踪性 、移植性、可互 操作性 并满足用户需求的软件产品。
软件工程原则
在软件开发过程中,为了达到软件开发目 标,必须遵循下列原则:
抽象 信息隐藏 一致性 可验证性
模块化 局部化 完全性
1.3 软件生存周期
第一章 软件与软件工程
软件 软件工程 软件生存周期
1.1 软件
软件的概念; 软件的特点; 软件的分类; 软件的发展; 软件危机。
软件的概念
软件是计算机系统的重要组成部分;
软件是逻辑产品,需要计算机硬件和系统软 件的支撑;
软件是计算机控制系统的指挥中枢;
软件是信息转换器,它能对信息进源自加工、 处理或变换;的安全和可靠性 建造高可靠性、高质量软件的任务任重道远。 若干年前开发的应用软件经过几十次修改已无人
认识它的内部结构,己经不可维护。 由于经济原因,嵌入式系统存在许多怪现象,企
业不愿意投入资源再生产,而采取打补丁+时髦 界面的方法。
软件危机
1. 软件危机的表现 软件产业的发展长期滞后,与硬件发展不协调。
软件工程三要素
软件工程
工具
方法 过程
软件工程釆用层次化的方法,每个层次都包括过程、 方法、工具三要素。
软件工程的过程
过程贯穿软件开发的各个环节 管理者在软件工程过程中对软件开发的质
量、进度、成本进行评估、管理和控制; 技术人员采用相应的方法和工具生成软件
工程产品(模型、文档、数据、报告、表 格等)。
软件不会”磨损” 软件产业逐步走向基于构件的组装,但还是
定制的
软件的描述
软件由程序、数据、文档 组成。
数据 用程序设计语言要求的数据结构表示
文档 规范 准确 清晰 简洁 无歧义 自然语言 结构化英语 图表
程序设计语言
面向机器 汇编语言、机器语言等 面向过程 Fortran, Pascal, C等 面向对象 C++, Java等 面向问题 结构化查询语言SQL等
软件是工具,在人们的生活、工作、休闲, 在社会的经济、军事、政治、文化、科学技 术、教育中发挥具大作用;
计算机世界的软件
软件是能够完成预定功能和性能,并对相 应数据进行加工的程序和描述程序及其操 作的文档。
软件 = 程序+数据+文档 程序 = 算法+数据结构
软件的特点
软件是被开发或设计的,而不是传统意义上 被制造的
技术手段和管理方法
用户对软件需求的描述和软件开发人员对需求的 理解往往存在差异,用户经常要求修改需求,开 发人员很难适应
软件开发的技术人员和管理人员缺乏软件工程化 的素质和要求,对工程化的开销认识不足
1.2 软件工程的概念
1968年北大西洋公约组织(NATO)召开的计算 机科学会议
软件危机-->根源-->解决途径
软件分类
系统软件 实时软件 商务软件 工程和科学计算软件 嵌入式软件 人工智能软件 个人计算机软件
软件的发展
1. 软件发展的四个阶段
1950---1965 没有系统的软件开发方法和管理机制、自定义软件、批 处理、有限分布。
1965---1975 产生人机交互的新概念、新技术软件产品、多用户、实 时、数据库。
软件工程环境
软件工程环境 是指在计算机基本软件的基础上,为支持软 件开发而提供的一组工具软件系统,即全面 支持软件开发全过程的软件工具集合 CASE (Computer Aided Software Engineering)
例子 IBM Rational Suite 青鸟系统 I,青鸟系统 II
1973---1988 微处理器的出现并广泛应用 分布式系统、嵌入智能、低成本硬件、消费者的影响。
1986---2000 广域和局域网络迅速普及
强大的桌面系统、面向对象技术、专家系统、人工智能、 神经网络、并行计算、网络计算机。
2. 软件发展存在的问题
软件开发能力不能满足人们的需要。 社会对软件的依赖程度加大,人们普遍关注软件
软件开发成本过高 软件质量得不到保证 软件开发效率低 难以控制开发进度,工作量估计困难
软件不能满足社会发展的需求,成为 社会、经济发展的制约因素
2. 软件危机原因
软件的规模加大、复杂性提高、性能增强
软件是逻辑产品, 尚未完全认识其本质和特点 缺乏有效的、系统的开发、维护大型软件项目的
软件工程管理
目的 为了按照进度和预算完成软件开发计划
内容 成本估算 进度安排 人员组织 质量保证
软件工程的方法
软件工程方法是完成软件工程项目的技术 手段。它支持项目计划和估算、系统和软 件需求分析、设计、编程、测试和维护。
软件工程方法依赖一组原则,它贯穿软件 工程的各个环节。
软件工程方法分两类:传统方法和面向对 象方法
传统软件工程与面向对象软件工程
传统软件工程 以结构化程序设计为基础 结构化分析(SA)→结构化设计(总体设计、 详细设计) →面向过程的编码→测试
面向对象软件工程 以面向对象程序设计为基础 软件分析与对象抽取→对象详细设计 →面向对象的编码→测试
软件工程工具
为了支援软件人员的开发和维护活动而使用的软 件 项目估算工具 需求管理工具 –Requisite Pro 设计建模工具 –Rational Rose 编程和调试工具 –RAD 测试工具和维护工具 --TestManager
三个时期、七个阶段 软件定义 问题定义:确定系统的总体目标
可行性分析:研究经济、技术、操作等的可 行性
需求分析:收集需求,需求建模 软件开发
系统设计:软件结构设计、数据设计、接口 设计和过程设计
编码:产生源程序清单 测试:产生软件测试计划和软件测试报告 软件运行 维护:修改、完善、扩展软件