敏捷开发五大原则,敏捷开发五大原则是

http://www.itjxue.com  2023-01-15 02:31  来源:未知  点击次数: 

关于敏捷开发

别以为搞个敏捷开发流程就是敏捷了,如果很少就用户故事的价值发生过讨论和争执,就不是敏捷,如果非要问“敏捷在需求管理上要做什么?”,最核心的三条:

1、统一的产品待办事项 (Single Backlog)

2、小步发布(Small Release)

3、价值驱动(Value Driven)

然而在现实中,很多团队设置了迭代,建立了看板,每个迭代都做计划会,采用了用户故事,开卡、验卡都做了,甚至还有专门的敏捷教练辅导,但却一直陷在“业务需求永远也做不完的死循环”里

如果仅仅是做形式上的实践,如站会、故事墙、用户故事、开卡和验卡,但很少就用户故事的价值发生过讨论和争执,就不是敏捷

角色之间一定是要相互协作、紧密融合的状态,“Collaborative Design(协同设计)”、“Collaborative Analysis(协同分析)”、"Collective Owership(集体所有权)",而不是各自只管自己的一亩三分地

======================

需求管理

需求优先级原则:rice

PingCode 全年上线功能盘点

敏捷开发的敏捷开发团队原则

敏捷型方法发源于20世纪90年代的 IT 软件开发行业。

2001年,软件开发业的17位领导者在美国犹他州聚会,发布了《软件开发敏捷宣言》,进而从《敏捷宣言》派生出了12条敏捷原则,他们分别是:

(1) 我们的最高目标是,通过尽早地、持续地交付有价值的软件来使客户满意。

(2) 即使是在项目开发后期,也欢迎对需求提出变更。敏捷过程利用适应变化来帮助客户创造竞争优势。

(3) 要不断交付可用的软件,周期从几周到几个月不等,且越短越好。

(4) 项目过程中,业务人员与开发人员必须在一起工作。

(5) 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。

(6) 无论是团队内还是团队间,最有效的沟通方法是面对面的交流。

(7) 可用的软件是衡量进度的主要指标。

(8) 敏捷过程提倡可持续的平稳开发。项目方、开发人员和用户应该能够保持恒久稳定的开发速度。

(9) 对技术的精益求精以及对设计的不断完善将提升敏捷性。

(10) 简单——尽最大可能减少不必要的工作。这是一门艺术,是根本。

(11) 最佳的架构、需求和设计出自于自组织的团队。

(12) 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。

以上就是敏捷开发的十二原则,希望可以解答您的问题。

敏捷开发的敏捷开发的原则

1. 快速迭代

相对那种半年一次的大版本发布来说,小版本的需求、开发和测试更加简单快速。一些公司,一年仅发布仅2~3个版本,发布流程缓慢,它们仍采用瀑布开发模式,更严重的是对敏捷开发模式存在误解。

2. 让测试人员和开发者参与需求讨论

需求讨论以研讨组的形式展开最有效率。研讨组,需要包括测试人员和开发者,这样可以更加轻松定义可测试的需求,将需求分组并确定优先级。 同时,该种方式也可以充分利用团队成员间的互补特性。如此确定的需求往往比开需求讨论大会的形式效率更高,大家更活跃,参与感更强。

3. 编写可测试的需求文档

开始就要用“用户故事”(User Story)的方法来编写需求文档。这种方法,可以让我们将注意力放在需求上,而不是解决方法和实施技术上。过早的提及技术实施方案,会降低对需求的注意力。

4. 多沟通,尽量减少文档

任何项目中,沟通都是一个常见的问题。好的沟通,是敏捷开发的先决条件。在圈子里面混得越久,越会强调良好高效的沟通的重要性。

团队要确保日常的交流,面对面沟通比邮件强得多。

5. 做好产品原型

建议使用草图和模型来阐明用户界面。并不是所有人都可以理解一份复杂的文档,但人人都会看图。

6. 及早考虑测试

及早地考虑测试在敏捷开发中很重要。传统的软件开发,测试用例很晚才开始写,这导致过晚发现需求中存在的问题,使得改进成本过高。较早地开始编写测试用例,当需求完成时,可以接受的测试用例也基本一块完成了。

敏捷开发

一、目标

目标1:更快的交付价值,就是更早的交付。

目标2:有效学习和灵活响应变化。

二、价值观:

1.个人和交互胜过过程和工具。

2.可以运行的软件胜过面面俱到的文档。

3.客户合作胜过合同谈判。

4.响应变化胜过遵循计划

三、12条原则

1.通过尽早的、不断地提交有价值的软件来使客户满意。

2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

3.以从几个星期到几个月为周期,尽快、不断地提交可运行的软件。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

5.以积极向上的员工为中心,建立项目组,给他们提供所需的环境和支持,并对他们的工作予以充分的信任。

6.在团队内部,最有效、效率最高的传递信息的方法,就是面对面的交流。

7.测量项目进展的首要依据是可运行软件。

