(考研复试)软件工程笔记_第1页
(考研复试)软件工程笔记_第2页
(考研复试)软件工程笔记_第3页
(考研复试)软件工程笔记_第4页
(考研复试)软件工程笔记_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1 软件危机 问题 1 如何开发软件 以满足对软件日益 增长的需求 问题 2 如何维护数量不断膨胀的软件 表现 对软件开发成本和时间估计不准 用户对已完成软件不满 意 软件质量不可靠 软件不可维护 软件缺少文档 软 件成本过高 软件跟不上硬件发展速度 原因 与软件本 身特点有关 缺乏可见性 质量难以评价 规模庞大难以 维护 与软件开发维护的不当方法有关 轻视需求分析和 维护 对用户的要求没有完整准确的认识就编写程序 忽 视程序 文档 数据等软件配置 2 软件工程 采用工程的概念 原理 技术和方法开发与 维护软件 把正确的管理技术和软件开发技术结合起来 经济的开发出高质量的软件并有效的维护 即把系统化的 规范的 可度量的途径应用于软件开发 运行和维护的过 程 3 软件工程 7 条基本原理 用分阶段的生命周期计划严格 管理 坚持进行阶段评审 实行严格的产品控制 采用现 代程序设计技术 结果应能清楚地审查 开发小组的人员 应该少而精 承认不断改进软件工程实践的必要性 4 软件工程领域 软件需求 设计 构建 写代码 测 试 维护 配置管理 工程管理 工程过程 工程工具 软件质量 5 软件生命周期 软件定义 问题定义 可行性研究 需 求分析 软件开发 概要设计 详细设计 编码和单元测 试 综合测试 运行维护 改正性维护 适应性维护 完 善性维护 预防性维护 生命周期模型生命周期模型 6 瀑布模型 就是把一个开发过程分成收集需求 分析 设计 编码 测试 维护六部分 只有完成前面一步才能 开始后面一步 上一步的输出的文档就是这一步的输入文 档 每一步完成都要交出合格的文档 每一步都会有反馈 如果反馈有错误就退回前一步解决问题 瀑布模型的缺点 实际的项目开发很难严格按该模型进行 由于用户只能通 过文档来了解产品 客户往往很难清楚地给出所有的需求 而瀑布模型不适应用户需求的变化 软件的实际情况必须 到项目开发的后期客户才能看到 7 快速原型模型 就是根据用户的需求迅速设计出一个原 型系统 原型系统具有基本的功能 然后用户使用原型并 对原型提出需求和改变 开发人员再对原型进行修改和完 善知道用户满意 优点 容易适应需求的变化 有利于开 发与培训的同步 开发费用低 开发周期短且对用户更友 好 缺点 快速建立起来的系统结构加上连续的修改可能 会导致产品质量低下 使用这个模型的前提是要有一个展示 性的产品原型 因此在一定程度上可能会限制开发人员的 创新 8 增量模型 就是把软件分成许多个构件 每个构件分别 当做一个软件来分析 设计 编码 测试 开发人员一次 一个构件的提交给用户 最后组装到一起 增量模型的优 点 一开始不用投入太多人力 如果核心产品很受欢迎 则可增加人力实现下一个增量 可先发布部分功能给客户 让客户逐渐适应 缺点 并行开发构件有可能遇到不能集 成的风险 软件必须具备开放式的体系结构 9 螺旋模型 螺旋模型基本做法是在快速原型模型的每一 个原型前引入一个非常严格的风险分析 每个原型经过制 定计划 风险分析 实施工程 客户评估四步走 每个原 型都标识一个或多个主要风险 直到所有的主要风险因素 都被确定 螺旋模型由风险驱动 强调可选方案和约束条 件从而支持软件的重用 有助于将软件质量作为特殊目标 融入产品开发之中 优点 设计上的灵活性 可以在项目的 各个阶段进行变更 以小的分段来构建大型系统 使成本计 算变得简单容易 客户始终参与每个阶段的开发 保证了项 目不偏离正确方向以及项目的可控性 缺点 采用螺旋模 型需要具有相当丰富的风险评估经验和专门知识 在风险 较大的项目开发中 如果未能够及时标识风险 势必造成 重大损失 过多的迭代次数会增加开发成本 延迟提交时 间 10 喷泉模型 以用户需求为动力 以对象为驱动的模型 主要用于描述面向对象的软件开发过程 该模型认为软件 开发过程自下而上周期的各阶段是相互迭代和无间隙的特 性 喷泉模型不像瀑布模型那样 需要分析活动结束后才 开始设计活动 设计活动结束后才开始编码活动 该模型 的各个阶段没有明显的界限 开发人员可以同步进行开发 其优点是可以提高软件项目开发效率 节省开发时间 适 应于面向对象的软件开发过程 缺点 由于喷泉模型在各 个开发阶段是重叠的 因此在开发过程中需要大量的开发 人员 因此不利于项目的管理 10 1 总结 一开始是瀑布模型 但是瀑布模型因为是文 档驱动 最终交付的产品不一定符合用户需求 所以有了 快速原型模型 增量模型能在软件早起就让投资者获得回 报 但是需要软件具有开发体系架构 螺旋模型是风险驱 动 但是需要专业的风险分析人 喷泉模型的软件生命周 期是循环的 适用于面向对象范型 11 rational 统一过程是一个软件开发过程框架 就是指 团队可以根据具体的项目组或软件开发企业的不同需求 能够定义 配置 定制和实施一致的软件开发过程 包括 3 核心 用于成功开发软件的一组基本观念和原则 一套关 于可重用方法内容和过程构件的框架 在框架内定义自己 的开发方法和过程 基础的方法和过程定义语言 12 RUP 的最佳实践 描述了一个指导开发团队达成目标的 迭代式的软件开发过程 包括 迭代式开发 每次迭代过 程中需求改变 每个迭代过程以完成可执行版本结束 让 用户不断介入和提出意见并改进 管理需求 用脚本来确 定需求 使用基于组件的架构 使用功能清晰的模块 可视化建模 可视化图形更容易令人理解 帮助人们提高 管理软件复杂性的能力 验证软件质量 软件质量评估贯 穿整个开发过程 控制软件变更 确保每个更改都是可接 受和可跟踪的 13 敏捷过程 宣告了以下 4 个价值观 个体和交互高于 过程和工具 团队合作很重要 应该根据团队成员和交互 方式配置项目环境 可以使用的软件高于面面俱到的文档 主要精力放在创建 客户合作高于合同谈判 开发团队 与客户密切协作 响应变化高于遵循计划 计划必须有足 够的灵活性 在需要时能够迅速调整 14 极限编程 就是把好的开发实践运用到极致 广泛运 用于模糊且经常改变的场合 过程 首先 项目组针对客 户代表提出的要求进行讨论 对体系结构进行试探 然后 项目组根据客户设定的优先级指定交付计划 然后开始多 个迭代过程 迭代期中新用户故事不在本次迭代内解决 开发出的新版本软件通过验收测试之后交付用户使用 极 限编程可以迅速快捷的响应变化和不确定的需求 同时保 持开发速度 迭代过程 项目组根据项目速率 选择需要完成的用户需 求或应该消除的差错 制定出本次迭代计划 每天举行一 次站立会议解决遇到问题 调整迭代计划 开发出的新功 能必须通过单元测试 立即继承 得到新的可运行版本由 客户代表进行验收测试 客户代表提出问题 项目组根据 问题提出新的用户要求 算出新的项目速率 并在站立会 议上讨论 15 能力成熟模型 CMM 因为问题是由管理软件过程的方法 不当引起的 所以新软件技术的运用并不会自动提高生产 率和软件质量 能力成熟模型有助于软件开发组织建立一 个有规律 成熟的软件过程 改进后的过程将开发出高质 量的软件 并节约时间和经费 软件开发既包括技术方面 也包括管理方面 CMM 通过改变管理方面 从而改变技术方 面 16 CMM 结构 成熟度等级 对软件过程的改进的 5 个步骤 过程能力 改进的软件过程实现预期结果的能力 关键 过程域 完成一些关键过程域就进入下一个成熟度等级 目标 定义每个关键过程域的目的 公共特性 把关键实 践归入 5 个公共特性之中 指示一个关键过程域的实施和 规范化是否有效 关键实践 若干个关键实践描述关键过 程域 17 软件过程 为了获得高质量软件产品所需要完成的一 系列任务的框架 规定各项任务的工作步骤 传统方法学之结构化分析传统方法学之结构化分析 18 传统的软件工程采用结构化分析完成需求分析工作 19 需求分析的第一步就是尽可能准确的了解用户当前的 情况和需要解决的问题 分析员对用户的要求反复求精细 化 理解用户需求 得出对目标系统完整的准确的和具体 的要求 结构化分析就是通过建立数据模型 功能模型 行为模型 给出完整的需求规格说明书和全面的设计表示 20 与用户沟通的方法 会谈 简易应用规格说明书 软 件原型 21 结构化分析实质上是一种创建模型的活动 模型可以 描述用户需求 为软件设计奠定基础 定义一组需求 一 旦开发出软件产品之后 就可以用这组需求为标准来验收 分析模型的核心是数据字典 围绕这个核心有三种图 22 实体关系图可以数据对象描述 数据流图 就是 A 和 B 两个数据流经过一个处理系统出来 C 数据 可以处理规格 说明 状态转换图可以控制规格说明 23 通过需求分析创建分析模型外还要写出软件规格需求 说明 这是分析阶段的最终成果 24 数据字典 对数据的数据项 数据结构 数据流 数 据存储 处理逻辑 外部实体等进行定义和描述 其目的 是对数据流程图中的各个元素做出详细的说明从而是用户 和系统分析员双方对输入输出存储的成分以及中间计算结 果有共同的理解 25 结构化分析举例 项目 系统分析员研究学校自己的 计算机生成工资明细表和各种财务报表的可能性 过程包 括问题定义 可行性研究 需求分析 3 阶段 1 问题定义 考虑用户面临的问是什么 用户为什么要 做这个项目 考虑项目规模 预花费的费用 2 可行性研究 抽象和简化了的系统分析和设计的全过 程 目的是以最小的代价确定问题是否可以解决 澄清系 统规模和目标 研究现有系统 导出高层逻辑模型 进一 步确定系统规模和目标 导出供选择的解法 推荐最佳方 案 草拟开发计划 写出文档提交审查 3 需求分析 回答 系统必须做什么 在可行性研究 的基础上 以前一段产生的文档为出发点 分析员设计出 更为精确的数据流图 写出数据字典 更详尽的定义系统 应该完成的每一个逻辑功能 写出文档初稿 定义逻辑系 统 细化数据流图 书写正式文档 技术审查和管理复查 结构化设计结构化设计 26 软件设计的目标是设计出所要开发的软件的模型 对 软件需求有了完整 准确 具体的理解后 接下来的工作 就是用软件正确的实现需求 传统的软件工程用结构化设 计 把软件设计工作分为概要设计 分析软件规格说明书 对软件进行功能分解 划分模块 设计出预定模块的结构 和详细设计 详细设计每个模块的算法和数据结构 结构 化分析为结构化设计提供输入信息 由数据模型 功能模 型 行为模型描述的软件需求给软件设计者 软件设计者 再完成数据设计 体系结构设计 接口设计 过程设计 27 软件设计的原理 模块化 把程序划分为独立命名独 立访问的模块 每个模块完成一个子功能 抽象 高层次 抽象一开始以概括的方式叙述问题的解法 然后低层次抽 象把面向问题的术语和面向实现的术语结合起来叙述问题 的解法 最后再最低层用直接实现的方式叙述问题的解法 逐步求精 即将系统功能按层次进行分解 每一层不断将 功能细化 到最后一层都是功能单一 简单易实现的模块 细节隐藏 28 模块独立 独立的模块比较容易开发 测试和维护 耦 合 一个软件结构内不同模块之间的互联程度 耦合的强 度取决于模块间接口和复杂程度 内聚 一个模块内各个 元素彼此结合的紧密程度 我们追求的是低耦合和高内聚 29 结构化设计启发规则 提高模块独立性 模块规模适 中 深度宽度扇出扇入都要适中 模块的作用于在可控范 围内 降低接口复杂度 模块单入单出 模块功能可预测 30 软件结构表示法 层次图 系统模块下面是各分模块 分模块又引出分分模块 HIPO 图 在层次图的基础上家一 个 IPO 表 更好的现实输入 处理 输出三部分的关系 结构图 在层次图的基础上 更详细的描述了模块的信息 和之间的数据流 31 面向数据流的设计方法定义了一些不同的映射 利用 这些映射可以把数据流图变换成软件结构 通常说结构化 设计方法就是基于数据流的设计方案 数据流映射成信息 流 信息流有变换流和事务流两种 32 人机界面设计问题 系统响应时间 用户帮助设施 出错信息处理 命令交互 人机界面设计也是一个迭代的 过程 创建设计模型 创建原型 用户评估返回意见修改 33 过程设计 过程设计不仅仅是在逻辑上实现每个模块 的功能 更重要的是设计出的过程简明易懂 如果一个程 序的代码块仅仅通过顺序 选择 循环 3 钟控制结构进行 连接 并每个代码块只有一个入口和一个出口 那么这个 就是结构化程序 34 过程设计工具 程序流程图 盒图 PAD 图 判定表 判定树 35 面向数据结构的设计方法 不明确的使用软件结构的 概念 对于模块独立原理没有给予重视 这种方法适合再 详细设计阶段 完成软件结构设计之后 用面向数据结构 的方法来设计每一个模块的处理过程 结构化实现结构化实现 36 实现分为编码和测试 37 测试分为黑盒测试 知道了产品应具有的功能 测试 每个功能能否正常使用 是在程序接口进行的测试 和白 盒测试 知道产品内部工作过程 通过测试来检验产品内 部动作是否按照规格说明书的规定正常进行 是在程序的 每条通路测试 38 测试准则 所有的测试都应能有用户需求的根据 应 该早早指定测试计划 采用二八原理 逐步测试小模块 然后测试大模块 穷举测试是不可能的 测试应由第三方 来做 38 5 设计测试方案基本目标是选用尽可能少的高校测试 数据 39 白盒测试方案 逻辑覆盖 语句覆盖 所有语句都走 一遍 判定覆盖 判定结果的每个可能结果都执行一遍 条件覆盖 判定表达式中每个结果都走一遍 判定 条件 覆盖 结合前面两个 条件组合覆盖 判定表达式的条件 的各种组合都执行一次 40 白盒测试技术 逻辑覆盖 控制结构测试 基本路径 测试 条件测试 数据流测试 循环测试 41 黑盒测试技术 等价划分 边界值分析 错误推测 42 测试 4 步骤 单元测试 最开始测试每个单独的模块 采用白盒测试 检查模块控制结构中的特定路径 集成测 试 把模块装配在一起形成完整的软件包 在装配的同时 进行测试 解决程序验证和程序构造两个问题 采用黑盒 测试 确认测试 对软件所满足的所有功能 行为 性能 需求的最终测试 采用黑盒测试 系统测试 所有系统元 素都能正常配合 43 调试是在测试发现错误之后排除错误的过程 44 软件可靠性 程序在给定时间间隔内 按照规格说明 书运行的概率 面向对象方法学面向对象方法学 45 传统的软件工程方法学不适合大型软件产品的开发 现在是面向对象方法学 面向对象开发软件的时候通常建 立 3 种模型 对象模型 动态模型 功能模型 对象模型 是后二者的基础 是最最最核心的 46 用对象分解取代功能分解 面向过程的设计方法以算 法为核心 把数据和处理过程相互分割开来 面向对象以 对象为核心 对象是对世界实体的抽象 把实体的内部状 态 静态属性 动态行为都封装在一个对象里面 对象之 间通过传递消息通信 面向过程设计方法把精力集中在设 计算法上 按照计算机的要求设计 设计者站在计算机的 立场上 但是计算机和人类观点差别很大 面向对象就是 站在人类观点的立场上 面向对象是一种以数据或信息为 主线 把数据和处理相结合的方法 对象不被动的等待外 界对它操作 而是进行处理的主体 必须发消息让对象执 行对象自己的操作 而不能从外界直接对它的私有数据进 行操作 47 面向对象方法学的优点 与人类习惯的思维方法一致 稳定性好 可重用性好 可维护性好 易开发大型软件 48 对象模型 对象模型表示静态的 结构化的数据 描 述系统的静态结构 为后两个提供了框架 49 动态模型 表示瞬时的 行为化的系统的控制性质 规定了对象模型中的对象的合法变化系列 用状态转换图 描述 50 功能模型 表示变化的系统的功能性质 它指明了系 统应该做什么 更直接的反应了用户的需求 51 功能模型指明做什么 动态模型规定什么时候做 对 象模型规定 谁做 面向对象分析 52 面向对象分析的关键在于 识别出问题域内的对象 分析他们之间的关系 最终建立 3 种模型 53 面向对象分析 寻找类和对象 识别结构 识别主题 定义属性 建立动态模型 建立功能模型 定义服务 54 对象

温馨提示

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

评论

0/150

提交评论