敏捷开发

article/2025/9/23 11:04:50

敏捷软件开发宣言

这里写图片描述


知乎问题:敏捷开发需要写哪些文档?

回答:


作者:张恂老师
链接:https://www.zhihu.com/question/21974683/answer/94217626
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

太极敏捷的一个基本原则:
敏捷开发只写有价值(business value)的文档。

没什么价值的文档,那是浪费,你写它干嘛呢?
那什么文档是有价值的呢?具体来说,不同的行业、不同的领域、不同的项目、不同的产品。。。所要求的敏捷开发文档的种类有所不同。一刀切的做法不是敏捷,而是教条。

第二条敏捷价值观:
Working software over Comprehensive documentation

一般来说,敏捷开发比 CMMI、ISO 9001 等标准体系所要求的文档种类和数量要少很多。过去许多企业为了尽早尽快拿证,囫囵吞枣、照搬照抄,搞了许多看上去很成熟的文档、步骤和流程。而敏捷开发让你有机会重新思考,重新反思、检视这些标准的开发过程,看看这些文档是否真的适合自己的企业和团队,真的有价值,这是敏捷开发在认识的一大进步。许多过去人们认为必要的文档其实是可以减少、简化与合并的。

关于敏捷文档,敏捷大师 Scott Ambler 有一篇著名的文章详细探讨了这个话题:
Agile/Lean Documentation: Strategies for Agile Software Development

建议大家细读。敏捷开发是不是不用写需求分析、概要设计、详细设计之类的文档了啊?

概要设计文档、详细设计文档是源自传统软件工程的说法。

如今传统的 Word、PDF 版的详细设计文档通常可以省略,大部分这类文档可以结合代码注释用工具自动生成,Web/HTML 版的详细设计/代码参考文档才是更好的做法。

在敏捷开发中,需求文档、概要设计(改成架构设计)文档通常是不能省略的。


作者:陈志宏
链接:https://www.zhihu.com/question/21974683/answer/55367743
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

文档问题其实是一个比较棘手的问题。“敏捷对文档是轻视的,但绝对不是不需要”。敏捷宣言里的4句话,已经包含了解决的办法。

《敏捷宣言》:

1、个体和互动 高于 流程和工具

意即沟通胜过文档(设计文档、软需、测试案例)。在一个团队可以面对面的工作环境中,如集中办公,无论是架构和开发、开发和测试、业务和架构都能够通过简单便捷的方式进行沟通,那么文档什么的可以轻视,不必按照国际标准的文档格式写大而全的设计文档。但是重要且必要的交谈记录,为了避免遗忘,一定要记录,好记性永远不如烂笔头

2、工作的软件 高于 详尽的文档

意即软件胜过文档(包括设计、软需)。结构合理、脉络清晰的软件成果可以替代绝大部分的功能描述性文档,除非开发的东西一蹋糊涂,只有他一个人能看懂。但是敏捷中开发的代码是共享的,是可以结对编程的,这样就减轻了代码的完全独立性与完全个性化,减少了文档的必要性。但是大型的文档一定要有必要栏目、简要的流程说明,具体的功能可以略写。文档的繁简度,以程序脉络和流程分类是否达到让第三方开发人员足够清晰、快速、全面的了解为准。这是一个度,要根据团队的实际能力来把握,或者是团队的平均水平来把握。

3、客户合作 高于 合同谈判

意即可与客户随时沟通的环境胜过一次性大而全的文档(业务需求)。软件的开发一个复杂且变化的过程,需求再全,都有可能在开发时遇到讨论需求时没有客户未考虑清楚的地方,甚至是需求相反的地方。因此,沟通非常重要,能够与客户保持随时随地的顺畅沟通非常重要。这比传统的标准需求文档强很多,更能体现客户的实际需求。但是所有重要且必要的沟通记录,一定要通过文字保存下来!

4、响应变化 高于 遵循计划

意即推翻传统的由设计文档来引导开发的观念(设计文档)。毕竟先设计好再开发,是基于设计已经非常完善了,这个阶段已经结束了,但实际情况是这样吗?设计直到开发结束才算结束。因为一开始就设计好的东西,往往由于设计人员疏于实际的开发很久,不了解具体的内容,或者开发人员直到开发到某个阶段才发现遇到某技术问题,需要重新做具体设计。敏捷中认为不可能预测到未来所有的东西,应该有更加合理、更加宽限的态度去包容去承认去响应这些变化。设计文档应该是概要式的,只要到具体某个迭代周期了才去完成最详尽的设计

小结,按传统的项目流程就是:
谈需求的时候,客户合作 高于 合同谈判;
设计的时候,响应变化 高于 遵循计划;
开发的时候,个体和互动 高于 流程和工具;
交付验收的时候,可工作的软件 胜于面面俱到的文档。

荐读:Scrum: The Effective Way To Implement Agile

这里写图片描述

另一个知乎问题:互联网公司的“敏捷开发”流程是怎么样的,每个职位的角色和分工是什么?


http://chatgpt.dhexx.cn/article/ZlCUTxKP.shtml

相关文章

最常用的看板工具,敏捷开发工具

1,Leangoo Leangoo非常适用于Scrum和敏捷开发,我们可以用它轻松的创建Sprint Backlog,添加用户故事卡或任务卡,为用户故事添加估算的故事点,或通过拖拽来移动卡片到不同的状态列表。您还可以通过把团队成员拖动到一个任…

敏捷开发简介

敏捷开发 一.简介 什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程&#xff0…

scrum敏捷开发工具实践分享

