14.30天软件开发 告别瀑布拥抱敏捷

3个角色,3个工件,5个事件。

1)传统预测性软件开发流程的使用是导致如此之多项目失败的罪魁祸首。预测性流程也叫瀑布式流程,其可行性依赖于项目计划的准确性和执行的严格性。

2)YDC为什么软件开发能成功?

1.需求的控制

2.开发工具及框架控制

3.开发人选及流程控制

需求。无变更风险时确定性最高。随着不明确因素、涌现式描述和可预见性变更的增多,确定性降低。 技术。所用技术为人熟知时确定性最高。随着开发及运营技术复杂度的提升,不同的技术在不同的软件开发和发布阶段通过接口交互,确定性随之降低。 人。确定性随着人员数量的增多而降低。当人员数量超过4个或者5个,甚至达到上百个并经常改变时,确定性不断降低,因为不同的人有不同的意见、态度和情绪。以团队或分组方式工作时,成员间的互动和工作的不可预见性是巨大的。

3)

斯黛西图(Stacey Graph)是用来评估工作中的确定性和可预测性的有效工具。 [1] 斯黛西图用于度量不同维度的工作的确定性和不可预见性,并标示出工作范围。我们用它来为软件开发中的三个维度建模,这三个维度分别是需求、技术和人

4)

由于PTC现在能够在30天内开发出完整的功能,因此开发人员能够在任意适合的迭代中和客户直接交流。他们能够更直接地了解需求,以及如何更好地实现它们。客户也发现了这样的改变,开始在每个迭代中和开发团队一起工作。他们积极参与定义功能,得到了真正想要的功能。

开发和客户沟通的结果要不要有文档记录下来?沟通时是不是有测试参加?没有的话,后期测试的标准是什么?

5)

总的来说,我们发现小团队最适合进行这种迭代增量式的软件开发工作。这里所说的小团队,一般来说应该由3~9人组成。团队总体应该拥有将需求转化为功能增量所必备的技能,从而实现你的愿景。根据开发的软件类型,团队中的成员应该具备编程、测试、设计、分析、编写文档、设计架构等技能。我们希望通过调整团队结构、提高工程实践能力和建立规范来塑造团队特质,提高团队的生产率、质量、创造力和持续改进的能力。 我们对高效软件开发团队的见解,大量地参考了竹内弘高和野中郁次郎的研究结果 [1] 。他们曾经在哈佛大学进行关于团队流程的研究。他们调查了拥有较高目标的自主团队,其团队成员积极地相互学习,以短期迭代为主要工作方式。这些团队之间紧密的协作能够缩短知识更新周期,从而有助于创新和更快地响应市场,获得高质量的结果。这些团队让他们想起了英式橄榄球,于是他们把这种项目管理方式叫做Scrum——英式橄榄球中球出界后重新开始比赛的仪式。

最合适的人员比例分配?需求分析1,架构编码3,UI设计1,测试2,PO1,8名团队成员!

6)

以下问题都有可能在迭代中发生,需要进行讨论。

开发的功能太少了。

作为一个开发团队,他们总是努力在每次迭代中都完成至少一个业务功能,无论这个功能有多么小。然而,有些时候团队有可能在迭代中只开发出了很少或者是不可用的功能。这有可能是团队需要在迭代中掌握大量新技术、进行架构设计或自动化测试,占用了开发功能的时间。也可能是因为开发人员本身不够出色,无法按时按量完成任务,需要重新接受培训或者被替换掉。

交付的功能与实际需求差距太大。

副总裁可能会发现团队并不能理解他想要的东西。他需要和团队更加紧密地工作,才能更好地向团队传达愿景和澄清需求,从而保证对方完全明白他的想法。如果团队对这款软件和基金管理了解甚少,他可能需要花更多的时间和他们交流,或者寻找新的团队成员。

团队成员在迭代中感到不知所措。

试点团队的成员可能感觉迭代工作像是在学习一种新的舞蹈。他们需要找到不同的工作方式,既让大家都感觉良好,又能产生更好的结果。

团队成员之间完全无法一起工作。

