已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件工程学概述 1 第1章软件工程学概述 本章介绍了软件 软件危机 软件工程 软件生命周期以及软件过程 第1章软件工程学概述 2 本章目录 I 1 1软件1 1 1软件的分类1 1 1 1按用途分类1 1 1 2按规模分类1 1 1 3按工作方式分类1 1 1 4按服务对象分类1 1 1 5按使用频度分类1 1 1 6按失效的影响分类1 1 2软件的特征1 1 3软件的发展1 2软件危机1 2 1软件危机的定义1 2 2软件危机的表现1 2 3产生软件危机的原因1 2 4解决软件危机的途径 第1章软件工程学概述 3 本章目录 II 1 3软件工程1 3 1软件工程的定义1 3 2软件工程的本质特性1 3 3软件工程的基本原理1 3 4软件工程方法学1 3 4 1方法学的三要素1 3 4 2传统方法学1 3 4 3面向对象方法学1 4软件生命周期1 5软件过程1 5 1软件过程层次1 5 2软件过程特点 本章目录 III 1 5 3软件过程模型1 5 3 1瀑布模型1 5 3 2原型模型1 5 3 3快速应用开发模型1 5 3 4演化软件过程模型1 5 3 4 1增量模型1 5 3 4 2螺旋模型1 5 3 5喷泉模型1 5 3 6Rational统一过程1 5 4软件过程技术1 5 4 1重用技术1 5 4 2框架技术作业 第1章软件工程学概述 4 第1章软件工程学概述 5 1 1软件 软件是计算机系统中与硬件相互依存的另一部分 它是包括程序 数据及其相关文档的完整集合 程序是为实现设计的功能和性能要求而编写的指令序列 数据是使指令能够正常操纵信息的数据结构 文档是与程序开发 维护和使用有关的图文资料 第1章软件工程学概述 6 1 1 1软件的分类 软件的分类没有一个统一的严格的标准 通常针对不同角度可以对软件进行如下分类 按用途分类按规模分类按工作方式分类按服务对象分类按使用频度分类按失效的影响分类 第1章软件工程学概述 7 1 1 1 1按用途分类 I 1 系统软件就一般情况来说 系统软件是为其他软件服务的软件 系统软件与计算机硬件交互频繁 处理大量的确定或不确定的复杂数据 往往需要具有多用户支持 资源精细调度 并发操作管理 多种外部设备接口支持等项功能 2 实时软件管理 分析 控制现实世界中所发生的事件的软件称为实时软件 一般有数据采集 数据分析 输出控制等三方面的功能 实时软件需要保持一个现实任务可以接受的响应时间 即必须保证能够在严格限定的时间范围内对输入做出响应 第1章软件工程学概述 8 1 1 1 1按用途分类 II 3 商业管理软件商业信息处理是最大的软件应用领域 包括常规的数据处理软件和一些交互式的计算处理 如POS软件 软件 它的基本功能是将已有的数据重新构造 变换成一种可以辅助商业操作和管理决策的形式 在这个过程中 几乎都要涉及到对于大型数据库的访问 各类管理信息系统 MIS 企业资源计划 ERP 客户关系管理 CRM 等都是典型的商业管理软件 第1章软件工程学概述 9 1 1 1 1按用途分类 III 4 工程与科学计算软件此类软件的特征是要实现特定的 数值分析 算法 例如 离散傅立叶变换 有限元分析 演化计算等等 CAD CAM软件一般也可以归属到这一类型中来 5 嵌入式软件 驻留在专用智能产品的内存中 用于控制这些产品进行正常工作 完成很有限 很专业的功能的软件 例如各类智能检测仪表 数码相机 移动电话 微波炉等智能产品都必须在嵌入式软件的支持下才能正常工作 第1章软件工程学概述 10 1 1 1 1按用途分类 IV 6 人工智能软件利用非数值算法去解决复杂问题的软件 各类专家系统 模式识别软件 人工神经网络软件都属于人工智能软件 7 个人计算机软件文字处理系统 电子表格 游戏娱乐软件等等 第1章软件工程学概述 11 1 1 1 2按规模分类 第1章软件工程学概述 12 1 1 1 3按工作方式分类 1 实时处理软件在事件或数据产生时 立即予以处理 并及时反馈信号 控制需要监测和控制的过程的软件 2 分时软件允许多个联机用户同时使用计算机 系统把处理机时间轮流分配给各联机用户 使各用户都感到只是自己在使用计算机的软件 3 交互式软件能实现人机通信的软件 4 批处理软件最传统的工作方式 把一组输入作业或一批数据以成批处理的方式一次运行 按顺序逐个处理完的软件 第1章软件工程学概述 13 1 1 1 4按服务对象分类 1 项目软件也称定制软件 是受某个特定客户 或少数客户 的委托 由一个或多个软件开发机构在合同的约束下开发出来的软件 2 产品软件是由软件开发机构开发出来直接提供给市场 或是为千百个用户服务的软件 这是一些服务于多个目的及多个用户的软件 第1章软件工程学概述 14 1 1 1 5按使用频度分类 1 有些软件开发出来仅供一次使用 例如 人口普查软件 工业普查软件 由于若干年才进行一次普查 前些年开发的软件在若干年以后很难适用 2 有些统计资料或试验数据须按年度做统计分析 相应的软件每年运行一次 3 有些软件需要每天运行 对信息进行及时处理 例如 天气预报软件等 第1章软件工程学概述 15 1 1 1 6按失效的影响分类 工作在不同领域的软件 适应其不同的需要 在运行中对可靠性的要求也不同 1 有些软件如果在工作中出现故障 造成软件失效 可能给软件整个系统带来的影响不大 2 有些软件如果在工作中出现故障 造成软件失效 可能酿成灾难性的后果 例如 航空航天控制软件等 第1章软件工程学概述 16 1 1 2软件的特征 I 软件是逻辑的而不是物理的 具有与硬件完全不同的特征 1 软件是一种逻辑实体 具有抽象性 软件被保存在媒体介质上 无法直接看到软件的形态 具有明显的非可视特征 2 软件的生产与硬件不同 相同点 两者都能够通过良好的设计获得高质量的产品 不同点 硬件在批量制造过程中仍然可能引入质量问题 这种情况对于软件而言几乎不存在 软件的批量制造过程只是简单的拷贝 复制 软件的成本集中在开发过程上 而硬件生产的成本更多地表现在原材料消耗上 第1章软件工程学概述 17 1 1 2软件的特征 II 3 软件产品不会 磨损 硬件的故障多来自外在条件导致的 磨损 或 老化 而软件的故障无一例外的是在设计开发过程中留有隐患 硬件的故障可以通过简单的更换部件解决 而软件的故障必须通过全面的软件维护活动才有望克服 同时 不完善的维护活动又可能在软件中注入新的故障 导致软件质量的 退化 软件故障的修复要比硬件故障的修复复杂得多 因此 衡量软件产品质量的一个重要指标就是它的 可维护性 第1章软件工程学概述 18 1 1 2软件的特征 III 软件 硬件产品失效率曲线 如下图所示 硬件 软件 第1章软件工程学概述 19 1 1 3软件的发展 I 自从20世纪40年代第一台计算机问世以来 就有了 程序 的概念 可以认为它是软件的前身 软件的发展经历了以下三个阶段 20世纪50 60年代 程序设计阶段20世纪60 70年代 程序系统阶段20世纪70年代以后 软件工程阶段 第1章软件工程学概述 20 1 1 3软件的发展 II 计算机软件发展的三个阶段及其特点如下表 第1章软件工程学概述 21 1 1 3软件的发展 III 第1章软件工程学概述 22 1 2软件危机 随着软件数量的飞速增长 如何维护应用中的大量现有软件 已经成为计算机应用系统进一步发展的瓶颈 1968年 北大西洋公约组织的计算机科学家们在联邦德国召开的国际会议上讨论了软件危机问题 正是由于软件危机带来的严重问题 也是在这个会议上 提出了 软件工程 这个名词 导致了一门新的工程学科的正式诞生 第1章软件工程学概述 23 1 2 1软件危机的定义 定义 所谓软件危机 就是指在软件开发和软件维护过程中所存在的一系列严重问题 软件工程概念的提出 正是为了克复软件危机 第1章软件工程学概述 24 1 2 2软件危机的表现 I 具体地说 软件危机具有如下一些表现 1 软件开发没有真正的计划性 对软件开发进度和软件开发成本的估计常常很不准确 计划的制定带有很大的盲目因素 因此工期超出 成本失控的现象经常困扰着软件开发者 2 对于软件需求信息的获取常常不充分 软件产品往往不能真正地满足用户的实际需求 3 缺乏良好的软件质量评测手段 从而导致软件产品的质量常常得不到保证 4 对于软件的可理解性 可维护性认识不够 软件的可复用性 可维护性不如人意 第1章软件工程学概述 25 1 2 2软件危机的表现 II 5 软件开发过程没有实现 规范化 缺乏必要的文档资料或者文档资料不合格 不准确 难以进行专业维护 6 软件开发的人力成本持续上升 例如 美国在1995年的软件开发成本已经占到了计算机系统成本的90 计算机系统硬件 软件成本比例变化 如下图所示 第1章软件工程学概述 26 1 2 2软件危机的表现 III 7 缺乏自动化的软件开发技术 软件开发的生产率依然低下 远远满足不了急剧增长的软件需求 下图展示了 软件技术的发展落后于需求 的情况 第1章软件工程学概述 27 1 2 3产生软件危机的原因 I 产生软件危机的原因可以归纳为主 客观两个方面 客观原因 1 软件生产过程和产品都具有明显的 不可视 特征 结果 软件不同于硬件 其质量较难进行先期评价 对软件开发过程进行管理和控制也比较困难 解决 在软件工程的早期 制定详细的开发计划并且进行全程跟踪调控 对于所有的阶段产品和阶段工作进展进行技术审查和管理复审 可望在一定程度上克服 开发过程不可视 造成的消极影响 2 软件维护相对困难 原因 较硬件来说 软件维护过程不是简单地更换损坏部件那样容易 解决 利用足够的文档资料使不可视的产品可视化 有助于提升软件产品的可理解性和可维护性 第1章软件工程学概述 28 1 2 3产生软件危机的原因 II 主观原因在计算机系统发展的早期 软件开发主要基于软件开发人员的 个人能力 软件开发的 个体化 特点 主要表现为忽视软件需求分析的重要性 忽视软件的可理解性 文档不完备 轻视软件的可维护性 过分强调编码技巧等等方面 在对用户的需求没有清楚的认识时就仓促进行程序编写 最终必然会导致开发工作的失败 第1章软件工程学概述 29 1 2 4解决软件危机的途径 I 解决软件危机的途径可以从技术和管理两方面来考虑 从管理层面考虑注意推广和使用在实践中总结出来的开发软件的成功的技术和方法 注意积累软件开发过程中的经验数据财富 其手段包括 建立适合于本组织的软件工程规范 制定软件开发中各个工作环节的流程文件 工作指南和阶段工作产品模板 实施针对软件开发全过程的计划跟踪和品质管理活动 为每一项工程开发活动建立配置管理库 实施严格的产品基线管理并建立组织的软件过程数据库和软件财富库 为各类员工及时提供必要的培训 第1章软件工程学概述 30 1 2 4解决软件危机的途径 II 从技术角度考虑应当开发和使用更好的软件开发工具 提高软件开发效率和开发工作过程的规范化程度 常用的软件开发工具包括 统一建模语言 UML 各种配置管理工具缺陷管理工具自动测试工具计算机辅助软件工程 CASE 第1章软件工程学概述 31 1 3软件工程 1968年 北大西洋公约组织的计算机科学家在原联邦德国召开国际会议 首次提出 软件工程 这一术语 软件工程的基本思路 针对软件危机的严峻形势 把在其他工程领域中行之有效的一些工程学知识运用到软件开发过程中来 从管理和技术两个方面研究如何更好地开发和维护计算机软件 软件工程的核心思想 采用工程的概念 原理 技术和方法来开发和维护软件 把经过实践考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来 从而大大提高软件开发的成功率和生产率 简单地说 软件工程是指导软件开发和维护的工程学科 第1章软件工程学概述 32 1 3 1软件工程的定义 IEEE的综合定义 1 将系统化的 规范的 可度量的方法应用于软件的开发 运行和维护过程 即将工程化方法应用于软件开发与维护过程中 2 对上述方法的研究 其他定义 运用现代科学技术知识来设计并构造计算机程序及为开发 运行和维护这些程序所必需的相关文件资料 Boehm 软件工程是开发 运行 维护和修复软件的系统方法 IEEE于1983年 建立并使用完善的工程化原则 以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法 FritzBauer 1 3 2软件工程的本质特性 软件工程的本质特性包括 1 软件工程关注于大型程序的构造 2 软件工程的中心课题是控制复杂性 3 软件经常变化 4 开发软件的效率非常重要 5 和谐地合作是开发软件的关键 6 软件必须有效地支持它的用户 7 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品 第1章软件工程学概述 33 第1章软件工程学概述 34 1 3 3软件工程的基本原理 著名软件工程专家B W Boehm于1983年提出了软件工程的七项基本原理 1 用分阶段的生命周期计划严格管理软件工程过程 2 坚持在软件工程过程中进行阶段评审 3 实行严格的产品控制 4 采用现代的开发技术进行软件的设计与开发 5 工作结果应当是能够清楚地审查的 6 开发小组的人员应该 少而精 7 承认不断改进软件工程实践的必要性 这七条原则是互相独立的 缺一不可的 完备的最小集合 1 3 4软件工程方法学 概念 通常把软件生命周期全过程中使用的一整套技术方法的集合称为方法学 methodology 也称为泛型 paradigm 第1章软件工程学概述 35 第1章软件工程学概述 36 1 3 4 1方法学的三要素 软件工程方法学包括以下三个要素 方法为软件开发提供了 如何做某项工作 的技术指南 使得整个开发过程的每一种阶段任务都能够 有章可循 工具为软件工程方法提供了自动的或半自动的软件支撑环境 例如 计算机辅助软件工程 CASE 过程将软件工程的方法和工具综合起来以达到合理 及时地进行计算机软件开发的目的 软件工程过程可以被理解为软件工程的工艺路线 1 3 4 2传统方法学 传统方法学也称为生命周期方法学或结构化泛型 特点 1 传统方法学采用结构化技术 结构化分析 结构化设计和结构化实现 来完成软件开发的各项任务 并使用适当的软件工具或软件工程环境来支持结构化技术的应用 2 传统方法学把软件生命周期的全过程依次划分为若干个阶段 然后顺序地完成每个阶段的任务 第1章软件工程学概述 37 1 3 4 3面向对象方法学 传统方法学的不足 传统方法学要么面向行为 即对数据的操作 要么面向数据 还没有既面向数据又面向行为的结构化技术 面向对象方法学的特点 面向对象方法学是一种以数据为主线 把数据和对数据的操作紧密地结合起来的方法 面向对象方法学的四个要点 1 把对象 object 作为融合了数据及在数据上的操作行为的统一的软件结构 2 把所有对象都划分成类 class 3 按照父类 或称基类 与子类 或称派生类 的关系 把若干个相关类组成一个层次结构的系统 也称类等级 4 对象彼此间仅能通过发送消息相互联系 第1章软件工程学概述 38 第1章软件工程学概述 39 1 4软件生命周期 I 概念 软件产品从策划 定义 开发 使用与维护直到最后废弃所经历的整个时期称为软件的生命周期 软件生命周期分为以下三个阶段 1 软件定义 阶段主要进行软件目标的策划 可行性研究和软件的需求分析工作 通过和用户多次交流 在所要开发的软件必须 作什么 方面和用户达成一致 本阶段是提高软件质量 降低软件成本 保证开发进度的关键环节 2 软件开发 阶段主要对软件的体系架构 数据结构和主要算法进行设计和编码实现 对于编码结果 还要按照规范进行测试后 才能最终交付使用 统计数据表明 在典型的软件工程过程中 编码工作量大约只占软件开发全部工作量的15 20 第1章软件工程学概述 40 1 4软件生命周期 II 3 运行与维护 阶段原因 在软件运行过程中 分析和设计阶段的一些遗留缺陷可能会逐步暴露 运行环境的演变也会对运行中的软件提出变更要求 用户新需求的提出常常要求扩充现有软件的功能或者改进其性能 本在软件生命周期中占据的比例最大 针对不同的需求 维护工作一般可以分为纠错性维护 适应性维护 扩充性维护和预防性维护等不同类型 作为软件产品 还应当有一个完整的配置 应当包括完整 准确 翔实的文档资料 主要的文档包括 需求规格说明书 体系结构设计说明书 详细设计说明书 安装手册 操作手册 系统管理员手册 等 第1章软件工程学概述 41 1 4软件生命周期 III 值得注意的严重问题是 在软件开发的不同阶段进行修改所付出的代价是极其不同的 根据美国一些软件公司的统计资料 软件开发后期引入一个变动比在早期引入相同变动所需付出的代价高2 3个数量级 下图是 变更代价随时间变化的趋势示意 对该问题作了定性的描述 第1章软件工程学概述 42 1 4软件生命周期 IV 美国贝尔实验室对该问题统计得出了定量的结果 下图描述了 改正一个问题需要付出的代价 1 5软件过程 软件工程过程是开发或维护软件及其相关产品的一系列活动 软件工程过程是一个软件开发组织针对某一类软件产品为自己规定的工作步骤 它应当是科学的 合理的 否则必将影响到软件产品的质量 第1章软件工程学概述 43 软件工程 第2章软件工程过程模型 黄进 44 1 5 1软件过程层次 I 软件工程是一种层次化的技术 软件工程过程层次图 如下图所示 它包括四个层次 1 质量焦点软件工程必须以有组织的软件质量保证为基础 对质量的关注构成了软件工程的根基 软件工程 第2章软件工程过程模型 黄进 45 1 5 1软件过程层次 II 2 过程层软件工程的基层 定义了一组关键过程域 KPAs 目前比较流行的软件工程过程包括 RUP过程 极限 XP 过程 敏捷软件过程 AgileS P 等等 3 方法层涵盖了需求分析 设计 编程 测试 维护等各个环节 给出了完成这些任务在技术上应当 如何做 的方法 4 工具层对过程和方法提供支持 使得工程活动 管理活动得以自动 半自动的进行 目前广为使用的工具包括 数据库建模工具Erwin 面向对象的建模工具RationnalRose 配置管理工具 计算机辅助软件工程 CASE 等 软件工程 第2章软件工程过程模型 黄进 46 1 5 2软件过程特点 一个良好的软件工程过程应当具备如下特点 1 易理解性 2 可见性每个过程活动都以得到明确的结果而告终 保证过程的进展对外可见 3 可支持性容易得到CASE工具的支持 4 可接受性比较容易被软件工程师接受和使用 5 可靠性不会出现过程错误 或者出现的过程错误能够在产品出错之前被发现 6 健壮性不受意外发生问题的干扰 7 可维护性过程可以根据开发组织的需求的改变而改进 8 高效率从给出软件规格说明起 就能够较快地完成开发而交付使用 软件工程 第2章软件工程过程模型 黄进 47 1 5 3软件过程模型 I 概念 在一个具体的实际工程活动中 软件工程师必须设计 提炼出一个工程开发策略 用以覆盖软件过程中的基本阶段 确定所涉及的过程 方法 工具 这种策略常被称为 软件工程过程模型 从宏观上来看 所有的软件开发过程都可以看成是一个循环解决问题的过程 如下图 问题循环解决的各个阶段 所示 软件工程 第2章软件工程过程模型 黄进 48 1 5 3软件过程模型 II 循环解决问题的过程包括四个截然不同的阶段 状态描述表示了事物的当前状态 问题定义标识了要解决的特定问题 技术开发通过应用某些技术来解决问题 方案综述提交解决结果 如文档 程序 数据 新的商业功能 新产品 给那些从一开始就需要方案的人 软件工程 第2章软件工程过程模型 黄进 49 1 5 3软件过程模型 III 循环解决问题的过程可以应用于软件工程的多个不同开发级别 阶段 上 循环解决问题过程的每一个阶段又包含一个相同的循环解决问题的过程 如下图 问题循环解决阶段中的阶段 所示 软件工程 第2章软件工程过程模型 黄进 50 1 5 3软件过程模型 IV 想要清楚地划分循环解决问题的四个阶段的活动是很困难的 所有四个活动阶段在某个细节的级别上都是同时存在的 软件工程专家致力于将本质上无序的活动有序化 从而产生了很多软件过程模型 包括 瀑布模型原型模型快速应用开发模型演化软件过程模型增量模型螺旋模型喷泉模型Rational统一过程敏捷过程与极限编程微软过程 软件工程 第2章软件工程过程模型 黄进 51 1 5 3 1瀑布模型 I 线性顺序模型有时也称为 线性顺序模型 它表示了软件开发系统的 顺序的方法 如下图所示 特点 从系统级开始 随后是分析 设计 编码 测试和维护 每一步的工作都必须以前一阶段的输出为输入 这种特征会导致工作中发生 阻塞 状态 虽然瀑布模型支持带反馈的循环 但大多数使用者均把它视为是严格线性的 软件工程 第2章软件工程过程模型 黄进 52 1 5 3 1瀑布模型 II 优点 线性顺序模型是最早 也曾经是应用最广泛的软件工程过程模型 提供了一个模板 使得分析 设计 编码 测试与维护工作可以在该模板的指导下有序地展开 避免了软件开发 维护过程中的随意状态 缺点 不适应需求经常发生变更的环境 线性顺序模型能够允许迭代 但却是间接的迭代 用户往往难以在一开始就明确地提出所有的需求 使模型的第一步输入就得不到满足 某些项目组成员不得不等待组内其他成员先完成前驱任务才可能展开自己的工作 有时这种等待时间可能会超过实际花在工作上的时间 对于需求确定 变更相对较少的项目 线性顺序模型仍然是一种可以考虑采取的过程模型 软件工程 第2章软件工程过程模型 黄进 53 1 5 3 2原型模型 I 概念 在用户不能准确 全面地描述其需求 开发者不能确定所选用算法的有效性或人机交互界面的形式时 可以建立一个简化了的样品程序并使之运行 引导用户通过对样品运行情况的观察 进一步明确需求或验证算法的正确性 这种开发模式就称之为原型模型 原型模型 示意图如下图所示 软件工程 第2章软件工程过程模型 黄进 54 1 5 3 2原型模型 II 特点 在开发者和用户确定了软件的总体目标并标识出已知的需求后 进行快速设计并编码实现原型 快速设计和建造通常集中在用户可见的部分 如输入方式 输出界面 原型的建造是一个多次迭代的过程 原型的建造仅仅是为了定义需求 之后就必须被全部或部分抛弃 故又称为 抛弃原型模型 必须有快速开发工具可供使用 软件工程 第2章软件工程过程模型 黄进 55 1 5 3 3快速应用开发模型 I 快速应用开发 RAD 模型强调极端的开发周期 通过使用基于构件的建造方法达到快速开发的效果 RAD过程主要用于信息应用软件的开发 如下图 软件工程 第2章软件工程过程模型 黄进 56 1 5 3 3快速应用开发模型 II RAD包含如下五个开发阶段 1 业务建模业务活动中的信息流被模型化 此阶段说明什么信息驱动业务流程 生成什么信息 谁负责生成该信息 该信息流向何处 谁处理它等 2 数据建模业务建模阶段定义的一部分信息流被精化 形成一组支持该业务所需的数据对象 此阶段标识出每个数据对象的特征属性 定义这些对象之间的关系 3 处理建模数据建模阶段定义的数据对象变换成为要完成一项业务功能所需的信息流 此阶段创建处理描述以便增加 修改 删除或获取某个数据对象 软件工程 第2章软件工程过程模型 黄进 57 1 5 3 3快速应用开发模型 III 4 应用生成RAD过程不是采用传统的第三代程序设计语言来创建软件 而主要是复用已有的程序构件或是创建可复用的构件 在所有情况下 均使用自动化工具辅助软件建造 5 测试及反复RAD过程强调复用 许多构件是已经测试过的 减少了测试工作量 新创建构件 接口都必须测试到 采用RAD模型时 系统的每一个主要功能部件可以由一个单独的RAD工作组完成 最后再将所有的部件集成起来形成完整的软件 软件工程 第2章软件工程过程模型 黄进 58 1 5 3 3快速应用开发模型 IV 特点 RAD模型强调可复用程序构件的开发 支持多小组并行工作以缩短整体工期 缺点 如果一个系统难以被适当地模块化 构件的复用和建造就会出现问题 RAD模型依赖于构件复用 它不适用于技术风险很高的 要采用很多新技术的项目 对于具有高性能需求的软件 如果这种高性能必须通过对接口的反复调整才能实现 那么 采用RAD模型也就有可能失败 软件工程 第2章软件工程过程模型 黄进 59 1 5 3 4演化软件过程模型 演化软件过程模型的基本思想是 分期完成 分步提交 可以先提交一个有限功能的版本 再逐步地使其完善 演化软件过程模型的主要特点是利用 迭代 方法 使工程师们渐进地开发 生产出逐步完善的软件版本 在商业软件开发实践中 演化模型日益得到广泛的应用 演化软件过程模型可细分为以下两种模型 增量模型螺旋模型 软件工程 第2章软件工程过程模型 黄进 60 1 5 3 4 1增量模型 I 增量模型实际上是一个随着日程 时间的进展而交错的线性序列集合 如下图所示 软件工程 第2章软件工程过程模型 黄进 61 1 5 3 4 1增量模型 II 特点 每一个线性序列产生一个软件的可发布的 增量 所有的增量都能够结合到原型模型中去 第一个增量模型往往是核心部分的产品 它实现了软件的基本需求 核心产品经用户使用或复审评估后得出的结果成为下一个增量开发的依据 每一个增量在前一个增量发布后迭代地进行 直到产生最终完善的产品 每一个增量发布为一个可操作的产品 称为 产品扩充迭代 其早期产品是最终产品的可拆卸版本 每一个版本都能够提供给用户实际使用 这也是它与原型模型不同之处 增量式的工程开发必须取得用户的全面理解与支持 否则难以成功 软件工程 第2章软件工程过程模型 黄进 62 1 5 3 4 2螺旋模型 I 螺旋模型被划分为若干个框架活动 也称框架任务区域 如下图所示 软件工程 第2章软件工程过程模型 黄进 63 1 5 3 4 2螺旋模型 II 框架活动包括 1 用户通信建立开发者和用户之间有效通信所需要的任务 2 计划定义资源 进度和其他项目相关信息所需要的任务 3 风险分析评估技术的风险及管理的风险所需要的任务 4 工程建立应用的一个或多个表示所需要的任务 5 建造及发布建造 测试 安装和提供用户支持所需要的任务 6 用户评估基于在工程阶段产生的或在安装阶段实现的软件表示的评估 是获得用户反馈所必需的任务 1 5 3 4 2螺旋模型 III 第1章软件工程学概述 64 软件工程 第2章软件工程过程模型 黄进 65 1 5 3 4 2螺旋模型 IV 特点 软件开发是一系列的增量发布 并不要求每一个增量都是可以运行的程序 在早期的迭代中 发布的增量可以是一个纸上的模型或原型 在以后的迭代中产生更加完善的版本 这也是它与增量模型不同之处 每一个框架活动 任务区域 都需要应用诸如软件配置管理 软件品质保证等保护性活动 软件工程项目组按照顺时针方向沿螺旋移动 从核心开始 第一圈可能产生软件规格说明书 第二圈可能开发出一个原型 随后可能是软件更完善的版本 需要用户的充分理解和积极参与 需要使用专门的风险评估技术以便识别风险 防范风险 特别适合于大型系统及软件的开发 1 5 3 5喷泉模型 喷泉模型是典型的面向对象的软件过程模型之一 1 喷泉 这个词体现了面向对象软件开发过程迭代和无缝的特性 2 圆圈代表不同阶段 3 圆圈相互重叠表示两个活动之间存在交迭 4 一个阶段内的向下箭头表示该阶段内的迭代 或求精 5 较小的圆圈代表维护 象征着采用面向对象范型之后维护时间缩短了 6 中心垂线是一个线性过程 或采用快速原型模型 代表总目标 第1章软件工程学概述 66 1 5 3 6Rational统一过程 I Rational统一过程 RationalUnifiedProcess RUP 是由Rational软件公司推出的一种完整而且完美的软件过程 RUP总结了经过多年商业化验证的6条最有效的被称为 最佳实践 的软件开发经验 1 迭代式开发 2 管理需求 3 使用基于构件的体系结构 4 可视化建模 5 验证软件质量 6 控制软件变更 第1章软件工程学概述 67 1 5 3 6Rational统一过程 II RUP软件开发生命周期是一个二维的生命周期模型 第1章软件工程学概述 68 1 5 3 6Rational统一过程 III 注意 1 纵轴代表九个核心工作流 1 业务建模 深入了解使用目标系统的机构及其商业运作 评估目标系统对使用它的机构的影响 2 需求 捕获客户的需求 并且使开发人员和用户达成对需求描述的共识 3 分析与设计 把需求分析的结果转化成分析模型和设计模型 4 实现 把设计模型转换成实现结果 5 测试 检查各个子系统的交互与集成 验证所有需求是否都能被正确地实现了 识别 确认缺陷并确保在软件部署之前消除缺陷 6 部署 成功地生成目标系统的可运行的版本 并把软件移交给最终用户 7 配置与变更管理 跟踪并维护在软件开发过程中产生的所有制品的完整性和一致性 8 项目管理 提供项目管理框架 为软件开发项目制定计划 人员配备 执行和监控等方面的实用准则 并为风险管理提供框架 9 环境 向软件开发机构提供软件开发环境 包括过程管理和工具支持 第1章软件工程学概述 69 核心过程工作流程 核心支持工作流程 1 5 3 6Rational统一过程 IV 2 横轴代表时间 包括四个阶段 1 初始阶段 建立业务模型 定义最终产品视图 并且确定项目的范围 2 精化阶段 设计并确定系统的体系结构 制定项目计划 确定资源需求 3 构建阶段 开发出所有构建和应用程序 把它们集成为客户需要的产品 并且详尽地测试所有功能 4 移交阶段 把开发出的产品提交给用户使用 3 整个过程采用迭代式开发 1 每次迭代只考虑系统的一部分需求 针对这部分需求进行分析 设计 实现 测试盒部署等工作 2 每次迭代都是在系统已完成部分的基础上进行的 每次给系统增加一些新的功能 如此循环往复地进行下去 直至完成最终项目 3 RUP重复一系列组成软件生命周期的循环 每次循环都经历一个完整的生命周期 每次循环结束都向用户交付产品的一个可运行的版本 4 每个阶段又进一步细分为一次或多次迭代过程 在生命周期中一次次地轮流访问核心工作流程 但是 不同的迭代过程以不同的工作重点和强度对核心工作流程进行访问 第1章软件工程学概述 70 软件工程 第2章软件工程过程模型 黄进 71 1 5 4软件过程技术 软件工程过程采用过程管理工具来帮助组织 分析软件过程 协调 组织工作任务 控制和监管进度以及管理技术质量 这种方式称为计算机辅助软件工程 常用的过程技术工具包括 配置管理工具进行配置管理和缺陷管理 自动测试工具进行测试 统一建模语言UML进行对象建模 分析与设计 Project软件制订和监测项目计划及其进展 MSVisio软件制订流程图 ER图等 第四代技术通过开发者在较高的层次上说明软件的某些特征 之后工具就能够自动的根据说明生成源代码等 软件工程 第2章软件工程过程模型 黄进 72 1 5 4 1重用技术 I 软件重用是指在两次或多次的软件开发过程中重复使用相同或相似软件元素的过程 软件元素又称为软部件 包括 程序代码测试用例设计文档设计过程需求分析文档领域知识 软件工程 第2章软件工程过程模型 黄进 73 1 5 4 1重用技术 II 知识重用使我们能够高效率的开发 维护一个又一个的软件项目 方法重用帮助我们有章可循的解决各类工程问题 成分重用使我们在需求分析 系统设计和编码事项的过程中能够事半功倍 它包括以下三个层次 分析结果重用在大部或局部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《仪器分析实验》大学教材笔记
- 为支撑引领新型工业化蓄势赋能
- 高中化学知识点归纳与分类突破:综合实验设计与评价
- 2024年高考化学二轮复习:离子反应(练习)
- 公司周年方案策划5篇
- 暑假实习小结(4篇)
- 开学安全第一课心得体会300字(31篇)
- 广告公司劳务合同范例9篇
- 心理健康教育培训心得体会
- 庆祝国庆节75周年领导致辞(3篇)
- GB/T 44536-2024CVD陶瓷涂层热膨胀系数和残余应力试验方法
- 2024-2025学年七年级英语上学期期中试卷(沪教五四制2024)(含答案)
- 《短视频拍摄与制作》课件-3短视频中期拍摄
- 关注青少年心理健康孩子的人格培养与家庭教育
- 个案面谈技巧(2016.6.15)
- 【医学】crrt规范化治疗
- 配电工程施工组织设计(完整版)
- 中国联通某分公司网格化管理工作指导意见
- 充电桩施工方案
- 煤矿井下主变电所安装安全技术措施
- 《呼吸科肺部查体》PPT课件.ppt
评论
0/150
提交评论