目录
一、软件开发模型
1.1 瀑布模型
1.1.1 特点
1.1.2 优缺点
1.2 快速原型模型(了解)
1.2.1 特点
1.2.2 优缺点
1.3 螺旋模型(了解)
1.3.1 特点
1.3.2 优缺点
二、测试过程模型
2.1 V模型(重点)
2.1.1 特点
2.1.2 优缺点
2.2 W模型
2.2.1 特点
2.2.2 优缺点
一、软件开发模型
1.1 瀑布模型
(1)需求分析:
- 研发分析需求说明书
- 判断需求的可实现性
(2)概要设计:
- 用到具体的技术点
- 大致模块划分
(3)详细设计:
- 详细到可以为编码做支持
- 类和类的关系,类的设计
- 函数设计
- 各个接口的细节
- 数据库表的关系,字段关系
(4)编码:
- 依托于详细设计进行编码操作
(5)测试
(6)维护:
- 上线后也需要持续维护
1.1.1 特点
- 是一种线性模型。在所有模型中占有重要的地位,是所有模型的一个基础。
- 每个阶段执行一次,文档驱动,按线性顺序进行软件开发。
每个阶段之间有明确的输入和输出,各个阶段按顺序执行,前一阶段完成后才能进入下一阶段。这使得开发过程比较可控,适用于对需求比较稳定、具有明确规格的项目。
1.1.2 优缺点
优点:
- 结构清晰:明确的阶段和顺序,使开发过程结构化和可控。
- 文档化程度高:每个阶段都有相应的文档产出,有利于项目的管理。
- 易于管理和控制:依次进行阶段,有利于项目的管理和进度控制。
缺点:
- 不适应需求变化:对需求变化和调整较为困难,一旦进入下一个阶段,很难回头修改前面阶段的成果。
- 风险控制较晚:风险可能在后期才被发现,导致修复成本高。
- 缺乏灵活性:由于瀑布模型的开发过程是线性的,开发人员每个阶段的选择和决策都相对受限,缺乏灵活性和创新性。
- 可能导致较长的交付周期:由于每个阶段需要完成后才能进入下一个阶段,可能导致较长的交付周期。
1.2 快速原型模型(了解)
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
1.2.1 特点
- 快速迭代:注重迅速创建和迭代原型。
- 用户参与:鼓励用户积极参与。
- 可视化交互:通常采用可视化和交互性的原型工具
- 风险降低:通过快速创建和验证原型,快速原型模型能够及早发现和解决问题,降低开发过程中的风险。
- 迭代改进:支持持续改进和迭代。
- 适应需求变化:具有一定的灵活性,可以更好地适应需求变化。
1.2.2 优缺点
优点:克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的形目开发风险
缺点:不太适合大型系统的开发(适合小型的、灵活性高的系统)
1.3 螺旋模型(了解)
1.3.1 特点
- 风险驱动:强调对项目风险的评估和管理。
- 迭代循环:采用迭代循环的方式进行软件开发。
- 阶段性输出:每个迭代循环的结束阶段,会产生一个阶段性的软件输出,可以是一个原型、一个部分的系统功能或一个可执行的软件版本。
- 用户参与:鼓励用户的积极参与。
- 遵循计划:注重项目计划和控制。
- 增量交付:通过每个迭代循环的输出,实现增量交付。
- 可调整性:允许根据项目的需要进行调整。
1.3.2 优缺点
优点:引进风险分析,有助于降低风险,并及时采取措施解决问题。
缺点:风险分析需要专业的知识和人员,需要有经验的项目团队来管理和执行。
二、测试过程模型
2.1 V模型(重点)
V模型本身是软件开发模型瀑布模型的变种,反映了测试活动与分析和设计的关系。
V模型表明了测试过程本身存在不同的阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系。
2.1.1 特点
- 阶段性对应:将开发过程和测试过程相互对应,每个开发阶段都有与之对应的测试阶段。
- 明确的验证:强调在开发阶段都有相对应的验证,以确保开发过程的正确性和产品的质量。
- 逐步递进:采用逐步递进的方式进行开发和测试,每个阶段都构建在前一个阶段第基础上。
- 测试驱动:强调了测试的重要性,将测试的活动作为开发活动的驱动力,以确保软件的质量。
2.1.2 优缺点
优点:
- 提前测试:在早期开发阶段就注重测试,早期发现问题和解决问题,减少后期的成本和风险。
- 明确的验证:确保开发过程的正确性和产品的质量。
- 易于理解和实施:结构清晰,容易理解和实施,能够明确各个阶段的任务和目标。
缺点:
- 不适用于需求变更频繁的项目
- 对需求变更的适应性较低
2.2 W模型
测试伴随整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试。
2.2.1 特点
- 强调测试活动:测试活动与开发活动相互对应,每个开发阶段都有与之对应的测试阶段,测试伴随整个软件开发周期。
- 并行测试:鼓励在每个开发阶段并行进行测试活动。
2.2.2 优缺点
优点:
- 强调测试活动:明确了测试在软件开发过程中的重要性。
- 早期测试:在开发早期就开始测试,有助于及早发现和修复问题,减少后期成本和风险。
- 全面的测试覆盖:通过阶段性的测试活动,确保了从需求到维护的全面测试覆盖。
缺点:
- 不适用于需求变更频繁的项目。
- 对需求变更的适应性较低。
- 使用起来技术复杂度高,对于需求和设计的测试要求高,实践起来困难。