软件工程 课件 第一章
合集下载
《软件工程》PPT课件

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

软件的分类
图1.3 软件的分类
软件的分类
另外,从软件工程学的角度来划分软件产品,可以分为基础软件、支 撑软件和应用软件等。
基础软件是指保证计算机运行并支撑应用软件运行的基础环境,包括 操作系统、数据库、中间件。
支撑软件是指支撑各种软件的开发与维护的软件,又称减开发环境( Integrated Development Environment, IDE),主要有环境数据库、各 种接口软件和工具组,包括编程工具、建模工具、版本控制、软件测试等 类型。
软件的特性
图1.1 硬件失效曲线图
软件的特性
图1.2 软件失效曲线
软件的特性
⑥ 应用特性。软件的应用极为广泛,如今它 已渗入国民经济和国防的各个领域,现已成为信 息产业、先进制造业和现代服务业的核心,占据 了无可取代的地位。
软件的特性
(2)软件的生产特性 ① 软件开发特性。由于软件固有的特性,使得软件的开发不仅具
有技术复杂性,还有管理复杂性。技术复杂性体现在:软件提供的功能比 一般硬件产品提供的功能多,而功能的实现具有多样性,需要在各种实现 中做出选择,更有实现算法上的优化带来的不同,而实现上的差异会带来 使用上的差别。管理上的复杂性表现在:第一,软件产品的能见度低,要看 到软件开发进度比看到有形产品的进度困难得多;第二,软件结构的合理性 差,结构不合理使软件管理复杂性随软件规模增大而呈指数增长。
软件的特性
③ 软件维护特性。软件在运行过程中的维护工作比硬件复杂得多。
首先软件投入运行后,总会存在缺陷甚至暴露出潜伏的错误,需要进行“纠 错性维护”。其次,用户可能要求完善软件性能,对软件产品进行修改,进 行“完善性维护”。当支撑软件产品运行的硬件或软件环境改变时,也需要 对软件产品进行修改,进行“适应性维护”。软件的缺陷或错误属于逻辑性 的,因此,不需要更换某种备件,而是修改程序,纠正逻辑缺陷,改正错误 ,提高性能,增加适应性。当软件产品规模庞大、内部的逻辑关系复杂时, 经常会发生为纠正一个错误而产生新错误的情况,因此,软件产品的维护往 往比硬件产品的维护工作量大且复杂。
软件工程课件第1章 软件工程概述

1.1.1 软件危机爆发的原因
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列 严重问题。
这些问题绝不仅仅是“不能正常运行的”软件才具有的,实际上几 乎所有软件都不同程度地存在这些问题。
软件危机主要表现,如:对软件开发成本和进度估计不准确、软 件产品的质量靠不住、用户对“已完成的”软件系统不满意、软件 开发速度跟不上、软件不可维护以及没有适当的文档资料等等。
60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅 速扩大;高级语言的出现、操作系统的发展和第一代数据库管理系统 的诞生,使得软件系统规模越来越大、软件可靠性问题也越来越突出, 私人化的软件生产方式不能满足社会日益增长的软件需求。
软件的发展速度远远滞后于硬件的发展速度,60年代末软件危机爆发。
1.5 软件生存期模型
1.5.1 瀑布模型
在20世纪80年代之前,瀑布模型一直 是唯一被广泛采用的软件生存期模型。
核心思想:按工序将问题化简,采用 结构化的分析与设计方法将功能的实 现与设计分开,便于分工协作。
将软件生命周期划分为六个基本活动, 并且规定了它们自上而下、相互衔接 的固定次序,如同瀑布流水,逐级下 落。
软件工程方法学包括三要素:方法、工具和过程。
软件工程方法为软件开发提供了 “如何做” 的技术;软件工程工具为 软件开发提供了自动的或半自动的软件支撑环境;软件工程过程是为 了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各 项任务的工作步骤。
1.3 软件工程方法
1.3.1 结构化方法 结构化方法是传统的软件开发方法,面向对象开发方法出现前应用最广泛。 结构化方法的基本思想:用系统工程的思想和工程化的方法,按用户至上
此方法学可以大大提高软件开发的生产率和成功率。
软件工程第一章概述ppt课件

