onenote笔记迁移的,实在是不愿改格式了,就说一下:
一级标题:1.2.3.4.;二级标题:a.b.c.d.;三级标题:i.ii.iii.iv.;四级标题:1)2)3);五级标题:i)ii)iii)iv)。
为了好看(有缩进),改为代码块了。
1. 软件的定义及软件的特点:
a. 程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列。
b. 特点:
i. 软件是一种逻辑实体,而不是物理实体,具有抽象性。
ii. 软件的生产与硬件不同,没有明显制作过程。
iii. 软件在运行、使用期间不存在磨损、老化问题。
iv. 软件的开发、运行对计算机系统具有依赖性。
v. 软甲复杂性高,成本昂贵。
vi. 软件开发涉及诸多社会因素。
c. 分类:
i. 应用软件:为解决特定领域的应用而开发的软件。
ii. 系统软件:计算机管理自身资源,提高计算机使用效率并服务于其他程序的软件。如,操作系统,编译程序,汇编程序,网络软件,数据库管理系统。
iii. 支撑软件(工具软件):介于系统软件和应用软件之间,协助用户开发软件的工具性软件。
2. 软件危机与软件工程:
a. 软件危机:泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
b. 软件工程:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。
c. 软件工程三要素:方法、工具、过程。
3. 软件过程与软件生命周期:
a. 软件过程:软件过程就是把输入转化为输出的一组彼此相关的资源和活动。
b. 软件生命周期:软件从提出、实现、使用、维护到停止使用退役的过程称为软件的生命周期。
i. 可行性研究与计划制定
ii. 需求分析
iii. 软件设计
iv. 编码
v. 软件测试
vi. 运行和维护
4. 软件工程的目标与原则:
a. 目标:在给定成本、进度的前提下,开发具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可操作性且满足用户需求的产品。
b. 研究内容:
i. 软件开发技术:软件开发方法学、开发过程、开发工具、软件工程环境
ii. 软件工程管理:软件管理学、软件工程经济学、软件心理学
c. 软件工程的原则:
i. 抽象
ii. 信息隐蔽
iii. 模块化
iv. 局部化
v. 确定性
vi. 一致性
vii. 完备性
viii. 可验证性
5. 结构化分析方法
a. 软件开发方法:分析方法、设计方法、程序设计方法。
b. 结构化方法:结构化分析方法、结构化设计方法、结构化编程方法
6. 需求分析与需求分析方法
a. 需求分析:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求的过程。
b. 需求分析方法:
i. 结构化分析方法:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD),面向数据结构的结构化数据系统开发方法(DSSD)
ii. 面向对象的分析方法(OOA):
7. 结构化分析方法:
a. 实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
b. 工具:
i. 数据流图(DFD):
1) 元素:加工、数据流、数据源、数据的源点和终点。
2) 步骤:由外向里,自顶向下,逐层分解。
ii. 数据字典(DD):对所有与系统相关的数据元素的一个有组织的列表,以及精确、严格定义。
iii. 判定树:
iv. 判定表:
8. 软件需求规格说明书
a. 内容:软件的目标,功能需求,性能需求,外部接口,属性及约束条件。
b. 特点:
i. 正确性
ii. 无歧义性
iii. 完整性
iv. 可验证性
v. 一致性
vi. 可理解性
vii. 可修改性
viii. 可追踪性
9. 结构化设计方法
a. 软甲设计基本概念
i. 目标:用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模型。
ii. 包括:结构设计、数据设计、接口设计、过程设计。
iii. 一般过程:软件设计是一个迭代过程,先进性高层次的结构设计,后进行低层次的过程设计,穿插进行数据设计和接口设计。
iv. 基本原理:
1) 抽象
2) 逐步求精和模块化
3) 信息隐蔽和局部化
4) 模块独立性(高内聚、低耦合)
v. 结构化设计方法:采用最佳的可能方法设计系统的各个组成部分以及各成分之间的内部联系的技术。
b. 概要设计
i. 设计软件系统结构
ii. 数据结构及数据库设计
iii. 编写概要设计文档
iv. 概要设计文档评审
v. 常用软件结构设计工具是结构图(SC):
1) 构成:一般模块、数据信息、控制信息
2) 四种模块:传入、传出、变换、协调
3) 术语:
a) 深度:表示控制的层数
b) 宽度:整体控制跨度
c) 扇入:调用一个给定模块的个数
d) 扇出:一个模块调用的其他模块数
e) 原子模块:树中位于叶子结点的模块
vi. 面向数据流的结构化设计方法
1) 数据流类型
a) 变换型
b) 事物型
2) 面型数据流设计方法的实施要点与设计过程
a) 分析、确认数据流图的类型,区分是事物型还是变换型
b) 说明数据流的边界
c) 把数据流图映射为程序结构
d) 根据设计准则对产生的结构进行细化和求精
vii. 设计的准则
1) 提高模块独立性
2) 模块规模适中
3) 深度、宽度、扇出和扇入适当
4) 使模块的作用域在该模块的控制域内
5) 应减少模块的接口和界面的复杂性
6) 设计成单入口、单出口的模块
7) 设计功能可预测的模块
viii. 详细设计
1) 确定模块内部的详细执行过程,包括局部数据组织、控制流、每一步具体处理要求和各种实现细节等
2) 设计工具:
a) 图形工具:程序流程图(PFD)、N-S图、PAD图、HIOP图
b) 表格工具:判定表
c) 语言工具:PDL
10. 软件测试
a. 目的和定义
i. 定义:
1) 在规定条件下运行系统或构件的过程:在此过程中观察和记录结果,并对系统或构件的某些方面给出评价。
2) 软件项目的过程:检测现有状况和所需状况的不同(bug),并评估软件的特性
ii. 目的:
1) 软件测试是为了发现错误而执行程序的过程
2) 一个好的测试用例是指很有可能找到迄今为止尚未发现的错误的用例
3) 一个成功的测试是发现了至今尚未发现的错误的测试
b. 软件测试的准则
i. 所有测试都应追溯到需求
ii. 严格执行测试计划,排除测试的随意性
iii. 充分主语测试中的群集现象
iv. 程序员应该避免检查自己的程序
v. 穷举测试不可能
vi. 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便
c. 软件测试方法与技术综述
i. 静态测试与动态测试
1) 静态测试:变量检查、命名和类型审查、程序逻辑审查、程序语法审查和程序结构检查
a) 代码检查包括:代码审查、代码走查、桌面检查、静态分析
2) 动态测试:设计高效合理的测试用例是动态测试的关键
ii. 白盒测试方法与测试用例设计
1) 白盒测试把测试对象看作打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例。
2) 基本原则:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性
3) 分类
a) 逻辑覆盖测试:泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术
i) 语句覆盖
ii) 路径覆盖
iii) 判定覆盖
iv) 条件覆盖
v) 判断-条件覆盖
b) 基本路径测试:根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例对每一条独立执行路径进行测试
iii. 黑盒测试方法与测试用例设计
1) 目的:诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误
2) 方法:
a) 等价类划分法:
i) 有效等价类:合理、有意义的输入数据构成的集合
ii) 无效等价类:不合理、无意义的输入数据构成的集合
b) 边界值分析法:一般多用边界值分析法来补充等价类划分法
c) 错误推测法
d. 软件测试的粗略
i. 单元测试:依据详细设计说明书和源程序,采用静态分析和动态测试。对动态测试通常以白盒测试为主,黑盒测试为辅。目的是发现各模块内部可能存在的各种错误
1) 测试内容:模块接口测试、局部数据结构测试、重要执行路径检查、出错处理测试、影响以上各点及其他相关点的边界条件测试
ii. 集成测试:依据概要设计说明书,目的是发现与接口有关的错误
1) 非增量方式:将测试好的每一个软件单元一次性组装在一起再进行整体测试
2) 增量方式:将已经测试好的模块逐步组装成较大系统,在组装过程中边接边测,以发现连接过程中产生的问题。
a) 自顶向下:较早显示整个程序轮廓,较早验证主要的控制和判断点。但是当测试上层模块时使用的桩模块较多,很难墨迹真实模块全部功能,导致部分测试推迟
b) 自底向上:实际测试用例比较容易,但是在早期不能显示出程序的轮廓
c) 自顶向下和自底向上相结合
iii. 确认测试:验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全,正确。黑盒测试
iv. 系统测试:将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行环境下对计算机系统进行一系列的集成测试和确认测试。
11. 程序的调试
a. 目的:诊断和改正程序中的错误。(软件测试是尽可能多地发现软件中的错误,贯穿整个软件的生命周期,调试主要发生在开发阶段)
b. 基本步骤
i. 错误定位:占据绝大部分工作量
ii. 修改设计和代码,以排除错误
iii. 进行回归测试防止引进新的错误
c. 原则:
i. 确定错误原则
1) 分析思考与错误征兆有关的信息
2) 避开死胡同
3) 只把调试工具当辅助手段来用
4) 避免使用试探法,最多只能当作最后手段
ii. 修改错误的原则
1) 在出现错误的地方,有可能还有别的错误
2) 不要只修改了错误的征兆或表现,而没有修改错误本身
3) 注意修正一个错误的同时可能引进一个新的错误
4) 修改错误的过程将迫使人们暂时回到程序设计阶段
5) 修改源代码,不要改变目标代码
d. 软件调试方法:静态调试为主,动态调试为辅
i. 强行排错法:设置断点,程序暂停,观察程序状态,继续运行程序
ii. 回溯法:适用于小规模程序排错
iii. 原因排除法:通过演绎和归纳以及二分法
其实这部分就是读一遍有个印象就行,反正都是选择题,不会的话问题也不大就是不好拿优。
网友评论