这里写目录标题
- 1.软件过程
- 1.1能力成熟度模型(CMM)
- 1.2能力成熟度模型集成(CMMI)
- 1.3瀑布模型(线性顺序)
- 1.4增量模型
- 1.5演化模型
- 1.5.1原型模型
- 1.5.2螺旋模型
 
- 1.6喷泉模型
- 1.7统一过程(UP)模型
 
- 2.敏捷方法
- 3.系统设计
- 4.系统测试
- 4.1单元测试(模块测试)
- 4.2集成测试
- 4.3黑盒测试(功能测试)
- 4.4MaCabe算法
- 4.5白盒测试(结构测试)
- 4.6伪代码
 
- 5.系统维护
- 5.2软件文档(只好不坏)
- 5.3系统维护的内容
- 5.4系统软件质量属性
 
- 6.软件项目估算
- 7.进度安排
- 7.1Gantt图(甘特图)
- 7.2PERT图(有向图)
- 7.3项目活动图
 
- 8.软件配置管理
- 9.风险管理
- 10.软件质量模型
- 10软件
- 10.1软件评审
- 10.2软件容错技术
- 10.3软件工具
 
1.软件过程
软件工程三要素:方法,工具,工程
1.1能力成熟度模型(CMM)
1.初始级:软件过程杂乱无章,没有明确定义的步骤,英雄式核心人物
2.可重复级:建立了基本的项目管理过程和实践来跟踪项目费用,进度,功能特性
3.已定义级:过程文档化,标准化
4.已管理级:软件过程和产品质量
5.优化级:加强了定量分析,通过过程质量反馈,新观念,新技术的反馈
1.2能力成熟度模型集成(CMMI)
1.阶段式模型
 初始的:不可预测或缺乏控制
 已管理的:为项目服务
 已定义的:为组织服务
 定量管理的:已度量和控制
 优化的:集中于过程改进
2.连续式模型
 过程域能力等级(CL)0-5:
 未完成(CL0):未执行,未得到
 已执行(CL1):输入转输出
 已管理(CL2):已管理的过程的制度化
 已定义(CL3):已定义的过程的制度化
 定量管理(CL4):已定量管理的过程的制度化
 优化(CL5):改进
1.3瀑布模型(线性顺序)
以项目的阶段评审,文档控制为手段
 适合于软件需求明确的软件项目
优点:容易理解,管理成本低,强调开发的阶段性早期计划及需求调查和产品测试
 
 
1.4增量模型
原型实现的迭代特征
 客户对每个增量的使用和评估都做为下一个增量的新特征和功能,不断重复直至完善产品
优点:第一个交付版本所需的成本和时间较少
 所承担的风险不大,减少用户需求的变更运行增量投资,仅对1个或2个投资
1.5演化模型
需求经常发生变化,严格的交付时间
 适合对软件需求缺乏认知
1.5.1原型模型
用户需求不清,经常变化,系统规模不大
 
1.5.2螺旋模型
增加了风险分析,适合复杂的大型软件
 开发成本高
 
1.6喷泉模型
以用户需求为动力,以对象作为驱动
 适合面向对象开发
 开发过程具有迭代性和无间隙性
 允许个开发活动交叉,迭代的进行
优点:提高软件的开发效率,节省开发时间
 
1.7统一过程(UP)模型
4个技术阶段:
 初始阶段:生命周期目标
 精华阶段:生命周期架构
 构建阶段:初始运作功能
 移交阶段:产品分布
 典型代表RUP
2.敏捷方法
尽可能早地,持续地对有价值的软件的交付
 每种方法基于一套原则
1.极限编程(XP)
 由价值观,原则,实践,行为组成
4大价值观:沟通,简单性,反馈,勇气
12个最佳实践:计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结对编程,集体代码所有制,持续集成,每周工作40个小时,现场客户,编码标准
2.水晶法
 每一个不同的项目都需要一套不同的策略,约定和方法论
 具体问题具体分析