团队成员之间的工作方式需要检视。这个时候也许需要从外部引入一位引导者,帮助他们更好地沟通或者做出更好的决定。有时可能需要重组团队。当然,在这种情况下,之前所获得的经验也就丢失了。 根据讨论的结果,试点经理要求团队成员提出一些建议,即在接下来的迭代中应该如何改变才能提高工作效率。

7)

下,之前所获得的经验也就丢失了。 根据讨论的结果,试点经理要求团队成员提出一些建议,即在接下来的迭代中应该如何改变才能提高工作效率。

8)

相信你的员工能做更多 团队中真正干活的人是找出解决方案的最佳人选。这种想法与很多管理层教导式的思想相背离。过去,需要一位经理来设定目标和实现方法,然后团队按照他的计划工作。但是,这样所有人的能力都会受到经理自身的经验、见识和智慧的限制。

相信你的员工能做更多 团队中真正干活的人是找出解决方案的最佳人选。这种想法与很多管理层教导式的思想相背离。过去,需要一位经理来设定目标和实现方法,然后团队按照他的计划工作。但是,这样所有人的能力都会受到经理自身的经验、见识和智慧的限制。 如果团队成员可以自由决定应该做什么,他们就能够根据实际情况进行调整。他们可以分享各自的想法和技能,共同找出最好的解决方案。他们可以先尝试一种方案,如果不可行,再尝试别的方案。这就是我们所说的“自组织”。这种在团队中集思广益而不仅仅依赖于经理个人想法的管理方式,能让团队的所有成员尽其所能。 在自组织的方式里,经理的任务是设定目标、帮助团队和扫除障碍,团队成员被授予了充分的自主性。

这种东西在中国能不能行得通?效果怎么样?有待在实际项目中检验!

经验型软件开发流程在组织里能有多成功,很大程度上取决于组织的管理层,及其在面对以上这些变革时的领导力和影响力。

9)

我们把这种情形叫做Scrum PRN [1] 。正如p.r.n.的药物控制由护士/护工或者病人本人决定,当你面对重要的机会或巨大的挑战,需要短时间内开发出软件时,可以快速地实施Scrum PRN。为了解决危机或把握稍纵即逝的机会,应该特事特办,使用不同的工作方式。Scrum PRN并不需要得到专门的批准。组织对软件的急切需求就是最好的授权。 [1]. 对PRN或者pro re nata的解释之一是“当环境需要的时候”。医学处方上的prn的意思是“当必要时服用”或者“当需要时服用”。

10)

据斯坦迪什组织估计,50%的软件功能很少甚至从未被使用 [1] 。例如,80%的客户只使用大型网站hp.com中14%的功能 [2] 。因此,为了优化价值,产品负责人必须决定何时停止后续Sprint,以保证交付的功能都是高价值的。按照这样的策略,完成项目所需的时间只需要原来的40%。只要持续关注开发的价值,就能获得这样的生产率。

11)

我们知道可以利用Scrum应对挑战,把握机会。在第一个Sprint开始之前,通常我们都想知道项目大概需要多长时间以及成本是多少。我们可以先进行几个Sprint,然后通过这几个Sprint得出的数据使用外推法对整个项目的成本有个初步的估计。

12)

Sprint的长度永远不要超过一个月。

13)

在一个项目内保持Sprint的长度一致 尽可能在一个项目中,从第一个到最后一个Sprint,让所有Sprint的长度保持一致。软件开发团队在保持一定速率的时候表现最好,因为他们形成了自己的节奏。

14)

项目级Scrum再进一步就是成立Scrum工作室——一个长期运营的,可以让Scrum软件项目快速启动的机构。这个软件工作室在是组织内的一个全新、独立的机构。有些组织用Scrum工作室来运营所有项目。当然,也可以只运营具有一定复杂程度、规模或者风险的项目。就像PRN的Scrum一样,在工作室中使用Scrum解决了在企业里全面推广Scrum时可能遇到的潜在困难和问题。 软件工作室又叫做软件工厂 [1] 。然而,通常来说工厂意味着重复和标准化的简单工作,软件开发却恰恰相反。

15)scrum工作室协议

16)

