第一部分-软件工程与过程(3软件过程模型).ppt_第1页
第一部分-软件工程与过程(3软件过程模型).ppt_第2页
第一部分-软件工程与过程(3软件过程模型).ppt_第3页
第一部分-软件工程与过程(3软件过程模型).ppt_第4页
第一部分-软件工程与过程(3软件过程模型).ppt_第5页
免费预览已结束,剩余42页可下载查看

下载本文档

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

文档简介

软件工程方法与实践 机械工业出版社 高等院校计算机课程案例教程系列 窦万峰编著 主讲 李淑sz013 1 现代软件工程 国家示范性软件学院系列教材 张家浩 东南大学机械工业出版社2009 12 软件工程 理论与实践许家珆曾翎彭德中编著高等教育出版社2004 73 软件工程 实践者的研究方法 美 RogerS Pressman著郑人杰等译机械工业出版社2008 64 SoftwareEngineering 6thEditionSommerville I 影印版 机械工业出版社2003 4 主要参考书 总目录 第1章软件工程学概述 2学时 第2章软件过程 2学时 第3章软件过程模型 4学时 第4章案例研究 2学时 第5章软件需求分析过程 4学时 第6章结构化分析建模 4学时 第7章面向对象分析 6学时 第8章软件设计 4学时 第9章结构化设计方法 4学时 总目录 第10章面向对象设计 4学时 第11章软件实现 2学时 第12章软件测试 4学时 第13章软件维护 2学时 第14章软件项目管理 2学时 第15章软件项目估算 1学时 第16章软件项目计划与管理 1学时 第3章软件过程模型 3 1瀑布模型3 2增量模型3 3螺旋模型3 4协同开发模型3 5面向对象模型3 6面向方面的软件开发3 7实验要求及习题 在20世纪80年代之前 瀑布模型一直是惟一被广泛采用的生命周期模型 现在它仍然是软件工程中应用得最广泛的过程模型 它提供了软件开发的基本框架 传统软件工程方法学的软件过程 基本上可以用瀑布模型来描述 瀑布模型将软件生命周期划分为软件计划 需求分析和定义 软件设计 软件实现 软件测试 软件运行和维护这6个阶段 规定了它们自上而下 相互衔接的固定次序 如同瀑布流水逐级下落而得名 3 1瀑布模型 图3 1传统的瀑布模型 传统的瀑布模型有下述的几个特点 1 阶段间具有顺序性和依赖性2 推迟实现的观点3 质量保证的观点瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型 但是 瀑布模型是由文档驱动的 这个事实也是它的一个主要缺点 图3 2实际的带 反馈环 的瀑布模型 图3 3上下阶段间循环 图3 4具有维护阶段循环的软件生存期的瀑布模型 增量模型也称为渐增模型 使用增量模型开发软件时 把软件产品作为一系列的增量构件来设计 编码 集成和测试 每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成 第一个增量构件往往实现软件的基本需求 提供最核心的功能 第二个增量构件提供更完善的编辑和文档生成功能 第三个增量构件实现拼写和语法检查功能 能在较短时间内向用户提交可完成部分工作的产品 是增量模型的一个优点 3 2增量模型 增量方式包括 增量开发 以一定的时间间隔开发部分工作软件 增量提交 以一定的时间间隔增量方式向用户提交工作软件及相应文档增量模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征 故分为渐增模型和原型模型 渐增模型是瀑布模型的变种 有两类渐增模型 增量构造模型 在瀑布模型基础上 对一些阶段进行整体开发 对另一些阶段进行增量开发 演化提交模型 它在瀑布模型的基础上 所有阶段都进行增量开发 也就是说不仅是增量开发 也是增量提交 增量模型逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品 从而减少一个全新的软件可能给客户组织带来的冲击 但也存在以下缺陷 1 必须把软件的体系结构设计得便于按这种方式进行扩充 也就是说 软件体系结构必须是开放的 2 模型适应变更的灵活性优于瀑布模型 但容易退化为边做边改模型 使软件过程的控制失去整体性 从长远观点看 具有开放结构的软件拥有真正的优势 这样的软件的可维护性明显好于封闭结构的软件 图3 5增量构造模型1 增量模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征 图3 6增量构造模型2 图3 7风险更大的增量模型 所谓快速原型是快速建立起来的可以在计算机上运行的程序 它所能完成的功能往往是最终产品能完成的功能的一个子集 快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统 让用户在计算机上试用它 通过实践来了解目标系统的概貌 从图3 8可以看出 快速原型模型是不带反馈环的 这正是这种过程模型的主要优点 软件产品的开发基本上是线性顺序进行的 快速原型模型 图3 8快速原型模型 软件风险是任何软件开发项目中都普遍存在的实际问题 项目越大 软件越复杂 承担该项目所冒的风险也越大 软件风险在不同程度上损害软件开发过程和软件产品质量 在软件开发过程中必须及时识别和分析风险 并且采取适当措施以消除或减少风险的危害 对于大型软件 只开发一个原型往往达不到要求 故螺旋模型特别适合于大型复杂的系统 螺旋模型将瀑布模型和增量模型结合起来 并加入了风险分析 风险识别 风险分析 风险控制 3 3螺旋模型 图3 9完整的螺旋模型 每一个周期都包括需求定义 风险分析 工程实现和评审 螺旋模型有许多优点 1 有利于已有软件的重用 有助于把软件质量作为软件开发的一个重要目标 2 减少了过多测试或测试不足所带来的风险 3 维护只是模型的另一个周期 在维护和开发之间并没有本质区别 螺旋模型主要适用于内部开发的大规模软件项目 如果进行风险分析的费用接近整个项目的经费预算 则风险分析是不可行的 螺旋模型的主要优势在于 它是风险驱动的 但是 这也可能是它的一个弱点 协同开发模型 CollaborativeDevelopmentModel 简称CDM 有时也叫做协同工程 可以表示为一系列框架活动 软件工程动作和任务以及相应的状态 在某一特定时间 建模活动可能处于任何一种状态 协同开发模型定义了一系列事件 这些事件将触发软件工程活动 动作或任务的状态转换 3 4协同开发模型 图3 10协同开发模型 3 5喷泉模型 该模型是由B H Sollers和J M Edwards于1990年提出的一种面向对象开发模型 又称快速应用开发模型 RAD RapidApplicationDevelopmentModel 它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性 喷泉模型使开发过程具有迭代性和无间隙性 其特点如下 开发过程有分析 系统设计 软件设计和实现4个阶段 各阶段相互重叠 反映了软件过程并行性的特点 以分析为基础 4 反映了软件过程迭代性 强调增量开发 整个过程是一个迭代的逐步提炼的过程 3 6智能模型 IntelligentModel 也称为基于知识的软件开发模型 是知识工程与软件工程相结合的软件开发模型 图1 20智能模型 其主要特点是必须建立知识库 并将模型本身 软件工程知识 特定领域知识放入知识库 具体描述可以使用形式功能规约 也可以使用知识处理语言描述等 构件组装模型的特征 应用软件可用预先编好的 功能明确的产品部件定制而成 并可用不同版本的部件实现应用的扩展和更新 利用模块化方法 将复杂的难以维护的系统分解为互相独立 协同工作的部件 并努力使这些部件可反复重用 突破时间 空间及不同硬件设备的限制 利用客户和软件之间统一的接口实现跨平台的互操作 3 7构件组装模型 组件集成模型 构件组装模型的优点 构件组装模型导致了软件的复用 提高了软件开发的效率 面向对象技术是软件工程的构件组装模型的基础 构件可由一方定义其规格说明 被另一方实现 然后供给第三方使用 构件组装模型允许多个项目同时开发 降低了费用 提高了可维护性 可实现分步提交软件产品 构件组装模型的缺点 可重用性和软件高效性不易协调 缺乏通用的组装结构标准 而自定义的组装结构标准引入较大的风险 需要精干的有经验的分析和开发人员 一般的开发人员插不上手 客户的满意度低 3 8统一过程模型 统一过程 UnifiedProcess UP 是风险驱动的 基于用例技术的 以架构为中心的 迭代和增量的 可配置的软件开发流程 统一过程是一个软件开发过程 是一个通用的过程框架 可用于各类软件系统和应用领域 它重复一系列组成系统生命周期的循环 每次循环包括四个阶段 初始 细化 构造 移交每个阶段又进一步细分为多次迭代的过程 每次循环迭代会产生一个新的版本 预备循环 Iter 1 周期 处理工作流 反复 支持工作流 Iter 2 Iter n Iter n 1 Iter n 2 Iter m Iter m 1 管理环境 配置管理 详细化 提交 初始化 构造 RUP的时间轴被分解为四个顺序的阶段 分别是 初始阶段 Inception 细化阶段 Elaboration 构造阶段 Construction 交付阶段 Transition 每个阶段结束于一个主要的里程碑 MajorMilestones 每个阶段本质上是两个里程碑之间的时间跨度在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足 如果评估结果令人满意的话 可以允许项目进入下一个阶段 RUP的阶段目标 初始阶段的目标是为系统建立业务案例并确定项目的边界 细化阶段的目标是分析问题领域 建立健全的体系结构基础 编制项目计划 淘汰项目中最高风险的元素 构建阶段 所有剩余的构件和应用程序功能被开发并集成为产品 所有的功能被详细测试 交付阶段的重点是确保软件对最终用户是可用的 RUP的核心工作流 RUP中有6个核心过程工作流和3个核心支持工作流 尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段 但应注意迭代过程中的阶段是完全不同的 这些工作流在整个生命周期中一次又一次被访问 9个核心工作流在项目中轮流被使用 在每一次迭代中以不同的重点和强度重复 核心过程工作流 1 业务建模工作流为组织开发一个构想 并基于这个构想在业务用例模型和业务对象模型中定义组织的过程 角色和责任 2 需求工作流的目标是描述系统应该做什么 并使开发人员和用户就这一描述达成共识 3 分析和设计工作流将需求转化成未来系统的设计 为系统开发一个健壮的结构并调整设计使其与实现环境相匹配 优化其性能 4 实现工作流的目的包括以层次化的子系统形式定义代码的组织结构 以组件的形式 源文件 二进制文件 可执行文件 实现类和对象 将开发出的组件作为单元进行测试以及集成由单个开发者 或小组 所产生的结果 使其成为可执行的系统 5 测试工作流要验证对象间的交互作用 验证软件中所有组件的正确集成 检验所有的需求已被正确的实现 识别 提出缺陷并确认缺陷在软件部署之前被处理 6 部署工作流的目的是成功的生成版本并将软件分发给最终用户 核心支持工作流 1 配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物 管理演化系统中的多个变体 跟踪软件创建过程中的版本 2 软件项目管理工作流平衡各种可能产生冲突的目标 管理风险 克服各种约束并成功交付使用户满意的产品 3 环境工作流的目的是向软件开发组织提供软件开发环境 包括过程和工具 RUP模型的优点 提高了团队生产力 在迭代的开发过程 需求管理 基于组件的体系结构 可视化软件建模 验证软件质量及控制软件变更等方面 针对所有关键的开发活动为每个开发成员提供了必要的准则 模板和工具指导 并确保全体成员共享相同的知识基础 它建立了简洁和清晰的过程结构 为开发过程提供较大的通用性 RUP模型的缺点 RUP在理论上 是比较理想的 但在实际应用上 还需要更多的工具的支持和普及推广工作 3 9面向方面的软件开发 面向方面的软件开发 Aspect OrientedSoftwareDevelopment 简称AOSP 是一系列新兴技术 用以寻找软件系统中新的模块化特性 强调独立描述关注点 软件关注点就是客户需要的属性或者技术兴趣点 它一般体现在整个架构设计中 有些关注点涉及系统多个方面的功能 特性和信息 这些关注点通常称为横切关注点 方面需求 AspectualRequirement 定义了那些对整个软件体系结构产生影响的横切关注点 对等关注点 这种关注点是相互独立的 没有任何一个对等关注点比另一个更重要 如ATM的取款 转帐和存款等 扩展 extension 是在基础组件 base 之上定义的组件 它用来表示附加的服务或功能 如在图书馆系统中 当还书时发现该书已经超期 那么系统就要计算罚金 计算罚金功能就是还书的扩展 对等关注点 对等关注点 分离限制 扩展 对等关注点 分离限制 问题 缠绕 tangling 各个组件包含满足不同关注点的实现 也就是编码 如组件 房间 分散 Scattering 某个特定关注点的实现是分散在多个组件中 如 登记入住 分离扩展是一种使复杂问题易于理解的技术 关注点分离技术 关注点分离技术 ConcernSeparationTechnique 对关注点进行建模和结构化 用例技术 关注点合成机制 关注点合成机制 ConcernCompositionMechanism 将关注点合成发生在编译时 编译后 甚至是运行时 扩展相互分离 扩展相互分离Jacobson早在1986发表的论文 支持易于变化的实时系统的语言 术语 表示原有程序 扩展基础的术语existion 表示添加到existion的新功能的术语extensions 扩展 在编译或运行阶段 而非编码阶段 往existion中插入extensions 扩展 原有系统的源代码甚至二进制代码都与任何扩展之间保持了清晰性和无关性优点 扩展更为简单系统将更易于理解 序列变化器 项目管理 咨询顾问 系统分析 软件编码 软件测试 文档制作 客户服务 解决方案行销 教育培训 工程项目的组成 瀑布模型 最早期 最简单的时间分段迭代模型 对瀑布模型的改进 用在需求和设计阶段喷泉模型 OO方法 OOA与OOD融合增量

温馨提示

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

评论

0/150

提交评论