3.并列征求法
 使用迭代方法,把每30天一次的迭代称为冲刺
4.自适应软件开发(ASD):6个基本原则
5.敏捷统一工程(AUP)
 大型连续,小型迭代
 采用经典的UP阶段性活动
 活动:建模,实现,测试,部署,配置及项目管理,环境管理
3.系统设计
1.概要设计(划分模块)
 ①设计软件系统总体结构(关键):
 确定每个模块的功能,模块之间的调用关系,
 模块之间的接口(模块之间传递的信息)
 ②数据结构及数据库设计
 ③编写概要设计文档
 ④评审
2.详细设计(算法设计)
4.系统测试
系统测试是保证系统质量和可靠性的关键步骤
意义:是为了发现错误而执行程序的过程
 成功的测试是发现了尚未发现的错误
目的:希望以最少的人力和时间发现错误
基本原则:
 1.应尽早并不断的进行测试
 2.测试工作应避免由软件开发人员承担
 3.不仅要确认输入数据,还要与逾期结果比较
 4.要输入合理和不合理的条件
 5.要检验程序做了该做的和不该做的事
 6.严格按照测试计划进行,避免测试的随意性
 7.妥善保存测试计划,测试用例
 8.测试例子都是精心设计的,复用性高
 9.测试目标来自于需求分析阶段
4.1单元测试(模块测试)
在模块编写完成且无编译错误后进行
 一般为白盒测试
特征:
 1.模块接口
 2.局部设计结构
 3.重要的执行路径
 4.出错处理
 5.边界条件
单元测试过程:
 驱动模块:接受测试例子的数据,将数据送到测试模块,输出测试结果
 桩模块
 
4.2集成测试
1.自顶向下集成测试
 抽象→具体
 不用编写驱动模块,要编写桩模块
2.自底向上集成测试
 具体→抽象
 不用编写桩模块,要编写驱动模块
3.回归测试:一旦发生变更就重新测试
4.冒烟测试
4.3黑盒测试(功能测试)
测试方法分为静态测试和动态测试
 动态测试:黑盒测试,百盒测试
不关心程序内部结构,测试软件外部特性
技术:
 等价类划分:有效等价类(符合条件),无效等价类(不符合条件),同时考虑
 边界值分析:输入边界值判断
 错误推测
 因果图
4.4MaCabe算法
环路复杂度=有向弧数-结点数+2
 环路复杂度=闭合区域+1
4.5白盒测试(结构测试)
根据程序的内部结构和逻辑来设计测试用例
 对程序的路径和过程进行测试
技术:
 逻辑覆盖:6种
 ①语句覆盖:每个语句至少执行一次
 ②判定覆盖:真值和假值都要执行一次(结果)
 ③条件覆盖:每个判断的真假都执行一次(中)
 ④判定/条件覆盖
 ⑤条件组合覆盖:判断中条件的各种组合
 ⑥路径覆盖:所有可能的路径
 循环覆盖
 基本路径测试
4.6伪代码

 
 
5.系统维护
系统可维护性评价指标:
 可理解性,可测试性,可修改性
5.2软件文档(只好不坏)
文档是软件可维护性的重要因素
 根据系统文档维护,用户文档测试
在开发阶段保证软件具有可维护性
编写高质量的文档可以提高软件开发的质量
文档也是软件产品的一部分,没有文档的软件就不能称为软件
文档编制有重大意义和相当大的工作量
5.3系统维护的内容
1.硬件维护
 2.软件维护
 ①正确性维护:改正开发阶段已存在但测试阶段未发现的错误
 ②适应性维护:为适应某种情况而做的修改
 ③完善性维护:扩充功能,完善性能的修改
 ④预防性维护:为了适应未来变化
 3.数据维护
5.4系统软件质量属性
可靠性:一个系统对于给定的时间间隔内,在给定条件下无效运作的概率
 MTTF/(1+MTTF)
 MTTF:平均无故障时间