在向Scrum转型的过程中,整个企业会发生剧变,所有人都在一种可控的混乱中工作,而这种状态会持续几年。但最终,软件的每个版本会变得越来越好,员工都很乐意来上班,客户也开始乐于和企业合作。然而,企业转型成功与否取决于发起转型的高管。我们已经见过太多例子,在企业内的其他人还没有真正懂得如何用新的方法思考和工作,转型还没有在企业内扎根时,发起人就由于晋升或离职离开了原来的岗位。当发起人高管离开之后,之前取得的进步将灰飞烟灭,而刚被掩埋却没有根除的旧文化又会卷土重来。之前取得的优势和持续改进的习惯也会随着时间的推移渐渐减弱。尽管企业仍然比实施Scrum之前优秀得多,但是它本可以更优秀。人们也变得小心谨慎。在发起人离开的几年之内,企业不会比开始转型前更差,却称不上是真正敏捷的Scrum企业。这样一来就错过了彻底转型的机会。 回顾笔记时我们发现,在我们所知道或者亲身参与过的企业转型中,一旦发起的高管离职,几乎都不可避免地发生了上述这些问题。

17)

在企业转型过程中必须谨记的两个忠告。 1.不要试图改变Scrum Scrum不是可以被随意修改以迎合现有企业文化的流程。相反,企业的文化应该进行调整来适应Scrum。在Scrum中,阻碍本书所描述的软件开发方式的文化障碍将无所遁形。对于一个企业来说,Scrum就像是“煤矿里的金丝雀” [1] 。如果没有用Scrum建立敏捷、透明的开发环境,那么隐藏的问题将会一直留在企业内损害企业的利益。这个时候就失去了使用Scrum最主要的好处。 2.不要犹豫 不要认为企业转型是件容易的事。开始策划一件有价值的事情的时候,目标明确、身体力行以及建立氛围都是非常重要的。一旦开始使用Scrum,就能更容易地找到最主要的障碍。过度计划和过度思考是很多企业中常见的问题。但是,这并不是Scrum的初衷。Scrum所需要的是实际行动、测试、评估、学习、移除障碍,然后用更多行动来为大家创造有价值的

18)

用Scrum的方式实施Scrum就是利用Scrum的流程来实现组织的转型。要成功实施Scrum,组织必须进行两项主要改变。首先,软件开发人员必须组成小团队,并学会如何使用Scrum进行软件开发。其次,移除所有有碍于优化创新和软件交付的障碍。这些障碍会随着Scrum的使用逐渐显现。第一项改变能够提升软件交付的能力,第二项改变则可以为提高生产效率和投资回报率清除障碍。这两项改变都具有挑战性,也需要努力才能达成。它们是转型工程的核心,因此无论管理层有多强烈的愿望或者决心推进Scrum,都不能在这两方面节省时间。

19)

Scrum的经验型流程模型

时间: 2024-12-07 05:41:01

14.30天软件开发 告别瀑布拥抱敏捷的相关文章

《30天软件开发 告别瀑布拥抱敏捷》一书 读后总结

