一、软件过程
1.1、CMM(能力成熟度模型)

1.2、CMMI(能力成熟度集成模型)


二、软件过程模型
| 瀑布模型 | 需求明确 |
| 增量模型 | 能够快速构造可运行产品(快速交付) |
| 螺旋模型 | 适合大规模、高风险、需求变化的系统 |

2.1、瀑布模型


有过类似系统的开发经验意味着该系统的需求很明确了 用新系统替换原有的系统也是暗示需求明确
2.2、增量模型

具有最高优先级的功能首先交付,随着后续增量的增加,使得最重要的功能得到最多的测试 可以快速的提供一个初始版本让用户测试(只有增量模型)
2.3、演化(迭代)模型

2.4、原型模型

增量模型是每一次都开发出一个产品;原型是快速构建出一个系统框架,然后捕获用户需求进行迭代开发;
2.5、螺旋模型


螺旋模型的特点是风险评估
2.6、喷泉模型

2.7、统一过程(UP)模型


2.8、敏捷开发
敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。



三、软件需求分析


四、系统设计


五、系统测试
5.1、系统测试概述


在一个测试程序段中,若发现的错误越多,残存的错误不一定越少(爆水管)
5.2、单元测试




如何快速记忆模块接口和局部数据结构?
模块接口更关注的是从别处来的数据,类比于函数调用,通常关注传入数据的类型、个数、顺序 局部数据结构更关注数据本身,如是否定义、赋值、初始化、拼写等
5.3、集成测试
自顶向下集成测试不需要驱动模块 自底向上集成测试不需要桩模块 考的最多的是回归测试(3次)




5.4、测试方法概述

5.5、黑盒测试
等价类划分 边界值分析 错误推测 因果图

好的测试用例既要有有效等价类(合理输入),也要有无效等价类(不合理输入);但输入不能有两个及以上的无效等价类(无法判断到底哪个出错)


5.6、白盒测试
语句覆盖 (最弱) 判定覆盖,别称分支覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖 (最强) (覆盖都是白盒测试,从上到下依次增强)


详细展开(涉及组合的只有⑤和⑥)






补充知识:
简单路径:一条路径中没有重复的语句结点(判断语句可以重复) 总结:
如果语句给了具体的,那么可以循环,用例数会变少 如果语句没有给具体的,那么不可以循环




5.7、伪代码+白盒测试
先把伪代码转为流程图,然后进行白盒测试+McCabe度量




5.8、McCabe度量法

六、系统运行和维护
6.1、系统可维护性

6.2、维护与软件文档


6.3、系统维护的内容与类型



改正错误/防错性设计,对应的就是正确性维护 因为xxx原因/需求而需要变化/更新/升级(即外部原因),对应的就是适应性维护 添加功能(非原因引起)/提高性能,对应的就是完善性维护
6.4、可靠性、可用性、可维护性

6.5、沟通路径
无主程序员,所有人平等(完全图),沟通路径数量为 n*(n-1) / 2有主程序员,普通成员均通过主程序员沟通(中介者),沟通路径数量为 n-1
七、软件项目估算
7.1、COCOMO估算模型


补充选项里会出现的:
Putnam估算模型:是一种动态多变量模型
7.2、进度管理
7.2.1、甘特图

7.2.2、PERT图


最早时刻:从开始节点算,每一个节点的最早时刻=其前驱节点的最早时刻+任务持续时间(如果有多个前驱,取最大值,因为要等所有前驱才能开始后继) 最迟时刻:从结束节点算,每一个节点的最迟时刻=其后继节点的最迟时刻-任务持续时间(如果有多个后继,取最小值,因为多个人跟你要结果,要能够响应最早和你要的人) 松弛时间:每一个节点的最迟时刻-最早时刻(如果有多个后继,如4节点,其松弛时间也有两个,各算各的) 关键路径:松弛时间为0的路径/任务组成的路径

Tips:实际计算时不用求出所有节点的最迟时刻,可以反推。比如I节点的前驱H节点,最早和最迟不相等,所以所有经过HI的都可能是关键路径(即只能从上半部分的2条路径选),可以利用这个特性快速选择。
7.2.3、项目活动图

关键路径长度一般来说就是最长的那条路径(正好对应关键路径长度) 如果要缩短整个项目的工期,那么就需要缩短关键路径上的活动
7.3、软件配置管理

7.4、风险管理






风险识别:可能有哪几类风险
风险预测:风险发生的概率和后果
风险评估:定义风险参照水准(感觉像评估风险多大)
风险控制:处理风险
八、软件质量
8.1、软件质量模型





8.2、软件评审





xxx性、xxx情况 属于设计质量评审 xxx层次、xxx结构程序质量评审
8.3、软件容错技术



九、软件工具



夜雨聆风