知识卡片
原型技术的二维分类
内容
原型技术的核心思想是:对感兴趣的问题先试试看,故意忽略其他方面的要求,让”试试看”的成本远低于”正式干”的成本——根据实验和评估结果,可以判断风险是否真的存在、是否找到了解决办法、项目是继续还是取消。原型法存在两个相互独立的分类维度。第一维度按开发目的分:水平原型(又称行为原型)在一定程度上实现用户交互层的界面布局和界面流转逻辑,有高保真和低保真之分(低保真往往就是在白板或文档中画界面草图);垂直原型(又称结构原型)像”垂直切片”,往往涉及不同的层,把为数不多的(甚至一个)功能真正实现出来。第二维度按是否保留分:抛弃原型(又称探索原型)用完就扔;演进原型没有固定”外号儿”,但和增量开发的思想相同,会被保留下来作为正式开发的基础。这两个维度正交组合,产生水平抛弃、水平演进、垂直抛弃、垂直演进四种原型形态,各自服务于不同的验证目的——水平原型验证的是”用户想要什么样的交互体验”,垂直原型验证的是”某项具体技术或架构决策是否可行”;抛弃原型追求快速探索、不考虑保留成本,演进原型则要求达到能被后续开发直接复用的质量。理解这个二维分类框架的价值在于:面对”要不要做原型、做什么样的原型”这个问题时,可以先问自己两个正交的问题——”我想验证界面交互还是技术可行性”,以及”验证完之后这份代码要不要保留继续用”——两个问题的答案组合起来,原型该怎么做就清楚了。
结构图:
flowchart TB
A["原型技术两个正交维度"] --> B["维度1:目的\n水平(界面布局与流转)\nvs 垂直(纵深实现具体功能)"]
A --> C["维度2:去留\n抛弃(用完即扔)\nvs 演进(作为正式开发基础)"]
B --> D["水平抛弃原型\n捕获真实需求"]
B --> E["水平演进原型\n界面原型演进为系统一部分"]
B --> F["垂直抛弃原型\n技术验证"]
B --> G["垂直演进原型\n增量交付/架构验证"]
C -.-> D
C -.-> E
C -.-> F
C -.-> G
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第11章《架构验证》"11.1.1 水平原型vs.垂直原型,抛弃原型vs.演进原型"节(源文件:_epub-src/OEBPS/text00014.html)
- 结论依据:原文说明"根据开发原型的目的是模拟系统运行时的概貌,还是纵深地验证一个具体的技术问题,可以将原型法分为两类:水平原型和垂直原型",并"根据所开发的原型是否被抛弃,我们又可以将原型法分为两类:抛弃原型和演进原型",两个维度正交组合成表11-1的二维分类,直接支撑本卡片结论与结构图。
- 原始内容:水平原型在一定程度上实现用户交互层的界面布局和界面流转逻辑……垂直原型一个形象的隐喻是"垂直切片"……我们又可以将原型法分为两类:抛弃原型和演进原型。