周四.发现旁边一同事在看一本名为<30天软件开发 告别瀑布拥抱敏捷>的书."敏捷开发"这个词虽然我在很早就已获知,但是我也只是简简单单的认识到一个术语,并未去了解和认识什么是敏捷开发.也刚好趁上个月的项目刚好是采用敏捷开发的模式完成的.于是就向同事借了该书几天.在阅读该书内容的过程中并结合自身项目的参与经历,用对比的方式学习.认识和理解敏捷开发. 一.初试Scrum Scrum是一个用于管理如 软件开发 这样的复杂工作的框架.(这里的框架不是技术上的框架 只是针对项目管理上

敏捷软件开发?什么是敏捷?

敏捷软件开发?什么是敏捷? 敏捷开发(Agile development)是如今软件工程项目中一个大热的词汇,很多大大小小的开发团队都喜欢高举敏捷开发的旗号,搞出一套显得大大不同于传统的运行模式来区分自己的团队博取眼球,他们手头所做的事情,只是套用一套流行的敏捷开发模板,如Scrum,Crystal,XP到自己的开发流程中,就认为自己的整个开发体系会有一个质的飞越.然而他们是否能真正驾驭所谓的敏捷开发?他们是否理解了敏捷开发的核心理念?这都是要划一个大大的问号. 笔者我在刚刚接触这个词的时候,下

2017.07.07 IT项目管理笔记整理 第10章 敏捷软件开发

什么是敏捷软件开发方法 1.敏捷方法是一类软件开发流程的泛称: 2.敏捷方法是相对于传统的瀑布式软件过程提出的: 3.敏捷方法可以用敏捷宣言(4条).敏捷原则(12条)来概括: 4.敏捷原则通过一系列的敏捷实践来体现出来: 敏捷开发软件的特点:1敏捷软件开发更强调程序员与业务专家.用户之间的紧密合作,面对面的沟通,认为这种方式更有效 2能够很好地根据需求的变化编写代码 3频繁交付新的软件版本 4采用紧凑和自组织的软件开发团队 5更注重个体在软件开发中的作用 敏捷软件开发的方法有:1极限编程 2.

华为软件开发云测评报告一:项目管理

体验环境 体验方式:PC端 系统:Windows 64位 浏览器类型:Chrome浏览器 浏览器版本:49.0.2623.110 m 体验时间:2017.05.11 测试目的 了解华为软件开发云的项目管理服务功能,分析其优缺点: 瀑布化开发到敏捷开发的转型分析,以及未来软件开发模式的发展方向: 产品简介 产品名称:华为软件开发云 定位:软件开发云(DevCloud)是集华为研发实践.前沿研发理念.先进研发工具为一体的研发云平台,面向开发者提供研发工具服务,让软件开发简单高效. 产品slogan:

敏捷软件开发与传统软件开发的对比

敏捷软件开发与传统软件开发的对比 最早了解敏捷开发是通过大二的一次博雅课堂,一位在百度工作的北航学长跟我们分享了他近年来从事敏捷开发的经历.印象最深的一句话是一个延迟3个月交付100%功能的软件和一个按时交付75%核心功能的软件,敏捷软件开发者更愿意选择后者.本学期的软件工程基础课又向我们讲授了传统软件开发,经过课上和课后的学习,对于敏捷软件开发和传统软件开发有了浅显的认识和理解.由于课上学习的重点是传统软件开发,所以课下对敏捷软件开发进行了更多的涉猎,本文以敏捷软件开发为主体,来分析其与传统软

何谓敏捷软件开发?与传统软件工程的对比

大家好,下面的内容将阐述我对于敏捷软件开发的产生背景.理解以及在实际运用中对于敏捷开发的误解.如果有理解阐述不正确的地方,欢迎指正! 敏捷软件开发 Agile software Development 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作.[1] 想必大家会看到过下面这张图,对于整个庞大的复杂的软件项目,在背景知识需求了解的基础上,首先要尽可能的将项目进行模块的划分,并且尽量减少耦合,对于每一个小的模块 进入该部分的冲刺阶段,通过不断的交付可以

传统软件开发VS敏捷软件开发

在上世纪60年代,由于计算机的计算能力显著提升,人们需要处理问题的复杂程度也得到提升,导致了一系列问题比如项目运行超过预算.项目运行超过时间.软件十分低效.软件质量很低.软件无法满足需求.项目缺乏管理,代码难以维护.软件难以交付,称为软件危机.人们意识到,软件开发不仅仅是让程序员编写程序那么简单,而是一项工程,需要科学的开发方法,从而人们提出了软件工程的概念,采用工程化的方法对软件开发进行管理.而在当今,软件工程中软件开发方法主要分为传统软件开发和敏捷软件开发.本文主要介绍这两种软件开发方法以及

软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结

在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以 组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段. 由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型

敏捷软件开发和传统软件工程

一.   传统软件工程 从上个世纪60年代开始,人们开始逐渐认识到了确实存在着"软件危机" 这样一个事实,软件开发人员被诸如下列问题困扰: 软件生产不能满足日益增长的需要 软件开发成本和开发进度估计往往不准确 软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低 软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项目 软件质量难以保证 软件可维护性差,程序中的错误很难改正,适应性或完善性维护都极其困难 导致危机问题的一个重要原因