1.7 - 软件的开发与测试模型
¶一、软件项目开发过程分解图
¶二、软件项目成员与角色
- 总项目
- 项目经理
- 系统架构师(技术总监)
- 产品经理
- 客户经理
- 需求设计分支
- 需求分析师
- 系统设计分支
- 数据库设计师
- 软件设计师(模块)
- 美术工程师
- 编码分支
- 软件工程师
- 实施分支
- 实施工程师
- 测试分支
- 测试工程师
¶三、软件开发模型
¶1️⃣ 定义
模型:是指我们所研究的系统、过程、事物或概念的一种表达形式。
软件开发模型:是指软件开发的全部过程、活动、任务以及管理的结构框架。软件开发模型给出了软件开发活动的各个阶段之间的关系。
¶2️⃣ 常见软件开发模型
- 瀑布模型
- 敏捷开发模型
- 快速原型模型
- 喷泉模型
- 并发开发模型
- 基于构件开发模型
- RAD 模型
- XP 模型
- 增量模型
- 原型实现模型
- 演化模型
- 等
¶3️⃣ 常见软件开发模型类型
- 以软件需求完全确定为前提的 “第一代” 软件开发模型。
- 在开始阶段只能提供基本需求的 “渐进式” 软件开发模型。
- 以体系结构为基础的基于 “构件组装” 的软件开发模型。
¶4️⃣ 部分软件开发模型简介
- 大棒开发法:思路简单,通常来源于开发者的 “突发奇想” —— 想到什么就开发什么。项目质量完全依托于开发者的个人思维与技术能力。开发过程是 “非工程化” 的,随意性高,结果无法预知。测试与错误和漏洞的修复较为困难。
- 边写边改模型:产生软件设计想法后立即进行粗略设计,随后进行长时间的编写、测试与修复循环的过程。在认为软件已经满足了所有需求后即可发布产品。
- 快速原型模型:根据客户需求,在短时间内优先解决用户最迫切希望解决的问题。完成后向用户进行演示,并根据用户的进一步需求或意见建议进行下一步的开发或改进。
- 螺旋模型:演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
- 瀑布模型:最早强调软件或系统开发应有完整之周期,且必须完整的经历周期之每一开发阶段,并系统化的考量分析与设计的技术、时间与资源之投入等。由于该模式强调系统开发过程需有完整的规划、分析、设计、测试及文件等管理与控制,因此能有效的确保系统质量。
¶四、软件测试模型
¶1️⃣ V 模型
V 模型是最具代表意义的测试模型。是软件开发中常用的 “瀑布模型” 的变种,可以用于反映测试活动与需求设计分析之间的关系。V 模型从左到右分别描述了基本的开发过程与测试流程,明确的表示了测试流程存在不同的级别,清楚的描述了各阶段测试流程与开发过程之间的对应关系。
箭头代表时间顺序,左侧下降箭头指的是开发过程的各个阶段,右侧上升箭头指的是测试流程的各个阶段。
V 模型的局限性:测试工作只能在编码完成后才能开展,不能做到测试与开发工作并行,测试工作过于落后。
V 模型的改进:V 模型 + 各阶段同步开展测试工作 = W 模型
¶2️⃣ W 模型
W 模型是 V 模型的自然发展。W 模型强调了 “软件测试流程应当伴随完整的软件开发过程同步进行”,同时也指明了软件测试的对象不仅仅是程序本身,还包含着软件的需求、功能与设计部分。
W 模型的局限性:W 模型仍然是线性流程,缺少迭代。前一项测试工作(例如单元测试)结束前,无法提前执行下一项(例如集成测试)测试。
¶3️⃣ H 模型
H 模型强调了 “软件测试是一个独立的流程,应当尽早准备、尽早执行”。同时也指明了软件测试是根据被测对象的不同而分层次执行的,不同层次的测试流程可以按照某个次序先后进行,也可以反复执行。H 模型在相应条件具备时可以直接开展测试工作,没有严格或线性的执行顺序。