公共基础知识第二、三章.ppt_第1页
公共基础知识第二、三章.ppt_第2页
公共基础知识第二、三章.ppt_第3页
公共基础知识第二、三章.ppt_第4页
公共基础知识第二、三章.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

第二章 程序设计 本章主要内容 程序设计方法和风格结构化程序设计面向对象程序设计 2 1程序设计方法和风格 什么是程序 了解 指令的集合 解释指令 通过硬件控制系统自动完成某一功能 通过一系列代码实现 程序设计语言 计算机本身仅能识别二进制代码 0 1 高级语言 比如C JAVA BASIC等 在ACCESS中 我们使用的程序设计语言是VBA visualbasicForapplication 编程最直接 最低级的就是机器语言 汇编语言 是中低级语言 程序设计风格 理解 记忆 基本概念 编写程序时所表现出来的特点 习惯和逻辑思路 主要观点 清晰第一 效率第二 一般从以下四部分加以规范 源程序中的内部文档化 选择标示符的名字 注释 注释有两种 序言性注释和功能性注释 程序的视觉组织 空格 空行 缩进等等 数据说明 显式地说明一切变量 数据说明的次序应该规范化 便于查找变量 按顺序排列 对复杂数据结构应注释说明 语句的结构 每条语句简单明了 尽量不用或少用GOTO语句 尽量只采用3种基本控制结构编程 输入和输出 对所有输入数据进行校验和合理性检查 输入输出格式保持一致 设计良好的输出报表 程序设计三种方法 结构化设计法 模块内部程序各部分要按照自顶向下的结构划分 各程序部分应按功能组合 快速原型法 软件工程法 利用现有的工具和原型方法快速地开发所要的程序 面向对象程序设计法 以现实世界的对象为核心 与人类习惯的思维方法一致 程序设计方法 研究问题求解和系统构造的软件方法学 不同的方法之间 可以相互交叉 相互借鉴 2 2结构化程序设计 基本思想 对大型的程序设计 使用一些基本的结构 总共有三种 分别是 顺序结构 选择结构 循环结构 来设计程序 无论多复杂的程序 都可以使用这些基本结构按一定的顺序组合起来 这些基本结构的特点都是只有一个入口 一个出口 由这些基本结构组成的程序就避免了任意转移 阅读起来需要来回寻找的问题 基本结构 顺序 选择 循环 理解 记忆 观察下面6个流程图 设计原则 理解 记忆 自顶向下 对大型的程序设计而言 从最上层总体目标开始设计 然后不断的分解 将我们的总体目标分解成众多的子目标 逐步求精 对分解之后的子模块进行详细的设计 详细的处理 模块化 对分解完毕的子目标 没实现一个子目标的程序 就是一个模块 限制使用goto语句 1 使用程序设计语言中的顺序 选择 循环等优先的控制结构表示程序的控制逻辑2 使用的控制结构只准许有一个入口和一个出口3 程序语句组成容易识 认的模块 每一个模块只有一个入口和一个出口4 复杂的结构应该使用嵌套的基本控制结构进行组合嵌套来实现5 严格控制goto语句的使用 结构化程序设计注意事项 了解 2 3面向对象程序设计 基本思想客观世界中任何一个事物都可以被看成是一个对象 面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统 系统中的对象及对象之间的关系能够如实地反映问题域中固有的事物及其关系 结构化与面向对象方法比较结构化的分解突出过程 即如何做 Howtodo 它强调代码的功能是如何实现的 面向对象的分解突出现实世界和抽象的对象 即做什么 Whattodo 主要优点 记忆 与人类习惯的思维方法一致 稳定性好 可重用性好 易于开发大型软件产品 可维护性好 面向对象程序设计主要考虑的是 提高软件的可重用性 实例化和继承性是面向对象程序设计实现重用性的主要机制 面向对象的基本概念 对象 Object 用来表示客观世界中的任何实体 即应用领域中有意义的 与所要解决的问题有关系的任何事物 都是可以作为对象的 它既可以是具体的物理实体的抽象 也可以是人为的概念 或者是任何具有明确边界和意义的东西 对象 对象名 数据 属性 对象中的属性 我们称之为属性 其作用是 用于描述对象的性质 作用于数据的操作 行为 一个对象把属性和行为封装为一个整体一个对象通常可由对象名 属性和操作3部分组成 对象的基本特点 标识唯一性 区别于其他对象的属性 分类性 我们把相同类型的属性的对象 分成一组 多态性 不同的操作 或不同的消息可以产生的不同结果 封装性 将对象的数据 操作等完整的封装起来 以便使得更好的对对象进行描述 作用 既可以免遭封装信息内部信息的外泄 也可以保护封装内部的信息不受外部因素的干扰 良好的模块独立性 由于多态性和封装性 使得我们的对象具有良好的模块独立性 消息 Message 对象之间进行通信的一种数据构造 消息包括三个部分 接受消息对象名 消息标识符 零个或多个参数 面向对象的基本概念 类 Class 类是具有共同属性 共同方法的一组对象的集合 类是在对象之上的抽象 对象是类的具体化 是类的实例 在这里 学生 就是在描述了一个 类 的概念 而 学号 姓名 性别 则是对 学生 这个类的属性说明 在经过了对 类 中的属性进行了确切的赋值之后 我们就称之为类的一个对象或实例 面向对象的基本概念 封装 Encapsulation 把 类 作为一个容器 将同类对象的属性和方法封装在一起 也就是说 将数据和操作数据的函数衔接在一起 构成一个具有类类型的对象的描述 对象的内部实现受保护 外界不能访问 是想了对外部的信息隐藏 如果 设计人员先从外部调用封装内部的信息 可以通过定义好的接口来为外部提供调用 面向对象的基本概念 继承 Inheritance 继承是父类和子类之间共享数据的方法的机制 也就是说 如果我们要通过面向对象的程序设计来进行数据的共享 那么可以通过什么样的机制来共享呢 答曰 继承 反过来说 面向对象的程序设计中间 共享数据的方法是哪一种机制 答曰 继承机制 一个子类可以继承它的父类 或祖先类 中的属性和操作 子类中可以定义自己的属性和操作 单重继承 多重继承 在这里面 有一个 学生 的类 这个类有两个属性 姓名 性别 而下面的 高中学生 不仅包含了 学生 类的两个属性 姓名 性别 还多出了一个特有的属性 文理科 此时 学生 就被称之为父类 高中学生 就被称之为子类 如果父类只能派生出一个子类 就称之为单继承 如果父类只能派生出多个子类 就称之为多类继承 多态性 Polymorphism 不同的对象收到同一消息可以产生完全不同的结构 这一现象叫做多态性 多态的实现受到继承的支持 二章知识点 什么是程序 程序设计的风格有哪些 4个 程序设计的三种基本方法 结构化方法 原型法 面向对象 机构化程序设计方法的四个主要原则 自顶而下 逐步求精 模块化 限制使用GOTO语句 结构化设计的三种基本结构 顺序 选择 循环 什么叫 对象 类对象的三个基本组成 对象标识 属性 操作 及五个基本特点 标识唯一性 分类性 多态性 封装性 模块独立性 类的基本特征 抽象性 继承性 封装性 多态性 第三章 软件工程基础 本章主要内容 软件工程基本概念结构化分析 设计方法软件测试程序的调试 软件的定义 记忆 软件 software 是计算机系统中与硬件 hardware 相互依存的另一部分 软件包括三个部分 程序 program 相关数据 data 说明文档 document 软件按照功能可以分为三类 应用软件 为了解决某一方面的实际应用而开发的相关系统 系统软件 为了对整个计算机的资源 包括硬件资源和软件资源 进行管理和调用的软件 支撑软件 包括各种各样的工具的软件 3 1软件工程基本概念 软件的特点 了解 软件没有明显的制造过程 软件的制造 明显不同于一般工业品的制造 软件在使用过程中 没有磨损 老化问题 软件在使用的过程中 不会像一般的工业品那样出现磨损 老化的问题 软件只会随着软件领域的发展 在现实的情况下这个软件已不再适应当前要求时候 就会要求我们编制新的软件以替代当前软件 软件是一种逻辑实体 不是物理实体 具有抽象性 也就是说 我们使用的软件 最常用的就是QQ通讯软件 我们只有运行它再通过显示设备 才能够看到它的运行并感受到他 软件是复杂的 以后会更复杂 而且软件的成本相当昂贵 软件工作牵涉到很多社会因素 软件的特点 了解 软件依赖与硬件和环境 导致了移植问题 我们的某些软件 是要与特定的硬件和环境先适应的 某一种软件 只能应用于某一特殊的硬件和环境 而同一软件移植到另一种硬件和环境的时候 就会出现问题 软件危机 记忆 早期的软件主要指程序 采用个体工作方式 缺少相关文档 质量低 维护困难 这些问题称为 软件危机 软件的特点导致了软件危机的提出 工程概念的出现源自于软件危机 软件工程 记忆 软件工程是指应用计算机科学 数学及管理科学等原理 以工程化的原则和方法来解决软件问题的工程 其目的是提高软件生产率 提高软件质量 降低软件成本 软件工程基本目标 了解 在给定成本 进度的前提下 开发出具有有效性 可靠性 可理解性 可维护性 可重用性 可适应性 可移植性 可追踪性和可互操作性且满足用户需求的产品 软件工程原则 理解 记忆 抽象 信息隐蔽 模块化 局部化 确定性 一致性 完备性和可验证性 1 抽象 抽象是事物最基本的特性和行为 忽略非本质细节 采用分层次抽象 自顶向下 逐层细化来控制软件开发过程的复杂性 2 信息隐蔽 采用封装技术 将程序模块的实现细节隐蔽起来 使模块接口尽量简单 3 模块化 模块是程序中相对独立的成分 一个独立的编程单位 模块的大小要适中 过大模块内部复杂性增加 太小整个系统过于复杂 4 局部化 保证模块间具有松耦合性 模块内部有高内聚性 5 确定性 软件中所有概念的表达应是确定 无歧义且规范的 6 一致性 内外部接口保持一致 系统规格说明与行为保持一致 7 完备性 软件系统不丢失任何重要成分 完全实现系统所需功能 8 可验证性 遵循容易检查 测评 评审原则 确保系统正确性 软件工程三要素 记忆 方法 完成软件工程项目的技术手段 工具 支持软件的开发 管理 文档生成 过程 支持软件开发的各个环节的控制 管理 软件工具和软件开发环境 记忆 软件工具 CASE 用来辅助软件开 运行 维护 管理 支持等过程中的活动的软件 软件开发环境 支持软件产品开发的软件系统 它由软件工具集和环境集成机制构成 软件开发技术 包括软件开发方法学 开发过程和软件工程环境 其中主要的内容是软件开发方法学 软件生命周期 记忆 理解 软件产品从提出 实现 使用维护到停止使用退役的过程称为软件生命周期 分为软件定义 软件开发及软件运行维护3个阶段 1 软件定义阶段 包括制定计划和需求分析 制定计划 确定总目标 可行性研究 探讨解决方案 制定开发计划 需求分析 对待开发软件提出的需求进行分析并给出详细的定义 2 软件开发阶段 软件设计 分为概要设计和详细设计两个部分 软件实现 把软件设计转换成计算机可以接受的程序代码 软件测试 在设计测试用例的基础上检验软件的各个组成部分 3 软件运行维护阶段 生命周期中花费最多的阶段 软件投入运行 并在使用中不断地维护 进行必要的扩充和删改 需求分析 记忆 用户对目标软件系统在功能 行为 性能 设计约束等方面的期望 需求分析的任务是发现需求 求精 建模和定义需求的过程 需求分析将创建所需的数据模型 功能模型和控制模型 需求分析的四步骤 记忆 需求获取 需求分析 编写需求规格说明书和需求评审 3 2结构化分析方法 需求分析的方法 了解 结构化分析方法 结构化程序设计理论在需求分析红的运用 目的是帮助弄清用户对软件的需求 建立系统的逻辑模型 面向数据结构的结构化数据系统开发法 DSSD 面向数据结构的Jackson系统开发法 JSD 面向数据流的结构分析法 SA 面向对象的分析方法 面向对象软件工程方法在需求分析中的应用 常用工具 记忆 数据流图 数据字典 判定树 判定表 开发策略 自顶向下 逐层分解 需求分析阶段的结果 软件需求规格说明书 RSR 作用 便于用户与开发人员进行理解和交流 反应系统的问题结构 作为系统开发的基础和依据 作为测试盒验收的依据评价标准 正确性 奇异性 完整性 可验证性 可理解性 可修改性 可追踪性 其中最重要的是 正确性 数据流图 DFD 以图形的方式描绘数据在系统中流动和处理的过程 它反映了系统必须完成的逻辑功能 是结构化分析方法中用于表示系统逻辑模型的一种工具 加工 转换 输入数据经加工变换产生输出 数据流 沿箭头方向传送数据的通道 旁边标注数据流名 存储文件 数据源 表示处理过程中存放各种数据的文件 源 潭 表示系统和环境的接口 属系统之外的实体 画数据流图的基本步骤 记忆 自外向内 自顶向下 逐层细化 完善求精 数据流图的示例 数据字典 DD 记忆 对所有与系统相关的数据元素的一个有组织的列表 是与系统相关的数据定义的集合 其作用是对数据流图中出现的被命名的图形元素的确切解释 数据字典是结构化分析方法的核心 数据字典常包括5个部分 记忆 数据项 数据结构 数据流 描述了数据流图中的数据流向 数据存储 描述了数据流图中的文件 数据处理 描述了数据流图中的加工 也就是圆圈所定义的内容 判断树 了解 又称为决策树 是一种描述加工的图形数据 适合描述问题里中具有多个判断 而且每个决策与若干条件有关 使用判定数进行描述时 应该从问题的文字描述中分清哪些是判定条件 那些是判定的决策 根据描述材料中的连接词找出判定条件的从属关系 并列关系 选择关系 根据它们构造判定树 判断表 了解 当数据流图中的加工依赖多个逻辑条件的取值 即完成该数值的一组动作 是由于某一组条件取值的组合而引发的 在此情况下 使用判断表比较合适 软件需求规格说明书 SRS 需求分析阶段的最后成果 通过建立完整的信息描述 详细的功能和行为描述 性能需求和设计约束的说明 合适的验收标准 给出对目标软件的各种需求 需求分析主要解决 做什么 的问题 确定系统的逻辑模型 而软件设计主要解决 怎么做 的问题 其基本目标使用比较抽象概括的方式确定目标系统如何让完成预定任务 确定系统的物理模型 从技术观点来看 软件设计包括软件结构设计 数据设计 接口设计 过程设计 记忆 结构设计 定义软件系统各主要部件之间的关系 数据设计 将分析时创建的模型转化为数据结构的定义 接口设计 描述软件内部 软件和协作系统之间以及软件与人之间如何通信 过程设计 把系统结构部件转换成软件的过程性描述 从工程角度来看 软件设计分两步完成 即概要设计和详细设计 记忆 概要设计 又称结构设计 将软件需求转化为软件体系结构 确定系统级接口 全局数据结构或数据库模式 编写概要设计文档 概要设计文档评审 详细设计 确定每个模块的实现算法和局部数据结构 用适当方法表示算法和数据结构的细节 软件设计基本原理 抽象 模块化 信息隐蔽和模块独立性 记忆 抽象 抽象是一种思维工具 就是把事物本质的共同特性提取出来而不考虑其他细节 模块化 解决一个复杂问题时自顶向下逐步把软件系统划分成较小的 相对独立但又不相互关联的模块的过程 信息隐蔽 模块的实施细节对于其他模块来说是隐蔽的 模块独立性 软件系统中每个模块只涉及软件要求的具体的子功能 和软件系统中其他模块的接口是简单的 模块独立性指标 耦合性和内聚性 模块划分原则是 高内聚度 低耦合度 模块之间的依赖性越高 耦合性就越高 模块的独立性就越弱 总体设计 概要设计 基本任务 1 设计软件系统结构 2 数据结构及数据库设计 3 编写概要设计文档 4 概要设计文档评审 软件结构设计工具 结构图 程序结构图 程序结构图的基本图符 记忆 矩形表示模块 箭头表示模块间的调用关系 用带注释的箭头表示模块调用过程中来回传递的信息 实心圆箭头表示控制信息 空心圆箭头表示数据信息 软件结构设计工具 结构图 程序结构图 常用结构图的四种模块类型 记忆 传入模块 从下属模块取得数据 经处理再将其传送给上级模块 传出模块 从上级模块取得数据 经处理再将其传送给下属模块 变换模块 从上级模块取得数据 进行特定的处理 转换成其他形式 再传送给上级模块 协调模块 对所有下属模块进行协调和管理的模块 软件结构设计工具 结构图 程序结构图 不需掌握 结构图例及术语 深度 表示控制的层数 本图例有5曾宽度 整体控制跨度扇入 调用一个给定模块的模块个数 扇出 一个模块直接调用的其他模块数 上级模块 从属模块 上 下两层模块a和b 且有a调用b 则a是上级模块 b是从属模块 原子模块 树中位于叶子结点的模块 软件结构设计工具 结构图 程序结构图 面向数据流的设计方法定义了一些不同的映射方法 利用这些方法可以把数据流图变换成结构图表示软件的结构 数据流类型 变换型和事务型 记忆 变换型 变换型数据处理问题的工作过程大致分为三步 即取得数据 变换数据和输出数据 变换型系统结构图由输入 中心变换 输出三部分组成 事务型 事务型数据处理问题的工作机理是接受一项事务 根据事务处理的特点和性质 选择分派一个适当的处理单元 然后给出结果 高腰设计的优化准则 了解 改进软件结构 提高模块独立性模块规模要适中模块的作用范围应该保持在模块的控制范围内软件结构的深度 宽度 扇入 扇出要适当降低模块接口的复杂度设计单入口 单出口的模块模块的功能可预测 详细设计基本任务 为软件结构图中的每个模块确定实现算法和局部数据结构 用某种选定的表达工具表示算法和数据结构的细节 常用设计工具 记忆 图形工具 程序流程图 N S 方盒图 PAD 问题分析图 和HIPO 层次图 输入 处理 输出图 表格工具 判定表 语言工具 PDL 伪码 3 3软件测试 目的 意义 人员 记忆 通过合理的设计测试用例以最少的人力和时间发现潜在的各种错误和缺陷 也就是说 软件测试的目的就是 检查错误 并对错误进行修改 但不能证明程序之中没有错误 因为软件是一项综合的庞大工程 错误可能会出现在多处 保证系统质量 满足需求规格 和可靠性由开发人员 用户一起完成 测试基本方法 记忆 人工测试 静态测试 评审软件文档或程序 包括代码检查 静态结构分析 代码质量度量 不实际运行软件 主要通过人工进行 机器测试 动态测试 通过运行软件 来检验结果的正确性 主要包括白盒测试方法和黑盒测试方法 白盒测试 结构测试 逻辑驱动测试 记忆 将软件看成透明的白盒 根据程序的内部结构和逻辑结构来设计测试例子 对程序的路径和过程进行测试 检查是否满足设计的要求 也就是说 白盒测试是对内部程序进行的测试 白盒测试基本原则 了解 保证所测模块中每一独立路径至少执行一次 保证所测模块所有判断的每一分支至少执行一次 保证所测模块每一循环都在边界条件和一般条件下至少各执行一次 验证所有内部数据结构的有效性 测试用例根据程序内部逻辑设计 主要用于软件的单元测试 出现让大家判断黑 白盒测试的时候 只要是关于程序的 就都是白盒测试 白盒测试用例主要设计方法有 记忆 逻辑覆盖 指一系列以程序内部的逻辑结构为基础的测试用例设计技术 基本路径测试 根据软件过程性描述中的控制流程确定程序的环路复杂性度量 用此度量定义基本路径集合 并由此导出一组测试用例 对每一条独立执行路径进行测试 逻辑覆盖设计的基本内容 利用测试用例 了解 语句覆盖 使得程序每一个语句至少都能被执行一次 路径覆盖 使程序中所有的可能的路径都至少经历一次 判定覆盖 保证程序中每个判断的每个取值分支 T或F 至少经历一次 条件覆盖 保证程序中每个判断的每个条件的可能取值至少执行一次 判断 条件覆盖 使判断中每个条件的所有可能取值至少执行一次 同时每个判断的所有可能取值分支至少执行一次 逻辑覆盖强度依次是 语句覆盖 路径覆盖 判定覆盖 条件覆盖 判断 条件覆盖 黑盒测试 功能测试 将软件看成黑盒子 不考虑程序内部细节 结构和实现方式 仅仅测试软件的基本功能是否满足需要 黑盒测试主要用于软件的确认测试 看是否实现了功能说明书的预期目标 根据程序的功能说明来设计测试用例 基本设计方法有 记忆 等价类划分法 典型黑盒测试方法 将程序的所有可能的输入数据划分成若干部分 及若干等价类 然后从每个等价类中选取数据作为测试用例 边界值分析法 它是对各种输入 输出范围的边界情况设计测试用例的方法 错误推测法 人们可以靠经验和直觉推测程序中可能存在的各种错误 从而有针对性地编写检查这些错误的用例 软件测试分四个步骤 从小到大依次是 记忆 单元测试 集成测试 确认测试 验收测试 系统测试 测试对象 对软件的最小单位 模块进行测试测试目的是 发现各模块内部可能存在的各种错误 测试用例设计 根据程序的内部结构 其依据是详细的设计说明书的源程序测试技术 通常以白盒测试为主 辅之以黑盒测试 单元测试内容 模块接口测试 局部数据结构测试 错误处理测试 边界测试 单元测试 测试对象 将模块组装起来后进行测试 测试目的是 发现与接口有关的错误 测试用例设计 根据概要测试说明书测试内容 软件单元的接口测试 全局数据结构与测试 边界条件和非法输入测试等模块组装方式 非增量方式组装 将所有模块一次性的全部进行测试地方法 和增量方式 先测试几个模块 通过之后再往这几个通过测试的模块上再添加模块地方法 组装 软件测试分四个步骤 从小到大依次是 记忆 单元测试 集成测试 确认测试 验收测试 系统测试 集成测试 任务 验证软件的有效性 也就是说 用户根据合同进行确认 以确认系统功能和性能的可接受性 测试用例设计 软件需求说明书测试方法 主要用于黑盒测试 软件测试分四个步骤 从小到大依次是 记忆 单元测试 集成测试 确认测试 验收测试 系统测试 确认测试 任务 将软件系统与硬件 外设及其他元素结合在一起 对整个软件系统进行测试 发现软件与系统定义不符合或与之矛盾的地方 测试用例设计 需求分析规格说明书基本内容 功能测试 性能测试 操作测试 配置测试 外部接口测试 安全性测试等等 软件测试分四个步骤 从小到大依次是 记忆 单元测试 集成测试 确认测试 验收测试 系统测试 系统测试 基本任务 根据测试时发现的错误 找出其原因和具体的位置 进行相应地更改 在开放阶段 由开发人员来进行 谁开发的程序就由谁来进行调试 基本步骤 错误定位 错误

温馨提示

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

评论

0/150

提交评论