♥软件开发模式知识体系详解♥
2019/6/1大约 4 分钟
♥软件开发模式知识体系详解♥
软件工程理论与开发模式的知识体系梳理:从传统过程模型,到敏捷开发的理论、过程管理与开发实践,再到研发流程与精益企业。以下按主题给出各篇导读与链接。
无论采用哪种开发模式,核心目标都是一致的:在需求不确定的前提下,以可承受的成本持续交付有价值的软件。下面的文章从「传统过程模型」讲到「敏捷及其变体」,再到「具体实践与团队流程」,建议结合团队规模与业务特点有选择地阅读。
相关文章
传统开发模式
传统模型强调阶段划分与文档,适合需求相对稳定、变更较少的项目。理解它们,能帮助看清后续敏捷方法究竟在解决什么痛点。
- 软件开发生命周期与过程模型
- 软件生命周期覆盖问题定义、可行性分析、设计、编码、测试到维护升级各阶段。过程模型把沟通、计划、建模、构建、部署等活动组织起来,按线性、迭代、演进、平行等关系演化出瀑布模型、原型模型、增量模型、螺旋模型等。
- 结合软件测试的过程模型演化
- 为凸显测试工作,在上述组织方式基础上又演化出 V 模型、W 模型、X 模型、H 模型等面向测试的过程模型。
敏捷开发:理论与过程管理
敏捷不是某个具体流程,而是一组价值观与原则的集合。下面几篇先讲敏捷总论,再分别介绍过程管理中两种主流框架 Scrum 与 Kanban,以及同源的极限编程(XP)。
- 敏捷软件开发理论及流程
- 以用户需求进化为核心,采用迭代、循序渐进的方式开发;把大项目拆成可独立运行、可集成、可交付的小项目,开发过程中软件始终处于可用状态。
- 极限编程(XP)
- Kent Beck 提出,通过基本价值、原则与实践降低变更成本,把复杂开发过程分解为一个个相对简单的小周期,配合交流、反馈与持续调整。
- Scrum 方式
- 迭代式增量软件开发过程,包含 Scrum Master、Product Owner、开发团队等角色,以及 Sprint、每日站会、评审与回顾等活动。
- Kanban 方式
- 源自精益制造的看板方法,核心是限制在制品数量、可视化价值流并度量流动效率,与 Scrum 在节奏和核心机制上存在明显差异。
敏捷开发:开发实践
理论要落到日常编码,还需要具体实践:TDD 关注「怎么写」,DDD 关注「怎么建模」,二者常常配合使用。
- 测试驱动开发(TDD)
- 在编写功能代码之前先写单元测试,用测试驱动设计;把需求分析、设计与质量控制的过程量化,而不只是「多做测试」。
- 领域驱动开发(DDD)
- 以领域模型为核心,用统一语言、限界上下文与聚合组织复杂业务,把业务规则收敛到清晰的模型中,并与微服务拆分互相印证。
研发流程与组织
最后把视角拉回团队与组织:一个典型团队如何把上述方法串成日常流程,以及如何从组织层面整合精益、敏捷与 DevOps。
- 典型的中小团队开发流程
- 从需求、设计、开发、测试到发布的完整协作流程,说明各阶段角色分工、产出物与分支、CI/CD 规范。
- 精益企业
- 从组织视角集成精益、敏捷与 DevOps,介绍 SAFe 框架下精益企业的核心与全局定位。
推荐阅读顺序
- 先读敏捷软件开发理论及流程,建立整体认知;
- 再按需深入 Scrum 或 Kanban;
- 结合 TDD、DDD 理解开发实践;
- 最后用典型的中小团队开发流程落到日常协作,并参考精益企业从组织视角优化流程。