在软件开发中,精益和敏捷是什么关系?
发布网友
发布时间:2022-04-24 01:40
我来回答
共1个回答
热心网友
时间:2023-10-19 07:39
敏捷给软件企业(以及软件开发者个人)带来的好处究竟在哪里?这个问题有很多不同的答案。例如“重视个人和交流”,软件开发者喜欢这样的态度,这是毫无疑问的。例如“重视可工作的软件”,它的价值是显而易见的。但在这一切的背后,敏捷的核心是什么?时下流行的观点是:敏捷就是软件行业里的精益(lean)生产,它的核心是消除浪费。ThoughtWorks中国公司的高层在近日接受采访时明确指出了这一点。
首先考虑质量问题。一些软件企业为了降低成本而忽视质量,但质量低下的软件会造成返工的浪费,反而提高成本。相反,在日常工作中投入更多的精力来保证质量,反而能够为企业节约成本。ThoughtWorks中国公司技术总监Michael Robinson用软件工程的经典理论来分析这个问题:
任何一本软件工程教材都会告诉你:假设在分析阶段找到并解 决一个错误的成本为1,在设计阶段解决同一个错误的成本就变成10,在实现阶段就变成100,在维护阶段就变成1000。敏捷软件开发中的众多实践正是为 了避免低质量和返工的浪费。尽管它们一开始看起来似乎有些麻烦,但它们带来的收益是实实在在的。另一种常见的浪费则是“为将来准备的投资”。例如为了应付将来可能出现的需求变化而提前引入的灵活设计,如果需求没有发生变化,这些灵活设计就会成为浪费:不仅浪费了将它设计出来的成本,而且浪费了继续维护它的成本。制造业为了降低库存成本而创造出“Just In Time”的生产和决策方法,ThoughtWorks中国公司总经理郭晓认为这些方法同样适用于软件行业:
如何消除预测错误的浪费?避免预测错误的 根本办法就是推迟决策:决策下得越晚,就越不容易因为预测失准而造成浪费。当然也不能晚到错过了时机、耽误了工作才下决策,这就像丰田制造的Just In Time,决策也要Just In Time。过早的、含有太多预测成分的决策也会造成浪费,其危害丝毫不亚于过晚的决策。在最近的两篇Blog里,我谈到了一些从更深层次思考敏捷的心得。在我看来,敏捷的、精益的、实用主义的决策往往是符合中庸之道的:它们往往是各种因素、选择权衡之后的结果。敏捷方法极端重视提升客户价值,为了达到这个目标而采取的手段通常都不可能是极端的。
中庸之道常常有效的深层原因是边际效用递减律:对一个方面的东西重视到一定程度以后,再加入更多的重视,收到的边际效用递减;同样的重视度放到另一个方面上,能够收到更大的边际效用。让每一分投入收到最大的回报,尽可能地消除浪费,这是精益的追求。在另一篇Blog里我谈到了如何进行精益设计。设计方案的选择说到底应该是一次成本与收益的计算,而不是个人审美取向的衡量——当然,优秀的程序员能够把这种计算变成本能,我认为这就是“软件开发的艺术”所在。敏捷方法强调“简单设计”,同样是经过计算的结果。
在面对一个复杂并且灵活的设计时,首先要衡量的不是实现它的收益,而是“现在实现它”与“将来实现它”之间成本的差额。不论一个灵活的设计的收益和成本如何,只要这个差额非常小——等到未来实现它也没有什么额外的困难,就应该毫不犹豫地推迟决策,等到真正需要的时候再引入灵活的设计。感谢现代化的IDEs,很多时候我们讨论的这个成本差额确实非常小,这是敏捷设计通常取简单方案的原因所在。值得注意的是,随时进行这种成本与收益的计算并不是一件易如反掌的事。计算本身也有成本。这是最佳实践和工具支持存在的意义所在:你可以用较低的成本得到前人积累的知识。例如ThoughtWorks在介绍其项目管理工具Mingle时特别指出其中融汇了该公司多年从事敏捷软件开发的经验:
Mingle是一个敏捷项目管理工具。它为整个团队在软件交付过程中提供“一站”式服务,并通过有10年敏捷项目开发经验的ThoughtWorks公司提供的开发框架共享所有的项目成果。我们带来了敏捷开发方法,同时Mingle将会支持和推动这一切工作。畅通的信息渠道,清晰的成本/收益核算,全面消除浪费,这是精益制造的核心所在,也是敏捷软件开发的核心所在。
热心网友
时间:2023-10-19 07:39
敏捷给软件企业(以及软件开发者个人)带来的好处究竟在哪里?这个问题有很多不同的答案。例如“重视个人和交流”,软件开发者喜欢这样的态度,这是毫无疑问的。例如“重视可工作的软件”,它的价值是显而易见的。但在这一切的背后,敏捷的核心是什么?时下流行的观点是:敏捷就是软件行业里的精益(lean)生产,它的核心是消除浪费。ThoughtWorks中国公司的高层在近日接受采访时明确指出了这一点。
首先考虑质量问题。一些软件企业为了降低成本而忽视质量,但质量低下的软件会造成返工的浪费,反而提高成本。相反,在日常工作中投入更多的精力来保证质量,反而能够为企业节约成本。ThoughtWorks中国公司技术总监Michael Robinson用软件工程的经典理论来分析这个问题:
任何一本软件工程教材都会告诉你:假设在分析阶段找到并解 决一个错误的成本为1,在设计阶段解决同一个错误的成本就变成10,在实现阶段就变成100,在维护阶段就变成1000。敏捷软件开发中的众多实践正是为 了避免低质量和返工的浪费。尽管它们一开始看起来似乎有些麻烦,但它们带来的收益是实实在在的。另一种常见的浪费则是“为将来准备的投资”。例如为了应付将来可能出现的需求变化而提前引入的灵活设计,如果需求没有发生变化,这些灵活设计就会成为浪费:不仅浪费了将它设计出来的成本,而且浪费了继续维护它的成本。制造业为了降低库存成本而创造出“Just In Time”的生产和决策方法,ThoughtWorks中国公司总经理郭晓认为这些方法同样适用于软件行业:
如何消除预测错误的浪费?避免预测错误的 根本办法就是推迟决策:决策下得越晚,就越不容易因为预测失准而造成浪费。当然也不能晚到错过了时机、耽误了工作才下决策,这就像丰田制造的Just In Time,决策也要Just In Time。过早的、含有太多预测成分的决策也会造成浪费,其危害丝毫不亚于过晚的决策。在最近的两篇Blog里,我谈到了一些从更深层次思考敏捷的心得。在我看来,敏捷的、精益的、实用主义的决策往往是符合中庸之道的:它们往往是各种因素、选择权衡之后的结果。敏捷方法极端重视提升客户价值,为了达到这个目标而采取的手段通常都不可能是极端的。
中庸之道常常有效的深层原因是边际效用递减律:对一个方面的东西重视到一定程度以后,再加入更多的重视,收到的边际效用递减;同样的重视度放到另一个方面上,能够收到更大的边际效用。让每一分投入收到最大的回报,尽可能地消除浪费,这是精益的追求。在另一篇Blog里我谈到了如何进行精益设计。设计方案的选择说到底应该是一次成本与收益的计算,而不是个人审美取向的衡量——当然,优秀的程序员能够把这种计算变成本能,我认为这就是“软件开发的艺术”所在。敏捷方法强调“简单设计”,同样是经过计算的结果。
在面对一个复杂并且灵活的设计时,首先要衡量的不是实现它的收益,而是“现在实现它”与“将来实现它”之间成本的差额。不论一个灵活的设计的收益和成本如何,只要这个差额非常小——等到未来实现它也没有什么额外的困难,就应该毫不犹豫地推迟决策,等到真正需要的时候再引入灵活的设计。感谢现代化的IDEs,很多时候我们讨论的这个成本差额确实非常小,这是敏捷设计通常取简单方案的原因所在。值得注意的是,随时进行这种成本与收益的计算并不是一件易如反掌的事。计算本身也有成本。这是最佳实践和工具支持存在的意义所在:你可以用较低的成本得到前人积累的知识。例如ThoughtWorks在介绍其项目管理工具Mingle时特别指出其中融汇了该公司多年从事敏捷软件开发的经验:
Mingle是一个敏捷项目管理工具。它为整个团队在软件交付过程中提供“一站”式服务,并通过有10年敏捷项目开发经验的ThoughtWorks公司提供的开发框架共享所有的项目成果。我们带来了敏捷开发方法,同时Mingle将会支持和推动这一切工作。畅通的信息渠道,清晰的成本/收益核算,全面消除浪费,这是精益制造的核心所在,也是敏捷软件开发的核心所在。
精益和敏捷
精益和敏捷不是互斥的关系,无论是什么工作,相互结合精益和敏捷是有很大好处的。
敏捷开发实践与精益实践的关系
敏捷开发来源于精益思想,所以敏捷开发中的很多具体实践,也跟精益实践有关系。下面给大家展现一下两者的一些实践的关系。我们知道,在敏捷开发中,有一个时间盒的概念,在之后发展的DevOps中明确提出了周期时间的概念。时间盒和周期时间体现了一个周期性的概念,还有一个节奏的概念,这跟精益生产中的节拍...
怎么理解集成、精益、敏捷、多赢的现代物流理念?
精益:脱胎于精益生产理念,即追求消灭包括库存在内的一切浪费,并围绕此目标发展的一系列具体方法;敏捷:又称敏捷供应链、途途物流,是以核心物流企业为中心,运用科技手段,通过对资金流、物流、信息流的控制,将供应商、制造商、分销商、零售商及最终消费者用户整合到一个统一的、快速响应的、无缝化程...
敏牛是什么意思?
敏牛是一种将敏捷开发方法与精益生产理念相结合的管理模式。它是一种基于自组织团队和持续交付的软件开发方法。敏牛的目标是提高软件开发的效率和质量,缩短开发周期,为客户提供更好的产品和服务。通过不断地反馈和学习,敏牛能够快速地适应市场变化和客户需求,实现项目的成功交付。敏牛方法具有以下优势:...
什么是敏捷软件开发?
敏捷是一个用来描述强调增量交付、团队协作、持续规划和持续学习的软件开发方法的术语,而不是试图在项目接近尾声时一次性交付所有内容。敏捷侧重于保持过程精益,并创建在最终实现之前经过多次迭代的最小可行产品(MVPs)。反馈被不断地收集和执行,总的来说,这是一个更加动态的过程,每个人都朝着一个目标...
说明CIMS、敏捷制造企业和精益生产企业的异同点?
CIMS的定义:CIMS是通过结合计算机硬件和软件,并综合运用现代管理技术、制造技术、信息技术、自动化技术、系统工程技术,实现企业生产全过程中人员、技术、经营管理三要素及其信息与物流的有机集成和优化运行的复杂大系统。敏捷制造的定义:敏捷制造是在具有创新精神的组织和管理结构、先进制造技术(以信息技术...
敏捷制造与精益生产、大量生产有何不同
对迅速改变的市场需求和市场进度作出快速响应。敏捷制造实施的条件特别苛刻,实施成本高昂;精益生产是通过系统结构、人员组织、运行方式和市场供求等方面的变革,使生产系统能很快适应用户需求不断变化,并能使生产过程中一切无用、多余的东西被精简,最终达到包括市场供销在内的生产的各方面最好的结果。与...
lean ux 和 agile ux 的区别
1. 敏捷UX 敏捷宣言的发布让这种新的开发方法展现在大家面前,而敏捷UX则将设计师和开发者统一到敏捷开发过程中来。通常,在这个过程中大家会遵循下面的原则:·人和交互重于过程和工具 ·可以工作的软件 重于求全而完备的文档 ·客户协作重于合同谈判 ·随时应对变化重于遵循计划 目前,上面的几条...
软件开发模式有哪些
迭代式开发模式结合了敏捷和瀑布式开发的元素。它将软件开发过程分为若干个短周期的迭代,每个迭代都包含需求分析、设计、实现和测试等活动。这种模式可以在每个迭代中逐步细化需求,及时调整开发方向,适用于大型复杂项目。4. 精益创业开发模式 精益创业开发模式是一种基于最小化可行产品(MVP)的理念,强调...
怎样理解敏捷制造?
理解敏捷制造,首先应明确其在制造领域的地位与历史背景。在敏捷制造理念尚未兴起之前,丰田生产方式和精益生产在制造业中已颇为流行。敏捷制造则是在这一时期提出的一种新的主张,旨在提升生产效率与灵活性。然而,需要注意的是,敏捷制造与软件研发领域的"敏捷"并非同一概念。在软件领域,敏捷研发强调迭代...