zoukankan      html  css  js  c++  java
  • 浅谈「敏捷」开发

    敏捷软件开发宣言

    敏捷开发以用户的需求进化为核心,采用迭代循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
      在2001年,17位编程大师共同发布《敏捷软件开发宣言》。其他的核心思想可以分为以下四个部分:

    • “人”以及“人与人的互动” > “过程”和“工具”;
    • 可运行的软件 > 面面俱到的文档;
    • 客户合作 > 合同谈判;
    • 响应变化 > 遵循计划。

    基于《敏捷软件开发宣言》的思想,其共有12条原则,这里不一一叙述,可以在这里查看详情。

    敏捷过程模型

    1. 特点

    开发过程中的“变化”无处不在,也是不可避免的。在实际项目中,很难预测需求和系统何时以及如何发生变化,并且对于开发者来说,要将变化的意识贯穿在每一项开发活动中。面对这写要求,敏捷开发应运而生。所有敏捷过程模型都遵循敏捷软件开发宣言和敏捷原则,每种模型又各有特点,一下介绍两种:XPSCRUM

    2. XP(extreme programing)

    • 背景:
      1996年由__Ken Beck__等人提出,著名书籍:《Extreme Programing Explained:Embrace Change》
    • 基本观点:
      软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出人在软件开发过程中的作用。
    • 适用范围:
      XP适合规模小,进度紧,需求变化大,质量要求严的项目。功能需求可以固定的,可以作比较精确的需求设计的,生命周期很长的,超大型软件项目不适于适用XP方法。
    • 核心价值观:
      • 沟通问题往往是由于开发人员与设计人员,设计人员与客户之间的沟通不畅造成的;
      • 简单在系统可运行的前提下,做最简单的工作。时刻保持代码的简单,无冗余;
      • 反馈尽快获得用户反馈,越详细越好,使得开发人员能够保证自己的成果符合用户的需要;
      • 勇气“拥抱变化”对于用户的反馈,要用于对自己的代码进行修改,丢掉坏的代码。
    • XP设计过程:
      • XP Planning:计划阶段
      • XP Design:设计阶段
      • XP Coding & Testing:编码与测试阶段

    XP process

    3. SCRUM

    • 背景:
      1990年代由__Schwaber & Beedle__提出并实践。
    • 特点:
      整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周。使用产品Backlog来管理需求,是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表(backlog)。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。
    • 基本过程:
      • 找出完成产品需要做的事情;
      • 决定当前的冲刺需要解决的事情;
      • 冲刺冲刺Sprint;
      • 每日站会。
    • 常用方式:
      • Sprint Burndown Chart
      • Task board

    个人总结

    我个人认为敏捷开发中最重要的因素是:
      通过对《敏捷软件开发宣言》的学习,“人与人的合作交流”就一个敏捷软件开发项目是否成功的主要因素。所以在软件软件开发过程中,开发者的编程环境需要做到尽量的开放,而且尽量实现“结对编程”,这样才能使得开发过程变得不易于原计划脱轨,大大增强了开发的成功率。
      而对于较为典型的SCRUM和XP这两种敏捷过程模型,Scrum注重的是管理和组织实践,而XP关注的是实际的编程实践,两者都聚焦于信息价值流和信息沟通除了迭代长度稍有差别外,大多数Scrum实践与XP是兼容且相互补充。
      所以说:组合使用Scurm和XP会有显著收获!

  • 相关阅读:
    break和continue
    while循环嵌套
    while循环语句
    SDUT 2766-小明传奇2(母函数)
    那些奇妙的"大师"是怎样炼成的(科学、迷信、心理)
    深入理解Linux字符设备驱动
    [从头学数学] 第162节 锐角三角函数
    iOS将数组中的内容分拼接成字符串
    win10 UWP 全屏
    杂(三)-The type java.lang.Object cannot be resolved It is indirectly referenced ...
  • 原文地址:https://www.cnblogs.com/vachester/p/5874910.html
Copyright © 2011-2022 走看看