软件工程的基本概念ppt课件.pptx_第1页
软件工程的基本概念ppt课件.pptx_第2页
软件工程的基本概念ppt课件.pptx_第3页
软件工程的基本概念ppt课件.pptx_第4页
软件工程的基本概念ppt课件.pptx_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

第1章基本概念 basicconception 1 主要内容 软件的定义 特点和分类软件的发展和软件危机软件工程方法学开发方法的特点与选择软件的生命周期软件生存期模型 2 学习本章课程的目的 了解软件概念 特点及分类方法 了解软件发展及软件危机的起因 了解软件工程的概念及其要素 了解软件工程的基本目标和原则 了解软件工程的近期研究的课题 3 1软件的定义 特点和分类 4 软件的定义 程序 按事先设计的功能和性能要求执行的指令序列数据 为进行通信 解释和处理而使用的信息的形式化表现形式文档 与程序开发 维护和使用有关的图文材料 程序 软件与软件产品独唱 小合唱 合唱 万人大合唱 简单程序较复杂程序软件 软件定义 软件 程序 数据 文档 5 软件是逻辑实体 具有抽象性 软件的形态不可见 必须通过观察 分析 思考 判断来了解其功能 性能和其它特性 软件是人脑思维的产物 其生产过程与硬件不同 开发过程的质量控制及软件产品保护问题 软件的开发和运行受计算机系统限制 软件移植问题 软件的开发技术落后 手工开发方式仍占统治地位 开发效率低 软件的特点 6 相当多的软件工作涉及社会因素 软件的特点 如 机构 体制 管理方式等 包括人的观念及心理 都直接影响软件工作的成败 7 失效率 时间 硬件失效率曲线 失效率 时间 软件失效率曲线 软件的失效率与硬件不同 8 软件的复杂性越来越高 对软件人员的要求越来越高 出现了软件复杂性与软件技术发展的不适应现象 软件需求与软件技术发展现状 9 软件技术进步落后于需求增长 差距 10 软件的开发研制成本高 年代以来 已大大超过硬件成本 硬件 年份 软件 6070809020002005 10080604020 成本 软 硬件成本比例的变化 11 按功能 按规模 按工作方式 按使用频度 按失效影响 系统软件 支撑软件 应用软件 按服务对象 传统的软件分类 12 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 微型软件 小型软件 大型软件 甚大型软件 极大型软件 传统的软件分类 13 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 实时处理软件 分时软件 交互式软件 批处理软件 传统的软件分类 14 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 产品软件 项目软件 传统的软件分类 15 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 使用频度低 使用频度高 传统的软件分类 16 按功能 按规模 按工作方式 按使用频度 按失效影响 按服务对象 不良影响 严重影响 传统的软件分类 17 按软件结构和使用方式分类 独立式组合式集成式嵌入式 按软件结构和使用方式分类 18 2软件的发展和软件危机 19 软件的发展的几个阶段 程序设计阶段60年代70年代系统设计阶段70年代80年代软件工程阶段80年代90年代 国外 国内 软件发展阶段 20 软件的发展 第一代算法技术第二代结构化软件技术第三代面向对象技术第四代分布式面向对象技术第五代软件构件技术 21 软件危机 计算机软件的开发和维护过程所遇到的一系列严重问题 22 软件危机的具体体现 软件开发进度难以预测软件开发成本难以控制用户对产品功能难以满足 软件产品质量无法保证软件产品难以维护 23 软件危机及产生原因 用户需求不明确缺乏正确的理论指导软件开发规模越来越大软件开发复杂度越来越高 主观 开发方法不正确 客观 逻辑部件规模庞大 24 解决软件危机的途径 组织管理措施项目管理方法软件工程学软件标准化技术措施软件开发技术与方法软件开发工具可重用性 软件工程正是从管理和技术两个方面研究如何更好地开发和维护计算机软件的学科 25 计算机应用发展 软件数量多规模大 软件成本高质量低 个体化软件开发方法 软件维护困难 软件危机 软件工程 软件危机推动软件工程的发展 26 3软件工程方法学 27 什么是软件工程 工程 将理论和所学的知识应用于实践的科学 软件工程 应用计算机科学 数学及管理科学等原理 开发软件的工程 借鉴传统工程的原则 方法 以提高质量 降低成本为目的 其中 软件工程是一门交叉性学科 计算机科学 数学用于构造模型与算法 工程科学用于制定规范 设计模型 评估成本 管理科学用于计划 资源 质量 成本等的管理 28 软件工程是指导计算机软件开发和维护的工程学科 采用工程的概念 原理 技术和方法来开发和维护软件 把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来 即软件工程 软件工程的基本定义 29 用分阶段的生命周期严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组人员应少而精 承认不断改进软件工程实践的必要性 软件工程的基本原理 30 软件工程三个要素 方法 工具 过程 软件工程三要素 为软件开发提供 如何做 的技术 31 软件工程三个要素 方法 工具 过程 软件工程三要素 为软件工程方法提供支撑环境 32 软件工程三个要素 方法 工具 过程 软件工程三要素 软件过程是将软件工程的方法和工具综合起来 进行软件开发 方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑 定义了 33 软件工程的基本目标 付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作 及时交付使用 34 软件工程基本原则 抽象 采用分层次抽象 自顶向下 逐层细化的办法控制软件开发过程的复杂性 信息隐蔽 将模块设计成 黑箱 实现的细节隐藏在模块内部 不让模块的使用者直接访问 这就是信息封装 使用与实现分离的原则 模块化 如C语言程序中的函数过程 C 语言程序中的类 模块化有助于信息隐蔽和抽象 有助于表示复杂的系统 35 软件工程基本原则 局部化 要求在一个物理模块内集中逻辑上相互关联的计算机资源 保证模块之间具有松散的耦合 模块内部具有较强的内聚 这有助于控制解的复杂性 确定性 软件开发过程中所有概念的表达应是确定的 无歧义性的 规范的 一致性 整个软件系统的各个模块应使用一致的概念 符号和术语 程序内部接口应保持一致 软件和硬件 操作系统的接口应保持一致 系统规格说明与系统行为应保持一致 用于形式化规格说明的公理系统应保持一致 36 软件工程基本原则 完备性 软件系统不丢失任何重要成分 可以完全实现系统所要求功能的程度 为了保证系统的完备性 在软件开发和运行过程中需要严格的技术评审 可验证性 开发大型的软件系统需要对系统自顶向下 逐层分解 系统分解应遵循系统易于检查 测试 评审的原则 以确保系统的正确性 37 可理解性 可见性 可支持性 可接受性 可靠性 健壮性 可维护性 速度 软件工程的过程特性 38 软件工程过程及其内容 规格说明 规定软件的功能及运行限制软件开发 产生满足规格说明的软件软件确认 对软件能否满足用户要求进行确认软件演进 为满足用户的变更要求的演进 软件过程是为获得软件产品 在软件工具支持下由软件人员完成的一系列软件工程活动 39 4开发方法的特点与选择 结构化开发方法 面向对象的方法 软件工程的研究课题 40 开发队伍最熟悉哪种开发方法 提供的软 硬件资源和开发工具 开发方法在计划 组织和管理方面的可行性 对开发项目所涉及领域的知识的掌握情况 选择方法要考虑如下的几个因素 41 结构化开发方法 也称为面向功能开发方法或面向过程方法 是由E Yourdon和L Constantine提出的 结构化分析方法SA结构化设计方法SD结构化编程方法SP 42 按照功能分解的原则 自顶向下 逐步求精 直到实现软件功能为止 简单 实用 结构化方法的特点 43 它以功能分解为基础 而用户的功能是经常改变的 必然导致系统的框架结构不稳定 从数据流程图到软件结构图之间的过渡有明显的断层 导致设计回溯到需求有困难 结构化方法的主要问题 44 面向对象的方法 Booch方法 该方法的分析能力较弱 是一种偏重设计的方法 OMT方法 通过建立对象模型 动态模型 功能模型 来实现对整个系统分析和设计工作 OOSE方法 最大特点是用用例 Use Case 与外部角色的交互来表示系统功能 用例贯穿于整个开发过程 Coad Yourdon的面向对象分析和设计方法 即OOA和OOD方法 它是最早的面向对象的分析和设计方法之一 UML 统一建模语言 国际对象管理组织OMG已批准将UML1 1作为面向对象技术的标准建模语言 45 将现实世界问题向面向对象解空间直接映射 实现对现实世界的直接模拟 以数据为中心 而不是基于对功能的分解使得软件结构相对稳定 软件的重用性 可靠性 可维护等特性都较好 缺点 较难掌握 优点 面向对象方法的特点 46 可视化开发技术及其特点 可视化开发技术是随着图形用户界面的兴起而发展起来的 是通过事件驱动实现应用软件的工作 可视化开发技术的优点 简化了图形用户界面的设计和编码工作 将开发的注意力主要集中在程序的执行逻辑和工作流程上 软件开发简单 易学 易上手 专业或非专业人员都能参与软件开发活动 47 软件工程的研究课题 形式语言的研究体系结构与架构技术质量保证 可靠性研究 过程控制 48 一个软件从定义 开发 使用和维护 直到最终被废弃 所经历的生存过程称为软件生存期或叫生命期 5软件的生命周期 49 软件的生命周期的划分 50 软件计划 问题定义 要解决的问题是什么 可行性研究经济技术管理社会环境 51 需求分析 确定系统逻辑模型确定目标系统必须具备的如下内容 功能性能接口约束 限制条件 52 软件设计 总体设计方案划分子系统功能确定共享数据的组织进行详细设计处理模块设计数据库系统设计输入输出界面设计编码的设计 53 软件测试 单元测试 测试模块集成测试 把经单元测试的模块按某种选定的策略装配起来 在装配过程中对程序进行必要的测试验收测试 验收测试是按照需求规格说明书的规定 由用户对目标系统进行验收 通过各种类型的测试 使软件达到预定的要求 54 软件维护 日常运行管理根据一定的规格对系统进行必要的修改评价系统的运行效率 工作质量和经济效益对运行费用和效果进行监理审计 55 瀑布模型原型模型螺旋模型增量模型构件组装模型统一过程模型第四代技术 6软件生存期模型 56 瀑布模型 57 瀑布模型的构建原理 最早出现的软件开发模型 它提供了软件开发的基本框架 瀑布模型的本质是一次通过 即每个活动只执行一次 最后得到软件产品 瀑布模型有利于大型软件开发过程中人员的组织及管理 有利于软件开发方法和工具的研究与使用 从而提高了大型软件项目开发的质量和效率 里程碑或基线驱动 或者说文档驱动 58 瀑布模型的缺陷 由于开发模型呈线性 所以当开发成果尚未经过测试时 用户无法看到软件的效果 这样软件与用户见面的时间间隔较长 也增加了一定的风险 在软件开发前期末发现的错误传到后面的开发活动中时 可能会扩散 进而可能会造成整个软件项目开发失败 在软件需求分析阶段 完全确定用户的所有需求是比较困难的 甚至可以说是不太可能的 59 原型模型 原型是指模拟某种产品的原始模型 而在软件开发中 原型是软件的一个早期可运行版本 快速原型法是根据软件需求迅速地产生软件产品的系统的一个原型 该原型能够表现出目标系统的功能和行为特性 但不一定符合其全部的实现需求 用户可通过原型作出评价 开发者根据用户的意见对原型加以修改 这样能够尽早的获得更完整 更准确的需求和设计 60 原型模型的构建原理 原型模型是软件工程的一个有效典范 建立原型仅仅是为了定义需求 之后就该抛弃 实际的软件在充分考虑了质量和可维护性之后才被开发 它比线性模型更符合人们认识事物的过程和规律 是一种较实用的开发框架 它适合于那些不能预先确切定义需求的软件系统的开发 61 废弃型 先构造一个功能简单而且质量要求不高的模型系统 针对这个模型系统反复进行分析修改 形成比较好的设计思想 据此设计出更加完整 准确 一致 可靠的最终系统 系统构造完成后 原来的模型系统就被废弃 追加型 先构造一个功能简单而且质量要求不高的模型系统 作为最终系统的核心 然后通过不断地扩充修改 逐步追加新要求 最后发展成为最终系统 软件原型的分类 62 原型模型的基本思想 软件开发人员在与用户进行需求分析时 以比较小的代价快速建立一个能够反映用户主要需求的原型系统 让用户在计算机上进行操作 在实践过程中提出改进意见 开发人员根据用户的意见 对原型进行补充和完善 然后再由用户试用 评价 提出建议 重复这一过程 直到用户对开发的原型系统满意为止 63 快速原型开发模型的实现过程 快速分析构造原型运行和评价原型修正和改进判定原型是否完成判定原型细部是否说明对原型细部说明判定原型效果整理原型 提供文档 64 快速 尽快向用户提供一个可在计算机上运行的目标系统的模型 以便使用户和开发者尽可能快地达成对目标系统 做什么 的共识 易于修改 如果原型的第一版不是用户所需要的 就必须根据用户的意见迅速地修改它 构建出原型的第二版 快速原型的特性 65 原型模型存在的问题 用户看到的不是实际运行的系统 为了提高原型的开发速度 开发人员很可能采用不理想的选择 66 增量模型 67 增量模型的构建原理 融合了线性顺序模型的基本成份和原型实现模型的迭代特征 增量模型采用随着日程时间的进展而交错的线性序列 每一个线性序列产生软件的一个可发布的 增量 增量模型强调每一个增量均发布一个可操作产品 早期的增量是最终产品的 可拆卸 版本 但他们确实提供了给用户服务的功能 并且提供了给用户评估的平台 将软件产品看作一组增量构件 每次设计 实现 集成 测试和交付一块构件 直到所有构件全部实现为止 68 增量模型的特点 任务或功能模块驱动 可以分阶段提交产品 有多个任务单 这些多个任务单的集合 构成项目的一个总任务书 总用户需求报告 69 螺旋模型 70 螺旋模型的构建原理 制定计划 确定软件目标 选定实施方案 弄清项目开发的限制 选定完成目标的策略 风险分析 分析所选方案 考虑如何识别和消除风险实施工程 实施软件开发 启动一个开发阶段 客户评估 评价开发工作 提出修正建议 计划下一轮的工作 螺旋模型沿着螺线旋转 在四个象限上分别表达四个方面的活动 即 71 螺旋模型的特点 瀑布模型 快速原型 风险分析迭代过程保留了瀑布模型中系统地 按阶段逐步地进行软件开发和 边开发 边评审 的风格引入了风险分析 把制作原型作为风险分析的主要措施 螺旋模型的使用需要具有相当丰富的风险评估经验和专门知识 而且费用昂贵 所以只适合大型软件的开发 72 变换模型 73 变换模型的构建原理 可以勘探现有的数据 从中发现新的事实方法指导用户以专家的水平解决复杂的问题 以瀑布模型为基本框架 在不同开发阶段引入了原型实现方法和面向对象技术以克服瀑布模型的缺点适应于特定领域软件和专家决策系统的开发 74 变换模型的优点 可以提高软件项目开发效率节省开发时间适应于面向对象的软件开发过程解决了代码结构经

温馨提示

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

评论

0/150

提交评论