安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

谈谈敏捷开发SCRUMDevOps及持续集成

2月18日 枯心人投稿
  1。hr敏捷开发1。1什么是敏捷?
  敏捷是用于描述软件开发方法的术语,强调增量交付、团队协作、持续规划和持续学习。敏捷一词源于2001年《敏捷宣言》。宣言旨在确立指导软件开发更优方法的原则。其核心是宣布代表敏捷运动基础的4项价值观:个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划
  依据以上四条价值观,衍生出来更具体的十二大原则,作为对敏捷宣言更具实操性的解释,其具体原则内容如下:
  1)最重要的是通过尽早和不断交付有价值的软件满足客户需要。
  2)我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
  3)经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
  4)业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
  5)围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
  6)在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
  7)可以工作的软件是进度的主要度量标准。
  8)敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
  9)对卓越技术与良好设计的不断追求将有助于提高敏捷性。
  10)简单尽可能减少工作量的艺术至关重要。
  11)最好的架构、需求和设计都源自自我组织的团队。
  12)每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。1。2敏捷开发概念与特点
  敏捷开发是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于非敏捷,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
  敏捷开发是用于描述迭代软件开发的术语。敏捷开发通常与传统或瀑布开发形成对比,在传统或瀑布开发中,大型项目是按照该计划进行规划和执行的。
  敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。迭代软件开发缩短了软件开发生命周期。1。3敏捷开发流程
  敏捷开发团队以较小的增量执行整个软件开发生命周期,通常称为冲刺(sprint)。冲刺通常有14周长。每次冲刺交付产品级代码都需要敏捷的开发团队来应对加速的步伐。所有编码、测试和质量验证都必须在每个冲刺阶段完成。各团队间应密切协作,否则可能会导致失败甚至惨败。
  敏捷开发团队几个关键的成功因素:
  1。细化需求列表
  2。早期并高频集成
  3。尽量避免技术缺陷1。4敏捷方法与最佳实践
  敏捷是一种寻找软件开发方法的态度。敏捷方法中没有一种方法适用于所有情况,而敏捷一词已经代表与宣言中的价值陈述一致的各种敏捷方法与最佳实践。
  敏捷方法是一个囊括了各种框架和方法的涵盖性术语,它指的是符合《敏捷宣言》价值观和原则的任何方法、技术、框架、手段或实践。敏捷方法(通常称为敏捷框架)是软件开发生命周期阶段(规划、执行和交付)的综合方法。它规定了一套在明确的指导和原则下完成工作的方法。
  敏捷方法主要包括SCRUM方法、DSDM方法、水晶方法、特性驱动方法和SCRUMBAN等。例如Scrum是最常见的敏捷框架。持续集成(ContinuousIntegration,CI)是常见的敏捷工程实践方法。
  需要说明的是,敏捷方法与最佳实践并不承诺解决每一个问题,但他们确实承诺建立一个文化和环境,通过协作,不断的规划和学习,并快速迭代交付高质量的软件,最终满足客户需求。
  2。SCRUM方法2。1SCRUM综述
  Scrum是团队用于管理其工作的框架,将敏捷原则作为一套具体的工件、实践和角色,通常用于敏捷软件开发。具体来说,Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。Scrum起源于软件开发项目,Scrum包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。虽然Scrum是为管理软件开发项目而开发的,它同样可以用于运行软件维护团队,或者作为计划管理方法,适用于任何复杂的或是创新性的项目。如Scrum目前已被用于开发软件、硬件、嵌入式软件、交互功能网络、自动驾驶、学校、政府、市场、管理组织运营,以及日常生活中更广泛的产品开发领域。2。2SCRUM流程
  Scrum整个开发流程(见图2)由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是一至四周。在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprintbacklog。在每个迭代结束时,Scrum团队将提交潜在可交付的产品增量2。3SCRUM框架
  Scrum框架包括3个角色、3个工件、5个事件、5个价值:
  3个角色:产品负责人(ProductOwner)、ScrumMaster、开发团队
  3个工件:产品Backlog(ProductBacklog)、SprintBacklog、产品增量(Increment)
  5个事件:Sprint(Sprint本身是一个事件,包括了如下4个事件)、Sprint计划会议(SprintPlanningMeeting)、每日站会(DailyScrumMeeting)、Sprint评审会议(SprintReviewMeeting)、Sprint回顾会议(SprintRetrospectiveMeeting)
  5个价值:承诺愿意对目标做出承诺、专注把你的心思和能力都用到你承诺的工作上去、开放Scrum把项目中的一切开放给每个人看、尊重每个人都有他独特的背景和经验、勇气有勇气做出承诺,履行承诺,接受别人的尊重
  3。DevOps3。1DevOps定义
  DevOps是开发(Dev)和运营(Ops)的复合词,是一组过程、方法与系统的统称,用于促进开发(应用程序软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。3。2DevOps发展背景
  传统的软件组织将开发、IT运营和质量保障设为各自分离的部门。在这种环境下如何采用新的开发方法(例如敏捷软件开发),这是一个重要的课题:按照从前的工作方式,开发和部署不需要IT支持或者QA深入的、跨部门的支持,而却需要极其紧密的多部门协作。然而DevOps考虑的还不止是软件部署。它是一套针对这几个部门间沟通与协作问题的流程和方法〔9〕。
  以下几方面因素可能促使一个组织引入DevOps:
  1、使用敏捷或其他软件开发过程与方法
  2、业务负责人要求加快产品交付的速率
  3、虚拟化和云计算基础设施(可能来自内部或外部供应商)日益普遍
  4、数据中心自动化技术和配置管理工具的普及
  5、有一种观点认为,占主导地位的传统美国式管理风格(斯隆模型vs丰田模型)会导致烟囱式自动化,从而造成开发与运营之间的鸿沟,因此需要DevOps能力来克服由此引发的问题。
  DevOps经常被描述为开发团队与运营团队之间更具协作性、更高效的关系。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。
  在云计算、大数据等技术颠覆性趋势继续在应用经济下发挥作用的同时,DevOps也已经稳健地在业务思维方式中占有一席之地,并将扮演主要角色。在应用驱动、云连接、移动化的大环境下,对于很多公司来说DevOps是助力业务增值战略的第一步。
  紧跟行业趋势、进行新的技术变革往往会带来发展的阵痛,DevOps也同样要经历这一过程。中国及全球各地的企业正在认识到DevOps可以助力软件开发速度加快,软件应用质量提升,更重要的是与业务目标更完美地结合。〔9〕。3。3DevOps文化1)协作、可见性和一致性
  健康的DevOps文化的一个标志是团队间能够协作,首要的便是可见性。开发和IT运营等不同团队必须能够相互分享DevOps流程、优先级和关注点。这些团队还必须能够共同规划工作,并统一与业务相关的成功目标和衡量标准。2)范围和责任的转变
  当团队统一时,他们拥有所有权并参与其他生命周期阶段,而不仅仅是他们的角色对应的阶段。例如,开发人员不仅要对开发阶段的创新和质量负责,还要对他们的改变在运营阶段带来的性能和稳定性负责。同时,IT操作员一定要在规划和开发阶段中考虑治理、安全性和符合性。3)缩短发布周期
  DevOps团队通过短周期发布软件保持敏捷。因为进度是渐进式的,缩短发布周期可以让计划和风险管理更容易,同时也减少了对系统稳定性的影响。缩短发布周期还可以让组织适应和应对不断变化的客户需求和竞争压力。4)持续学习
  高绩效的DevOps团队形成了一种成长思维。他们快速失败,然后将经验教训融入到他们的流程中,不断改进,提高客户满意度,加速创新和适应市场。DevOps是一个旅程,所以总有成长的空间。3。4DevOps和应用程序生命周期
  DevOps影响应用程序生命周期的规划、开发、交付和运营阶段。每个阶段都依赖于其他阶段,并且这些阶段并非特定于角色。在真正的DevOps文化中,每个角色在某种程度上说都涉及各个阶段如图4。3。5DevOps做法
  除了形成DevOps文化之外,团队还通过在整个应用程序生命周期中实施特定做法,以充分利用DevOps。持续集成和持续交付(CICD)版本控制敏捷软件开发基础结构即代码配置管理持续监控
  其中一些做法有助于加速、自动化和改进特定阶段。有的跨越几个阶段,帮助团队创建提高生产效率的无缝进程。3。6DevOps工具
  无论是纵向集成还是横向集成,DevOps都需要通过工具链与持续集成、交付、反馈与优化进行端到端整合。如华为的软件开发云服务,基于二十几年的研发实践,融合DevOps理念方法,为企业提供一站式的云上开发工具平台。华为软件开发云提供项目管理、配置管理、代码检查、编译构建、测试、部署、发布等端到端地覆盖全软件生命周期的相关服务。类似的DevOps工具数不胜数,常见的DevOps生态圈工具如图5。3。7DevOps与Agile的关联
  DevOps和Agile都是用于生产产品、进行发布或发行的现代软件开发框架。DevOps是一种文化,促进软件开发和维护中所有角色之间的协作。Agile是一种开发方法,在需求不断变化的常见现实中保持工作效率和促进发布。DevOps和Agile并不是相互排斥的,而是经常搭配使用。
  4。hr持续集成4。1持续集成背景
  集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,如果到后期才发现这些问题,解决问题代价很大,很有可能导致项目延期或者项目失败。4。2持续集成定义
  大师MartinFowler对持续集成是这样定义的:
  持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。4。3持续集成的价值减少风险
  一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。减少重复过程
  减少重复的过程可以节省时间、费用和工作量。说起来简单,做起来难。这些浪费时间的重复劳动可能在我们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及反馈。通过自动化的持续集成可以将这些重复的动作都变成自动化的,无需太多人工干预,让人们的时间更多的投入到动脑筋的、更高价值的事情上。任何时间、任何地点生成可部署的软件
  持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝,但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。不采用持续集成的情况下,这些问题有可能到交付前的集成测试的时候才发现,有可能会导致延迟发布产品,而在急于修复这些缺陷的时候又有可能引入新的缺陷,最终可能导致项目失败。增强项目的可见性
  持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。通常,项目成员通过手工收集这些信息,增加了负担,也很耗时。持续集成可以带来两点积极效果:
  (1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率。
  (2)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、总体品质以及其它的项目信息。建立团队对开发产品的信心
  持续集成可以建立开发团队对开发产品的信心,因为他们清楚的知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。4。4持续集成的要点统一的代码库自动构建自动测试每个人每天都要向代码库主干提交代码每次代码递交后都会在持续集成服务器上触发一次构建保证快速构建模拟生产环境的自动测试每个人都可以很容易的获取最新可执行的应用程序每个人都清楚正在发生的状况自动化的部署4。5持续集成的原则所有的开发人员需要在本地机器上做本地构建,然后再提交到版本控制库中,从而确保他们的变更不会导致持续集成失败。开发人员每天至少向版本控制库中提交一次代码。开发人员每天至少需要从版本控制库中更新一次代码到本地机器。需要有专门的集成服务器来执行集成构建,每天要执行多次构建。每次构建都要100通过。每次构建都可以生成可发布的产品。修复失败的构建是优先级最高的事情。测试是未来,未来是测试。4。6持续集成的工作流程
  持续集成(Continuousintegration,简称CI)是软件的开发和发布标准流程中最重要的部分。作为一种开发实践,在CI中可以通过自动化等手段高频率地去获取产品反馈并响应反馈的过程。简单来说,就是持续不断地(一天多次)将代码合并(集成)到主干源码仓库,让产品可以快速迭代,同时保持高质量。
  持续集成强调对于开发人员的每个提交,立刻进行构建、扫描、(单元)测试。根据结果,我们可以确定新代码和原有代码能否正确地集成在一起。如一个完整的CI系统应该包含3个基本模块:
  一个可以自动构建的过程,自动编译代码,可以自动分发,部署和测试。
  一个代码仓库,例如Git。
  一个持续集成的服务器。
  如图3是典型的持续集成流程图。
  图3持续集成流程图
  正如图3持续集成流程所示,通用的持续集成(CI)流程主要包括:签出代码:
  从源码管理系统里签出或者克隆最新的代码到本地开发环境提交(commit):
  基于主干分支创建一个新的功能分支,并在此分支编写代码,并向仓库提交代码测试(第1轮):
  代码仓库对commit操作配置了钩子(hook),每一次提交代码都会触发测试。
  单元测试(针对函数或模块的测试)和功能测试(集成测试)将会被执行、根据需要设置是否执行端对端测试。
  一般来说,这些测试也会被打包到代码里。构建(build):
  通过测试(第1轮)后,将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源等。
  实现一个CI流程的唯一必要条件便是得有一个自动构建系统。
  源代码一般是自包含构建的,即CI流程所需的构建脚本是放在源码仓库里的。测试(第2轮):
  以自动化为主的全面测试,包括单元测试和集成测试,必要时做端对端测试,确保新版本的每一个更新点都必须测试到。合并:
  通过测试(第2轮)后,将代码更新集成到主干。回滚:
  如果当前版本发生问题,就回滚到上一个版本的构建结果
  一般来说,CI服务器会配置成在遇到故障时发送邮件相关人员,可以快速知晓故障并且尽快采取更正措施。4。7持续集成注意事项
  当需要代码变更并集成时,开发者会从基础代码库复制以进行作业,其他开发者提交代码的变更至来源代码库,并透过副本的方式取代来源代码库的代码。不只变更目前的代码库,新的代码也可以新增成为程序库、其它共享资源与潜在冲突。
  当分支代码开发者进行主线重新集成时,当分支代码保持在取出状态时间越长,就愈容易遭遇集成多重冲突的风险以及集成失败。因为他们拿到的是副本,所以当开发者将代码提交到代码库时,首先必须更新代码以反映他们在代码库中的更改。代码库包含的更改越多,开发人员在提交自己的更改前必须运行的基础工作就越多。
  最终,该程序库也许变成非常不同于开发者的目标代码,他们进入有时候被称为合并地狱或集成地狱的阶段,这时候开发者所花费的集成时间,将超过最初代码开发的时间。
  持续集成涉及预先集成与预先与经常性的集成,借此来避免掉入集成地狱的陷阱,实践的目标是减少重工、减少成本与时间。
  持续集成补充的实践是在提交代码之前,每个开发人员必须运行一个完整的构建并通过所有的单元测试、集成测试。当持续集成服务器侦测到代码有新的提交时,必须经常性与自动化的进行此类单元测试或集成测试任务。代码每次集成到主干之前,必须通过自动化测试,以便快速发现和定位错误。值得注意的是,持续集成并不能消除错误,而是让它们非常容易发现和改正。
投诉 评论 转载

大量用户被踢出MIUI内测,雷军微博被米粉刷屏!场面尴尬MIUI是国内最早的定制安卓系统之一,从2010年到今天已经发布12个大版本的更新,MIUI12。5增强版也在近日正式向首批机型推送。雷军在早前透露,全新的MIUI13会在年底……全面出色才是vivoS12影像性能外观各有千秋说到vivo,大家都会想到其各个系列优秀的影像能力,其中的vivoS系列,更是备受欢迎,每一代会都在影像方面不断提升,前置人像更是一直引领行业。其中vivoS10带来了自然人像……空调维修收费标准有些朋友经常咨询格力售后关于空调维修方面的收费问题:空调加氟多少钱,空调移机价格‘空调维修有上门费吗’等等相关售后的法规已经出现,在一定程度上对家电类产品的售后维修有所规……智能家居HomeAssistant网关安装篇自从买了树莓派,一直都当NAS来使用,最近,心血来潮,想折腾一下智能家居。首先,当然想到了HomeAssistant。话不多说,先装起来再说。安装Docker1更新树莓派……iOS15。4更新啦!期待已久的戴口罩解锁来了,App支持1IOS更新啦!IT之家3月15日消息,苹果今日凌晨发布了iOSiPadOS15。4正式版更新。支持iPhone12及后续机型。iOS15。4带来了大家期待已久的戴口……统计普法互联网遇上民法典丨在线服务避坑指南随着移动互联网不断普及,消费者在选择时该如何避坑?本期《民法典通解通读》为您解读互联网遇上《民法典》之在线服务避坑指南。案例1:出境航班取消为何平台不承担违约责任?……15分钟实现过去10小时放疗,人工智能抗癌硬核武器亮相四叶草精准治疗癌症,第四届进博会展馆里大型硬核武器齐齐上阵。连续四次参加进博会的瓦里安医疗、医科达等知名企业,携数个全球首发产品及解决方案亮相进博会8。1馆,这些硬核武器讲述数字化转……你的密码安全吗?区块链技术之哈希今天是我们的区块链底层技术分享第一期哈希。我们先不说哈希是什么,在你的生活中是不是存在以下的情况:你在一个网站注册了账号,输了密码、身份证号、银行卡号,有没有担心过自己的……半导体技术再突破台湾研发侧向磊晶扭转结构获专利来源:中国新闻网中新网5月11日电据台湾《联合报》报道,台湾成功大学(以下简称成大)物理系副教授杨展其与前沿量子科技研究中心特聘教授陈宜君、陈则铭团队,提出并实证调控材料……谈谈敏捷开发SCRUMDevOps及持续集成1。hr敏捷开发1。1什么是敏捷?敏捷是用于描述软件开发方法的术语,强调增量交付、团队协作、持续规划和持续学习。敏捷一词源于2001年《敏捷宣言》。宣言旨在确立指导软件开……助力跨境电商出海腾讯云推出轻量化解决方案一种轻松的上云方式,正成为众多海外跨境商家的新选择。2月16日,记者了解到,腾讯云轻量应用服务器Lighthouse针对跨境电商推出了轻量化解决方案,有效助力相应场景。……没有后端基础如何理解MVCMVP和MVVM,可以以JavaS谢谢邀请!什么是MVC以及它的作用?MVC是一种分层架构模式,M代表数据模型以及相关数据处理逻辑,V就是用户界面,C代表控制器(可以认为它是逻辑处理路由)!通常的情……
腾讯音乐2021Q4及全年总营收增至312。4亿元,同比增长质疑威马无人驾驶?却被威马狠狠打脸GTX1060和1660哪个性价比更高?2021811APPSTORE苹果IOS限时免费APP福建的这个电池大王,要建世界最大电池工厂!开源社区运营经验分享(一)我们为什么要做社区?美国计划失败,41国坚定选择华为5G!英国则斥128亿拆除华kubernetes上部署xwiki作为团队知识库管理独立影像NPU双OIS防抖,FindX5Pro影像表现竟丝毫吉利要做手机了!李书福刚刚签字做高端,打全球市场首款搭载瑞芯微RK3566运行Android11的H96Ma微信上线新功能,一键查询你有几个电话号码春思苹果里的星星读后感700字杜宇二首其一个人半年度工作总结一种纯中药美白护肤液及其制备方法古老村落的故事他坚持ampampquot丁克ampampquot十年,不料为啥宁愿买红米Note10Pro,也不买Note11Pro?A股昨夜传来两条重磅利好,明日(12月12日)大盘走势分析预遵义会议上关键一票,改变了中国的命运,是谁把票投给了毛主席?哥们你能活着不容易啊!更何况活到现在!用什么水养鱼,自来水怎么除氯

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利