计算机二级 公共基础知识部分
第3章 程序设计基础
3.1 程序设计方法与风格
? 程序设计的风格总体而言应该强调简明清晰,易懂易读.
3.2 程序化程序设计
? 结构化程序设计方法的主要原则概括为:自顶向下、逐步求精、模块化、限制使用goto语句. ? 模块的独立性有助于信息隐蔽.
? 采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护. ? 结构化程序的三种控制结构:顺序结构、选择(分支)结构、循环(重复)结构.
3.3 面对对象的程序设计
? 对象是数据和容许的操作组成的封装体.
? 对象具备特点:标识唯一性、分类性、多态性、封装性. ? 面对对象的主要特征:抽象、继承、封装、多态.
? 将属性、操作相似的对象归为类,类是具有共同属性、共同方法的对象的集合. ? 对象间的相互合作需要一个机制协助进行,这样的机制叫做消息. ? 多态性显著提高了软件的可重用性和可扩充性.
11
计算机二级 公共基础知识部分
第4章 软件工程基础
4.1 软件工程基本概念
1. 软件定义与软件特点
? 计算机软件是包括程序、数据及相关文档的完整集合. ? 软件的特点:
? ? ? ? ? ? ? ? ?
软件是一种逻辑实体,具有抽象性.
软件的生产与硬件不同,没有明显的制作过程. 软件在运行、使用期间不存在磨损、老化问题. 软件的开发、运行对计算机系统具有依赖性. 软件复杂性高,成本昂贵. 软件开发涉及诸多的社会因素.
应用软件:如事务处理软件、工程与科学计算软件、实时处理软件、嵌入式软件、人工智能软件等. 系统软件:如操作系统、编译程序、汇编程序、网络软件、数据库管理系统等.
支撑软件:如需求分析工具软件、设计工具软件、编码工具软件、测试工具软件、维护工具软件等.
? 软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件).
2. 软件危机与软件工程
? 软件危机主要体现在:
? ? ? ? ? ?
软件需求的增长得不到满足. 软件的开发成本和进度无法控制. 软件质量难以保证.
软件不可维护或维护程度非常低. 软件的成本不断提高.
软件开发生产率的提高赶不上硬件的发展和应用需求的增长.
? 软件工程包括三个要素:方法、工具和过程.
3. 软件过程与软件生命周期
? 软件过程是把输入转化为输出的一组彼此相关的资源和活动.
? 软件生命周期是指将软件产品从提出、实现、使用维护到停止使用退役的过程. ? 将软件生命周期分为软件定义、软件开发和软件运行维护三个阶段.
? ? ?
软件定义:可行性研究、需求分析.
软件开发:总体设计、详细设计、编码、测试. 软件运行维护:使用、维护、退役.
12
计算机二级 公共基础知识部分
4.2 结构化分析方法
1. 需求分析
? 需求分析的任务是发现需求、求精、建模和定义需求的过程. ? 需求分析将创建所需的数据模型、功能模型和控制模型.
? 需求分析阶段的任务:需求获取、需求分析、编写需求规格说明书、需求评审. ? 软件需求规格说明书内容:功能需求、性能需求、外部接口、属性及约束条件.
2. 结构化分析常用工具
? 数据流图DFD:
? 图形表示:
? 数据字典DD ? 判定树 ? 判定表
4.3 结构化设计方法
1. 软件设计的基本概念
? 软件设计是把一个软件需求转换为软件表示的过程.
? 模块的独立程度是评价设计好坏的重要标准,模块的独立程度有两个定性标准度量,即模块间的耦合性和
模块内的内聚性. 模块的内聚性越高,模块间的耦合性就越低,好的软件设计应尽量做到高内聚、低耦合.
2. 概要设计
? 软件概要设计(总体设计)的基本任务是:
? ? ? ?
设计软件系统结构. 数据结构及数据库设计. 编写概要设计文档. 概要设计文档评审.
? 常用的软件结构设计工具是结构图SC,也称系统结构图或程序结构图.
? 经常使用的结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块. ? 结构图的有关术语:
?
深度:表示控制的层数.
13
计算机二级 公共基础知识部分
? ? ? ?
宽度:整体控制跨度(最大模块数的层)的表示. 扇入:调用一个给定模块的模块个数. 扇出:一个模块直接调用的其他模块数. 原子模块:树中位于叶子结点的模块.
3. 详细设计
? 图形工具:程序流程图、N-S图、问题分析图PAD、HIPO图.
?
N-S图实例:
?
PAD图实例:
? 表格工具:判定表. ? 语言工具:伪码PDL.
14
计算机二级 公共基础知识部分
4.4 软件测试
1. 软件测试概述
? 软件测试是为了发现错误而执行程序的过程.
? 从是否需要执行被测试软件的角度,可以分为静态测试和动态测试,动态测试包含白盒测试方法和黑盒
测试方法.
2. 静态测试
? 静态测试包括代码检查、静态结构分析、代码质量度量等.
? 测试用例是为了测试设计的数据. 测试用例由测试输入数据和与之对应的预期输出结果两部分组成.
3. 白盒测试与黑盒测试
? 按照白盒测试的基本原则,白盒法是穷举路径测试.
? 白盒测试方法也称结构测试或逻辑驱动测试. 白盒测试的主要方法有逻辑覆盖、基本路径测试等. 逻辑覆
盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断-条件覆盖.
? 黑盒测试方法也称功能测试或数据驱动测试. 黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只
依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明. 黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法、因果图等.
4. 软件测试的策略
? 软件测试是保证软件质量的重要手段,软件测试是一个过程,其测试流程是对该过程规定的程序,目的
是使软件测试工作系统化.
? 软件测试过程按照四个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试.
? ? ?
单元测试主要针对模块的五个基本特性进行:模块接口测试、局部数据结构测试、重要的执行路径检查、出错处理测试、影响以上各点及其他相关点的边界条件测试.
集成测试所涉及的内容包括:单元接口测试、全局数据结构测试、边界条件和非法输入的测试等. 集成测试时将模块组装成程序通常采用非增量方式组装和增量方式组装两种方式. 非增量方式又称一次性组装方式. 增量方式组装包括自顶向下、自底向上、自顶向下与自底向上结合的混合增量方式.
4.5 程序调试
? 程序调试的任务是诊断和改正程序中的错误.
15