2017-09-14 17:14:39 RoyCook 阅读数 362
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10427 人正在学习 去看看 CSDN讲师

敏捷开发与传统开发

本文章谨代表个人观点:

  • 传统开发流程的局限性
  • 传统手工测试的局限性
  • 开发模式的转型

传统开发流程的局限性

1 自由度低 缺乏灵活性
2 缺陷发现晚,无法及时反馈
3 协同合作缺失,容易引起团队冲突
4 产品质量无法保证

传统手工测试的局限性

1 重复性工作,测试质量低
2 测试效率低
3 无法保证覆盖代码全路劲
4 无法兼顾多平台,多浏览器

开发模式的转型

敏捷软件开发

为应对需求快速变化而发展的软件开发方法,有多种敏捷开发方法:
极限编程(Extreme Programming)
精益开发(Lean Software Development)
特征驱动开发(Feature-Driven Development)等
敏捷开发更倾向于迭代式开发,增量交付,及时反馈,关注软件质量。

特点:
更强的灵活性
更短的开发周期
持续反馈
测试和开发技能的融合

全流程的测试

单元测试(Unit Test)
集成测试(Integration Test)
端到端测试(End-to-End Test)

让测试自动化

此时自动化并不是要彻底摆脱测试人员,而是一种由人设计及其的行为。让机器驱动测试的新模式。

持续集成(Continuous Integration 简称CI)

持续集成是一个频繁持续的在团队内进行业务集成,自我反馈完善的软件开发实践。持续集成通过自动化构建,把包括编译,部署,测试,审计和反馈的一组流程用一体化方案驱动起来,整个流程不需要任何用户的人工干预。其好处在于:
1 及早发现缺陷
2 通过构建自动化过程,减少开发测试人员的重复劳动
3 团队成员在任何时间点上提交的代码都可以进行集成,这使得开发团队能随时发布可部署的软件
4 持续良好的架构可以有效实现分布式团队的协作沟通,让团队成员任何时候都能了解产品的状态,实时的知道当前已经完成了什么功能,还有什么缺陷需要修复。

2018-07-23 18:56:56 weixin_42775017 阅读数 553
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10427 人正在学习 去看看 CSDN讲师

一般的传统开发是指将整个项目完全开发完交给用户。

但交给用户的时候可能用户感觉没有达到他们想要的效果,所以出现了现在的敏捷开发。

敏捷开发是指敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。(先交给用户一个小的但包含用户需求的项目,根据用户提出的意见进行修改,是一个不断迭代的过程)。

2019-07-01 14:36:44 weixin_43852903 阅读数 412
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10427 人正在学习 去看看 CSDN讲师

 首先我们来看看敏捷开发:不管产品针对的群体是普通大众还是企业的人事部,一个铁的事实告诉我们--21世纪的客户对能够立即发布的高质量应用产品总是求“贤”若渴,青睐有加。可遗憾的是老一套传统的开发模式已经不能够适应这种激烈的竞争环境了。

在本世纪之初,一批来自各个领域的开发人员走到了一起,开始讨论轻量化和快速地开发方法在当时的状况。在会议上他们注意比较那些成功的软件项目的特点,以及究竟是什么因素使得一些项目成功,而另一些项目却陷入步履艰难的境地。在会议的最后,他们创建了那份著名的《敏捷软件开发宣言》(简称《敏捷宣言》),它成为敏捷运动的基石。《敏捷宣言》并没有提供任何死板僵化的开发方法和复杂的技术结构层次,而更像是一份针对客户和开发个体的箴言警句集。

我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:
个体和互动 高于 流程和工具
工作的软件 高于 详细的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,尽管其右项有其 价值,我们更重视左项的价值

                                                                       《敏捷软件开发宣言》

对于敏捷开发和传统开发的区别,我们不难知道:敏捷开发是一个要求客户全程参与、以客户为导向的过程,在此过程中随时“拥抱”变化,重点在于客户满意度;而传统软件开发的特点不是忽视就是轻视了客户的重要性。客户是敏捷开发的关键环节,也就是说,如果没有客户的参与,敏捷模式等同失败。如果客户了解到设计人员热忱欢迎他们的参与,那这有利于增加客户对最终产品和开发团队的信心和满意度。如果客户并不打算参与进来,那么选择一些传统的开发流程可能会更好一些。

出乎意料的是,敏捷开发没有单一、固定的开发方法或过程,很多快速的开发模式都可以看成是敏捷。然而这些模式的确有三个共同点:依赖客户的参与、测试驱动以及紧凑的迭代开发周期。

 这里值得注意的是,有些敏捷方法只不过是对传统软件开发过程的整合和选取。

2016-10-11 20:34:31 u012755393 阅读数 3897
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10427 人正在学习 去看看 CSDN讲师

