JiaHe

相遇即是缘

软件的开发与测试模型

1.7 - 软件的开发与测试模型

一、软件项目开发过程分解图

软件项目开发过程分解图

二、软件项目成员与角色

  • 总项目
    • 项目经理
    • 系统架构师(技术总监)
    • 产品经理
    • 客户经理
  • 需求设计分支
    • 需求分析师
  • 系统设计分支
    • 数据库设计师
    • 软件设计师(模块)
    • 美术工程师
  • 编码分支
    • 软件工程师
  • 实施分支
    • 实施工程师
  • 测试分支
    • 测试工程师

三、软件开发模型

1️⃣ 定义

模型:是指我们所研究的系统、过程、事物或概念的一种表达形式

软件开发模型:是指软件开发的全部过程、活动、任务以及管理的结构框架。软件开发模型给出了软件开发活动的各个阶段之间的关系

2️⃣ 常见软件开发模型

  • 瀑布模型
  • 敏捷开发模型
  • 快速原型模型
  • 喷泉模型
  • 并发开发模型
  • 基于构件开发模型
  • RAD 模型
  • XP 模型
  • 增量模型
  • 原型实现模型
  • 演化模型

3️⃣ 常见软件开发模型类型

  • 软件需求完全确定为前提的 “第一代” 软件开发模型。
  • 在开始阶段只能提供基本需求“渐进式” 软件开发模型。
  • 体系结构为基础的基于 “构件组装” 的软件开发模型。

4️⃣ 部分软件开发模型简介

  1. 大棒开发法:思路简单,通常来源于开发者的 “突发奇想” —— 想到什么就开发什么。项目质量完全依托于开发者的个人思维与技术能力。开发过程是 “非工程化” 的,随意性高,结果无法预知。测试与错误和漏洞的修复较为困难。
  2. 边写边改模型:产生软件设计想法后立即进行粗略设计,随后进行长时间的编写、测试与修复循环的过程。在认为软件已经满足了所有需求后即可发布产品。
  3. 快速原型模型:根据客户需求,在短时间内优先解决用户最迫切希望解决的问题。完成后向用户进行演示,并根据用户的进一步需求或意见建议进行下一步的开发或改进。
  4. 螺旋模型:演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
  5. 瀑布模型:最早强调软件或系统开发应有完整之周期,且必须完整的经历周期之每一开发阶段,并系统化的考量分析与设计的技术、时间与资源之投入等。由于该模式强调系统开发过程需有完整的规划、分析、设计、测试及文件等管理与控制,因此能有效的确保系统质量。

四、软件测试模型

1️⃣ V 模型

V 模型

V 模型是最具代表意义的测试模型。是软件开发中常用的 “瀑布模型” 的变种,可以用于反映测试活动与需求设计分析之间的关系。V 模型从左到右分别描述了基本的开发过程测试流程,明确的表示了测试流程存在不同的级别,清楚的描述了各阶段测试流程与开发过程之间的对应关系

箭头代表时间顺序左侧下降箭头指的是开发过程的各个阶段,右侧上升箭头指的是测试流程的各个阶段。

V 模型的局限性:测试工作只能在编码完成后才能开展,不能做到测试与开发工作并行,测试工作过于落后

V 模型的改进:V 模型 + 各阶段同步开展测试工作 = W 模型

2️⃣ W 模型

W 模型

W 模型是 V 模型的自然发展。W 模型强调了 “软件测试流程应当伴随完整的软件开发过程同步进行”,同时也指明了软件测试的对象不仅仅是程序本身,还包含着软件的需求、功能与设计部分

W 模型的局限性:W 模型仍然是线性流程,缺少迭代。前一项测试工作(例如单元测试)结束前,无法提前执行下一项(例如集成测试)测试。

3️⃣ H 模型

H 模型

H 模型强调了 “软件测试是一个独立的流程,应当尽早准备、尽早执行”。同时也指明了软件测试是根据被测对象的不同而分层次执行的,不同层次的测试流程可以按照某个次序先后进行,也可以反复执行。H 模型在相应条件具备时可以直接开展测试工作,没有严格或线性的执行顺序。


下一章节:1.8 - 软件质量的概念、范围与标准