电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《软件工程与项目管理》第1章软件工程概述(精)

78页
  • 卖家[上传人]:xmg****18
  • 文档编号:120311886
  • 上传时间:2020-02-06
  • 文档格式:PPT
  • 文档大小:1.27MB
  • / 78 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、软件工程与项目管理 学时 40学时 第1章软件工程概述 掌握 软件危机 软件工程 软件生命周期 软件开发方法 软件开发模型 软件工具及支撑环境的相关概念 1 1软件危机 1 1 1软件 1 软件的定义 软件是计算机系统中与硬件相互依存的一部分 它是包括程序 数据及相关文档的完整集合 其中 程序是指按事先设计的功能和性能要求执行的指令序列 数据是指使程序能正常操纵信息的数据结构 文档是指与程序开发 维护和使用有关的图文资料 2 软件的分类 1 按软件功能系统软件支撑软件应用软件 2 按软件规模微型软件小型软件中型软件大型软件甚大型软件极大型软件 3 软件的特点 软件是一种逻辑实体 而不是物理实体 软件的生产过程是开发 而不是制造 软件不存在磨损 老化现象 软件的开发和运行常常受到计算机系统的限制 软件是复杂的 美国宇航局的软件系统一览表 图1 1计算机系统中软硬件成本所占比例的变化 1 1 2软件生产的发展 程序设计时期 约为20世纪50 60年代 程序系统时期 约为20世纪60 70年代 软件工程时期 20世纪70年代以后 1 1 3软件开发面临的主要问题 西方计算机科学家在20世纪6

      2、0 70年代总结了软件开发和维护过程中遇到的一系列严重问题 表现为以下几方面 对软件开发成本和进度的估计常常不准确 开发成本超出预算 实际进度相比预定计划一再拖延 用户对 已完成 系统不满意的现象时有发生 软件质量常常不可靠 缺陷 和 补丁 不断 软件的可维护程度非常低 软件通常没有相应的文档资料 软件成本不断提高 软件开发生产率的提高赶不上硬件的发展和人们需求的增长 1 1 4软件危机的提出 1968年 北大西洋公约组织的计算机科学家在联邦德国召开国际会议 第一次讨论了 软件危机 问题 软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 这类问题不仅仅是 不能正常运行的软件 才具有的 实际上几乎所有软件都不同程度地存在这类问题 概括来说 软件危机包含两方面的问题 一是如何开发软件 以满足不断增长 日趋复杂的需求 二是如何维护规模不断膨胀的软件产品 这次会议同时提出了解决 软件危机 的途径 即采用工程化的思想来管理软件开发的过程 并正式提出 软件工程 一词 从此一门新兴的工程学科 软件工程 应运而生 1 2软件工程 1 2 1软件工程的定义 软件工程是导软件开发和维护的

      3、一门工程学科 它采用工程的概念 原理 技术和方法 把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来 用于开发和维护软件 软件工程是一门综合性的交叉学科 它涉及哲学 计算机科学 工程科学 管理科学 数学及应用领域知识 2 软件的分类 1 按软件功能系统软件支撑软件应用软件 1 2 2软件工程的内容和目标 软件工程的三个要素软件工程方法软件工具软件工程的过程 软件工程的目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作 及时交付使用 1 2 3软件工程的作用 1 从软件企业的专业人才来讲 其作用体现在以下几个方面 高层管理人员利用软件工程的理论和方法来管理整个公司 中层项目经理和软件工程师 利用软件工程的理论和方法 来管理项目组的软件开发 软件蓝领工人利用软件工程的理论和方法来实现软件的开发 软件营销人员利用软件工程的理论和方法与客户进行沟通 以赢得客户的信任 软件实施和维护人员 利用软件工程的理论和方法 来实现软件的功能 性能与接口的实施和维护 软件售前人员利用软件工程的理论和方法 来提高投标成功的把

      4、握 2 从软件项目管理来讲 其作用体现在 在规定的时间内按照规定的成本实现符合预期的质量目标 软件的功能 性能和接口达到需求说明书的要求 的软件 3 从软件企业本身来讲 其作用体现在 持续地规范软件开发过程和软件管理过程 不断地优化软件组织的个人素质和集体素质 从而逐渐增强软件企业的市场竞争实力 4 从软件企业发展进程来讲 其作用体现在 克服软件危机 控制软件开发进度 节约开发成本 提高软件质量 2 软件的分类 1 按软件功能系统软件支撑软件应用软件 1 2 4软件工程的基本原则 用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性 1 3软件生命周期 1 3 1软件生命周期的定义 可行性分析需求分析概要设计详细设计编码测试维护 可行性分析在项目进入具体开发之前 首先需要进行的步骤是可行性分析 这一步骤必须回答的问题是 将要开发的软件系统是做什么的 在经济上 技术上和操作上是否可行 具体来说 需要考虑的问题有 该软件项目的性质是什么 它是数据处理问题还是实时控制问题 它是科学计算问

      5、题还是人工智能问题等 以及该问题是否有行得通的解决办法 若有解决问题的办法 则需要多少费用 多少资源 包括硬件 软件和人员 多少时间 需求分析这一阶段主要要解决的是系统 做什么 的问题 用户了解他们所面对的问题 知道必须做什么 但是通常不能完整地 准确地表达出来 也不知道怎样用计算机解决他们的问题 而软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求 但是 对用户的具体业务和需求不完全清楚 这是需求分析阶段的困难所在 概要设计这一阶段主要解决的是系统 怎么做 的问题 具体来说 开发人员要把确定的各项功能需求转换成相应的软件体系结构 在该结构中 每个成分都是意义明确的模块 即每个模块都和某些功能需求相对应 因此 概要设计的核心内容就是设计软件的结构 弄清该结构由哪些模块构成 每个模块的功能是什么 这些模块之间的层次结构是怎样的 同时 还要设计该应用系统的总体数据结构和数据库结构 即应用系统要存储什么数据 这些数据是什么样的结构 它们之间有什么关系等 可行性分析在项目进入具体开发之前 首先需要进行的步骤是可行性分析 这一步骤必须回答的问题是 将要开发的软件系统是做什么的 在经济上 技

      6、术上和操作上是否可行 具体来说 需要考虑的问题有 该软件项目的性质是什么 它是数据处理问题还是实时控制问题 它是科学计算问题还是人工智能问题等 以及该问题是否有行得通的解决办法 若有解决问题的办法 则需要多少费用 多少资源 包括硬件 软件和人员 多少时间 详细设计详细设计阶段就是对每个模块要完成的功能具体描述为精确的 结构化的过程描述 即该模块的控制结构是怎样的 先做什么 后做什么 有什么样的条件判定 有哪些重复处理等 然后用相应的工具把这些控制结构表示出来 编码编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码 即用种某特定程序设计语言编写的 源程序清单 编写出的程序应该结构好 清晰易读 并与设计一致 测试软件测试阶段的主要任务是发现和排除错误 也就是对软件系统进行从上到下的全面的测试和检验 看它是否符合软件总体设计方案规定的功能和要求 测试分为模块测试 集成测试 确认测试 模块测试是查找各模块在功能和结构上存在的问题 集成测试是将各模块按一定顺序组装起来进行的测试 主要是查找各模块之间的接口问题 确认测试是按需求说明书对软件的功能逐项进行测试 以确定软件功能是否符合用户的

      7、需求 开发的软件是否合格 能否交付用户使用 维护软件维护是软件生存周期中时间最长的阶段 己交付的软件正式投入使用后便进入了软件维护阶段 它可以持续几年甚至几十年 在软件运行过程中 可能由于各方面的原因需要对其进行修改 如运行中发现了软件隐含的错误而需要修改 为了适应变化了的软件运行环境而需要做适当地变更 也可能是因为用户业务发生变化而需要扩充和增强软件的功能等 1 4软件开发方法 1 4 1结构化开发方法 1978年 E Yourdon和L L Constan tine提出SASD StructuredAnalysisandStructuredDesign 方法 也可称为面向功能的软件开发方法 或面向数据流的软件开发方法结构化开发方法的指导思想是自顶向下 逐步求精 基本原则是功能分解与抽象 它由结构化分析 结构化设计和结构化程序设计构成 1 4 2面向数据结构的开发方法 以数据结构为驱动的以1975年M A Jackson提出的Jackson方法和1974年J D Warnier提出的Warnier方法最有代表性主要思想是 一个问题的数据结构与处理该问题数据结构的控制结构有着惊人的相似

      8、之处 根据这一思想 从目标系统的输入 输出数据结构入手 导出程序框架结构 再补充其他细节 就可以得到完整的程序结构图对输入 输出数据结构明确的中小型系统特别有效 1 4 3面向对象的开发方法 面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题 客观世界是由许多具体的事物 事件 概念和规则组成的 这些均可看成对象面向对象OO Object Oriented 技术在需求分析 可维护性和可靠性这3个软件开发的关键环节和质量指标上有了实质性的突破 彻底解决了在这些方面存在的问题 1 5软件开发模型 1 5 1瀑布模型 瀑布模型是由温斯顿 罗伊斯 WinstonRoyce 在1970年提出的 其核心思想是按工序将问题简化 将功能的实现与设计分开 便于分工协作 即采用结构化的分析与设计方法将逻辑实现与物理实现分开 瀑布模型将软件生命周期划分为软件计划 需求分析和定义 软件设计 软件实现 软件测试 软件运行和维护6个阶段 并规定了它们自上而下 相互衔接的固定次序 瀑布模型的特点十分明显 软件生存周期的顺序性尽可能推迟软件的编码强调文档 瀑布模型的主要问题 各个阶段的

      9、划分完全固定 阶段之间产生大量的文档 极大地增加了工作量 由于开发模型是线性的 用户只有等到整个过程的末期才能见到开发成果 从而增加了开发的风险 早期的错误可能要等到开发后期的测试阶段才能发现 进而带来严重的后果 1 5 2快速原型模型 快速原型模型主要是针对在软件开发过程中需求分析不明确的情形而提出的 它又称为原型模型 采用快速原型模型进行开发的过程是 在开发真实系统之前构造一个原型 在该原型的基础上逐渐完成整个系统的开发工作 与瀑布模型相比 快速原型模型克服了瀑布模型的缺点 减少了由于软件需求不明确而带来的开发风险 软件原型直观 形象 更多地遵循了人们认识事物的规律 因而更容易被人们接受 采用模拟的方法 缩短了用户和系统分析 设计人员之间的距离 在整个系统开发过程中反馈及时 标准统一 因而可及时地暴露问题 充分利用了新一代软件开发工具 使系统开发和运行的效率都大大提高 快速原型模型的不足之处在于 快速建立起来的系统结构加上连续的修改可能会导致产品质量低下 1 5 3渐增模型 与瀑布模型相比 快速原型模型克服了瀑布模型的缺点 减少了由于软件需求不明确而带来的开发风险 软件原型直观 形

      10、象 更多地遵循了人们认识事物的规律 因而更容易被人们接受 采用模拟的方法 缩短了用户和系统分析 设计人员之间的距离 在整个系统开发过程中反馈及时 标准统一 因而可及时地暴露问题 充分利用了新一代软件开发工具 使系统开发和运行的效率都大大提高 快速原型模型的不足之处在于 快速建立起来的系统结构加上连续的修改可能会导致产品质量低下 1 5 4螺旋模型 螺旋模型将软件开发划分为制订计划 风险分析 实施开发和客户评估4类活动 活动描述如下 制订计划 确定软件目标 选定实施方案 明确项目开发的限制条件 风险分析 分析所选方案 考虑如何识别和消除风险 实施开发 实施软件开发仍然按照瀑布模型中的分析 设计 编码 测试等步骤进行 客户评估 评价软件的功能和性能 并提出修改意见 1 5 5喷泉模型 1 5 6构件化开发模型 用于演化式的开发或迭代式的开发 它从与客户的交流开始 首先获得问题的定义 同时标识基本的类 然后对项目进行计划与风险分析 在进入开发阶段后 首先从候选类的标识开始 在已有的类库中查找相应的类是否存在 如果已经存在则提取出来进行复用 如果候选类不存在 就要利用面向对象的方法创建并存放到

      《《软件工程与项目管理》第1章软件工程概述(精)》由会员xmg****18分享,可在线阅读,更多相关《《软件工程与项目管理》第1章软件工程概述(精)》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.