敏捷软件开发与传统软件工程的比较


            软件工程的开发过程中有两种不同的管理和开发体系,一种是基于“瀑布模型”的预设性传统软件工程,另一种是轻量级的适应性敏捷软件开发。本文简单阐述传统软件工程的开发方法与敏捷软件开发的区别,并通过“瀑布模型”和SCRUM方法的比较来探析传统软件工程与敏捷软件开发的异同。最后得出,把传统软件工程和敏捷软件开发相结合,将架构“颗粒化”,在简单可快速交付的敏捷软件开发中嵌套系统的传统软件开发方法,实现预见性和适应性折中。
        随着计算机的发展,对软件的需求越来越大,软件的规模也变得越来越大,结构越来越复杂,软件开发管理困难而复杂,在这个“软件危机”背景下产生的传统软件工程,用工程化的方法构建和维护有效和高质量的软件。暂时解决了软件的兵荒马乱时代,但随着社会和科技的发展,对软件的需求变化越来越快,传统的软件工程很难再适应瞬息万变的客户需求,敏捷软件开发应运而生,其轻量级、简单、可快速交付、适应性强收到开发团队的青睐,与传统软件工程并肩,形成软件工程中的两大开发体系。
(1)传统软件工程
       基于“瀑布模型”的传统软件开发方法中,以软件架构为核心,采用结构化的设计和分析方法将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。并规定他们自上而下,相互衔接的顺序,如同瀑布的流水一般,各个阶段的通过文档相互流通。前期就要设计好整个软件大厦的框架来指导和支撑后面各个方面的开发和维护工作,后面在根据前期设计的蓝图来逐步实现。由架构师完成软件架构设计,开发人员再根据软件大厦的蓝图进行软件开发。这种开发方法的优点是,超前的预见性和每一阶段都要通过严格的审查才能进行下一个阶段,保证了软件的质量。缺点是,软件的框架一旦确定下来就很难改变,甚至会牵一发而动全身,难以适应变换莫测的客户需求。由于各个阶段要自上而下相互衔接,各个阶段的沟通要通过大量臃肿、复杂的文档来传递信息。
       瀑布模型是Winston Royce在1970年提出的一种软件开发模型,瀑布式开发是一种传统的计算机软件开发,是最经典的预见性软件开发方法,严格遵守计划、分析、编码、测试、维护的步骤。阶段之间通过文档流通,每个阶段结束时要进行严格的审查,检查功能设计和实现是否符合上阶段流下了的文档的要求,如果不符合就逆流到上个阶段检查并修正,以此往复,直到流到最后阶段产品通过测试后进行发布及运行期间的维护。

       三个阶段:定义阶段、开发阶段和维护阶段。开发阶段架构师要有预见性地分析客户现在的需求以及以后可能变动的需求,设计规划好大量的功能需求和非功能需求,尽可能多地满足客户后面需求的变动,避免日后重构软件框架带来的成本亏损。设计包括UML图,API接口,数据库表等。开发阶段开发人员根据架构师的对客户需求分析以后设计的蓝图进行软件的开发和测试,实现用户的需求。运维阶段开发团队根据用户使用软件的体验、反馈、软件存在的bug和新增功能需求对软件进行维护,保证软件在保证鲁棒性的前提下尽可能地满足客户的需求。
六个流程:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护。
       瀑布模型的特点:强调文档:瀑布模型每个阶段之间的沟通和交流就是文档,上一个阶段的输出就是下一个阶段的输入,文档就是前后阶段衔接的介质。缺少开发人员之间面对面的沟通和交流,造成文档臃肿现象。结构明显:按需求分析将整个工程划分为完整的阶段集合,每个阶段都有明确的检查点,当出现问题可以使用顺藤摸瓜式往上检查。当一个阶段结束后通过严格审查,就可以只关注下一个阶段,出现问题再逆流检查。

(2)敏捷软件开发
       2001年由17位业界专家构成的敏捷开发联盟成立,联盟起草了敏捷宣言:个体与交互胜过过程与工具;可用的软件高于复杂的文档;客户的合作胜过合同的谈判;响应变化胜过遵循计划。敏捷软件开发是一组重视人的主观能动性和开发人员、管理层和产品负责人的沟通,通过迭代式和增量式软件,追求便捷,可快速交付,及时响应客户需求变动的软件开发管理方法。
       敏捷软件开发方法体系主要包括:SCRUM、XP(极限编程)、CRYSTAL(水晶编程)、PPD(特性驱动开发)等。敏捷软件开发的一个精髓就是“刚刚够”思想。用逐步实现的思想替代完整架构,每一步的需求和人员及其沟通、开发成本都刚刚好,通过不断地迭代,在迭代过程中响应客户需求的变化,实现最紧致成本,体现“刚刚好”思想。同时对每次迭代的反馈进行讨论和思考,总结经验和吸取教训。
SCRUM方法:
       在敏捷软件开发中,软件项目被切分成很多个子项目,通过选取优先级较高的一组子项目作为敏捷迭代的球心进行迭代,每次迭代都有明确的需求、目标、人员、并且每次迭代之后都要有可交付的产品。就好比从山顶滚雪球,选取优先级较高的需求作为首次迭代的球心,经过增量式迭代,每次迭代加带一定的需求滚下山,下山就可以形成可交付的产品。

