软件过程与方法学
软件过程与方法学是结构化的活动、里程碑和实践框架,用于组织软件在其生命周期内如何被规定、设计、构建、验证和演进。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
软件过程是一系列相关的活动及其顺序,最终导致软件产品的生产;软件方法学是一种有文档记录的方法,它为一类项目规定了这些活动、角色、工件和实践。
Scope
该领域涵盖了规定性过程模型,如瀑布模型、增量模型和螺旋模型;迭代和演进方法;敏捷方法学及其价值观和仪式;用于持续集成和交付的精益和DevOps实践;以及过程改进框架,如CMMI和ISO/IEC 12207。它既处理过程的抽象结构,也处理影响其采用的人为和组织因素。
Sub-topics
Core questions
- 规范、设计、实现和验证活动应如何排序和迭代?
- 计划驱动(预测性)过程何时优于敏捷(适应性)过程?
- 如何衡量、评估和逐步改进一个过程?
- 团队结构、沟通和工具如何影响过程的有效性?
Key theories
- 瀑布(计划驱动)模型
- 一种顺序模型,其中需求、设计、实现、验证和维护作为独立的阶段,并有正式的签字确认,非常适合稳定、明确的需求,但因对变更适应性差而受到批评。
- 螺旋和风险驱动模型
- Boehm的螺旋模型将开发组织为重复的循环,每个循环都由识别和解决项目最高风险驱动,将迭代开发与明确的风险管理相结合。
- 敏捷和迭代增量开发
- 敏捷方法通过短迭代交付工作软件,倾向于客户协作、响应变更和频繁反馈,而非繁重的预先规划和文档。
Clinical relevance
过程的选择直接影响交付可预测性、缺陷率、吸收变更需求的能力以及团队生产力;现代实践融合了敏捷迭代与DevOps自动化,以缩短反馈周期,同时保持质量和合规性。
Evidence & guidelines
ISO/IEC/IEEE 12207 标准化了软件生命周期过程,而 SWEBOK 软件工程过程知识领域和 CMMI 提供了广泛使用的过程定义和改进参考框架。
History
20世纪70年代,早期的大型系统开发推广了阶段性、文档驱动的模型。Boehm于1988年引入了明确的风险驱动迭代,Rational Unified Process在1990年代将迭代开发形式化,2001年的敏捷宣言则明确了轻量级、容忍变更的方法,这些方法与2010年代的DevOps一起成为主流。
Debates
- 计划驱动与敏捷过程
- 一个长期存在的争论是,预测性、文档密集型过程何时优于适应性敏捷过程;共识是,正确的平衡取决于需求的稳定性、监管限制、团队规模以及后期变更的成本。
Key figures
- Winston W. Royce
- Barry Boehm
- Kent Beck
- Watts Humphrey
Related topics
Seminal works
- royce1970
- boehm1988
- sommerville2015
Frequently asked questions
- 瀑布模型是否已经过时?
- 对于需求不断演变的项目,纯粹的顺序瀑布模型很少是理想的,但其阶段性结构仍然影响着受监管和安全关键领域,并构成了混合模型的基础;大多数现代项目使用迭代或敏捷变体,这些变体保留了严格的规范和验证。
- 过程和方法学有什么区别?
- 过程描述了活动及其顺序,而方法学是一个更完整、有名称的规定,它还固定了角色、工件、仪式和实践;Scrum和Rational Unified Process是实例化迭代或敏捷过程的方法学。