随着敏捷开发越来越火,自然我们也不能落后,我们公司也开始向敏捷转型,前段时间请了Scrum中文网的廖老师给我们企业做了全面的scrum敏捷开发培训课,第一次对敏捷有了全新的认识! 而在我们实施敏捷的过程中,…

国产项目管理软件/敏捷开发工具

国产项目管理软件Leangoo领歌,www.leangoo.com 轻量,简洁,直观,专业的敏捷项目协作平台,看板式的管理方式,列表、泳道的多维度,直观透明的特点来呈现敏捷团队的进展,促进团队高效协…

敏捷开发工具:禅道

敏捷开发,之前一直关注这方面的内容,因为现在的公司是个小型团队,也是刚成立不久的公司,没有完善的体系和开发流程,无疑,敏捷开发为最适合当前使用的开发理论和方法。 之前看了很多敏捷开发方法论等知识&am…

敏捷开发工具推荐

软件开发的项目经理一枚!大家都知道,一个好的敏捷工具对开发项目可以起到推波助澜、事半功倍的做用! 我们做敏捷开发,如何敏捷?当然敏捷工具的选用也是非常关键的因素,对我们也起着关键的作用!…

Scrum敏捷开发工具-单团队敏捷开发管理

Scrum是全球运用最广泛的敏捷管理框架,Leangoo基于Scrum框架提供了一系列的流程和模板,可以帮助敏捷团队快速启动Scrum敏捷开发。 这里可以介绍一下在scrum中单团队敏捷开发如何管理,单团队敏捷开发主要是针对10-15人以下,只有一…

8款主流Scrum敏捷开发工具评测,建议先马后看!

做敏捷开发,如何敏捷?我们需要一系列成熟的工具帮助我们敏捷。敏捷开发工具的适合以及选用,对开发项目起着关键性的作用。此篇介绍我们在scrum敏捷开发中发掘的几款工具,方便更多新加入的开发者上手。 1、worktile worktile应该说…

6款支持敏捷开发的项目管理工具,助力开发者驶入开发快车道

随着市场的瞬息万变和软件行业的迅猛发展,传统的瀑布式软件开发模型因 其漫长的开发与反馈周期,在抢占市场先机和快速满足用户需求方面日渐失去竞 竞优势。与此同时,敏捷开发以其快速迭代,持续满足不断变化的用户需求而 受到越来越…

链表反转的两种思路及算法

这样的思路用代码实现主要是有四行(具体内容懒得写了,作为一只摸鱼王),核心四行在就可 //做一个自定义函数,如link *turnlink,加一个for循环,进行如下四行 lm->nextlm->next->next; lr…

图解链表反转

转自:http://blog.csdn.net/feliciafay/article/details/6841115 如何把一个单链表进行反转? 方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。 方法2:使用3个指针遍历单链表,逐个链接点进行反转…

java链表的反转

链表的反转思想其实就是交换,定义两个游标分别为left和right, right指向链表头指针的下一个目的是当反转链表时断开链表时可以找到下一个链表的头,left指向链表头指针的前一个目的是反转链表时可以找到要反转的那个一个节点。 说一下顺序&…

单向链表反转(含图解)

前言 上次讲解了单向链表的原理《Java实现单向链表功能》&#xff0c;今天拓展一下实现链表的翻转。 下面直接上代码。 链表初始化 public class LinkedArray<T extends Number>{//链表的头节点private Entry<T> head;//节点实体类static final class Entry<T&…

链表(反转链表)

反转链表 文章目录 反转链表总结 反转链表 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0\leq n\leq10000≤n≤1000…

链表反转详解图解

在实现反转之前&#xff0c;先回顾链表操作的一些重点。 现链表节点是以下形式&#xff1a; struct Node {int data;Node* next; }; 解决链表问题一定要理解深刻&#xff0c;一些要注意的点&#xff1a; 链表中每一个节点都是物理内存中实际存在的&#xff0c;物理节点本身…

Java链表-链表反转

基本思想 定义两个空指针&#xff08;pre和next&#xff09;&#xff0c;如果头指针指的值不为空&#xff0c;就让next存头节点的下一个节点的值&#xff08;head.next&#xff09;&#xff0c;再把pre指针的值赋到head.next&#xff0c;再把头节点的值赋到pre&#xff0c;再把…

算法基础——链表反转

一、单链表反转 &#xff08;1&#xff09;创建单链表结构类 public class Node {public int value;//当前节点的值public Node next;//next储存下一个节点地址值public Node(int value) {this.valuevalue;} } 不知道有没有小伙伴像我一样的疑惑&#xff0c;为什么单链表结构…

链表反转(C++)

思路图 这是在刷 LeetCode 看到的一个方法&#xff0c;我觉得特别简单好记&#xff0c;不管单链表还是双链表上来p1、p2、p3 直接反转。 代码实现 单链表反转 struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), n…

详解:链表反转

链表反转是链表算法题中较为基础的一道题&#xff0c;但对于初学者来说&#xff0c;由于对链表的结构不是很熟悉&#xff0c;一时间无从下手&#xff0c;甚至看别的的阶梯代码都会觉得很晕&#xff0c;看不懂一堆变量都是做什么的。我将会详细描述链表反转的操作&#xff0c;希…

链表反转【递归法】

目录 前言一、解题思路1.找到链表的尾部两个数据&#xff08;4、5&#xff09;2.创建逆向指针3.断开正向指针4.递归5.递归的具体过程向前移动&#xff1a;第一次&#xff1a;创建逆向指针&#xff1a;断开正向指针&#xff1a; 第二次&#xff1a;创建逆向指针&#xff1a;断开…