1.概述
1.1 软件生存周期
可行性分析与项目开发计划
需求分析:输出有 流图、实体联系图、数据字典
概要设计
详细设计
编码
测试
维护
1.2 软件过程
能力成熟度模型(CMM)
1.初始级
2.可重复级
3.可定义级
4.已管理级
5.优化级
能力成熟度模型集成(CMMI)
1.阶段式模型
初始的:过程不可预测且缺乏控制
已管理的:过程为项目服务
已定义的:过程为组织服务
定量管理的:过程已度量和控制
优化的:集中于过程优化
2.连续式
CL0(未完成的)
CL1(已执行的)
CL2(已管理的)
CL3(已定义级的)
CL4(定量管理的)
CL5(优化的)
2.软件过程模型
2.1瀑布模型
假设:一个待开发的系统需求是完整的、简明的、一致的,并且可以先于设计和实现完成之前产生
变体----> V模型
优点:容易理解、成本低;强调开发的阶段性早期计划及需求调查和产品测试
缺点:需求要完整、正确、清晰;开始的两三个阶段很难评估进度;接近结束时要大量集成和测试工作;直到项目结束才能演示系统
瀑布模型的需求或设计的错误只有到后期才能被发现,对于项目风险的控制能力较弱,导致延期、超预算
V模型
2.2增量模型
第1个增量往往是核心产品,每一个增量可以分别开发。
是瀑布模型的变种,具有瀑布的全部优点,且第一个可交付版本所需要的成本和时间很少;开发由小系统所承担的风险不大;第一个版本开发很快,减少用户需求变更;可哟仅对一两个增量投资
缺点:管理成本、进度和配置的复杂;需求变更,初始增量可能会造成后来增量的不稳定;需求不稳定完整,一些增量要重新开发发布
2.3 演化模型
迭代的过程模型,适合对软件需求缺乏准确认识的情况。
1.原型模型
原型模型适合用户需求不清、需求经常变化的情况,系统规模不大不复杂时适合。
迅速开发出一个让用户看得见摸得着的系统框架
2.螺旋模型
将瀑布模型和演化模型结合,加入风险分析。
适合庞大、复杂、高风险的系统。
2.4喷泉模型
以用户需求为动力,以对象为驱动,适合面向对象的开发方法。
具有迭代性和无间隙性。各阶段没有明显的界线,开发人员同步进行。提高效率节省时间,不利于管理。要求严格管理文档,审核难度加大。
2.5基于构件的开发模型
2.6形式化方法模型
建立在严格数学基础上
2.7 统一过程(UP)模型
“用例和风险驱动,以架构为中心,迭代并且增量”,由UML方法和工具支持。
2.8 敏捷方法
尽可能早地、持续地对有价值的软件的交付,使客户满意。
1.极限编程(XP)
2.水晶法(Crystal)
每个项目需要一套不同的策略、约定和方法论,认为人对软件质量有很大影响
3.并列争求法(Scrum)
把30天一次的迭代作为一个“冲刺”,按优先级实现产品。
4.自适应软件开发(ASD)
5.敏捷统一过程(AUP)
3. 需求分析
4.系统设计
4.1 概要设计
软件体系结构设计、数据设计、接口设计
4.2 详细设计
模块内数据结构和算法设计
5.系统测试
5.1 软件测试方法
静态测试:
人工检测、计算机辅助静态分析
动态测试
1.黑盒测试
等价类划分
边界值分析
错误推测
因果图
2.白盒测试
逻辑覆盖
语句覆盖:语句执行一次
判定覆盖/分支覆盖:每个判定式都过一次
条件覆盖 :每个逻辑条件的可能值至少满足一次
路径覆盖:所有路径都走一遍
循环覆盖
基本路径测试
5.2 调试
试探法
回溯法
对分查找法
归纳法
演绎法
5.3 维护
评价指标:可理解性、可测试性、可修改性
5.3.2 系统维护
包括硬件维护、软件维护、数据维护
软件维护:
正确性维护:17%~21%,系统开发阶段发生而测试阶段未发现的错误
适应性维护:18%~25%,适应技术变化和管理需求变化
完善性维护:50%~60%,增加一些在系统分析和设计阶段没有的功能和性能特征
预防性维护:4%,适应未来
5.4 项目估算
方法:
COCOMO模型:基本、中级、详细 是一种静态单变量模型
COCOMOII:估算选择有 :对象点、功能点和代码行
- 应用组装阶段
- 早期设计阶段模型
- 体系结构阶段模型
5.5 进度管理
5.5.1 Gantt甘特图
水平条形图,以日历为基准描述项目任务。描述每个项目何时开始何时结束,任务的进展情况以及各个任务之间的并行性。但不能反映出各任务之间的依赖关系,难以确定项目关键,和有潜力的部分。
5.5.2 PERT图
有向图,箭头表示任务。描述每个项目何时开始何时结束和任务所需时间,和任务之间的关系,以及关键路径,但不能表现并行关系。
5.6 软件质量
ISO/IEC软件质量模型
5.7 复杂度
McCabe 度量法
V(G) = m - n + 2
m:弧数,n:结点数
5.8 风险
风险的优先级通常根据 风险暴露 设定
风险:
- 项目风险:预算、进度、人员、资源和客户相关的问题
- 技术风险:潜在的设计、实现、对接、测试
- 商业风险:市场风险、策略风险、管理风险、预算等
- 业务风险:产品没人要、失去预算或人员承诺的风险
定义风险参照水准是 风险评估 活动常用的技术
风险避免是最好的风险控制策略,放弃或不进行可能带来损失的活动或工作。
风险监控是指在决策主体的运行过程中,对风险的发展与变化情况进行全程监督,并策略调整
风险管理在风险环境将风险减到最低,风险可以规避不能消除
风险预测从两个方面评估风险,即风险发生的可能性以及风险发生所产生的后果
5.9 其他
配置管理是软件开发过程的重要内容:软件配置标识、变更管理、版本控制、系统控制、配置审核和配置状态报告
文档的特性:针对性、清晰性、精确性、完整、灵活、可追溯
配置数据库:开发库、受控库、产品库
系统开发人员和项目管理人员在项目期内进行沟通的文档主要有 项目开发计划(工作任务分解表、PERT、甘特图和预算分配表)
正式技术评审的目标是 发现软件中的错误
冗余附加技术包括:冗余备份程序恢复程序、实现错误检测和错误恢复的程序、实现容错软件所需的固化程序