zoukankan      html  css  js  c++  java
  • 敏捷开发方法综述

    什么是敏捷开发?

    首先,敏捷开发是一种过程控制论,通俗的说,就是一种做事情的方法。

    1. 它适用于软件,因为软件是软的,可以改。要是硬件,改起来就没那么方便了
    2. 它适用于客户不知道自己要啥的情况,其实,这样的客户占绝大多数。因为客户不知道要啥,所以你需要不断帮客户弄明白他到底想要啥。。。换句话说,你需要和客户沟通,合作,倾听反馈,持续改进。。。
    3. 它适用于竞争激烈的市场,这样的情况下,赶在竞争对手前交付一个不完美但至少能用的产品非常重要。
    4. 它适用于快速变化的市场,你在埋头造一辆汽车的时候,客户已经想开飞机满天飞了,这就需要你能一步步的把汽车改成飞机,还能按时交付。
    5. 它适用于在一个地方办公的小团队,一般10个人以内。这样能使敏捷中主要的沟通方式“Face to Face” 是可行的。

    其次,敏捷开发是一套工具集,里面有形形色色的工具,你可以不搞敏捷,但可以用那么一两个来提高工作效率。

    比如:
    1. 站会:三个问题,简洁有效的小团队沟通方式
    2. 看板:直观反映工作进度,反映流程遵守情况,反映流程缺陷
    3. 演示,计划,反思会:适合于小团队的协作和优化反馈方式
    4. 用户故事:站在用户的角度讲需求
    5. 持续集成:随时高质量交付的基础,有利于应对变化剧烈的市场

    再其次,敏捷开发是一种企业管理方式

    比如:
    1. 一线员工可以同时是架构师,Scrum Master,开发工程师,测试工程师,发挥了他的主观能动性,有利于创新和效率
    2. 敏捷不专注于敏捷团队中个人的绩效考核,而更多的侧重于整个团队的绩效,更好的避免了KPI驱动模式。
    3. 把大项目拆分成小项目去做(每个Sprint都是一个迭代,需要输出一个高质量的版本,相当于完成一个小项目),把bug的生存期控制在一个迭代以内,降低了风险,也减少了后期改bug的工作量。
    4. 把数十人的大team 分成几个敏捷团队,这几个敏捷团队的Scrum Master/PO再组成一个更高一级的敏捷团队,利用站会,反思,看板等等敏捷元素,可以避免数十份邮件也不能解决一个小问题,大家互相踢皮球,沟通不畅的大企业病。
    5. 老板可以是最大的PO,他给下面的高管讲idea(User Story),定期检查Demo,把控产品用户体验,负责和外界的沟通合作-----比如乔布斯,360的周鸿祎等

    敏捷开发之 12条敏捷原则

    1、我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。

    2、欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌握变化。

    3、经常地交付可以工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。

    4、业务人员和开发人员必须相互合作,项目中的每一天都不例外。

    5、激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。

    6、不论团队内外,传递信息效果最好效率也最高的方式是面对面的交流。

    7、可工作的软件是进度的首要度量标准。

    8、敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。

    9、坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。

    10、以简洁为本,它是极力减少不必要工作量的艺术。

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

    12、团队定期地反思如何能提供成效,并依次调整自身的举止表现。

    什么是scrum?      

          Scrum是跨职能团队以迭代、增量的方式开发产品或项目的一种开发框架。它把开发组织成被称为Sprint的工作周期。这些迭代每个都不超过4周(最常见的是两周),并且无间歇地相继进行。Sprint是受时间箱限制的,无论工作完成与否它们都会在特定日期结束,并且从不延长。通常由Scrum团队来选定一个Sprint的时长,并且对于他们所有的Sprint都使用这一时长,直到这个团队能力提高,可以使用较短周期。在每个Sprint的初始,跨职能团队(大约7名成员)从排好优先级的列表中选择事项(客户需求)。团队对于在Sprint结尾他们相信自己可以交付哪些目标集合达成一致意见,这些交付应该是有形的并且能被真正“完成”的。在Sprint过程中不可以增加新事项,Scrum在下一Sprint时才接受变化,当前这么短的一个Sprint周期里只注重于短小、清晰、相对固定的目标。团队每天都进行简短会面来检验工作进程,并调整后续步骤以确保完成剩余工作。在Sprint结尾,团队与利益关系人一起回顾这个Sprint,并演示所构建的产品。团队成员从中获取可以结合到下一Sprint中的反馈。Scrum强调在Sprint结尾产生真正“完成”了的可工作产品。在软件领域是指已经集成的、完全测试过的、已经为最终用户生成文档的、潜在可交付的系统.

    Scrum

          简单介绍下敏捷(Scrum)里面的角色,“PO”可以理解为产品经理,负责产品的规划、发布计划、方案等。“SM”敏捷教练,负责指导团队严格践行敏捷活动,通常兼职。“敏捷团队”包括了开发、测试、设计师等。“用户团队”即用户代表或BA,敏捷强调用户全程参与项目过程,以便不时地沟通和澄清需求,避免团队在错误的道路上越走越远。“专家组”主要由架构师,测试经理,顾问专家等组成,因为这些人通常是公共资源不会加入单个敏捷团队。敏捷强调“敏捷团队”是一个整体,而不太强调里面的个体。敏捷团队越稳固越好,如果说敏捷能带来效率提升的地方就在于团队默契的沟通,准确的工作量评估,以及高质量的迭代交付了。

    在知乎和博客上找的资料关于敏捷开发的介绍。

    链接:http://www.zhihu.com/question/19645396/answer/16635773

            一步步学敏捷开发:1、敏捷开发及Scrum介绍

     

  • 相关阅读:
    31
    30
    29
    28
    27
    26
    25
    23
    cesium 基础
    操作SDO_GEOMETRY字段
  • 原文地址:https://www.cnblogs.com/tyyhph/p/5325705.html
Copyright © 2011-2022 走看看