软件开发生命周期与统一建模语言UML 01 软件工程概述.ppt_第1页
软件开发生命周期与统一建模语言UML 01 软件工程概述.ppt_第2页
软件开发生命周期与统一建模语言UML 01 软件工程概述.ppt_第3页
软件开发生命周期与统一建模语言UML 01 软件工程概述.ppt_第4页
软件开发生命周期与统一建模语言UML 01 软件工程概述.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

软件开发生命周期与统一建模语言UML 软件开发生命周期与统一建模语言 结构化程序设计与面向对象程序设计 2 静态模型 5 软件开发生命周期与统一建模语言UML 软件开发生命周期与统一建模语言 软件开发生命周期与统一建模语言UML 第1章软件工程概述 1 1用例概述1 1 1软件及其特点1 1 2软件危机1 1 3软件工程的定义1 1 4软件工程的基本原理1 2软件开发生命周期1 3过程模型1 3 1常见的生命周期模型1 3 2生命周期模型的应用1 4软件工程方法学 软件开发生命周期与统一建模语言UML 第1章软件工程概述 教学要求理解 软件和软件工程的概念 软件开发生命周期 掌握 软件过程模型运用的原则 软件开发生命周期与统一建模语言UML 软件开发是一个专业领域的人在为另一个专业领域的人服务在软件开发过程中 需求可能经常在变 每次需求变化会带来软件系统的开发延迟 甚至出现变更反复 被推倒了的内容又要重新确立在软件没有最终交付时 用户如何了解开发进展情况系统难以维护和扩展 经常重复开发类似的功能项目经常延期 实际成本往往远远高于估计成本开发团队内部使用了不同的技术 在交流时常常有障碍 如何应对软件开发过程中的种种不确定因素 更有效地开发与维护软件 1 1软件 软件危机和软件工程的定义 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 软件与硬件 软件开发生命周期与统一建模语言UML 软件的特点软件是脑力劳动的产品 但它不同于追求个性化的艺术作品 软件是产品 但它又不同于工业化生产得到的有形产品 1 1软件 软件危机和软件工程的定义 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 什么是软件软件 程序 数据 文档数据包括初始化数据 测试数据 研发数据 运行数据 维护数据 以及软件企业积累的项目工程数据和项目管理数据 文档是开发 使用和维护程序所需要的图文资料 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题如何开发软件 以满足对软件日益增长的需求如何维护数量不断增加的已有软件 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 消除软件危机的途径正确认识软件 软件 程序 数据 文档在软件开发的各个阶段都要有完备的文档 加强管理 软件开发应该是一种组织良好 管理严密 各类人员协同配合 共同完成的工程项目 应该推广使用在实践中总结出来的开发软件的成功的技术和方法 使用软件工具 在软件开发的每个阶段都有许多烦琐重复的工作需要做 在适当的软件工具辅助下 开发人员可以把这类工作做得既快又好 总之 为了解决软件危机 既要有技术措施 方法和工具 又要有必要的组织管理措施 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门学科 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 软件工程的定义软件工程 管理 技术软件工程的目标 软件开发生命周期与统一建模语言UML 1 1软件 软件危机和软件工程的定义 软件工程的基本原理 1 用分阶段的生命周期计划严格管理 统计发现 不成功的软件项目中有一半左右是由于计划不周造成的 因此 有必要制定完善的计划 分阶段地进行管理和控制 2 坚持进行阶段评审 软件中的大部分错误是在编码之前造成的 错误发现与改正得越晚 所需付出的代价也就越高 如图1 4所示 因此 在每个阶段都进行严格的评审以尽早发现在软件开发过程中所犯的错误 是一条必须遵循的重要原则 早中晚低中高变化出现的时期代价 3 实行严格的产品控制 软件开发过程中 需求的变更往往需要付出较高的代价 但这种改变又是难以避免的 因此不能硬性禁止客户提出改变需求的要求 而要依靠科学的产品控制技术来顺应这种要求 按照严格的规程进行变更控制 4 采用现代程序设计技术 如 清晰第一 效率第二 的程序风格 面向对象的分析方法 各种框架技术的使用 模式的应用 软件建模方法的运用等 实践表明 采用先进的技术不仅可以提高软件开发和维护的效率 而且可以提高软件产品的质量 5 结果应能清楚地审查 软件是脑力劳动的逻辑产品 应该根据软件开发项目的总目标及完成期限规定开发组织的责任和产品标准 制定出完备的文档 从而提高其 可见性 6 开发小组的人员应该少而精 7 不断改进软件工程实践的经验和技术 软件开发生命周期与统一建模语言UML 改正同一错误付出的代价随时间变化的趋势 早中晚 低中高 变化出现的时期 代价 1 1软件 软件危机和软件工程的定义 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 如何盖一栋大楼 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 1 问题定义 要解决的问题是什么 2 可行性论证 有行得通的解决办法吗 3 需求分析 系统必须做什么 4 总体设计 概括地说 怎样做 5 详细设计 具体怎样做 6 编码和单元测试7 综合测试8 运行 维护 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 1 问题定义 要解决的问题是什么 通过对客户的访问调查 系统分析员扼要地写出关于问题性质 工程目标和工程规模的书面报告 经过讨论和必要的修改之后这份报告应该得到客户的确认 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 2 可行性论证及软件计划 有行得通的解决办法吗 目的 用最小的代价在尽可能短的时间内确定该软件项目是否能够开发 是否值得去开发 主要任务 了解客户的要求及现实环境 从技术 经济和社会因素三方面研究并论证本软件项目的可行性 编写可行性研究报告 制定初步的项目开发计划 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 可行性论证及软件计划 续 具体步骤 1 确定项目规模和目标 2 研究正在运行的系统 3 建立新系统的高层逻辑模型 4 导出和评价各种方案 5 推荐可行的方案 6 编写可行性研究报告 系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程 研究问题的范围 探索这个问题是否值得去解决 是否有可行的解决办法 如果可行 制定出初步的开发计划 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 3 需求分析 系统必须做什么 确定目标系统必须具备哪些功能 软件开发是一个专业领域的人在为另一个专业领域的人做事 用户了解他们所面对的问题 知道必须做什么 但是通常不能完整准确地表达出他们的要求 更不知道怎样利用计算机解决他们的问题 软件开发人员知道怎样用软件实现人们的要求 但是对特定用户的具体要求并不完全清楚 因此 系统分析员在需求分析阶段必须和用户密切配合 充分交流信息 以得出用户认可的各种模型 常用的有用例模型 活动图 顺序图 类图 数据流图 层次图等 需求分析阶段的两个任务是捕获需求和分析整理需求 需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础 因此必须准确完整地体现用户的要求 这个阶段的一项重要任务是 用正式文档准确地记录对目标系统的需求 即规格说明书 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 4 总体设计 概括地说 应该怎样做 基本任务 1 设计出实现目标系统的几种可能的方案 软件工程师用适当的表达工具描述每种方案 分析每种方案的优缺点 并在充分权衡各种方案的利弊的基础上推荐一个最佳方案 此外 还应该制定出实现最佳方案的详细计划 2 设计软件体系结构 通常指划分模块 确定模块的功能及其相互之间的调用关系 确定模块间的接口等 3 数据库设计 4 编写概要设计文档 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 5 详细设计 具体怎样做 总体设计阶段以比较抽象概括的方式提出了解决问题的办法 详细设计阶段的任务就是把解法具体化 这个阶段的任务不是编写程序 而是设计出程序的详细规格说明 这种规格说明应该包含必要的细节 程序员可以根据它们写出实际的程序代码 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 6 编码和单元测试关键任务 写出正确的 容易理解 容易维护的程序模块 程序员应该根据目标系统的性质和实际环境选取一种适当的程序设计语言 把详细设计的结果翻译成用选定的语言书写的程序 并且仔细测试编写出的每一个模块 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 7 综合测试软件测试的目的是希望以最低代价尽可能多地找出软件中潜在的各种错误和缺陷 软件测试并不是在软件交付之后才开始 而应尽早地 不断地进行 贯穿于软件定义与开发的整个期间 例如 在需求分析和设计阶段就要尽可能地考虑到如何提高软件的可测试性 软件开发生命周期与统一建模语言UML 1 2软件开发生命周期 8 运行 维护这一阶段的关键任务是 通过各种必要的维护活动使系统持久地满足用户的需要 软件开发生命周期与统一建模语言UML 1 3软件过程模型 软件生命周期模型 1 瀑布模型核心思想是阶段性的评审和验证 每一阶段结束时都要给出完整的文档 缺点是该模型缺乏灵活性 后一阶段出现的问题需要通过前一阶段的重新确认来解决 软件开发生命周期与统一建模语言UML 2 原型模型快速设计软件中对用户可见部分的表示 构造原型 由用户评估 逐步调整原型 使之满足用户需要 其优点是开发者和用户可以充分沟通 开发过程也是学习过程 可以低风险开发柔性较大的计算机系统 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 3 螺旋模型把软件开发过程组成为一个逐步细化的螺旋周期 每经历一个周期 系统就得到进一步的细化和完善 整个模型紧密围绕开发中的风险分析 推动软件设计向深层扩展和求精 该模型要求开发人员与用户能经常直接进行交流 通常用来指导内部发行的大型软件项目的开发 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 4 增量模型一种渐近式的模型第一个增量构件往往实现软件的基本需求 提供最核心的功能优点 能在较短的时间内 向用户提交可完成部分工作的产品 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 5 迭代模型一种渐近式的模型 迭代模型与增量模型假设现在要开发A B C D四个大的业务功能 每个功能都需要开发两周的时间 对于增量方法而言可以将四个功能分为两次增量来完成 第一个增量完成A B功能 第二次增量完成C D功能 而对于迭代开发来讲则是分两次迭代来开发 第一次迭代完成A B C D四个基本业务功能 但不含复杂的业务逻辑 而第二次迭代再逐渐细化补充完整相关的业务逻辑 就对风险的消除上 增量和迭代模型都能够很好地控制前期的风险 但迭代模型在这方面更有优势 迭代模型可以更多地从总体方面思考系统问题 一开始就给出相对完善的框架或原型 后期的每次迭代都是针对上次迭代的逐步精化 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 6 快速原型模型快速建立起可以在计算机上运行的程序 它所完成的功能往往是最终产品功能的一个子集 通过让用户试用 收集反馈意见 从而获取准确的需求 这是一种很好的启发式方法 可以快速地挖掘用户需求并达成需求理解上的一致 当用户没有信息系统的使用经验或系统分析员没有过多的需求分析和挖掘经验的时候 这种方法将非常有效 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 7 喷泉模型认为软件生命周期的各个阶段是相互重叠和多次反复的 就像水喷上去又可以落下来 水既可以落在中间 也可以落在最底部 整个开发过程中都使用统一的概念 对象 进行分析 使用统一的概念和符号表示分析设计过程 各阶段间没有明显的边界 即 无缝 衔接 因此各开发步骤可以多次反复迭代 逐步深化 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 8 MSF过程模型吸收了瀑布模型的里程碑和螺旋模型的反复迭代的思想分为5个阶段每一阶段结束时都有明确的交付成果 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 生命周期模型的应用总体上说面向对象的程序设计采用的是喷泉模型 但局部可以结合其它模型 在前期需求明确 资料完整的情况下尽量采用瀑布模型 在用户无信息系统使用经验 需求分析人员技能不足情况下要借助原型 在不确定性因素很多 很多东西前面无法计划的情况下尽量采用增量模型和螺旋模型 在需求不稳定情况下尽量采用增量迭代模型 在资金和成本无法一次到位情况下可以采用增量模型 将产品分多个版本进行发布 增量 迭代和原型可以综合使用 但每一次增量或迭代都必须有明确的交付内容 总之 每个软件开发组织都应该根据所要开发的软件特点及本组织的特点 选择适合于自己的软件过程模型 把各种生命周期模型的特性有机地结合起来 充分利用它们的优点 回避缺陷 1 3软件过程模型 软件生命周期模型 软件开发生命周期与统一建模语言UML 1 4软件工程方法学 研究如何通过分解和抽象 将复杂问题转化成一系列可以理解和实现的简单问题 软件开发生命周期与统一建模语言UML 面向过程的程序 算法 数据结构 面向对象的程序 对象 类 继承 消息通信 面向构件的程序 构件 架构 形式化方法是建立在严格的数学基础上 以逻辑推理为出发点 具有精确数学语义的开发方

温馨提示

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

评论

0/150

提交评论