>> >> >>Indexer<< << << <<<<<< Idx >>>>>>
Matched: 0
Software Development Methodology
M: 2025-12-31 - ljf12825

如何在不确定的现实中,把一个想法,可靠地变成可用的软件

方法论的三层结构

价值观 / 哲学
    v
开发方法(流程)
    v
工程实践(工具 + 技术)

| 层级 | 解决的问题 | | 哲学层 | 我们如何看待变化、人、复杂度?| | 方法层 | 我们用什么流程来应对现实?| | 实践层 | 我们具体用哪些工具和技术?|

方法论全景图

瀑布模型 (1970s) → 迭代增量 (1980s) → 敏捷家族 (2001-) 
       ↘                       ↗
        └─ V模型、RUP ────────┘
        
同时并行:原型法、螺旋模型、DevOps、低代码/无代码

瀑布模型(Waterfall)

四大主流开发模型之一

哲学:决定论,世界可观测

世界观:世界是可预测的,需求是稳定的

核心思想:严格线性顺序,像瀑布一样自上而下流动

流程

需求 -> 设计 -> 实现 -> 测试 -> 交付

优点

  • 结构清晰
  • 适合需求固定的项目(军工、嵌入式、协议栈)

致命问题

  • 每个阶段必须100%完成才能进入下一阶段
  • 一旦需求变,整个系统就崩
  • 交付周期极长

适用场景

  • 底层系统
  • 引擎内核
  • 协议
  • 算法库

敏捷开发(Agile)

四大开发模型之一

世界观:世界是变化的,需求永远不完整

哲学:复杂系统论,世界动态变化

核心思想

  • 快速迭代
  • 小步快跑
  • 持续迭代

主要敏捷框架和方法

  • Scrum
  • Kanban
  • XP

节奏

需求池 -> Sprint -> 开发 -> 评审 -> 反馈 -> 再规划

适用场景

  • 游戏玩法系统
  • 工具链
  • Web/App/编辑器

精益开发(Lean)

四大开发模型之一

世界观:最大的浪费不是做错,而是做没人要的东西

哲学:进化论,系统逐步逼近最优

核心思想:源自丰田生产系统,消除浪费、优化价值流

七原则

  1. 消除浪费
  2. 内建质量
  3. 创建知识
  4. 推迟承诺
  5. 快速交付
  6. 尊重员工
  7. 整体优化

适用场景

  • 原型开发
  • 游戏机制验证
  • 创意型产品

DevOps

四大开发模型之一

世界观:交付不是终点,而是循环的一部分

目标

代码 -> 构建 -> 测试 -> 部署 -> 监控 -> 反馈 -> 改进

强调

  • CI/CD
  • 自动化
  • 可观测性

适用场景

  • 大型系统
  • 在线游戏
  • 服务端

V模型(V-Model)

核心思想:瀑布模型的增强版,强调测试与开发的对应关系

需求分析 -> 验收测试设计
    v             ^
系统设计 -> 系统测试设计
    v             ^
详细设计 -> 集成测试设计
    v             ^
编码实现 <- 单元测试设计
  • 特点:每个开发阶段都有对应的测试阶段
  • 意义:在传统模型中引入了质量保证的提前规划

迭代式开发(Iterative Development)

循环:规划 -> 设计 -> 实现 -> 评审 -> (下一轮迭代)
  • 与敏捷的区别:迭代周期较长(2-6个月),仍偏向计划驱动
  • 代表:Rational统一过程(RUP)的核心概念

螺旋模型(Spiral Model)

核心思想:风险管理驱动的迭代模型

每一轮螺旋包含:
1. 确定目标、方案和约束
2. 识别和解决风险
3. 开发和测试
4. 计划下一轮迭代
  • 特点:结合了瀑布的系统和原型而迭代,强调风险评估
  • 适用:高风险、大型、复杂项目

原型法(Prototyping)

核心思想:快速构建简化版,获取反馈,逐步完善

快速设计 -> 构建原型 -> 用户评估 -> 修正改进 -> (循环或转为正式开发)
  • 变体
    • 抛弃式原型:仅用于探索需求
    • 演进式原型:逐步完善为最终产品
  • 适用:需求模糊、用户界面复杂的项目

增量模型(Incremental Model)

核心思想:分多个“增量”构建,每个增量都是完整的功能子集

第一次发布:核心功能
第二次发布:核心 + 功能集A
第三次发布:核心 + 功能集A + 功能集B

特性驱动开发(FDD)

核心思想:以“特性”为增量单位,强调建模和计划

五个核心活动
1. 开发整体模型
2. 构建特性列表
3. 按特性指定计划
4. 按特性设计
5. 按特性构建

低代码/无代码平台开发

  • 核心:通过可视化配置而非传统编码构建应用
  • 意义:公民开发者参与,快速响应业务需求
  • 代表:OutSystems, Mendix, Power Apps

模型驱动开发(MDD/MDA)

  • 核心:用UML等模型作为主要工件,自动生成代码
  • 理想:编写模型,而非代码
  • 现状:在特定领域(如嵌入式)有成功应用

基于测试的开发(TDD/BDD)

  • TDD:测试驱动开发(红-绿-重构循环)
  • BDD:行为驱动开发(用自然语言描述行为)
  • 地位:通常是敏捷或精益的工程实践,也可作为主导思想

净室软件工程

  • 核心:强调数学验证和统计质量认证
  • 目标:开发“零缺陷”或接近零缺陷的软件
  • 适用:对可靠性要求极高的系统

大多数组织慈爱用“混合方法”

  • “敏捷瀑布”:前期用瀑布做架构设计,后期用敏捷迭代开发
  • “Scrum-ban”:Scrum的迭代节奏 + 看板的流程可视化
  • “瀑布式增量”:整体瀑布规划,内部用增量式开发

核心认知:“没有银弹”——没有任何一种方法论能解决软件开发的所有问题

现代趋势

  1. 情景驱动:根据项目具体情境选择/裁剪方法
  2. 混合实践:各取方法之长,形成适合自己团队的方式
  3. 原则重于流程:理解背后的原则(如快速反馈、质量内建),而非机械执行仪式
  4. 关注价值流:从“遵循流程”转向“优化从想法到价值的流动”

方法论是工具,目的是帮助开发者更好地创造价值。当方法论本身成为目标时,它就失去了意义。优秀的团队和工程师懂得“有方法而不唯方法”