可用性:在给定时间点上,一个系统能够按照规格说明正确运作的概率
 MTBF/(1+MTBF)
 MTBF:平均失效间隔时间
可维护性:给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率1/(1+MTTR)
 MTTR:平均修复时间
主程序员路径:n-1条
 沟通路径:(n(n-1))/2条
6.软件项目估算
1.COCOMO估算模型
 基本:静态单变量模型
 中级:静态多遍历模型
 详细
2.COCOMOII模型
3个阶段性模型:
 ①应用组装模型
 ②早期设计阶段模型
 ③体系结构阶段模型
规模估算选择:对象点,功能点,代码行
7.进度安排
7.1Gantt图(甘特图)
能清晰描述每个任务的开始,结束时间,进展情况,任务之间的并行性
 不能反映任务间的依赖关系,难以确定关键所在,不能反映计划中有潜力的部分
 
7.2PERT图(有向图)
可以表示依赖,不能表示并行
 箭头表示任务,数字表示完成该任务所需时间
只有当指向当前结点的所有任务完成后,结点所表示的事件才能出现,才能执行任务
开始结点的最早时刻:0
 最早时刻:前→后max,
 最迟时刻:后→前min
 松弛时间=最迟时间-最早时间
 关键路径:松弛时间为0的路径
 
7.3项目活动图

8.软件配置管理
目标:变更标识,变更控制,版本控制,确保变更正确的实现,变更报告
内容:1.版本管理,配置支持,变更支持,过程支持,团队支持,变化报告,审计支持
 2.软件配置标识,变更管理版本控制,系统建立,配置审核,配置状态报告
配置数据库:开发库,受控库,产品库
9.风险管理
软件风险的特性:不确定性,损失
类型:
 项目风险
 技术风险
 商业风险
1.风险识别
 2.风险预测(风险估计)
 两个方面:概率,后果
 风险显露度=概率后果,ER=PC
 3.风险评估:风险参照水准
10.软件质量模型
ISO/IEC 9126软件质量模型
 Mc Call软件质量模型
1.功能性
 适应性:适合
 准确性:正确或相符的结果
 互用性:交互
 依从性:服从规定
 安全性
 2.可靠性
 成熟性
 容错性
 易恢复性
 3.易使用性
 易理解性
 易学性
 易操作性
 4.效率
 时间特性:响应和处理时间,吞吐量
 资源特性
 5.可维护性
 易分析性
 易改变性
 稳定性
 易测试性:确认经修改软件
 6.可移植性
 适应性
 易安装性
 一致性
 易替换性
 
10软件
10.1软件评审
质量:用户满意度
 设计质量:设计的规格说明书符合用户的要求
 程序质量:程序按照设计规格说明所规定的情况正确执行
1.设计质量的评审内容
 ①评价软件的规格说明是否合乎用户的需求
 ②评审可靠性,能否避免一些异常
 ③评审保密措施实现情况,是否对系统使用资格进行检查
 ④评审操作特性实施情况,恰当性
 ⑤评审性能实现情况,是否达到所规定性能的目标值
 ⑥是否具有可修改性,可扩充性,可互换性,可移植性,可测试性,复用性
2.程序质量的评审内容
 模块结构:处理模块,数据模块
 控制流结构
 数据流结构
 模块结构与功能结构之间的对应关系
正式技术评审的目标:发现软件中的错误
10.2软件容错技术
实现容错的主要手段:冗余
 1.结构冗余:静态,动态,结构
 2.信息冗余
 3.时间冗余
 4.冗余附加技术
 屏蔽软件错误的容错系统
 冗余备份程序的存储及调用
 实现错误检测和错误恢复的程序
 实现容错软件所需的固化程序
10.3软件工具
软件开发工具:需求分析工具,设计工具,编码与排错工具,测试工具
软件维护工具:版本控制工具,文档分析工具,开放信息库工具,逆向工程工具(静态,动态),再工程工具



