8.敏捷过程提倡可持续的开发,责任人、开发者和用户应该为能够保持一个长期的、恒定的开发速度而努力。

9.时刻关注技术上的精益求精和好的设计,以增强敏捷能力。

10.简单是最根本的。

11.最好的构架、需求和设计出于自组织的团队。

12.每隔一定时间,团队要反省如何才能更有效地工作,然后相应地调整自己的行为。

四、运作机制

1.一个团队有自己的代办事项,对代办事项进行拆小。

2.按客户价值进行优先级排序,产品经理负责价值排序。

3.小而稳定,跨职能团队。

4.多个团队松耦合(依赖性比较低),对齐迭代时间和战略目标。

五、团队角色

1.产品负责人

负责管理产品backlog(代办事项)的唯一负责人

代表客户/项目如责任人

定义产品的所有特性

负责产品的投入产出

负责最大化产品和开发团队工作的价值

2.主管(流程主管)

起到教练的职责,领导团队完成Scrum的实践以及体现其价值。

排除团队遇到的困难,使得团队紧密合作,使得团队个人具有多方面职能的工作能力。

确保团队能胜任其工作,并保持高效的生产率。

保护团队不受到外来无端影响

3.开发团队

每日例会:每日5分钟

评审会:1个小时左右

迭代回顾会:时间维持在30-60分钟内。

包括,定量分析和定性分析。

定量分析:迭代目标,迭代度量指标(包括速率、迭代燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生产Bug解决时间、用户故事等)。

定性分析:哪些工作良好(应该继续保持),哪些做的不好(应该停止)?哪些可以改进(团队选出1-2条在下一个迭代实现)?

关于敏捷开发的含义、原则、目标和机制

理解敏捷开发,我们可以先了解一下瀑布式开发。

瀑布开发模式把开发分成一系列阶段,如需求、设计、开发、测试,就像下图它画出来的,看起来很像瀑布,所以叫瀑布开发。

问题是需求的交付难道不都是要经历这些阶段吗?

瀑布开发的本质问题并不是阶段,而是批量。需求批量地在一起进行设计,然后是批量地开发,批量地测试、交付等等。

批量有什么问题? 首先,批量让价值交付延迟,所有需求在最后的阶段才能交付,价值交付比较晚。Google执行董事长施密特提出过反摩尔定律,表述为:

“如果18个月之后我们只能卖出跟今天一样的东西,我们就只能得到一半的收入。”价值的交付时间将直接影响收入。

敏捷的目标

敏捷开发有第一个目标就是更快的交付价值,这里的快指的不是绝对速度,而是更早的交付。

在项目结束的时候,一定是对产品和项目的知识理解最充分的时候。这显而易见,我们在项目进程中积累了知识特别是当向用户交付产品后,用户反馈:

“我要的不是这个啊,我说的明明是……”,这时候你瞬间狂涨知识,并感叹道“你怎么不早说呢?”。

这中间可能有沟通问题,但更多可能的是,用户这时才清楚或能够描述他们要的是啥,更有甚者,我们可能一开始连用户是谁也未必能准确地定义。产品和业务开发本来就是一个探索的过程,开始时一定是最无知的时刻。

项目中的大部分决策也一定是在项目开始的时刻做出的,这将有一个重大的悖论,在最无知的时刻,做出了最重要而且是绝大部分的决策,并把它作为随后执行的依据。面对不确定的技术、市场环境,传统开发模式已无法适应要求,悖论越发突出。

敏捷开发将通过迭代应对这一问题,只做初始决策,定大致的方向。通过市场反馈不断修正对产品的认知,增量的决策和调整。

产品开发过程中,技术环境、市场环境、竞品策略、团队认知都会发生变化。面对变化的环境,我们必须承认自己的无知,在开发过程主动有效地学习,不断地汲取反馈,灵活地调整。

这也是敏捷的第二个业务目标,有效学习和灵活响应变化。

敏捷开发工具

敏捷开发是一种以人为核心,以迭代方式循序渐进开发的方法,其软件开发的过程称为“敏捷过程”。

在这一过程中,软件项目的构建被切分成多个子项目,各个子项目的成功都经过测试,具备集成和可运行的特征。

在2001年年初,一些业界专家成立了敏捷联盟,起草了敏捷软件开发宣言。该宣言针对一些企业的现状,提出了让软件开发团队具有快速工作、快速应变能力的若干价值观和原则,其中包括4个简单的价值观以及敏捷开发方法应遵循的12条原则 。

敏捷开发的价值观

1.个人和交互胜过过程和工具。

2.可以运行的软件胜过面面俱到的文档。

3.客户合作胜过合同谈判。

4.响应变化胜过遵循计划。

敏捷开发应遵循的12条原则

1.通过尽早的、不断地提交有价值的软件来使客户满意。

2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

3.以从几个星期到几个月为周期,尽快、不断地提交可运行的软件。

4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

5.以积极向上的员工为中心,建立项目组,给他们提供所需的环境和支持,并对他们的工作予以充分的信任。