IDEF :ICAM Definition(美国现在广泛使用的一种分析业务活动的标准) OMT:Object Modeling Technique UML: Unified Modeling Language
技术先进
兼容结构化,信息工程,OO方法,保护开发人员经验; 需求分析与软件设计全面集成; 大众化的软件工程实用体系。
(1)建立事件流图
Play CASE用事件流图描述企业的业 务流程,其表达方式是沿系统/功能结构 树自上而下逐层表达。
(2)事件接口图
事件接口图是和事件流图一一对应的。它 有几个方面的作用:一方面,它按层次来表达业 务部门(岗位)之间的业务分工,集中反映了各 个部门(岗位)的业务活动;另一方面,它按层 次来表达系统内部的功能界面,说明哪些功能由 哪些子系统(模块)来完成。
渐变到质变,自然过渡 领域模型 → 需求模型 → 软件模型 → 机器模型 建模语言从面向机器 到 面向业务 双语建模
模型是一种“赝品”,软件也一种是“赝品” 软件业是制造业
制造业:市场调查、产品定义、产品设计、产品加工、产品组装 软件业:业务调查、需求定义、产品设计、软件编码、集成测试
1 关于建模 建模的重要性
领域模型 → 需求模型→ 软件模型 → 机器模型 领域建模、需求建模、软件建模一体化
3 视图成份
建模的三要素
结构 流程 数据
3 视图成份
全程一体化精细建模技术的主要成份
结构类
组成结构树
流程类
协作流程图 事件流程图
信息类
信息关系图、内容图
业务成份 软件成份
总经理
商业企业
业务部
上述的数据在结构模型中的信息/表单内容图中, 是以表单的形式来描述其内容及其间的各种关系, 这种表单也是传统意义上的信息实体。
技术先进
兼容结构化,信息工程,OO方法,保护开发人员经验; 需求分析与软件设计全面集成; 大众化的软件工程实用体系。
(1)建立事件流图
Play CASE用事件流图描述企业的业 务流程,其表达方式是沿系统/功能结构 树自上而下逐层表达。
(2)事件接口图
事件接口图是和事件流图一一对应的。它 有几个方面的作用:一方面,它按层次来表达业 务部门(岗位)之间的业务分工,集中反映了各 个部门(岗位)的业务活动;另一方面,它按层 次来表达系统内部的功能界面,说明哪些功能由 哪些子系统(模块)来完成。
渐变到质变,自然过渡 领域模型 → 需求模型 → 软件模型 → 机器模型 建模语言从面向机器 到 面向业务 双语建模
模型是一种“赝品”,软件也一种是“赝品” 软件业是制造业
制造业:市场调查、产品定义、产品设计、产品加工、产品组装 软件业:业务调查、需求定义、产品设计、软件编码、集成测试
1 关于建模 建模的重要性
领域模型 → 需求模型→ 软件模型 → 机器模型 领域建模、需求建模、软件建模一体化
3 视图成份
建模的三要素
结构 流程 数据
3 视图成份
全程一体化精细建模技术的主要成份
结构类
组成结构树
流程类
协作流程图 事件流程图
信息类
信息关系图、内容图
业务成份 软件成份
总经理
商业企业
业务部
上述的数据在结构模型中的信息/表单内容图中, 是以表单的形式来描述其内容及其间的各种关系, 这种表单也是传统意义上的信息实体。
第1章-软件工程概述PPT课件

第1章 概述
教学目标
● 了解软件工程的产生和发展 ● 掌握软件工程的概念、内容和原理 ● 熟悉软件生存周期及阶段任务 ● 掌握软件开发模型
案例1-1 IBM 公司研发初期的OS/360,共约100万条指令,
花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误 多达2000 个以上,系统根本无法正常运行。OS/360 系统的负责 人Brooks 这样描述开发过程的困难和混乱:“像巨兽在泥潭中 垂死挣扎,挣扎得越猛,泥浆沾得越多陷入更深,最后没有一个 野兽能够逃脱淹没在泥潭中的命运” 。
自定 义软
表1-1 软件技术各发展阶段的典型技术
程序 系统 阶段
多 用户
实 时处 理
数 据库
软
软件 工程 阶段
分布 式系 统 嵌入 “智 能” 低成 本硬
创新完 善软 件工程 阶段
强大桌 面系统 面向对 象技术 专家系 统、神 经网络、 8并行计
1.1 软件工程的发展
“软件工程”的发展经历了4个重要阶段: 1.传统软件工程
质量难以保证,甚至在开发过程中就被迫中断。 (3) 软件开发管理差,对成本和进度的估计时常不准确。 (4) 系统时常出现无法维护、升级或更新现象。 (5) 软件开发没有标准、完整、统一规范的文档资料。计算机软件不
仅只是程序,还应当有一整套规范的文档资料和售后服务。 (6) 软件开发效率低,无法满足计算机应用迅速发展与提高的实际需
软件工程原理 软件工程过程
软件工程技术 软件工程方法
软件工程模型 软件工程管理 软件工程度量 软件工程环境 软件工程应用
软件目标、原则、学科基础 开发过程、运作过程、维护过程,如获取、供应、管理、开 发、运作、维护、支持、裁减 开发技术、管理技术、度量技术、维护技术、应用技术
软件工程第1章课件

