00:00
嗨,我是文ER,今天的课程是敏捷软件开发,本节课程的主要内容有敏捷软件开发背景、敏捷软件开发发展历程和敏捷轩辕。首先看一下背景,我们的时代进入到了乌卡时代,即VU时代。v uca分别是volatility uncertainity complexity和ambiguity单词的缩写,中文翻译过来就是异变性、模糊性、复杂性和不确定性。异变性是指当今世界的变化越来越多、越来越快、越来越不可预测,不确定性是指历史上的任何一个时代所带来的经验已经无法为当今世界的所有变化提供参照,复杂性是指事物间的交融越来越密切,各种问题的产生原因,其带来的影响和反应会受到更多不同因素的相互。
01:00
牵制,相互制衡,模糊性是指清晰的定义或划定边界都变得困难,非黑即白的判断标准也似乎越来越不适用。另外一个背景是瀑布软件开发。瀑布软件开发作为当时主流的软件开发方法,面对互联网行业的兴起和软件应用的蓬勃发展,瀑布软件开发开始出现以下问题,首先是瀑布软件开发采用整体规划、统一、完整实现原则,一次性完成所有业务需要需求的实现软件开发周期长,交付速度慢,无法及时的响应外部的变化。其次,瀑布软件开发有业务规划、需求分析、软件设计、程序编码、软件测试和运行维护六个阶段组成,阶段创新化存在大量的等待依赖,资源利用率极其的低下。例如。
02:00
瀑布的每一个阶段都需要上一个阶段完成,才能进入到下一个阶段。在整个流程里面,只有一个阶段处于工作状态,该流程之后的所有阶段都处于等待状态,因此敏捷由此而生。敏捷运动总体来看是从上世纪90年代一直发展至今,大体上可以分为萌芽期、引入期、成长期和成熟期。萌芽期即20世纪90年代。20世纪90年代随着互联网的兴起,瀑布及其延伸的其他模型,例如迭代模型、增量模型、螺旋模型和V模型等都不能够满足软件开发和交付的需要,一些优秀的开发理念和管理实践被倡导和推崇。例如在九零年至九四年间,我们的时间和重构站立会议、持续集成SC和。
03:00
每日战会都已经被得到采纳和应用。随着web1.0的发展,更多的优秀的方法实践被提出完善,例如screen结对编程、SC功能驱动开发、冒烟测试这unit单元测试、增量开发和极限编程等。那么进入到我们的千禧年,2000年之后,意味着敏捷进入引入期。在2000年至2004年间,杨净图精益编程、safe及大规模敏捷框架完成的定义累计流图测试、驱动开发、看板领域驱动测试、用户故事等新的方法和概念被得到提出,并且也相继推广出来。进入到2005年,既敏捷的成长期,Less大规模SC故事、地图bdd持续部署、探讨性测试、backlo限制在制品也被提出而发展。
04:00
这些优秀的理念和实践以敏捷框架的形式系统的管理和发展,例如SC框架、叉P框架、less框架和safe框架的。那进入到我们的移动互联网时代,也就意味着敏捷进一步发展和普及新一轮的信息产业周期和发展。IP的交付方式由企业内部资源交付变为外部用户价值交付,软件交付周期由每年每季度的交付频率转变成每月、每周、每天的交付频率,软件开发团队由几个人变成几十人甚至数百人。面对价值交付开始由内转外、交付周期短、联合团队规模膨胀的困难挑战,敏捷软件开发的特点和优势得到了彰显和放大,迅速成为互联网企业的首选方法。在2001年2月11日至13日,在犹他州瓦萨其山。
05:00
雪鸟滑雪圣地的小屋里,17个人聚集在一起聊天、滑雪、放松,并试图找到共同点,因此产生了敏捷轩辕。敏捷轩辕发起者主要来自极限编程、SSCDSDM、动态系统分析开发、自适应软件开发、水晶方法、功能驱动、实用编程等代表对文档驱动的重量级软件开发流程的替代方案的需求表示同情。因此,敏捷宣言定义了四个价值观和12个原则。首先是敏捷价值观,敏捷实践者一直在敏捷实践中探寻更好的软件开发方法,身体力行的同时也帮助他人,由此建立了如下价值观,个体和互动高于流程和工具,可工作的软件高于详尽的文档,客户合作高于合同谈判,响应变化高于遵循计划。
06:00
个体和互动高于流程和工具是指尽管在项目流程中工具很重要,但是我们更应该将重点放在个体和交互上。这是因为项目是由人来执行,而不是工具,人是获得成功的关键因素。敏捷团队特点强调团队成员的能力,鼓励发挥和积极调动人的主观能动性。在敏捷开发中,如果团队没有优秀的成员,那么再好的流程和工具也无法让项目成功,但是糟糕的流程和工具却可以让优秀人才流失和项目失败。优秀的团队成员如果没有良好的沟通与协作,再优秀的成员也无法阻止项目失败。因此,我们仍然需要适当的流程和工具,但是我们更强调人的能力以及人的沟通与协作。在可工作的软件高于详尽的文档方面,尽管项目中文档作为一种重。
07:00
要软件开发过程资产,但是项目不是靠文档来取得成功的,最终交付的可工作的软件才是。过分强调文档的重要性和详尽性,不仅会花费团队大量的时间和精力,而且也无法保障和促进项目的成功。敏捷软件开发更强调价值交付和结果导向,可工作的软件相比于详尽的文档,更能代表项目真实价值和最终成果的量化,也更能体现软件团队的工作价值。在客户合作和高于合同谈判方面,尽管合同谈判在大型软件分包和项目协作中具有重要作用,但是这种甲乙适合雇佣式的合同谈判无法帮助开发人员理解客户需求,只有通过和客户更多的交流合作,才能帮助开发人员或者产品经理理解客户的需求,开发出满足客户真实需求的软件,响应变化高于遵循计划方面。
08:00
尽管在项目中遵循既定的计划很重要,但是在实际的软件开发中,不确定性客观存在,导致计划经常变化,项目很难按既定的方案执行。因此,拥抱和响应变化能够让团队更加灵活、弹性和完成软件的交付,减少因不确定性带来的软件风险,降低项目的失败率。总体而言,也就是说,尽管右下及流程工具、详尽的文档、合同谈判、遵循计划有其价值,但是我们更重视左向即个体和互动可工作的软件、客户合作和响应变化所体现和带来的价值。此外,敏捷宣言还有12原则,即第一个原则,我们最重要的目标是通过持续不断的及早交付有价值的软件,使客户满意。客户满意和有价值的软件是项目成功的主要表现。要确保我们。
09:00
开发的软件产品能够给客户带来真正的价值,需要以客户为中心,以价值为导向,并尽早的连续小批量交付,让客户能够及时感知和反馈,让客户宾至如归。原则二,欣然面对需求变化即使在开发后期也一样,为了赢得客户竞争优势,敏捷过程需要掌控变化。变化是客观存在的,无论在开发的哪个阶段,我们都需要正确的看待和接受变化。对于变化,我们不仅需要欣然接受和面对,还要能够掌控变化在客户获得中持续后的竞争力。三、经常交付可工作的软件。相隔几星期或一两个月,倾向采取较短的周期。对于软件交付,我们更强调软件的可工作性,只有可工作的软件才是有价值的,并且更强调交付。
10:00
的周期尽可能的短。越短的交付周期越有利于快速变化的市场商业需求做出及时准确的响应,越短的交付周期越有利于企业提升不确定性环境中的适应性和韧性。原则是业务人员和开发人员必须相互合作,开发中的每一天也不例外。想要高效的交付客户满意的软件,业务和开发必须频繁亲密的合作。业务和开发的真诚合作不仅有利于开发出正确的产品和服务,进而提升客户的满意度,而且持续、频繁、真诚的沟通与协作有利于提升团队的协作效率,减少因沟通不充分、理解不一致带来的浪费。原则五,激发个体斗志,以他们为核心搭建项目,提供所需的环境资源,并辅以信任,从而达成目标。软件开发属于知识类工作。
11:00
需要知识工作者来完成。知识工作者是具有巨大的个人潜力和创造力的,充分调动知识工作者的主观能动性和创造性,围绕知识工作者创建项目,并给予他们最大的帮助。信任与自由有助于目标的快速达成和软件项目的最大成功。原则六,无论团队内外,传递信息效果最好的方式也是最高的方式就是面对面的交谈。在软件开发协作中,面对面的沟通可以有效降低信息传递的失真率,提升沟通的有效性,保障信息的一致性。对于邮件、电话等沟通方式,面对面的沟通是效率最高和效果最好的方式。如果条件允许,我们应尽可能的采用面对面的沟通方式进行沟通协作,以最大化效率和效果。原则七,可工作的软件是进度的首要衡量标准。
12:00
在敏捷软件开发中,我们更强调价值交付和结果导向。可工作的软件是软件交付中最重要的价值,因此需要将最大价值的事情、可工作的软件作为进度度量的首要标准。原则八,敏捷过程倡导的可持续开发责任人、开发人员和用户能够共同维护其步调稳定延续可持续开发可以消除高负荷工作并保持可持续的速度工作,以稳定的节奏和固定的周期进行产品开发和交付,所有团队保持步调一致。原则九,坚持不懈的追求技术卓越和良好设计,敏捷能力由此增强。随着软件开发的持续进行,技术债也随之积累,技术在会使软件开发速度变慢,系统可靠性降低。在敏捷软件开发中,对架构设计和技术背景有执着的追求和设计并。
13:00
持续不断的进行技术重构和债务解决,增强团队的技术敏捷力。原则是以简洁为本,它是极力减少不必要工作量的艺术。在软件开发期间,在满足基本的流程基础之上,尽可能的减少流程工具的复杂度,在软件功能开发中,也需要尽可能的减少一些不需要的功能特性的开发,尽可能消除开发过程和软件需求上的一些不必要的浪费。原则11、最好的架构需求和设计出自自组织团队,架构需求和设计会随着团队一起工作而慢慢浮现,团队亲历其中,对架构需求设计理解最充分、真实、深刻及听到炮火的士兵更加了解前方战线的真实情况。团队赋予能力和权限,让团队能够自行的组织和管理,并由他们自行设计架构。
14:00
需求和设计这些架构需求和设计通常是最好的原则。12、团队定期反思如何能提高成效,并以此调整自身的举止表现。花时间反思和从经验中学习,减少重复犯错的概率。对经验能力进行更好的积累和沉淀,有助于持续提升团队能力和构建卓越的工程师文化。以上就是关于敏捷软件开发的内容,谢谢。
我来说两句