软件工程基础(胡思康)第1章课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各过程模型融合在一起,按照软件开发的不同规模、
不同阶段、不同领域,并结合风险分析、过程管理
进行模型组合。
两种过程模型组合方式:一类是以某种开发模型
为主,因地制宜的嵌入其他过程模型,以利于各阶
段活动的展开,提高效率。
另一类从项目计划开始,建立软件开发过程的组
合模型,各模型间以平等身份参与项目开发,共同
●
S
软件工程概述
S
1 2 3
软件工程的发展历程 软件工程的概念 软件与软件过程
4
5
软件过程模型
软件开发方法
软件产品难以满足
用户的需求 软件开发进度 和成本难以控制 2 1
3 问题 4 5
6
伦敦股票交易系统: 伦敦股票交易系统 4.5亿----7.5亿----5年---失败 Vista研发 ----2001(2003)----2007.1----60
S
高茜
gq@qlu.edu.cn
S
立足于基本的概念、原理、方法和工具,从实 用的角度讲解软件系统的需求、设计、实现、测 试、维护和管理的内容。同时兼顾对软件工程过 程介绍的全面性和系统性。 减少工程原理的阐述,着重讲解软件工程在实 践中的方法、技术和工具。
S
Main Subjects
软件工程概述 软件实现
有具体的实施细节,防止MSF陷于某类型项目开发模式的泥沼
中,这样对不同软件项目有很强的适应能力。
产品发布
创想 阶段
稳定 阶段
包括项目计划确认、完成设计 规格说明书中定义的功能、构 件以及其他要素。
目标/内容确认
产品测试 开发 阶段 计划 阶段
项目计划确认
包括目标和内容的认可,定义 项目的目标、约束和解决方案 的架构、项目计划和进度表
第三方监控 易于理解和 修改
存在矛盾
足用户需求、并最终实现软件的工业化生产。
较低的维护 成本 按时完成 及时交付
可理解性 功能性 可靠性 可扩充性 可重用性 安全性
软件质量
有效性 可维护性
可移植性
做好全面的用户分析
选取适宜的开发模型
采用成熟的设计方法
选择高效的开发环境
保证有效的维护过程
系统需求子集2
需求
设计
编码
测试
交付增量2
系统需求子集N 需求 设计 编码 测试 交付增量N 模型先将需求分解为若干部分,每个部分都按照瀑
布模型方法进行开发。
时间
包括决定目标、实 将原型模型和瀑布模型相结合,并引入风险分析 风险识别、风险评价、 施方案和系统限制。 机制,适合大型复杂项目的开发 风险预防与消除 包括验收测试、 用户体验、下一 次迭代评估。 包括开发、验证下一 代产品,并做预防性 评估
2006年中国国家标准中给出的定义是,应用计算
机科学理论和技术以及工程管理原则和方法,按预
算和进度,实现满足用户要求的软件产品的定义、
开发、发布和维护的工程或进行研究的学科。
互补关系 低开发 跟踪最新的软件技术发展,修改和制定新的软件 成本
开发活动规则,提高和规范软件管理的效率和可操
作性,确保软件质量,提高软件生产率,开发出满
亿美元
美国军方购买软件 ----每年数十亿----2%直接可
使用的----3%需要修改-----95%垃圾
软件质量难以 得到保证
软件产品难以满足
用户的需求 软件开发进度 和成本难以控制 2 1
3 问题 4 5
软件产品难以 进行维护
6
美国火箭控制系统程序:写错一条语句 美国火箭控制系统程序 ----火箭 爆炸----1000多万美元损失 苏联“联盟一号”载人宇宙飞船 ----软件忽略了
支撑软件开发过程。
S
1 2 3
软件工程的发展历程 软件工程的概念 软件与软件过程
4
5
软件过程模型
软件开发方法
软件开发方法是用已定义的工具、方法和过程,
在技术上和管理上组织软件生产的一系列活动。
其中,过程定义软件开发顺序的操作流程;方法
是用软件开发理论和规范的技术手段设计软件;工
具提供了方法中可用的一组图形符号。
重视软件过程管理
美国著名的软件工程专家Barry Boehm于1983年
提出软件工程的七条基本原理。
确保软件质量和开发效率的原理的最小集合。
这七条基本原理相互独立,其中任何六条原理的
组合都不能替代另一条原理。
用分阶段的生命周期计划严格管理
坚持进行阶段评审 执行严格的产品质量控制 采用现代化程序设计技术 结果应能清楚地审查 开发人员应少而精 承认不断改进软件工程的必要性
S
1 2 3
软件工程的发展历程 软件工程的概念 软件与软件过程
4
5
软件过程模型
软件开发方法
针对软件生命周期各阶段活动的一般规律,对软件开发过 程进行定量度量的量化,为软件工程管理提供阶段性评价, 为软件开发过程提供原则和方法,提出了软件过程模型,也 被称为软件生命周期模型。 软件过程模型是从软件项目需求定义直至软件经使用后废 弃为止,跨越整个生命周期的系统开发、运行和维护所实施 的全部过程、活动和任务的结构框架。 不同的软件开发过程可选择不同的软件过程模型。
一个小数点----烧毁
软件维护费用 ----占项目总预算35%-40%(70年代)
----40%-60%(80年到90年)----70%-80%(目前)
软件质量难以 得到保证
软件产品难以满足
用户的需求 软件开发进度 和成本难以控制 2 1
3 特性 4 5
软件产品难以
进行维护 软件的文档 资料难以管理
按照当代软件 工程基本原理 实现软件的工 程化生产
S
1 2 3
软件工程的发展历程 软件工程的概念 软件与软件过程
4
5
软件过程模型
软件开发方法
Barry Boehm提出“软件是程序,以及开发、使用和维护 程序所需的所有文档”。 计算机领域多次引用的基本定义是:软件是计算机中与硬 件相互依存的另一部分,它包括程序、数据以及相关文档的 完整集合。 软件实现的是一个从现实问题域(输入)到信息域的解 (输出)的过程,在此过程中包括程序、数据、文档以及他 们间的联系。
支撑软件
(工具软件、软件开发环境)
系统软件 1 分类 3
应用软件
2
项目软件 1 分类 2
产品软件
分时软件 2 分类
交互式软件
3 4
批处理软件
实时处理软件
1
人工智能软件 1 分类 2
嵌入式软件
主要回答两个问题:要解决的问题是 什么;这个问题是否有解?是否值得解? 主要回答:用户提出的软件必须完成 技术可行性、操作可行性、经济可行 什么? 性和法律可行性 主要回答:软件系统如何完成,以体现用户需求? 问题定义、需求获取和需求验证 概要设计(给出软件结构、全局数据结构、数据库 软件工程用于软件开发的指导思想之一就是划 可行性与计划 结构和接口)和详细设计(各模块的具体实现算法 分软件生命周期,把软件开发的全过程分阶段、 和彼此调用关系) 需求分析 运行和维护 … 运行和维护 … 报废
分析: 系统需求 软件需求 确定: 系统功能 系统性能
定义 阶段
可行性研究与计划
需求分析
开发 阶段 维护阶段
来自百度文库
设计
编码 测试
设计: 数据结构 体系结构 接口 算法
运行维护
难以适应软件需求不明确或出现变动的情况; 由于其严格的顺序性,用户只有到软件发开结束 后才能得到最终结果,增大了开发的风险。
产品发布
创想 阶段
稳定 阶段
部署解决方案到实际生产环境 中,总结项目过程中里程碑式 的管理,项目存在的危险因素, 以及风险分析的有效性等。
目标/内容确认
产品测试 开发 阶段 计划 阶段
项目计划确认
主要包括进行产品测试,总结 提升解决方案质量,确认符合 生产环境的质量标准。
组合模型不是一个独立的、新的过程模型,它把
需求分析从用户功能 入手,通过数据流图、 1978年E. Yourdon和L. L. Constantine提出了结构化方法, 数据字典等工具表示 通过对软件结构的模块化分 用户需求。 也称为面向功能的软件开发方法或面向数据流的软件开发方法。 析,定义模块的接口,设计 通过对数据流的映射 各模块间的数据传递、调用 过程,得到软件结构 它首先提出用结构化分析(Structure Analysis ,SA)对软件 关系,以及模块内的算法流 程,最终通过结构化编程、 进行需求分析,之后用结构化设计(Structure Design,SD) 测试后得到软件产品
运行和维护 测试 实现
…
运行和维护
…
报废
设计
软件工程生命周期各阶段
是软件生命周期中最长的阶段,它将伴 随着软件的使用而一直存在。 完善性维护、纠错性维护、适应性维护 和预防性维护。
退化
可行性分析与计划 需求分析 概要设计 详细设计界 编码
确认测试 验收测试 集成测试 单元测试界
软件过程是由组织或项目使用的,用以计划、 管理、执行、监控和改进其软件相关活动的过程 或过程的集合。 包括过程定义、过程实现与变更、过程评估、 过程与产品质量四个知识子域。
维护
开始
简要获取 需求 原型是软件开发过程中一个用于实验的、测试的
或早期能运行的简单系统。由于在软件开发的需求 快速设计 产生样品 分析阶段,难以确定用户需求,因而软件人员根据 改 修 、 审 用户初步的、不明确的需求快速开发出系统原型。 评 原型 建造原型 再加工 软件人员进一步修改或补充新的需求,并最终达 到用户需要的软件产品(迭代过程) 客户评价
包括划分风险类别、
螺旋模型强调风险分析,要求软件人员在每次迭代开 始前,都要分析和找到软件开发中的风险,从而提前采 取解决风险的策略。
是B.H.Sollers和J.M.Edwards在1990年提出的软
件开发过程模型。
喷泉模型最大的特点在于软件过程的每个阶段相
互重叠,而不像其它过程模型每阶段有明显界线
定任务,按先后顺序依次完成。 测试 设计
实现
用某种计算机语言编写 的代码来表示
退化
软件工程生命周期各阶段
关于汉诺塔问题算法的时 间复杂度,可以用一个指 数函数O(2n)来表示
可行性与计划 需求分析
目的:发现程序中存在的错误,并在调试过 程中修改这些错误 软件测试包括单元测试(实现阶段)、集成 测试(设计阶段)、系统测试(需求阶段)和 确认测试(可行性分析阶段)
为了适应互联网时代软件开发需要的快速灵活性
和不断变化的需求,2001年敏捷联盟在美国成立,
同年发表著名的《敏捷宣言》。
维护
开始
可以工作的软件 胜过面面俱到的 文档 开发停止 个体和交互胜 客户评价 过过程和工具
循环
初始计划
发 布
2 1
支 持
计 划
客户合作胜过 合同谈判 分析说明 3
设计和 4 初始开 发
评 价
价值观 设计和
开发
需求 分析
测试 实现 集成
编码和 实现文档
响应变化胜 过遵循计划
人工与 自动化
变化 2 简单 1 核心原则 3 4
有目的的建模
快速反馈
综合瀑布模型和原型模型的优点,在保证减少错
误的前提下,快速得到用户系统。引入风险分析。
快速开发、建模。
微软解决框架(MSF)过程模型,是微软总结的一套关于 以往经验、原理模型、准则、概念、指南等的集合。为大型 软件项目开发而准备。 MSF在设计之初就不把它当作一种过程模型来设计,而是 把它定位为一套灵活、可伸缩的框架。它只有指导方针而没
软件需求工程
软件设计基础
软件测试
UML统一建模语言
结构化设计方法
S
教学结构:
考核分数构成:
• 课堂教授 (60%)+学生报告(30%)+讨论(10%) • 期末考试: 60% 作业完成: 15% • 学生课堂报告 : 15% (presentation skill, preparing, attitude etc.) • 讨论和其他: 5% (listen carefully, questions etc.) • 课堂出席 : 5%
软件工程的发展历程 软件工程的概念 软件与软件过程
4
5
软件过程模型
软件开发方法
从软件工程概念被提出之后,先后曾有多种不同 的定义(课本P5)。
软件工程的三要素:方法、工具和过程。 打破了人们对软件生产就是编写程序的认识上的 局限,把软件生产扩展到软件的需求、设计和维 护,扩展到支持上述过程的工具和方法,扩展到 项目管理、过程管理等一系列活动。
由于最初的原型可能与用户最终的系统差别很大 而被抛弃,因此原型模型不适宜开发大型软件项目。
增 系统需求子集1 需求 设计 编码 测试 交付增量1 量 增量模型是对软件项目中的功能以一系列增量的
方式来开发,也被称为渐增式开发模型。增量模型 是一种非整体开发模型,对于系统整体需求,增量
………………………………………………………………
6
软件产品的生产率难以得到提高
软件自身的特点;开发软件和使用软件的人员 对软件开发缺乏 正确的理论指导 软件人员与用户缺乏充分 的交流 对软件开发过程缺乏整体 认识 对软件产品缺乏有效一致 的质量评价标准
SE
面向对象软件工程阶段
构件工程的软件工程阶段
传统的软件工程 过程工程的软件工程阶段
S
1 2 3