三个角色:管理层(Scrum Master)、产品负责人(Product Owner)和开发团队(Team)。
       三种工件:产品列表(Product Backlog)、迭代列表(Sprint Backlog)和燃尽图(Burn Down Chart)。
       四个会议:Sprint Plan Meeting(Sprint计划会议、需求评审会议)、Daily Scrum Meeting(每日站立会议)、Sprint Review Meeting(验收会议)和Sprint Retrospective Meeting(Sprint回顾会议)。

五个步骤:
(1)Product Owner根据需求的优先级确定一个排序好的Product Backlog;
(2)Scrum Team通过Sprint Plan Meeting根据Product Backlog按优先级选出一组需求作为迭代的目标,即Sprint Backlog。这个阶段一般的时间是4周。
(3)Scrum Team完成Sprint Backlog过程中需要每天都要进行Daily Scrum Meeting,每个人都要汇报所完成的进度和遇到的问题,总结经验,通过Burn Down Chart记录工作的整个过程。
(4)当本次Sprint把Sprint Backlog都实现完之后进行Sprint Review Meeting,这个会议总管理层和产品负责人以及开发团队都要参加,讨论本次Sprint交付的产品,以及根据产品负责人的需求变动及时调整。
(5)最后进行Sprint Retrospective Meeting,回顾本次迭代整个过程中遇到的问题,以及解决方案,为下一轮Sprint做准备。
      总结:
(1)敏捷开发与传统软件开发的比较
敏捷开发的优点是轻量级、简单、可快速交付、最大的特点是高度透明、检验和适应,注重开发团队之间以及开发团队与客户的及时沟通,主张响应需求变化,但是不够系统。
传统软件架构的优点在于预见性和系统性,能在正式开发前预见软件的功能需求和非功能需求,最大的特点是重视文档和结构明显,主张固定的流水开发,很难响应客户需求的变化,难以保证开发的灵活性。
(2)敏捷开发与传统软件工程的融合
将具有系统性和预见性的传统软件工程架构嵌套到敏捷开发的每次轻量级的迭代中,将软件架构颗粒化,嵌套到整个敏捷开发,使软件工程兼具软件架构的预见性和敏捷开发的适应性,根据项目的大小来调整嵌套的程度,根据每次迭代项目的大小来选择不同的架构,实现敏捷开发与软件架构融合的双赢。

2019-05-21 18:56:52 StringBuff 阅读数 232
  • SCRUM敏捷开发视频教程

    SCRUM敏捷开发视频教程,该课程为你分享SCRUM敏捷开发,理解敏捷的本质,认识中国IT行业对敏捷的挑战,学会让敏捷落地的实用招数。 嘉宾介绍:张传波 1. 创新工场创业课程(敏捷课程)讲师 2.软件研发管理佳实践顾问(曾任华为某团队研发顾问) 3. 中国敏捷联盟《ADBOK》(敏捷开发知识体系)项目组成员 二十年软件开发、软件设计、需求分析、项目管理、部门管理、公司管理及过程改进等经验,亲历“无数”项目,涉猎建筑、通讯、互联网、电力、金融、制造业、政府等领域,熟悉软件生命周期的全部过程

    10427 人正在学习 去看看 CSDN讲师

一、敏捷开发

“敏捷”是一种思想,与”瀑布“式(即传统开发模式)相比,敏捷开发有如下宣言

  • 个体和互动高于流程和工具:意思是敏捷开发中每个人都可以提出自己的见解,而不必按照”流程“逐个向上级反应。目的是为了降低”沟通的成本
  • 工作的软件高于详尽的文档:指你正在开发的软件,即使没有文档,你也可以开发(传统式开发中文档是高于开发的,没有”需求文档”,是不可以随便进行开发的)。不能停滞不前。
  • 客户合作高于合同谈判:指和客户之间的即使沟通,对于客户临时提出的要求来说,即使和合同文件上描述的不一致,我们也是要按照客户的要求做下去的

  • 响应变化高于遵循计划:在”敏捷“中,变化是无处不在的。所以我们不能按部就班,要积极的响应变化,最终实现“可交付的增量”这一目标。

敏捷十二原则

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

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

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

  4. 简单----尽最大可能减少不必要的工作----是根本的

  5. 最好的构架、需求和设计出自与自组织的团队

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

二、Scrum

定义:Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。

Scrum三个角色

  • 产品负责人(Product Owner

  • Scrum Master

  • 开发团队

Scrum三个工件

  • 产品BacklogProduct Backlog):迭代计划

  • SprintBacklog

  • 产品增量(Increment

Scrum的5个活动

  • 产品Backlog梳理会议( Product Backlog Refinement
  • Sprint计划会议(Sprint Planning Meeting
  • 每日站会(Daily Scrum Meeting
  • Sprint评审会议(Sprint Review Meeting
  • Sprint回顾会议(Sprint Retrospective Meeting

Scrum5个价值

  • 承诺 愿意对目标做出承诺
  • 专注把你的心思和能力都用到你承诺的工作上去
  • 开放– Scrum 把项目中的一切开放给每个人看
  • 尊重每个人都有他独特的背景和经验
  • 勇气有勇气做出承诺,履行承诺,接受别人的尊重

 

敏捷开发

阅读数 764

没有更多推荐了,返回首页