第二条本条例所称计算机软件(以下简称软件),是指计 算机程序及其有关文档。 第三条本条例下列用语的含义: (一)计算机程序,是指为了得到某种结果而可以由计算 机等具有信息处理能力的装置执行的代码化指令序列,或 者可以被自动转换成代码化指令序列的符号化指令序列或 者符号化语句序列。同一计算机程序的源程序和目标程序 为同一作品。 (二)文档,是指用来描述程序的内容、组成、设计、功 能规格、开发情况、测试结果及使用方法的文字资料和图 表等,如程序设计说明书、流程图、用户手册等。
目前相当多的软件专业人员对பைடு நூலகம்件开发和维护还有 不少糊涂观念,在实践过程中或多或少地采用了错 误的方法和技术,这可能是使软件问题发展成软件 危机的主要原因。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。事实上,越早开始写程序,完成它所需要用的 时间往往越长。
软件工程发展的起因:“软件危机”
为了更有效地开发与维护软件,软件工作者在20世 纪60年代后期开始认真研究消除软件危机的途径, 从而逐渐形成了一门新兴的工程学科——计算机软 件工程学(通常简称为软件工程)。
1.1 软件危机
在计算机系统发展的早期时代(20世纪60年代中期 以前): 除了程序清单之外,没有其他文档资料保存下来。 从20世纪60年代中期到70年代中期: 这个时期的一个重要特征是出现了“软件作坊”, 广泛使用产品软件,软件难以维护。 由此产生了软件危机
1968年北大西洋公约组织的计算机科学家在联邦德 国召开国际会议,讨论软件危机问题,在这次会议 上正式提出并使用了“软件工程”这个名词,一门 新兴的工程学科就此诞生了!
1.1.1 软件危机的介绍
软件危机是指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。这些问题绝不仅仅是不能 正常运行的软件才具有的,实际上,几乎所有软件 都不同程度地存在这些问题。 概括地说,软件危机包含下述两方面的问题:如何 开发软件,以满足对软件日益增长的需求;如何维 护数量不断膨胀的已有软件。
目前相当多的软件专业人员对பைடு நூலகம்件开发和维护还有 不少糊涂观念,在实践过程中或多或少地采用了错 误的方法和技术,这可能是使软件问题发展成软件 危机的主要原因。
事实上,对用户要求没有完整准确的认识就匆忙着 手编写程序是许多软件开发工程失败的主要原因之 一。事实上,越早开始写程序,完成它所需要用的 时间往往越长。
软件工程发展的起因:“软件危机”
为了更有效地开发与维护软件,软件工作者在20世 纪60年代后期开始认真研究消除软件危机的途径, 从而逐渐形成了一门新兴的工程学科——计算机软 件工程学(通常简称为软件工程)。
1.1 软件危机
在计算机系统发展的早期时代(20世纪60年代中期 以前): 除了程序清单之外,没有其他文档资料保存下来。 从20世纪60年代中期到70年代中期: 这个时期的一个重要特征是出现了“软件作坊”, 广泛使用产品软件,软件难以维护。 由此产生了软件危机
1968年北大西洋公约组织的计算机科学家在联邦德 国召开国际会议,讨论软件危机问题,在这次会议 上正式提出并使用了“软件工程”这个名词,一门 新兴的工程学科就此诞生了!
1.1.1 软件危机的介绍
软件危机是指在计算机软件的开发和维护过程中所 遇到的一系列严重问题。这些问题绝不仅仅是不能 正常运行的软件才具有的,实际上,几乎所有软件 都不同程度地存在这些问题。 概括地说,软件危机包含下述两方面的问题:如何 开发软件,以满足对软件日益增长的需求;如何维 护数量不断膨胀的已有软件。
软件工程课件(全)ppt

