软件设计师:软件工程基础知识
能力模型
CMM(能力成熟度模型)
- 初始级:没明确定义
- 可重复级:建立基本的项目管理过程和实践
- 已定义级:文档化、标准化
- 已管理级:管理层制定了软件过程和产品质量的详细度量标准
- 优化级:不断持续地改进
CMMI(能力成熟度模型集成)
基本不考
- 已执行的:可标识的输入转换为可标识的输出
- 已管理的:已管理过程的制度化
- 已定义的:已定义过程的制度化
- 定量管理的:可定量管理过程的制度化
- 优化的:量化手段改变和优化过程域
软件过程模型
瀑布模型(需求明确)
- 瀑布模型适合开发需求明确的,需求大致固定不会随意变更的系统
- V模型的关键字在于质量保证活动和沟通,基本问题逐步细化
线性顺序进行软件开发和维护,以项目阶段评审和文档控制为收入进行开发指导
需求必须要明确,不能随意变更需求,否则只能到项目后期才能发现
V模型一般是干扰选项
增量模型(快速构建)
可以快速构造可运行的产品
初始增量的用户需求必须要清晰,否则会造成后续增量的不稳定
成本高、效率低、配置复杂
演化(迭代)模型
对软件需求缺乏准确认识,先开发一个版本,后续继续收集需求进行迭代
原型模型(需求模糊 规模小)
适合需求模糊不清且系统规模不大
螺旋模型(风险分析 规模大)
螺旋模型的特点是加入了风险分析,适合大规模高风险的,需求变化的系统
喷泉模型(面向对象)
开发活动各个阶段不存在明显边界,交叉、迭代地进行
统一过程(UP)模型 14年后没考过
敏捷开发 纯背
4大价值观、5个原则、12个最佳实践
- 水晶法:不同项目都需要不同的策略、约定和方法论
- 并列争求法:30天一次迭代,并按需求优先级别来实现产品
开发过程
需求分析
概要设计
设计软件系统总体结构:确定模块之间调用关系;确定模块之间的接口
详细设计
模块内详细算法设计
测试
系统测试
单元测试 13年后没考过
- 模块接口
- 局部数据结构
- 重要的执行路径
- 出错处理
- 边界条件
集成测试 15年后没考过
- 自顶向下集成测试:不需要驱动模块
- 自底向上集成测试:不需要桩模块
- 回归测试
- 冒烟测试
测试方法
黑盒测试
- 等价类划分
- 边界值分析
- 错误推测(了解)
- 因果图(了解)
白盒测试 非常重要
逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
语句覆盖 每条语句至少执行一次
判定覆盖(分支覆盖) 每条语句的真/假值至少通过一次
都是Y,都是N
条件覆盖 每个逻辑条件真/假值都要出现一次
逻辑条件都是Y,都是N
判定/条件覆盖 逻辑条件和判定结果的真/假值都要出现一次
判定覆盖和条件覆盖的并集
条件组合覆盖 判定中条件的各种可能值的组合都要出现一次
YY NN YN NY
路径覆盖 覆盖所有可能的路径
McCabe度量法
计算程序复杂度:V(G)=m+n-2
m是箭头数、n是节点数
另一种算法:闭合环路数 + 1
考试会McCabe度量法+白盒测试一起考!!!
算需要多少条测试用例,最后计算程序复杂度
伪代码
- FOR循环
- WHILE循环
- DO-WHILE循环
考试会伪代码+McCabe度量法+白盒测试一起考!!!
给你伪代码,算需要多少条测试用例,最后计算程序复杂度
维护
系统维护概述
- 可理解性
- 可测试性
- 可修改性
软件维护
文档是软件可维护性的决定因素
可维护性在软件开发的各个阶段都需考虑
软件维护通常比开发期长得多,投入也更多
只要答案选项中说文档不好,肯定是错误选项
系统维护主要包括硬件维护、软件维护和数据维护(只考软件维护)
- 正确性维护:修bug
- 适应性维护:适配其它软件/硬件/系统
- 完善性维护:扩充功能、改善性能
- 预防性维护:适应为了变化主动增加功能
可靠性、可用性、可维护性
直接背公式
- 可靠性:MTTF/(1+MTTF) 无失效运作的概率
- 可用性:MTBF/(1+MTBF) 正确运作的概率
- 可维护性:1/(1+MTTR) 完成维护活动的概率
沟通路径
一个计算题,成员两两沟通
- 有主程序员:n-1条路径
- 无主程序员:n(n-1)/2
COCOMO/COCOMOII估算模型
不考公式只考概念
- 基本COCOMO模型:静态单变量
- 中级COCOMO模型:静态多变量
- 详细COCOMO模型:系统、子系统、模块3个层次
- COCOMOII模型:分为3个阶段性模型
应用组装模型:对象点
早期设计阶段模型:功能点
体系结构阶段模型:代码行
进度管理
进度安排的常用图形描述方法如下:
Gantt图
- 不能清晰反应任务之间的关系
- 不能确定项目中最关键的任务
- 不能反映最有潜力的部分
PERT图
箭头表示任务,上面的数字为完成该任务所需时间
结点称为事件,箭头表示的任务结束后,才出现事件,流出结点的任务才可以开始
如果多个任务指向一个结点,所有任务均结束的时刻才为该结点的最早时刻
最迟时刻为下一个结点的最早时刻减任务所需时间
松弛时间=最迟时刻-最早时刻
整个工程的关键路径:松弛时间为0的路径(耗时最长的路径)
项目活动图 最重要基本必考
根据表格先画项目活动图,再做题
软件配置管理 纯背
软件风险
风险管理
不确定性和损失
风险识别
风险预测
风险发生的概率、风险发生的后果
风险评估
定义风险参照水准
风险控制
辅助建立处理风险的策略
- 风险避免
- 风险监控
- RMMM计划
软件质量
ISO/IEC 9126软件质量模型 纯背 爱考
安全性属于功能性
易使用性不包含易分析性
Mc Call软件质量模型 了解
只考过这一次
软件评审 15年后没考过
设计质量评审不包括软件结构
程序质量评审:软件结构、接口
正式技术评审:揭露质量问题(发现软件中错误,showcase?)
软件容错技术 14年后没考过
软件工具
软件开发工具 没考过
需求分析工具、设计工具、编码与排错工具、测试工具
软件维护工具 会考
版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
逆向工程工具考过好几次