6.在团队内部,最有效、效率最高的传递信息的方法,就是面对面的交流。

7.测量项目进展的首要依据是可运行软件。

8.敏捷过程提倡可持续的开发,责任人、开发者和用户应该为能够保持一个长期的、恒定的开发速度而努力。

9.时刻关注技术上的精益求精和好的设计,以增强敏捷能力。

10.简单是最根本的。

11.最好的构架、需求和设计出于自组织的团队。

12.每隔一定时间,团队要反省如何才能更有效地工作,然后相应地调整自己的行为。

敏捷组织提出的敏捷开发模型的整体框架主要有三个:

Scrum、XP(eXtreme Programming)、OpenUP 这3个敏捷实践。

敏捷开发的原则

1.凝聚人的力量,紧密协(合)作。包括业务负责人、开发团队、客户、管理者之间的关系,所有这些关系在以前都是造成项目危机的原因之一,那么,在敏捷时代,我们需要这些角色 紧密合作,最大限度的发挥各个角色的力量.

2.聚焦客户价值,消除浪费(如何聚焦用户价值,即频繁的交付用户可工作的软件,快速收到用户反馈)

敏捷团队运作机制

1.一个团队有自己的代办事项,对代办事项进行拆小。

2.按客户价值进行优先级排序,产品经理负责价值排序。

3.小而稳定,跨职能团队。

4.多个团队松耦合(依赖性比较低),对齐迭代时间和战略目标。

关键的团队角色

产品负责人

Scrum主管(流程主管)

开发团队

产品负责人(Product Owner)

负责管理产品backlog(代办事项)的唯一负责人

代表客户/项目如责任人

定义产品的所有特性

负责产品的投入产出

负责最大化产品和开发团队工作的价值

Scrum Master(流程主管)

起到教练的职责,领导团队完成Scrum的实践以及体现其价值。

排除团队遇到的困难,使得团队紧密合作,使得团队个人具有多方面职能的工作能力。

确保团队能胜任其工作,并保持高效的生产率。

保护团队不受到外来无端影响

关键的团队活动

每日例会:每日5分钟左右的一个简单例会,尽可能多的开发人员参与进来对紧要问题的讨论。

评审会:需要在迭代周期的最后一天召开,1个小时左右就可以了,需要客户出席,如果客户不能出席,则需要产品经理出席

迭代回顾会:迭代回顾会是在每个迭代结束时进行,总结工作中的经验和教训,时间维持在30-60分钟内,整个团队都需要参加(Scrum Master、Product Owner、开发团队以及客户)。

迭代回顾会包括两部分,第一部分是定量分析,第二部分是定性分析。

其中定量分析又包含团队是否完成了迭代目标,收集并评审迭代度量指标(包括速率、迭代燃尽图、迭代计划故事和实际完成故事、计划发布日期与实际发布日期、客户满意度、团队满意度、生产环境Bug数、生产Bug解决时间、用户故事等)。

定性分析包含哪些工作良好(应该继续保持),哪些做的不好(应该停止);哪些可以改进(团队选出1-2条在下一个迭代实现)。

敏捷开发框架案例:

原文:windy

敏捷开发的遵循原则

我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。

在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。

在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

工作的软件是首要的进度度量标准。

敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

n 不断地关注优秀的技能和好的设计会增强敏捷能力。

简单是最根本的。

n 最好的构架、需求和设计出自己组织的团队。

n 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

当软件开发随需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。

n 僵化性:很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。

n 脆弱性:对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。

n 牢固性:很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。

n 粘滞性:做正确的事情比做错误的事情要困难。

不必要的复杂性:设计中包含有不具任何直接好处的基础结构。

n 不必要的重复性:设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。

晦涩性:很难阅读、理解。没有很好地表现出意图。

敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。

为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:

单一职责原则(SRP)

就一个类而言,应该仅有一个引起它变化的原因。

开放-封闭原则(OCP)

软件实体应该是可以扩展的,但是不可修改。

n Liskov替换原则(LSP)

子类型必须能够替换掉它们的基类型。

n 依赖倒置原则(DIP)

抽象不应该依赖于细节。细节应该依赖于抽象。

n 接口隔离原则(ISP)

不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

n 重用发布等价原则(REP)

重用的粒度就是发布的粒度。

共同封闭原则(CCP)

包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

共同重用原则(CRP)

一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

环依赖原则(ADP)

在包的依赖关系图中不允许存在环。

稳定依赖原则(SDP)

朝着稳定的方向进行依赖。

稳定抽象原则(SAP)

包的抽象程度应该和其稳定程度一致。

上述中的包的概念是:包可以用作包容一组类的容器,通过把类组织成包,我们可以在更高层次的抽象上来理解设计,我们也可以通过包来管理软件的开发和发布。目的就是根据一些原则对应用程序中的类进行划分,然后把那些划分后的类分配到包中。

敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。

(责任编辑:IT教学网)

更多

推荐linux服务器文章