软件工程基础(完整版本)第1章课件.pptx_第1页
软件工程基础(完整版本)第1章课件.pptx_第2页
软件工程基础(完整版本)第1章课件.pptx_第3页
软件工程基础(完整版本)第1章课件.pptx_第4页
软件工程基础(完整版本)第1章课件.pptx_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论