




已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 1软件工程学概述2可行性研究3需求分析形式化说明技术总体设计6详细设计 7实现8维护9面向对象相关内容10软件项目管理 软件工程导论复习 2020 3 22 2 第1章软件工程学概述 1 什么是软件危机 P12 软件危机产生的原因有哪些 P33 什么是软件工程 P54 软件工程方法学包含哪些要素 P95 在软件过程中有哪些模型 他们各自的特点是哪些 P15 P22 2020 3 22 3 第2章可行性研究 1 可行性研究的目的是什么 P252 应从哪些方面研究可行性 P253 如何画系统流程图 P27 P304 如何画数据流图 P30 P375 了解数据字典及成本效益分析 2020 3 22 4 数据流图 DataFlowDiagram DFD 是描述系统中数据流程的图形工具 它标识了一个系统的逻辑输入和逻辑输出 以及把逻辑输入转换为逻辑输出所需的加工处理 数据流图 DFD 2020 3 22 5 举例 2020 3 22 6 细化后的计算机储蓄系统软件结构 2020 3 22 7 第3章需求分析 1 需求分析的基本任务是什么 P46 P482 分析建模2 1什么是模型 模型 就是为了理解事物而对事物做出的一种抽象 是对事物的一种无歧义的书面描述 通常 模型由一组图形符号和组织这些符号的规则组成 2 2数据模型 E R 功能模型 2 4节数据流图 行为模型 状态转换图是行为模型的基础 3 要从哪些方面验证软件需求 P60 2020 3 22 8 第4章形式化说明技术 1 有穷状态机P67 P722 Peri网技术P72 P75 2020 3 22 9 第5章总体设计 1 在设计过程中 总体设计一般有哪两个主要阶段组成 P812 什么模块化 模块独立性包含哪些内容 度量准则是什么 P85 P893 启发规则有哪些 P90 P924 描绘软件结构的图形工具P92 P945 面向数据流的设计方法P95 P102 2020 3 22 10 模块化 模块是程序对象有名字的集合 例如 过程 函数 子程序 宏等 是构成软件系统结构的基本元素 模块化就是将系统划分为若干个模块 每个模块完成一个子功能 模块化的目的是将系统 分而治之 模块化能够降低问题的复杂性 使软件结构清晰 易阅读 易理解 易于测试和调试 因而也有助于提高软件的可靠性 2020 3 22 11 模块独立 模块 又称 构件 一般指用一个名字可调用的一段程序 它一般具有如下三个基本属性 功能即指该模块实现什么功能 做什么事情 必须注意 模块功能 应是该模块本身的功能加上它所调用的所有子模块的功能 逻辑即描述模块内部怎么做 状态即该模块使用时的环境和条件 所谓模块的独立性 是指软件系统中每个模块只涉及软件要求的具体的子功能 而和软件系统中其他模块的接口是简单的 即功能专一 模块之间无过多的相互作用的模块 这种类型的模块可以并行开发 模块独立性越强 开发越容易 独立性强的模块 还能减少错误的影响 使模块容易组合 修改及测试 2020 3 22 12 模块独立性的度量标准是两个定性准则 耦合性用于描述模块之间联系的紧密程度 内聚性用于描述模块内部联系的紧密程度 模块独立性比较强的模块应该是具有高内聚性和的低耦合度 2020 3 22 13 图变换型数据流图的基本模型 2020 3 22 14 图事务型数据流图的基本模型 2020 3 22 15 变换分析设计 把具有变换流特点的数据流图按预先确定的模式映射成软件结构 不具有显著的事务特点 虽然在任何情况下都可以使用变换分析方法设计软件结构 但是在数据流具有明显的事务特点时 也就是有一个明显的 发射中心 事务中心 时 还是以采用事务分析方法为宜 两者的主要差别仅在于由数据流图到软件结构的映射方法不同 2020 3 22 16 第6章详细设计 1 结构程序设计中有哪几种基本控制结构 P1082 了解人机界面的设计 3 掌握过程设计的工具 程序流程图 盒图 PAD图 判定树 P114 P1194 面向数据结构的设计方法 Jackson图 5 程序复杂度的定量度量 McCabe 2020 3 22 17 结构程序设计 图3种基本的控制结构 2020 3 22 18 其他常用的控制结构 图其他常用的控制结构 2020 3 22 19 程序流程图是最早出现且使用较为广泛的算法表达工具之一 能够有效地描述问题求解过程中的程序逻辑结构 程序流程图中经常使用的基本符号如图6 3所示 图程序流程图中使用的符号 2020 3 22 20 N S图又称为盒图 它是为了保证结构化程序设计而由Nassi和Shneiderman共同提出的一种图形工具 在N S图中 所有的程序结构均使用矩形框表示 它可以清晰地表达结构中的嵌套及模块的层次关系 N S图中 基本控制结构的表示符号如图6 4所示 2020 3 22 21 图盒图的基本符号 2020 3 22 22 图PAD中基本符号顺序结构 b 分支结构 c 多分支CASE结构 d 当型循环 e 直到型循环 f 语句标号 g 定义 2020 3 22 23 图三种基本结构在Jackson图中的表示符号 a 顺序结构 b 选择结构 c 循环结构 2020 3 22 24 改进的Jackson图 图改进的Jackson图 2020 3 22 25 定量度量程序复杂程度的方法很有价值 把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量 定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣 程序的定量的复杂程度可以作为模块规模的精确限度 2020 3 22 26 McCabe方法 McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度 这样度量出的结果称为程序的环形复杂度 为了突出表示程序的控制流 人们通常使用流图 也称为程序图 所谓流图实质上是 退化了的 程序流程图 它仅仅描绘程序的控制流程 完全不表现对数据的具体操作以及分支或循环的具体条件 2020 3 22 27 图把程序流程图影射成流图 2020 3 22 28 环形复杂度定量度量程序的逻辑复杂度 有了描绘程序控制流的流图之后 可以用下述3种方法中的任何一种来计算环形复杂度 1 流图中的区域数等于环形复杂度 2 流图G的环形复杂度V G E N 2 其中 E是流图中边的条数 N是结点数 3 流图G的环形复杂度V G P 1 其中 P是流图中判定结点的数目 2020 3 22 29 第7章实现 1 编码2 测试技术P139 P1693 调试的途径有哪些 P1684 软件可靠性和可用性的基本概念P169 2020 3 22 30 编码 把软件设计结果翻译成用某种程序语言书写的程序 测试 软件测试的目的是在软件投入生产性运行前 尽可能多的发现软件中的错误 编码和测试 2020 3 22 31 7 2软件测试基础 软件测试 为发现程序中的错误而执行程序的过程 软件测试的准则 尽早和不断的测试 彻底测试的不可能 软件测试是有风险的行为 并非所有的软件错误都能恢复 反向思维逻辑 由小到大的测试范围 避免检查自己的代码 追溯至用户需求 测试方法 黑盒测试和白盒测试 测试步骤 模块测试 子系统测试 系统测试 验收测试 平行运行 2020 3 22 32 测试内容 模块 模块接口测试 局部数据结构测试 重要路径测试 错误处理测试 边界条件测试 I O参数值的个数 类型 次序 格式是否正确 I O文件属性 操作是否正确等 数据说明是否正确 一致 变量及其初值定义是否正确等 检查 错误处理程序 本身的错误 边界条件常包括循环边界 最大最小值 控制流中等于 大于 小于的比较值等 重要路径通常是指完成模块功能的主要路径 一般是控制结构 也称模块测试 moduletesting 7 3单元测试 2020 3 22 33 白盒法又称为逻辑覆盖法 其测试用例选择 是按照不同覆盖标准确定的 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 弱 强 白盒测试技术 2020 3 22 34 语句覆盖 选择足够的测试用例 使得程序中每个语句至少都能被执行一次 判定覆盖 执行足够的测试用例 使得程序中每个判定至少都获得一次 真 值和 假 值 条件覆盖 执行足够的测试用例 使得判定中的每个条件获得各种可能的结果 判定 条件覆盖 执行足够的测试用例 使得判定中每个条件取到各种可能的值 并使每个判定取到各种可能的结果 条件组合覆盖 执行足够的例子 使得每个判定中条件的各种可能组合都至少出现一次 白盒法常用的覆盖标准 2020 3 22 2020 3 22 35 1 语句覆盖 使得程序中每个语句至少都能被执行一次 A 1ANDB 0 X X A A 2ORX 1 X X 1 a b c d e 满足语句覆盖的情况 执行路径 ace 选择用例 2 0 4 2 0 3 用例格式 输入 A B X 输出 A B X Y N Y N 2020 3 22 36 2 判定覆盖 使得程序中每个判定至少为TRUE或FALSE各一次 A 1ANDB 0 X X A A 2ORX 1 X X 1 a b c d e 覆盖情况 应执行路径ace abd或 acd abe 选择用例 其一 2 0 4 2 0 3 ace 1 1 1 1 1 1 abd 2 1 1 2 1 2 abe 3 0 3 3 1 1 acd Y Y N N 2020 3 22 37 3 条件覆盖 A 1ANDB 0 X X A A 2ORX 1 X X 1 a b c d e 使得判定中的每个条件获得各种可能的结果 应满足以下覆盖情况 判定一 A 1 A 1 B 0 B 0判定二 A 2 A 2 X 1 X 1 选择用例 2 0 4 2 0 3 1 1 1 1 1 1 N N Y Y 2 A 1 A 2 0 B 0 4 X 1 1 A 1 A 2 1 B 0 1 X 1 注意 1 0 3 1 0 4 2 1 1 2 1 2 满足条件覆盖 但不满足判断覆盖 2020 3 22 38 4 判定 条件覆盖 同时满足判断覆盖和条件覆盖 A 1ANDB 0 X X A A 2ORX 1 X X 1 a b c d e 应满足以下覆盖情况 条件 A 1 A 1 B 0 B 0A 2 A 2 X 1 X 1应执行路径ace abd或 acd abe 选择用例 2 0 4 2 0 3 ace 1 1 1 1 1 1 abd Y Y N N 2020 3 22 39 5 条件组合覆盖 使得每个判定中条件的各种可能组合都至少出现一次 A 1 X X A A 2 X X 1 a b c d e B 0 X 1 Y N Y N Y N Y N 编译系统下的执行情况 部分路径未被执行 满足以下覆盖情况 A 1 B 0 A 1 B 0 A 1 B 0 A 1 B 0 A 2 X 1 A 2 X 1 A 2 X 1 A 2 X 1 选择用例 2 0 4 2 0 3 2 1 1 2 1 2 1 0 3 1 0 4 1 1 1 1 1 1 40 等价分类法 边值分析法 错误推测法 黑盒法不考虑程序的内部结构与特性 只根据程序功能或程序的外部特性设计测试用例 黑盒测试技术 2020 3 22 41 1 等价分类法 基本思想 根据程序的I O特性 将程序的定义域划分为有限个等价区段 等价类 从等价类中选择出的用例 具有 代表性 等价类分为 有效等价类 对于程序的规格说明是合理的 有意义的输入数据构成的集合 无效等价类 对于程序的规格说明 是不合理的 是没有意义的输入数据构成的集合 2020 3 22 42 2 边值分析法 基本思想 选择等价类的边缘值作为测试用例 让每个等价类的边界都得到测试 选择测试用例既考虑输入亦考虑输出 分析步骤 A 先划分等价类 B 选择测试用例 测试等价类边界 边界选择原则 A 按照输入值范围的边界 B 按照输入 输出值个数的边界 C 输出值域的边界 D 输入 输出有序集的边界 2020 3 22 43 3 错误推测法 错误推测法的概念 凭经验或直觉推测可能的错误 列出程序中可能有的错误和容易发生错误的特殊情况 选择测试用例 错误推测方法的基本思想 列举出程序中所有可能有的错误和容易发生错误的特殊情况 根据它们选择测试用例 例如 在单元测试时曾列出的许多在模块中常见的错误 以前产品测试中曾经发现的错误等 这些就是经验的总结 还有 输入数据和输出数据为0的情况 输入表格为空格或输入表格只有一行等 这些都是容易发生错误的情况 可选择这些情况下的例子作为测试用例 2020 3 22 44 调试 也称为纠错 作为成功测试的后果出现 也就是说 调试是在测试发现错误之后排除错误的过程 调试过程如下图所示 调试 2020 3 22 45 无论采用什么方法 调试的目标都是寻找软件错误的原因并改正错误 通常需要把系统地分析 直觉和运气组合起来 才能实现上述目标 一般说来 有下列3种调试途径可以采用 蛮干法回溯法原因排除法 2020 3 22 46 软件可靠性的定义 对于软件可靠性有许多不同的定义 其中多数人承认的一个定义是 软件可靠性是程序在给定的时间间隔内 按照规格说明书的规定成功地运行的概率软件可用性的一个定义 软件可用性是程序在给定的时间点 按照规格说明书的规定 成功地运行的概率 软件的可靠性 2020 3 22 47 第8章维护 1 软件维护的定义P1792 了解软件维护的特点3 软件维护过程中维护组织包括哪些人员 P1828 4决定软件的可维护性的因素有哪些 P185 P1868 5软件再工程过程 2020 3 22 48 软件维护的定义 软件维护是指软件系统交付使用以后 为了改正错误或满足新的需求而修改软件的过程 按照不同的维护目的 维护工作可分成4类 完善性维护 PerfectiveMaintenance 扩充原有系统的功能 提高原有系统的性能 满足用户的实际需要 纠错性维护 CorrectiveMaintenance 对在测试阶段未能发现的 在软件投入使用后才逐渐暴露出来的错误的测试 诊断 定位 纠错以及验证 修改的回归测试过程 适应性维护 AdaptiveMaintenance 要使运行的软件能适应运行环境的变动而修改软件的过程 预防性维护 PreventiveMaintenance 为了进一步改善软件的可靠性和易维护性 或者为将来的维护奠定更好的基础而对软件进行修改 8 5节 2020 3 22 49 图8 1维护组织 2020 3 22 50 软件的可维护性定性地定义为 维护人员理解 改正 改动或改进这个软件的难易程度 重用 同一事物不做修改或稍加改动就在不同环境中多次重复使用 提高可维护性是支配软件工程方法学所有步骤的关键目标 2020 3 22 51 第9章面向对象相关内容 1 面向对象方法学概述P193 P2002 面向对象建模 涵盖第9章和第10章 3 面向对象分析的基本过程4 面向对象的设计准则 2020 3 22 52 要点 面向对象方法学的出发点和基本原则 是尽可能模拟人类习惯的思维方式 使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程 也就是使描述问题的问题空间 也称为问题域 与实现解法的解空间 也称为求解域 在结构上尽可能一致 认为客观世界是由各种对象组成的 任何事物都是对象 复杂的对象可以由比较简单的对象以某种方式组合而成 把所有对象都划分成各种对象类 简称为类 class 每个对象类都定义了一组数据和一组方法 按照子类 或称为派生类 与父类 或称为基类 的关系 把若干个对象类组成一个层次结构的系统 也称为类等级 对象彼此之间仅能通过传递消息互相联系 2020 3 22 53 面向对象的方法学可以用下列方程来概括 OO objects classes inheritance communicationwithmessages也就是说 面向对象就是既使用对象又使用类和继承等机制 而且对象之间仅能通过传递消息实现彼此通信 如果仅使用对象和消息 则这种方法可以称为基于对象的 object based 方法 而不能称为面向对象的方法 如果进一步要求把所有对象都划分为类 则这种方法可称为基于类的 class based 方法 但仍然不是面向对象的方法 只有同时使用对象 类 继承和消息的方法 才是真正面向对象的方法 2020 3 22 54 方法 就是对象所能执行的操作 也就是类中所定义的服务 方法描述了对象执行操作的算法 响应消息的方法 在C 语言中把方法称为成员函数 属性 就是类中所定义的数据 它是对客观世界实体所具有的性质的抽象 类的每个实例都有自己特有的属性值 在C 语言中把属性称为数据成员 2020 3 22 55 继承 Inheritance 继承是使用现存的定义作为基础 建立新定义的技术 是父类和子类之间共享数据结构和方法的机制 这是类之间的一种关系 在定义和实现一个类的时候 可以在一个已经存在的类的基础上来进行 把这个已经存在的类所定义的内容做为自己的内容 并加入若干新内容 继承性分 单重继承 一个子类只有一个父类 即子类只继承一个父类的数据结构和方法 多重继承 一个子类可有多个父类 继承多个父类的数据结构和方法 现存类定义父类 基类 新类定义子类 派生类 继承 图继承性 2020 3 22 56 图实现继承机制的原理 2020 3 22 57 多态性 Polymorphism 是指相同的操作或函数 过程作用于不同的对象上并获得不同的结果 多态即一个名字可具有多种语义 即相同的操作的消息发送给不同的对象时 每个对象将根据自己所属类中所定义的操作去执行 故产生不同的结果 例如 绘图 操作 作用在 椭圆 和 矩形 上 画出不同的图形 有两种重载 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字 运算符重载是指同一个运算符可以施加于不同类型的操作数上面 当然 当参数特征不同或被操作数的类型不同时 实现函数的算法或运算符的语义是不相同的 重载进一步提高了面向对象系统的灵活性和可读性 2020 3 22 58 面向对象建模技术所建立的3种模型 分别从3个不同侧面描述了所要开发的系统 这3种模型相互补充 相互配合 使得我们对系统的认识更加全面 功能模型指明了系统应该 做什么 动态模型明确规定了什么时候 即在何种状态下接受了什么事件的触发 做 对象模型则定义了做事情的实体 在面向对象方法学中 对象模型是最基本最重要的 它为其他两种模型奠定了基础 我们依靠对象模型完成3种模型的集成 3种模型之间的关系 2020 3 22 59 1 面向对象分析的三个模型面向对象建模是面向对象分析的关键 面向对象的模型包括 对象模型 动态模型和功能模型 对象模型描述了系统的静态结构 动态模型描述了系统的互交次序 功能模型描述了系统的数据变换 不同的问题 三个子模型的侧重程度不同 但是 对象模型是最基础的 最核心的 最重要的 无论解决什么问题 首先要在问题域中提取和定义出对象模型 当问题涉及用户界与过程控制时 动态模型是重点 如果问题涉及大量数据变换 则功能模型非常重要 对象模型中的操作 服务 可以出现在动态模型和功能模型内 3个子模型与5个层次 2020 3 22 60 2 面向对象分析的五个层次面向对象分析由五个主要活动组成 主题层 类与对象层 结构层 属性层和服务层 见图9 2 图对象模型的五个层次 2020 3 22 61 模块化抽象信息隐藏弱耦合强内聚可重用 面向对象设计的准则 2020 3 22 62 重用也叫再用或复用 是指同一事物不作修改或稍加改动就多次重复使用 广义地说 软件重用可分为以下3个层次 1 知识重用 例如 软件工程知识的重用 2 方法和标准的重用 例如 面向对象方法或国家制定的软件开发规范的重用 3 软件成分的重用 前两个重用层次属于知识工程研究的范畴 本节仅讨论软件成分重用问题 软件重用 2020 3 22 63 第10章软件项目管理 1 了解如何估算软件规模 如何进行工作量的估算 2 制定进度计划的工具有哪些 P302 P3093 了解人员如何组织 4 软件质量的保证措施有哪些 P316 P3175 软件配置管理P319 P3216 能力成熟度模型分为哪几级 P322 P324 2020 3 22 64 不论从事哪种技术性项目 实际情况都是 在实现一个大目标之前往往必须完成数以百计的小任务 也称为作业 这些任务中有一些是处于 关键路径 见13 3 5节 之外的 其完成时间如果没有严重拖后 就不会影响整个项目的完成时间 其他任务则处于关键路径之中 如果这些 关键任务 的进度拖后 则整个项目的完成日期就会拖后 管理人员应该高度关注关键任务的进展情况 进度计划 2020 3 22 65 软件开发进度计划安排是一件困难的任务 既要考虑各个子任务之间的相互联系 尽可能并行地安排任务 又要预见潜在的问题 提供意外事件的处理意见 描述计划进度的主要工具有 一般的表格工具 甘特图 PERT技术与CPM方法 一般的表格工具例如 进度表 图13 3 图13 3进度表 Gantt图 2020 3 22 66 上一小节介绍的Gantt图具有直观简明和容易掌握 容易绘制的优点 但是Gantt图也有3个主要缺点 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空机械员考试题库及答案
- 外贸销售合同样本中英文
- 高温工程施工合同(3篇)
- 安全员往年考试题及答案
- 安全卫生考试试题及答案
- 安全师考试题及答案
- 安保公司培训考试题及答案
- 痔疮动脉结扎微创技术-洞察及研究
- 2025河北公务员面试题及答案
- 2025国考行测模考试题及答案
- 关联交易贷款管理办法
- 湖南第一师范学院《高等数学》2024-2025学年期末试卷(A卷)含答案
- DB42T 1342-2018 小型沼气工程设计、施工及验收规范
- 2025至2030全球及中国内容营销平台行业产业运行态势及投资规划深度研究报告
- 微商课件培训
- 2025年国家网络安全宣传周知识竞赛考试题库
- 网约车考试全国公共科目考题及答案
- 水电厂自动化管理制度
- 2025版标准劳动合同模板下载
- 小学生游泳队训练计划
- 2024从“小众运动”到“全民热潮”解码网球人群与市场机遇
评论
0/150
提交评论