目录:
第一章 数据结构基础
第二章 程序语言基础知识
第三章 操作系统基础知识
第四章 软件工程基础知识
第五章 数据库系统
第六章 多媒体技术及应用
第七章 计算机的体系结构和主要部件
第八章 存储器系统
第九章 安全性、可靠性与系统性能评测
第十章 网络基础知识
第十一章 软件知识产权
第十二章 计算机专业英语
第十三章 信息化
第十四章 信息系统基础知识
第十五章 标准化
第十六章 软件设计概念
第十七章 数据流图设计
第十八章 数据设计
第十九章 测试用例设计
第二十章 软件界面设计
第二十一章 UML分析与设计
第二十二章 数据库设计
第二十三章 算法设计
第一章 数据结构基础
数据结构:
按逻辑结构分类
集合(无逻辑结构)
线性结构(线性表)(一维数组,队列 [W1] ,栈) (顺序表,链表 [W2] )
非线性结构(树,图,多维数组)
按存储结构分类
顺序存储结构
链式存储结构
索引存储结构
散列存储结构
线性表 (顺序存储 链接存储)
栈
队列
树的计算:
总共结点数 = 所有结点度的总和 + 1
n = k +1
可推导出二叉树 对任何一棵二叉树,如果其叶子结点数 [W3] 为n 0 ,度为2的结点数为n 2
(n 0+ n 1+ n 2 =n) n 0 = n 2 + 1
二叉树的重要特性:
在二他树的第i层上最多有2 i-1 个结点(i>=1)
深度为k的二叉树最多有2 k -1个结点(k>=1)
完全 二叉树 n-1层是满树
树与二叉树的 转换
树的遍历 (前序 后序 层次)
二叉树的遍历 (前序 中序 后序 层次)
二叉排序树 (查找 插入结点 删除结点)
平衡二叉树 Balanced Binary Tree Height-Balan ced Tree AVL树动态调平衡问题 衡量排序二叉树的指标
它或者是一棵空树,或者是一棵这样的树:树中任一结点的左右子树的深度相差不超过1
误区:
判断
构建
平衡树调整 分四种情况:
LL 单向右旋
RR 单向左旋
LR 先左后右
RL 先右后左
线索树 二叉树转化线索树 Lbit Lchild Data Rchild Rbit
最优二叉树( 哈夫曼树 ) 树的带权路径长度(树的代价) 构建 哈夫曼编码
图:
线性表 和 树 都属于图的特例
有向图 <A , B>
无向图 (A , B)
无向图 顶点的度 是关联于此顶点的边的数目
有向图 顶点的度 入度 出度 度=出度+入度
子图 真子图
完全图 (无向 有向) 每条顶点都有边相连
路径 回路 简单回路 26:40
连通图 连通路径 (有向 无向) 强连通图 (既能从a 到b,也能从b到a) 连通分量
网络 (图+权值)
图的 存储 网络的跟图的几乎一样,只是多了权值
邻接 矩阵 有几个顶点就用几阶矩阵
邻接 表
在无向图的邻接表中,对应某结点的链表的结点个数就是此顶点的 度 。在有向图的邻接表中,对应某结束的链表的结点个数就是此顶点的 出度
图的遍历:
深度优先遍历(先根)
广度优先遍历(层)
图的最小生成树 (普里姆算法 Prim 克鲁斯卡尔算法 Kruskal)
拓扑排序 AOV网络 序列可以有多个
关键路径 (最长路径) AOE网络(AOV网+权值)
Ve(j) 最长路径长度 最早发生时间
e(j) 最早开始时间
活动(边)的最早开始时间 事件(顶点)的最早发生时间
最迟发生时间 最迟开始时间 Vl(j) l(j)*
排序算法 (内存 或者内存和外存结合使用)
插入排序(直接插入排序 [W4] 、 希尔 排序 [W5] )
选择排序(简单选择排序、 堆排序 [W6] )
交换排序(昌泡排序、 快速排序 )
归并排序
基数排序
时间复杂度 (最好 平均 最坏) 空间复杂度 稳定性
查找算法 平均查找长度 ASL
顺序查找 ASL=(n+1)/2
二分查找(折半查找法) ASL ~ log 2 (n+1) -1
分块查找 前面两种方法的一种结合 ASL ~ log 2 (n/2+1) +s/2 (s 2 +2s+n)/2s
散列表 (Hash 哈希表 杂凑表)
Hash函数 直接定址法 除余法 [W7] 基数转换法 平方取中法 折叠法 移位法 随机算法
冲突的解决 散列表的建立 平均查找长度
开放定址法 (线性探查法 双散列函数法)
拉链法
第二章 软件工程基础知识
软件文档资料: 管理人员 开发人员 维护人员
国家标准局1988年1月批准并发布的《 GB8567-1988 计算机产品开发文件编制指南》规定在一项软件开发过程中应该产生 14 种文件: [W8]
可行性研究报告
项目开发计划
软件需求说明书 ( 功能说明 界面设计 数据库设计 )
数据要求说明书
概要设计说明书
详细设计说明书
数据库设计说明书
用户手册
操作手册
模块开发卷宗
测试计划
测试分析报告
开发进度月报
项目开发总结
MVC 模型 ( Model ) 视图 ( View ) 控制器 ( Controller )
产品生命周期 (Product Life Cycle,PLC) 面向对象编程OOP
系统开发流程:
项目准备
项目描述
分析
系统设计
系统架构
系统功能模块设计
系统主要工作流程
数据库分析、设计
需求分析 ( 数据字典 DD , 数据流程图 DFD )
(业务处理模型 BPM business process model )
概念模型(E-R图)
( 概念数据模型 CDM conceptual data model)
( 面向对象模型 OOM object oriented model)
逻辑模型( 表的三范式 1NF表中表 2NF组合依赖 3NF传递依懒 )
物理模型
( 物理数据模型 PDM phsical data model)
系统页面设计
系统调试、运行
网站开发流程: 网站策划方案书框架 删除了
项目准备
项目描述
市场分析、用户分析、竞争对手分析 、网站定位、赢利模式分析
系统设计
系统架构
系统功能模块设计
系统主要工作流程
数据库分析、设计
需求分析 ( 数据字典 DD , 数据流程图 DFD )
(业务处理模型 BPM business process model )
概念模型(E-R图)
( 概念数据模型 CDM conceptual data model)
( 面向对象模型 OOM object oriented model)
逻辑模型( 表的三范式 1NF表中表 2NF组合依赖 3NF传递依懒 )
物理模型
( 物理数据模型 PDM phsical data model)
系统页面设计
系统调试、网站推广、运营
软件需求分析与设计 : [W9]
问题识别
分析与综合
编制需求分析的文档
需求分析与评审 (功能的正确性、完善性、及其他进行评审)
需求分析的原则
必须能够表达和理解问题的数据域和功能域
必须按照自顶向下层层分解
给出系统的逻辑视图和物理视图
需求的分类:
功能需求
非功能需求 (性能)
设计约束
设计 概要设计 详细设计
主要软件开发方法:
结构化 分析和设计 面向数据流
概要设计:
复查基本系统模型(确保系统的输入输出数据是否符合实际)
复查并精化数据流图
确定数据流图的信息流类型 (变换流 事物流)
根据流类型分别实施变换分析或事务分析
根据软件设计原则对得到的软件结构图进一步优化
详细设计:
程序流程图
盒图(N-S图)
PAS图 问题分析图(problem analysic diagram)
用二维数据流的模型来表现
PDL 伪码
判定树
判定表
面向数据 结构 的设计 Jackson
面向对象 的分析和设计 OOA
软件生命周期:
定义阶段 主要文档:用户需求说明书
开发阶段
维护阶段 结构化的维护方法 修改文档--修改代码--测试
软件维护 (时间最长 花费 最大的)
改正性维护
适应性维护
完善性维护
预防性维护
软件的可维护性
可理解性 可测试性 可修改性
生命周期 模型 :
瀑布模型
快速原型模型 原型法
演化模型
增量模型
螺旋模型
喷泉模型
基于构件的模型
快速应用开发模型RUP方法
软件项目管理的内容 :
质量 成本 进度
主要活动 :
1. 启动软件项目
2. 度量 “如果不能用数字来描述它,说明你还没有了解它”
3. 估算
4. 风险分析
5. 进度安排
6. 追踪和控制
三个阶段:
1. 项目 启动 阶段
2. 项目 实施 阶段
3. 项目 关闭 阶段
项目估算
两种软件估算策略:
自顶向下估算 通常采用的方法
自底向上估算
软件 规模 估算:
LOC 估算法 代码行数(Line Of Code) KLOC(千代码行)
FP (功能点)估算法 衡量工作量大小 功能点=信息处理规模*技术复杂度
信息处理规模
技术复杂度
软件 工作量 估算: 规模/产能=工作量
IBM模型
普特南模型
COCOMO模型 知名度最高
软件 成本 估算:
工作量*( 费用 薪水.....)
软件项目组织与计划:
Gannt 图(甘特图) 前趋图
PERT技术 (计划评审技术) CPM方法(关键路径法) 都是制定项目开发计划最常用方法
计划和执行 (项目组计划 个人项目计划)
人员职责矩阵
甘特图
进度监控与计划修正
EVA分析法 已获值分析 最常用的项目进度监控方法
修正项目计划
提交项目进度周报
更新甘特图
配置管理:
制定配置管理计划
实施变更管理
需要借用于配置数据库和基线(里程bei)
配置数据库 分为:开发库、受控库、产品库
实施版本管理
发行管理
风险管理 : 关心未来 关心变化 必须解决选择问题
风险识别 风险估计 风险驾驭
软件质量管理:
ISO/IEC9126 软件质量模型
McCall质量模型
软件测试与维护:
目标:以尽可能少的时间和人力发现软件产品中尽可能多的错误
测试用例(测试数据+预期结果)
成功的测试:发现了至今为止沿未发现的错误的测试
高效的测试:用少量的测试,发现 尽可能多的错误
测试过程:
制定测试计划(测试内容,进度安排,测试所需的环境和条件,培训安排)
编制测试大纲
根据测试大纲设计生成测试用例
实施测试
生成测试报告
测试原则
应该尽早地、不断地进行软件测试,把软件测试贯穿于开发过程的始终;
所有的测试都应该追溯到用户的需求。从用户的角度来看,最严重的错误是导致软件不能满足用户需求的那些错误;
应该从“小规模”测试开始,并渐渐进行“大规模”测试;
应该远在测试之前就制定测试计划;
根据Parato原理,80%的错误可能出现在20%的程序模块中,测试成功的关键是怎样找出这20%的模 块;
应该从独立的第三方从事测试工作
对非法和非预期的输入数据也要像合法的和预期的输入数据一样编写测试用例
检查软件是否做了应该做的事仅是成功的一半,另一半是看软件是否做了不该做的事
在规划测试时不要设想程序不会出错
从测试阶段划分: 单元测试 (详细设计) 集成测试 (概要设计) 确认测试 (需求分析) (系统测试)
单元测试(模块测试) 依据 源程序
着重从 模块 接口 、 局部数据 结构、重要的执行通路、 出错 处理、 边界 条件这几个方面对模块进 行测试
驱动模块 桩模块
通常采用白盒测试 只有单元测试中采用 白盒 测试
集成测试(组装测试) 依据 设计说明书 等
主要目标是发现模块间的接口和通信问题
通常采用墨盒测试
概要设计阶段制定
集成的方式可分为非增殖式和增殖式
确认测试 依据 需求规格说明书
墨盒测试 其测定计划在需求分析阶段制定
a测试
b测试
系统测试
恢复测试
安全性测试
强度测试
性能测试
可靠性测试
安装测试
调试:
试探法
回溯法
对分查找法
归纳法
演绎法
软件 测试 的 定义 : 错误 缺陷 失效 事故
妥善保存测试计划、测试用例、出错统计和最终分析报告,为软件维护提供方便
软件测试并不等于程序测试:
需求分析、概要设计、详细设计及程序编码阶段所得到的文档包括 需求规格说明 、 概要设计规格说明 、 详 细设计规格说明 、 详细设计规格说明 及 源程序 都应成为软件测试的对象
记录测试用例的执行历史是很有用的
包括测试用例是 什么时候 由 谁 运行的,每次执行的通过/失败 记录 ,测试用例的测试软件 版本 等
测试用命应该包含如下信息:
测试用例 ID 、目的、 前提 、 输入 、预期输出、执行结果、执行历史 以及 日期、版本、执行人等信息
测试方法:
静态测试
人工检测(个人复查 抽查 会审)
动态测试
白盒(逻辑驱动测试)(结构测试)
最常见的方法是逻辑覆盖法
语句 覆盖 判定 覆盖(条件比判定覆盖的范围细) 条件 覆盖 判定/条件 覆盖 条件组合 覆盖 路径覆盖 (覆盖率最高)
墨盒(数据驱动测试)(功能测试) 主要在集成测试 与 确认测试阶段
等价类 划分 有效等价类 无效等价类 [W10]
边值分析(边界值) 边值时是最容易出错的
错误推测法
因果图 根据输入条件和输出结果之间的因果关系来设计测试用例
软件维护:
改正性维护
适应性维护
完善性维护
预防性维护
软件的 可维护性 :
可理解性
可测试性
可修改性
软件 维护管理:
保证维护质量、提高维护效率、控制维护成本
核心是维护评估和维护验证
软件过程改进:
CMM模型 软件成熟度模型
初始级 可重复级 已定义级 已管理级 优化级
CMMI 1.1 模型 涉及面更广
第三章 网络基础知识
网络的功能:
数据通信
资源共享
负载均衡 (分布式、网格)
高可靠性
网络的拓朴结构
总线型 星型 环型 树型 网状(分布式)
OSI七层模型
1-3 通信子网
4 链接层
5-7 资源子网
公共服务器保留端口
IP地址的划分
子网划分
子网划分
子网划分:把主机号当子网号用
子网合并:把网络号当主机号用
传输介质
FTP 一条是用于传送控制信息 21 端口 另一条是传送文件内容 20 端口
匿名的FTP用户为anonymous
SMTP 25 端口 简单邮件传送协议,用于邮件的发送
POP3 110 端口 邮局协议 用于接收邮件
IMAP 143 端口 邮件访问协议 用于替代POP3协议的新协议
DNS 域名解析协议 53 端口
第四章 软件知识产权
软件知识产权
国家版权局主管全国软件著作权登记管理工作。
国家版权局认定中国版权保护中心为软件登记机构。
经国家版权局批准,中国版权保护中心可以在地方设立软件登记办事机构。
第五章 标准化
按制定机构和适用范围的分:
国际标准 国标标准化组织 ISO 国际电工委员会 IEC 国际电信联盟 ITU
国家标准 中华人民共和国国家标准 GB 中国机械行业强制性行业标准 JB 美国国家标准协会标准 ANSI 英国国家标准 BS 日本工业标准 JIS 美国国家标准局联邦信息处理标准 FIPS-NBS
行业标准 美国电气和电子工程师学会标准 I EEE 中华人民共和国国家军用标准 GJB
美国国防部标准 DOD-STD 美国军用标准 MIL-S
企业标准
地方标准 DB....
根据法律约束性分类:
强制性标准 GB
推荐性标准 GB/T
根据性质分类:
技术标准
管理标准
工作标准
首先要需要了解的是web容器默认编码是iso-8859-1,一个汉字占用 两 个字节,而在utf-8中一个汉字占用 三 个字节。所以在数据传递过程中,必须手动设定容器编码格式,否则会出现字符位丢失的情况。即3个字节变为两个字节,自然会变成乱码。
汉: GB18030 (包括GB2312 GBK)
小数民:ISO10646
ISO-8859-1:
最简单的编码规则,
GB2312,BIG5,Shift_JIS,ISO-8859-2
把 UNICODE 字符串通过 ANSI 编码转化为“字节串”时,根据各自编码的规定,一个 UNICODE 字符可能转化成一个字节或多个字节。
反之,将字节串转化成字符串时,也可能多个字节转化成一个字符。比如,[0xD6, 0xD0] 这两个字节,通过 GB2312 转化为字符串时,将得到 [0x4E2D] 一个字符,即 '中' 字。
“ANSI 编码”的特点:
1. 这些“ANSI 编码标准”都只能处理各自语言范围之内的 UNICODE 字符。
2. “UNICODE 字符”与“转换出来的字节”之间的关系是人为规定的。
UTF-8,UTF-16,UnicodeBig
与“ANSI 编码”类似的,把字符串通过 UNICODE 编码转化成“字节串”时,一个 UNICODE 字符可能转化成一个字节或多个字节。
与“ANSI 编码”不同的是:
1. 这些“UNICODE 编码”能够处理所有的 UNICODE 字符。
2. “UNICODE 字符”与“转换出来的字节”之间是可以通过计算得到的。
字符串都是unicode码,包括英文,汉字...其他字符
unicode可以被转化为字节(byte),如何转换呢,就通过gbk、utf-8、gb2312等编码方式。当把字节转换回字符串的时候,也要用相应的编码方式进行转换。
关于汉字的字符集有:GB2312、GB13000/ISO10646、GBK、GB18030,其中 GBK 是 行业标准 ,其他的是 国家 或 国际 标准,
其中 GB18030 是 强制性 国家标准。
从计算机对多国语言的支持角度看,大致可以分为三个阶段:
阶段一 ASCII
阶段二 ANSI编码(本地化)
阶段三 UNICODE(国际化)
字符,字节和编码:
http://www.regexlab.com/zh/encoding.htm
在 C++ 和 Java 中,用来代表“字符”和“字节”的数据类型,以及进行编码的方法:
类型或操作 |
C++ |
Java |
字符 |
wchar_t |
char |
字节 |
char |
byte |
ANSI 字符串 |
char[] |
byte[] |
UNICODE 字符串 |
wchar_t[] |
String |
字节串→字符串 |
mbstowcs(), MultiByteToWideChar() |
string = new String(bytes, "encoding") |
字符串→字节串 |
wcstombs(), WideCharToMultiByte() |
bytes = string.getBytes("encoding") |
以上需要注意几点:
1 Java 中的 char 代表一个“UNICODE 字符(宽字节字符)”,而 C++ 中的 char 代表一个字节。
2 MultiByteToWideChar() 和 WideCharToMultiByte() 是 Windows API 函数。
第六章 软件设计概述
软件设计基本原则
信息隐藏(提高了软件的可维护性。而且避免了错误的蔓延,改善了软件的可靠性)
模块独立性(高内聚 低耦合)
内聚 (功能内聚 信息内聚 通信内聚 过程内聚 时间内聚 逻辑内聚 巧合内聚)
耦合 (非直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合 内容耦合)
深度 宽度 扇出与扇入
设计良好的的软件结构通常 顶层扇出较大 , 中间扇出较小 , 底层模块则有大扇入
结构化设计
系统结构图
面向对象设计
面向对象分析方法 OOA
面向对象设计 OOD
设计评审
高级管理人员的职责:确定主审员、审批评审记录
主审员的职责:在评审会前提出项目的书面评审意见、确定评审组、确定评审结果并填写 评审记录。
评审组的职责:专业评审组评委表决通过项目初评结论并报综合评审会议;通过设计报告
第七章 软件界面设计
例如,“保存”可能是应用软件中最常见的按钮,友好的界面应该是当保存出错时,弹出对话框“网络中断,保存失败!”但常常见到成功执行了保存,仍然弹出对话框“保存成功!”,必须确定后才能继续,这就是不友好的界面。
输入输出的识别与分类
在需求分析阶段,分析员已经标识出关键的输入、输出,在设计阶段要进行详细的识别
传统和面向对象的输入输出
在传统方法中,通过在数据流图中增加更多的细节数据流,从中识别输入输出。
在面向对象方法中,进入和离开系统的消息就是要识别的输入输出。用例图中,角色为 用例提供输 入,用例为角色提供输出:在交互图、设计类图中的方法,状态图中的方法, 状态图中的转换,都 可识别输入输出提供信息
用户界面和系统界面
用户界面指系统中需要用户交互的输入输出部分
系统界面指很少需要人员干预的输入输出部分。这种界面较为隐蔽,比如来自其他系统的电 子信 息,向其他系统发送信息或消息等。
这两种界面的设计需要不同的专业知识和技术,因而应该分开设计
理解用户界面
对于最终用户而言,用户界面代表系统本身,应及早考虑界面设计
以用户为中心的设计技术
需要及早地关注用户及其工作 快速界面原型工具
反复评价系统设计以确保其可用性
收集整理用户的各种素质,抽象出几个典型角色,系统至少要让这些典型角色感到系统 良好的可用 性
使用迭代开发方法 每次迭代都以用户为中心
人机界面研究领域
界面设计指导原则
可视性 (控件在动作后及时响应) 可供性 (外观体现和反映控件功能)
美观耐看
调节界面 突出其关心常用的部分,其他的放到次要位置
8条 黄金规则
尽量保持一致性
外观和功能的一致性,人有习惯性,设计应该向好的习惯靠拢
为熟练用户提供快捷键
最好提供自定义快捷键功能
提供信息反馈信息
相应的动作是否已被确认
设计完整的对话过程
“余额查询” 显示余额 “关闭”按钮
提供简单的错误处理机制
错误信息不应该是指责性的,系统还应简化错误处理。
比如用户输入一个无效的账号,系统应该提示用户并把光标停留在账号上以供编辑
允许撤消动作
在所有对话框都包含“取消”按钮
提供控制的内部轨迹
系统应该让用户觉得由用户自己在做决定。设计者可以通过提示信息使用户产生这种感觉,如
“ 正在执行查询命令 ”等
减轻短期记忆负担
人在同一时间只能记忆 7 条信息
专业性
专业的交互设计人员,了解用户的操作习惯和操作现状,了解用户对于计算机的熟识程
度,了解哪些是用户频繁操作的功能,反复的迭代设计
特定性
一般的软件使用用户无非是高层领导、管理中层和一线作业人员。可以针对这三个层次的用户分别设 置“角色”,比如“局长”“科长”“车工”。还需要对这些抽象出来的角色进行具体化,比如“王局长” “李局长”“张局长”
一个好的用户界面应具有以下特点:
可使用性
使用的简单性
用户界面中所用术语的 标准化 和 一致性
拥有HELP(帮助)功能
快速的系统响应和低的系统成本
用户界面应具有容错能力
灵活性
考虑用户的特点、能力和知识水平。应当使用户界面能够满足不同用户的需求
用户可以根据需要制定和修改界面方式
系统能够满足用户的希望和需要
与其他软件系统交互应有标准的界面
复杂性和可靠性
用户界面的规模和组织的复杂程度就是界面的复杂性
用户界面的可靠性是指无故障使用的间隔时间
设计模式:
创建型模式 (静态)
单身模式 ( 一个类只允许创建一个实例 ) DEMO
结构型模式 (静态)
Adapter(适配器)模式 DEMO
Decorator(装饰)模式 java DEMO c# DMEO
行为型模式 (动态)
Observer(观察者)模式 DEMO
第八章 算法设计
算术设计要求
有穷性
确定性
输入 0个输入就是本身就定出了一个初始条件
输出
可行性
硬件的速度
问题的规模
书写程序的语言
编译程序所生成目标代码的质量
算法基础特性:
正确性、可读性、健壮性、效率与低存储量
算法复杂度分析: 时间复杂度 (开始结束所需时间) ,空间复杂度
迭代法
多某个点出发,通过某种方式求出下一个点,使得其离要求的点(方程的解)更近一步;当两者之差接近到可接受的精度范围时,就认为找到了问题的解
穷举搜索法
穷举所有可能的,从中找出要求的解,规模不大时用
递推法
将一个复杂问题推到已知解的简单问题,
递归法 (递推 + 回归)
分治法 ( 分解,解决,合并 ) ( 分解后递归 ) 分而治之
此问题的规模缩小到一定的程序就可以容易地解决
可以分解为若干个规模较小的相同问题
利用此问题分解出的子问题的解可以合并为该问题的解
该问题所分解出的各个子问题相互独立的
二分查找法
汉诺塔问题
动态规划法
找出最优解的性质,并刻画其结构特征
递归地定义最优值
以自底向上的方式计算出最优值
根据计算最优值时得到的信息,构造最优解
最大子段问题
回朔法 ( 深度优先 )
贪婪法
每次只求解,不要求最优解 ( 有一个贪婪准则 )
分去限界法 ( 广度优先 )
队列式分支界限法
优先队列式分支界限法
单源最短路径问题
概率算法
也有循环队列
单链表 (数据域,指针域)其最后一个节点的指针域为空(null)
循环链表
双链表(两个指针域)
度为0的节点
适合链表结构
希尔排序
Shell 也称为缩小增量排序
d1 = n/2 = 5
d2 = d1/2 =3 取奇数
d3 = d2/2 = 1 取奇数
堆:孩子结点都要大于父结束
小顶堆
大顶堆
当i>=n/2时,表示结点i为叶子结点
以关键码除以表元素总数后得到的余数
其中
管理人员 主要使用的有项目开发计划、可行性研究报告、模块开发卷宗、开发进度月报、项目开发总结报告;
开发人员 主要使用的有项目开发计划、可靠性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、测试计划、测试分析报告;
维护人员 主要使用的有设计说明书、测试分析报告、模块开发卷宗
原则:
必须要表达 的数据域和功能域
必须 自顶向下
必须 系统逻辑视图,物理视图
等价类划分:
1. 如果输入条件规定了取值范围或值的个数,则可以确立一个有效等价类和两个无效等价类;
2. 如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个有效等价类;
3. 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。
4. 如果规定了输入数据的一组值,并且程序要对每个输入值分别进行处理。这时可为每个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。
5. 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)
从划分出的等价类中选择测试用例:
为每一个等价类规定一个唯一编号
设计尽可能少的测试用例,覆盖所有的有效等价类
针对每一个无效等价类,设计一个测试用例来覆盖它