能力成熟度模型CMM
-
初始级(杂乱)
-
可重复级(管理跟踪项目费用)
-
已定义级(文档化、标准化,标准软件过程)
-
已管理级(详细度量标准,产品质量理解控制)
-
优化级(加强定量分析,持续改进)
能力成熟度模型CMMI集成模型有2种表示方法:阶段式模型和连续式模型(0~5级)
阶段式模型
-
初始的
-
已管理的
-
已定义的
-
定量管理的
-
优化的
连续式模型
-
0:未完成的
-
1:已执行的:将输入工程产品转换输出工程产品
-
2:已管理的
-
3:已定义的:标准软件开发
-
4:定量管理的:改进控制
-
5:优化的:量化改进
统一过程UP
三大特点:用例和风险驱动、以架构为中心、迭代并且增量
开发四个阶段:起始:生命周期目标、精化:生命周期架构、构建:初始运作功能和移交:产品发布
五个工作流:需求、分析、设计、实现、测试
敏捷统一过程AUP:大型任务连续,小型活动迭代
软件过程模型
-
瀑布模型(SDLC):结构化方法中模型,一步一步走,直到最后完成项目开发 文档评审 需求变更少 替换系统 优点:需求明确成本低 强调开发早期计划不足:客户必须表达需要,项目结束才知道问题
-
V模型:特点是增加了很多轮测试,并且这些测试贯穿于软件开发的各个阶段质量保证活动
-
演化模型:尽快投入使用,需求变更
-
原型模型:需求不明确,为了演示 迅速开发一个能够让用户看得到的框架 迭代开发 系统规模不是很大
-
螺旋模型:增加了风险分析,适用于开发大型软件 结合瀑布模型和演化模型 动态变化
-
-
增量模型:核心功能最先开发,独立可操作作品 适用于商业产品创新模型具有瀑布模型优点 快速构造可运行产品,版本交付时间少 融合瀑布模型和原型模型 不必等到开发完成才使用 开发表示的小系统承担风险小 缺点:规模复杂
-
喷泉模型:面向对象的开发方法
-
形式化方法模型:数学基础
软件开发方法
-
结构化方法:需求明确
-
结构化方法设计:体系结构设计、数据设计、接口设计(关注模块间连接)和过程设计
-
Jackson方法:面向数据结构,适合于小规模项目
-
原型方法:需求不明确
-
面向对象方法:复用性 更适用于复杂项目
敏捷开发
针对中小型项目
-
结对编程:写代码同时审查代码
-
自适应开发:适应性
-
水晶方法:策略、约定、方法论
-
特性驱动开发:中小型项目迭代开发
-
极限编程XP:核心沟通、简明、反馈和勇气,文档 考前12个最佳实践回顾 先写测试代码再编写程序
-
并列争球法SCRUM:冲刺,增量化过程
真题:公司购买工具软件,向客户提供工具软件复制品,侵犯了著作权
甲公司未对该软件注册商标就推向市场,几个月后,乙公司推出其类似软件,并且注册商标,乙公司并不构成侵权行为
受委托方享受著作权
不知情使用他方开发软件也是侵权,不需要责任,但是需要支付费用
软件需求
性能需求:响应时间,执行速度,吞吐量,存储容量控制
功能需求:做什么,什么时候做,修改升级
系统设计
编写概要设计文档:用户手册及修订测试计划,概要设计说明书,数据库设计说明书
详细设计:模块内算法设计、数据库物理设计、数据结构设计
概要设计:数据库物理设计、确定模块接口、数据结构设计
系统测试
系统测试阶段的测试目标来自于需求分析阶段
单元测试高内聚低耦合
单元测试:出错处理 模块接口 局部数据结构 重要执行路径 边界条件
集成测试
自顶向下集成测试:不用编写驱动模块,需要写桩模块 从抽象到具体
自底向上集成测试:从具体到抽象
冒烟测试常用的集成测试方法
测试方法
黑盒测试(功能测试):等价类划分,边界值分析,错误推测,因果图 eg:无法获得源代码
白盒测试(结构测试):关心程序内部和逻辑结构
-
逻辑覆盖
-
判定覆盖(分支覆盖):结果满足T/F至少一次
-
条件覆盖:过程满足T/F至少一次
-
条件组合覆盖:有几个条件,就有2^n种组合方式,至少出现一次
-
-
循环覆盖
-
基本路径测试
软件复杂性
功能点,代码行,对象点
系统可维护性评价指标
可理解性、可测试性、可修改性
软件维护
完善性维护:改善扩充功能修改
软件可靠性:MTTF/(1+MTTF) MTTF 平均无故障时间 无失效运作概率
软件可用性:MTBF/(1+MTBF) MTBF 平均失效间隔时间
软件可维护性:1/1+MTTR MTTR平均修复时间
Jackson面向数据结构方法
测试计划:需求分析阶段
软件项目管理
-
Putnam估算模型:动态多变量模型
-
基本COCOMO模型:静态单变量模型
-
中级COCOMO模型:静态多变量模型
-
COCOMOII模型
-
应用组装模型:对象点
-
早期设计阶段模型:功能点
-
体系结构阶段模型:代码行
-
关键路径
-
最早开始时间ES:取前驱活动最早完成时间最大值
-
最早完成时间EF:最早开始时间+活动本身时间DU
-
关键路径:项目中耗时最长的一条线路
-
最晚完成时间LF:取后续活动最晚开始时间最小值
-
最晚开始时间LS:最晚完成时间-活动本身时间
-
FG松弛时间:最晚开始时间-最早开始时间(或者关键路径-包含FG最长段路径)
程序设计小组的组织方式
-
主程序员制小组:领头羊,大规模项目
-
民主制小组:投票,规模小
-
层次式小组:分级
软件质量管理
ISO/IEC9126软件质量模型:质量特性和子特性
McCall质量模型
软件容错技术
-
结构冗余
-
信息冗余:校验码原理
-
时间冗余
冗余附加技术:实现结构、信息和时间冗余技术所需的资源和技术,包括程序、指令、数据、存放和调动它们的空间和通道等。
-
屏蔽硬件错误的容错系统
-
关键程序和数据的冗余存储及调用
-
软件度量
环路复杂度:假设有向图中有向边数为m,节点数为n,则环路复杂度:m-n+2
流程图:只有出没有入不算边
测试目标:需求分析
划分模块:概要设计
算法设计:详细设计
PERT图不能描述各任务之间的并行情况
配置数据库
开发库 受控库 产品库
软件配置管理
内容:软件配置标识、变更管理、版本控制、系统建立、配置审核、配置状态报告
风险评估:风险参照水准:成本、进度和性能
风险评测:风险发生所产生的后果
风险控制:辅助项目组建立处理风险的策略
风险避免是最好的风险控制策略
风险优先级:风险暴露设定的
可靠性:成熟性、容错性、易恢复性
易使用性:易操作性、易理解性、易学性
可维护性:易分析性、易改变性、稳定性、易测试性
可移植性:适应性、易安装性、一致性、易替换性
功能性:安全性
Mc Call模型:质量特性、评价准则(可维护性,灵活性,可测试性)、度量指标(可移植性、复用性、互用性)
模块结构评审内容:数据流结构、控制流结构、模块结构与功能结构之间的对应关系
正式技术评审目的:发现错误
冗余附加技术:屏蔽软件错误的容错系统(备份程序调用+2个程序关键词)
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具
软件工程三要素:方法,过程和工具