第1章 1.2软件工程
1.2.1 软件工程的定义和目标
为了克服软件危机,1968年10月在北大西洋公约组织(NATO)召开的计 算机科学会议上,Fritz Bauer首次提出“软件工程”的概念。
按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一 条主要出路。
软件工程的主要思想是强调软件开发过程中应用工程化原则的重要性。软 件工程的目标是实现软件的优质高产。软件工程的目的是在经费的预算范围内, 按期交付出用户满意的、质量合格的软件产品。
第1章 1.1软件与软件危机
1.1.3 软件危机
2. 软件危机产生的原因
(1)忽视软件开发前期的调研和需求分析工作。 (2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定。 (3)开发过程缺乏统一的、规范化的方法论指导。 (4)忽视与用户、开发组成员间的及时有效的沟通。 (5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据。 (6)没有完善的质量保证体系。
第1章 1.1软件与软件危机
1.1.1 软件的定义及其特点
2.软件具有下列特点:
比硬件发展慢
是逻辑产品
软件
生产与硬件不同 不会磨损和老化
成本高、风险高
手工开发为主
依赖硬件
第1章 1.1软件与软件危机
1.1.2 软件的发展及其分类
1.软件技术的发展
程序设计
程序系统
软件工程
第1章 1.1软件与软件危机
第1章 1.1软件与软件危机
1.1.3 软件危机
3. 软件危机解决途径
要解决软件危机问题,需要采取以下措施: (1)使用好的软件开发技术和方法。 (2)使用好的软件开发工具,提高软件生产率。 (3)有良好的组织、严密的管理,各方面人员相互配合共同完成任务。 为了解决软件危机,既要有技术措施(好的方法和工具),也要有组织管理措施。软件工 程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
第一单元 软件工程概述PPT课件

软件的开发尚未完全摆脱手工的方式,依然有大量重复性的劳动
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
开发费用高
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,需要较 高的成本。软件的开发是一个复杂的过程,因而管理是软件开发过程 中必不可少的内容
9
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件开发是一个专业领域的人在为另一个专业领域的 人服务
面向对象分析设计 与统一建模语言UML
duzou@
软件工程概述
面向对象分析设计与统一建模语言UML
1
软件工程概述
2
面向对象技术简介
3
UML语言基础
4
类图和对象图
5
包图
2
软件工程概述
面向对象分析设计与统一建模语言UML
6
用例图
7
交互图
8
活动图
9
状态机图
10
交互概述图
3
软件工程概述
15
1.1 软件、软件危机和软件工程的定义
软件工程概述
❖ 软件工程的目标
▪ 付出较低的开发成本 ▪ 达到预期的软件功能 ▪ 取得较好的软件性能 ▪ 使软件易于移植 ▪ 较低的维护费用 ▪ 能按时完成开发工作,及时交付使用
在预算内如期完成 (初级目标)
良好的结构,较好的可维 护性、扩展性、重用性
(高级目标)
在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题,但软 件也会出现故障,软件维护比硬件维护要复杂得多,与硬件的维修有 着本质的差别
软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同 程度的依赖。为了消除这种依赖,在软件开发中提出了软件移植的问 题,并且把软件的可移植性作为衡量软件质量的因素之一
软件工程课件第1章

32
当软件规模较大或对软件的需求模糊易变时, 采用生命周期方法学开发往往不能成功,近年 来在许多应用领域面向对象方法学已经迅速地 取代了传统方法学。
面向对象方法有四个要点,可以用下列方程式 概括:
2020/5/20
33
面向对象方法学=对象+类+继承+
也就是说,面向对象方法就是既使用对象又使 用类和继承等机制,而且对象之间仅能通过传 递消息实现彼此通信。
(方法和工具),又要有必要的组织管理措施。 软件工程正是从管理和技术两方面研究如何更 好地开发和维护计算机软件的一门新兴学科。
2020/5/20
15
第1章 软件工程
1.1
软件危机
1.2
软件工程
1.3
小结
2020/2.1 什么是软件工程
概括地说,软件工程是指导计算机软件开发和维护的 工程学科。
2020/5/20
34
如果仅使用对象和消息,则这种方法可以称为基于对 象的(Object-based)方法,而不能称为面向对象的方 法;
如果进一步要求把所有对象都划分为类。则这种方法 可称为基于类的(Class-based)方法,但仍然不是面 向对象的方法。
只有同时使用对象、类、继承和消息的方法,才是真 正面向对象的方法。
软件工程
刘永利 河南理工大学 2020年5月20日
2020/5/20
1
参考资料
张海藩,《软件工程导论》,清华大学出版社, 1998 第三版
郑人杰,殷仁昆,陶永雷,《实用软件工程》, 清华大学出版社 ,1997 第二版
2020/5/20
2
考核要求
平时成绩30%
考勤 课堂笔记 少量习题
软件工程(完整ppt教程)

•2. 面向对象方法学
• 把数据和对数据的操作紧密结合起来的方法,
模拟人类认识世界解决问题的方法和过程。
• 面向对象的方法
•
=对象(属性与服务的封装)
•
+分类
•
+继承
•
+通过消息的通讯
3. 其他开发方法
• 1)适用于实时事物处理系统的有限状态机
方法(FSM);
• 2)适用于并发软件系统的PETRI网方法;
• 1.2.2 软件工程的基本原理
• 1. 用分阶段的生命周期计划严格管理; • 2. 坚持进行阶段评审; • 3. 实行严格的产品控制; • 4. 采用现代程序设计技术; • 5. 结果能清楚地审查; • 6. 开发小组的人员应该少而精; • 7. 承认不断改进软件工程实践的必要性。
•1.2.3 软件工程方法学
1.4.7 敏捷过程与极限编程
•1.敏捷过程 • 具有高效、快速响应变化的开发过程。 •(1)个体和交互胜过过程和工具; •(2)可以工作的软件胜过面面俱到的文档; •(3)客户合作胜过合同谈判; •(4)响应变化胜过遵循计划。 •2.极限编程 • 敏捷过程中最著名的一种,指把好的开发 实践运用到极致,多应用于软件需求模糊的 场合。
• 1.4.4 螺旋模型
• 可把它看作在每 个阶段之前都增加 风险分析的快速原 型模型。
• 1.4.5 喷泉模型
典型的面向对象软件 开发过程模型之一。
1.4.6 Rational 统一过 程
• 1. RUP软件开发经验 • (1)迭代式开发 • (2)管理需求 • (3)使用基于构件的体系结构 • (4)可视化建模 • (5)贯穿于开发过程的软件质量验证 • (6)控制软件变更
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/webnew/
第1章 软件工程概论
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 软件综述 软件危机 软件工程概念 软件生命周期 软件过程模型 软件工程标准 软件开发文档 习题
/webnew/
第1章 软件工程概论
(时间:3次课,6学时)
/webnew/
第1章 软件工程概论
教学提示: 教学提示:本章主要介绍软件工程学的基本概念和基本 方法。包括软件、软件工程的定义; 方法。包括软件、软件工程的定义;软件生命周期的概 内容和原则;软件工程的几个典型的过程模型、 念、内容和原则;软件工程的几个典型的过程模型、软 件工程的标准及软件开发文档等内容。 件工程的标准及软件开发文档等内容。学习完这些内容 读者对软件工程学将会有一个比较全面的了解。 后,读者对软件工程学将会有一个比较全面的了解。 教学目标:掌握软件工程学科的研究内容;了解软件生 教学目标:掌握软件工程学科的研究内容; 命周期的工作流程及各个阶段的主要任务; 命周期的工作流程及各个阶段的主要任务;了解各种软 件过程模型和特点;了解软件工程标准及软件开发文档, 件过程模型和特点;了解软件工程标准及软件开发文档, 为日后的学习打下良好的基础。 为日后的学习打下良好的基础。
/webnew/
产生软件危机的原因(宏观)
缺乏总体考虑, (1)缺乏总体考虑,没有软件工程学概念或系 统工程思想。--软件 统工程思想。--软件 (2)对业务了解支离破碎,需求分析不准。-对业务了解支离破碎,需求分析不准。 软件 企业依赖激情指挥,企业管理标准化、 (3)企业依赖激情指挥,企业管理标准化、规 范化、 科学化程度不高, 范化 、 科学化程度不高 , 导致不能成功地应 死板”的软件,它依赖于业务的“ 用 “死板”的软件,它依赖于业务的“科学 条理化” 程序化” --企业 化”、“条理化”、“程序化” --企业
/webnew/
1.3 软件工程概念
e. 试运行后,再投入长期运行 试运行后,再投入长期运行; f. 在运行中不断维护、完善。 在运行中不断维护、完善。 • 按工程化方法开发,把手工、个体化的脑力劳 按工程化方法开发,把手工、 动方式转变成集体性的有严格分工的脑力劳动 运用先进的软件开发工具,提高开发效率。 ,运用先进的软件开发工具,提高开发效率。
1.4
运行/维护
软件生命周期
/webnew/
1.4
程序编写
软件生命周期
其主要任务和要求是: 把软件设计转换成计算机可以接受的程序代码,即写 成以某一种特定程序设计语言表示的“源程序清单”; 写出的程序应当是结构良好、清晰易读的,且与设计 相一致的。
/webnew/
/webnew/
1.1.4 软件的分类
• 基于软件规模的划分 微型软件、小型软件、中型软件、大型软件、 巨大型软件、极大型软件 • • 基于软件失效的影响进行划分 基于软件服务对象的范围进行划分 定制软件 、产品软件
/webnew/
/webnew/
产生软件危机的原因(宏观)
企业信息化程度和计算机应用水平低, ( 4 ) 企业信息化程度和计算机应用水平低 , 导致无法准确描述需求。--企业 导致无法准确描述需求。信息管理的重视程度不够。-企业 缺乏相互沟通, ( 6 ) 缺乏相互沟通 , 业务描述的详尽程度不 能达到具备生活常识的人能够轻易理解。 能达到具备生活常识的人能够轻易理解 。 -企业、 企业、软件
1.1 软件综述
1.1.1 软件的发展 1.1.2 软件的定义 1.1.3 软件的特点 1.1.4 软件的分类
/webnew/
1.1.1 软件的发展
程序设计阶段 20世纪 年代初期至 年代中期 世纪50年代初期至 世纪 年代初期至60年代中期 程序系统阶段 20世纪 年代中期到 年代末期 世纪60年代中期到 世纪 年代中期到70年代末期 软件工程阶段 20世纪 年代中期至 年代中期 世纪70年代中期至 世纪 年代中期至80年代中期 第四阶段
1.2 软件危机
软件危机: 软件危机:软件开发和维护过程中遇到的一系列 严重问题。 严重问题。 具体表现: 具体表现:
产品不符合用户的实际需要; 软件开发生产率不高,不能满足客观需要; 软件产品质量差; 对软件开发成本和进度的估计不准确; 可维护性差; 软件的文档资料不完整和不合格; 软件成本逐年上升。
自定义软件
软件产品
/webnew/
1.1.2 软件的定义
(1)在运行中提供所希望的功能和性能的指令集(即程 序); (2)使程序能够正确运行的数据结构; (3)描述程序研制过程和方法所用的文档。
/webnew/
/webnew/
1.3 软件工程概念
软件开发工程化
• 按近代科学及产业形成的一套工程化方法和思 想办事。 想办事。
a. 首先进行系统调查和系统分析 首先进行系统调查和系统分析; b. 再进行逻辑设计、物理设计 再进行逻辑设计、物理设计; c. 最后才编制实施; 最后才编制实施; d. 反复测试 反复测试;
/webnew/
产生软件危机的原因(微观) 产生软件危机的原因(微观)
软件的规模比较庞大,其开发和维护相当困难; (1)软件的规模比较庞大,其开发和维护相当困难; 开发人员虽然有经验, (2)开发人员虽然有经验,但还存在着不少错误观 没有实行工程化的方法; 点,没有实行工程化的方法; 不能与用户及时沟通, (3)不能与用户及时沟通,不能了解用户的实际需 要; 没有统一的软件质量管理规范; (4)没有统一的软件质量管理规范; 不能根据环境的变化而随时对产品进行改正。 (5)不能根据环境的变化而随时对产品进行改正。
1.4
软件测试
其主要过程是:
软件生命周期
单元测试:查找各模块在功能和结构上存在的问题并 加以纠正; 组装测试:将已测试过的模块按一定顺序组装起来; 按规定的各项需求,逐项进行有效性测试,决定已开 发的软件是否合格,能否交付用户使用。
/webnew/
1.1.3 软件的特点
• • (1)软件是一种逻辑实体,而不是具体的物 理实体,因而它具有抽象性。 (2)软件是通过人们的智力活动,把知识与 技术转化成信息的一种产品,是在研制、开发 中被创造出来的。 (3)在软件的运行和使用期间,没有硬件那 样的机械磨损、老化问题。
•
/webnew/
/webnew/
1.3 软件工程概念
定义: 定义:研究如何应用一些科学理论和工程上的技术 来指导软件的开发, 来指导软件的开发 , 用较少的投资获得高质量 的软件的一门学科。 的软件的一门学科。 基本内容:包括理论、结构、方法、工具、 基本内容:包括理论、结构、方法、工具、环境与 规范等。 规范等。 目标:以较少的投资获得易维护、易理解、 目标:以较少的投资获得易维护、易理解、可靠和 高效率的软件产品。 高效率的软件产品。 原则:即分解、抽象和信息隐蔽、 原则:即分解、抽象和信息隐蔽、一致性和确定性 。 原理:工程化和系统化。 原理:工程化和系统化。
/webnew/
计算机发展的各个阶段的技术表
阶段 第一阶段 第二阶段 第三阶段 第四阶段
强大的桌面系统
典 型 技 术
面向批处理 有限的分布
多用户 实时 数据库
分布式系统 嵌入“智能” 嵌入“智能” 低成本硬件 消费者的影响
面向对象技术 专家系统 人工神经网络 并行计算 网络计算机
1.1.3 软件的特点
• • • (4)软件的开发和运行经常受到计算机系统 的限制,对计算机系统有着不同程度的依赖。 (5)软件的开发尚未完全摆脱手工的开发方 式。 (6)软件的开发费用越来越高。
/webnew/
1.1.4 软件的分类
• 基于软件功能的划分 系统软件、支撑软件、应用软件 • 基于软件工作方式的划分 实时处理软件、分时软件、交互式软件、批处 理软件
• •
/webnew/
1.4
软件生命周期
软件设计 其主要任务是: 概要设计:把各项需求转换成软件的体系结构。结构 中每一组成部分都是意义明确的模块,每个模块都和 某些需求相对应; 详细设计:对每个模块要完成的工作进行具体的描述, 为源程序编写打下基础; 编写设计说明书,提交评审。
/webnew/
1.4 软件生命周期
需求分析和定义 当完成制定计划之后, 当完成制定计划之后 ,需要对用户的需求去粗 取精、去伪存真、正确理解, 取精、去伪存真、正确理解,然后把它用软件工程 开发语言表达出来。 开发语言表达出来。 其主要任务是: 其主要任务是: 对用户提出的要求进行分析并给出详细的定义; 对用户提出的要求进行分析并给出详细的定义; 编写软件需求说明书及初步的系统用户手册, 编写软件需求说明书及初步的系统用户手册,提交 管理机构评审。 管理机构评审。
/webnew/
1.4
制定计划 需求分析和定义 软件设计 程序编写 软件测试 运行/维护
软件生命周期
/webnew/
1.4 软件生命周期
制定计划 1、确定要开发软件系统的总目标; 2、给出功能、性能、可靠性以及接口等方面的要求; 3 3、完成该软件任务的可行性研究; 4、估计可利用的资源 (硬件,软件,人力等)、成本 、效益、开发进度; 5、制定出完成开发任务的实施计划,连同可行性研究 报告,提交管理部门审查。
/webnew/
1.3 软件工程概念
软件开发系统化
具体内容: 具体内容:
环境、时间、技术、 (1)强调全面性: 对人、财、物、环境、时间、技术、管 )强调全面性:对人、 理和需求等诸多方面进行可行性论证。 理和需求等诸多方面进行可行性论证。 (2)强调整体性: 研究分析相互联系、作用、配合、制约 )强调整体性:研究分析相互联系、作用、配合、 分工协作,遵守规定。 ,分工协作,遵守规定。 (3)按结构化、层次化去认识与处理复杂的软件。 )按结构化、层次化去认识与处理复杂的软件。 (4)按动态的、发展变化的观点设计软件,尤其是软件的 )按动态的、发展变化的观点设计软件, 各个接口。 各个接口。