2018-04-22 23:09:48 qq_21791645 阅读数 1249
  • C语言程序设计--进阶篇教学视频

    该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。

    40807 人正在学习 去看看 贺利坚

一、定义:

1.迭代开发:在迭代开发中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代,这叫迭代开发。每一次迭代都包括了定义、需求分析、设计、实现与测试。

2.敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

二、区别:

1.性质不同:迭代开发是软件开发的生命周期模型,是一种开发过程;敏捷开发是多种软件开发项目管理方法的集合,是一种开发方法。这是两者最根本的区别。

2.开发方法模型不同:迭代开发对应的是瀑布模型,螺旋模型等;敏捷开发对应的是Scrum,XP(极限编程),Crystal(水晶编程)等开发方法。

3.对需求要求不同:迭代式开发适合那些需求信息不明确的项目;而敏捷开发是紧紧围绕用户需求,以用户为导向,以快速开发,快速验证,快速修正的迭代式开发打造大量精品。

三、联系:

1.开发方法:敏捷开发和迭代开发都有采用迭代的方法进行软件开发。

2.实际应用中的联系

a.敏捷开发的核心原则是拥抱变化,递增变化。迭代式开发适合那些需求信息不明确的项目,这样在开发过程中遇到需求的变化时,所带来的影响要比其他模型小。而现在的很多项目中,需求在项目进行中变化的事儿经常见,所以显得迭代式开发的优势更明显一些,这正符合敏捷开发的拥抱变化。而且迭代开发是不要求每一个阶段的任务做的都是最完美的,明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来,以最短的时间,最少的损失先完成一个“不完美的成果物”直至提交,然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善,这正符合敏捷开发的递增变化。

b.敏捷开发只是一个总体概念,而迭代式开发只是几乎所有敏捷开发所采用的一个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与工程技术实践,如演进式架构设计、敏捷建模、重构、自动回归测试(ART)等等。总而言之,就是敏捷开发与迭代开发是整体与局部的关系,前者就像大家庭,而后者是大家庭中的一员

c敏捷迭代开发是对用户反馈的核心功能进行规划,从最小化可用产品 的用户试用反馈,到每个功能用户参与的反馈,形成 开发 、测试、 验证的快速循环。





2018-07-10 17:13:59 ouyanghaitao 阅读数 3617
  • C语言程序设计--进阶篇教学视频

    该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。

    40807 人正在学习 去看看 贺利坚

敏捷开发与迭代式开发是整体与局部的关系

 

敏捷开发敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发过程中,只有开发团队,没有各个开发环节工种(分析师、设计师、架构师等)的划分,所有的工作都是团队会议明确、按照时间节点和任务节点交付。敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。

迭代开发:每次只设计和实现这个产品的一部分逐步逐步完成的方法叫迭代开发每次设计和实现一个阶段叫做一个迭代。在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(3)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试迭代是敏捷开发中被划分出来的一个周期实现方式。可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。迭代开发和敏捷开发都是弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

 

1、项目初期先挑选系统核心架构的需求来实现,待系统核心架构完成后,再在系统核心架构的基础上不断的添加其他功能模块,通过累加开发的方式,来不断的完善系统,并在完善系统时,对系统的瑕疵或不足,不断的进行重构和改进设计工作。通过多个迭代的敏捷开发,并且每个迭代都会产生一个可使用的产品。这样一来,我们就会达到降低产品开发风险的目的。

 

敏捷建模不可缺少,UML规范就是给我们提供建模标准的,建模不但能够促进你团队内部的开发人员之间沟通、还能够促进你的团队和你的project stakeholder之间的沟通,通过画一两张图来代替几十甚至几百行的代码,建模成为简化软件和软件(开发)过程的关键,而且比代码更容易控制和改变。这一点对开发人员而言非常重要-它简单,容易发现出新的想法,随着你(对软件)的理解的加深,也能够很容易的改进。

3、有目的的建模,开发软件需要使用多种模型,因为每种模型只能描述软件的单个方面,但是要特别强调我们没有必要每次应用所有的模型,而应该针对系统的具体情况,挑选能够解决问题的模型不应该毫无意义的建模。首先,你要确定建模的目的以及模型的受众,在此基础上,再保证模型足够正确和足够详细。只要基于现有的需求进行建模,日后需求有变更时,再来重构这个系统。尽可能的保持模型的简单和完整。

4、并行创建模型,和团队他人一开发模型,你的想法可以立刻获得反馈,特别是你的工作采用了共享建模技术的时候由于每种模型都有其长处和短处,没有一个模型能够完全满足建模的需要。例如你在收集需求时,你需要开发一些基本用例或用户素材,一个基本业务流程等。敏捷建模者会发现在任何时候,同时进行多个模型的开发工作,要比单纯集中于一个模型要有效率的多。

5、持续测试和集成,每个迭代,我们都在做增加新功能和变更需求,产生新的版本,因此不断进行测试和集成,已达到可交付的产品,但是无论如何变更,模型都可以是最轻量级的持续改进,以保证最终的完整性和准确性。

 

针对中大型的软件开发来说,用例驱动、架构为中心的,无论是从需求用例还是测试用例,都可以统一对应,保证过程的完整统一。敏捷开发是一个轻装前进的过程,每一个过程都只关注当前的任务,但是在开始之前,我们必须要高瞻远瞩,综合评定,无论是在一开始的架构模型还是开发过程中的每一个系统模型,都要有合适的取舍,但是也要有考虑可扩展,可变更,可迭代的过程。

 

 

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。
特别是前期阶段,设计的越完美,提交后的成本损失就越少。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,
最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

 

敏捷开发优点:

 1、降低风险
  2、得到早期用户反馈
  3、持续的测试和集成
  4、使用变更
  5、提高复用性
 

2016-10-17 17:22:04 Baby_T 阅读数 537
  • C语言程序设计--进阶篇教学视频

    该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。

    40807 人正在学习 去看看 贺利坚

(转自:http://www.cnblogs.com/xiangzhong/p/4983257.html)

浅谈敏捷开发和迭代开发相结合

  由于最近公司委派管理一个项目的开发,以往对开发体系没有特别的研究过,在遇到阻碍后开始慢慢学习开发体系,以往在项目组根据项目类型的不同都有各自一套软件开发体系。我们这里来谈下软件开发,将敏捷开发和迭代开发相结合的好处。

  首先,我先介绍一下什么是敏捷开发迭代

  1,敏捷开发:一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

  2,迭代开发:每次只设计和实现这个产品的一部分, 逐步逐步完成的方法叫迭代开发, 每次设计和实现一个阶段叫做一个迭代。在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。

  敏捷开发与迭代式开发是整体与局部的关系。打个比方,前者就像大家庭,而后者是大家庭中的一员。

  敏捷开发是一个总体概念,而迭代式开发只是几乎所有敏捷开发所采用的一个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与工程技术实践,如演进式架构设计、敏捷建模、重构、自动回归测试(ART)等等。迭代式开发起源于1970-80年代的迭代、递增、演进式方法(IID),而敏捷开发是在迭代式开发的基础上起源于1990年代中后期。

  通过这些年项目开发工作的最佳实践,我觉得如果您想做一个非常完美的项目很难,但是我们可以通过不断的对项目进行修正和累加的开发,来使项目趋于完美。这里我要说的就是迭代和敏捷开发相结合的一种开发方式。这样做的好处有以下几点:

  1、降低产品开发风险

  如果我们对即将开发的产品需求在项目初期不能做到全部细化,就进行系统功能的设计工作,势必增加项目产品的开发风险。那么如何降低风险?我们就可以通过迭代和敏捷开发相结合的开发方式来降低项目风险,项目初期先挑选可形成系统核心架构的需求来实现,待系统核心架构完成后,再在系统核心架构的基础上不断的添加其他功能模块,通过累加开发的方式,来不断的完善系统,并在完善系统时,对系统的瑕疵或不足,不断的进行重构和改进设计工作。通过多个迭代的敏捷开发,并且每个迭代都会产生一个可使用的产品。这样一来,我们就会达到降低产品开发风险的目的。

  2、持续的测试和集成

  每个迭代的敏捷开发,我们都会去不断的来做两件事情,一件就是增加新的功能,另一件就是更改变化的功能需求。新的功能或需求变化总是尽可能频繁地被整合到产品中。有些是在每个迭代周期结束的时候集成, 有些则每天都在这么做。所以,我们在每个迭代的敏捷开发中,都要不断的进行持续的测试和集成工作,以达到给客户交付一个满意,可用的产品。

  3、满足用户不断变化的需求

  满足用户不断变化的需求是软件开发的长期无法解决的难题之一,经典的瀑布模式在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。敏捷方法满足需求的办法主要通过迭代。在每一次迭代周期结束时,都能交付用户一个可用的、可部署的系统,用户使用并体验该系统并反馈意见,在随后的迭代周期这些意见和需求的其他变化一起在产品中实现和集成。

  4、得到早期用户反馈

  每次迭代周期应尽可能短,以便能及时地处理需求变化和用户反馈。客户反馈的越早,越有助于在下个迭代的敏捷开发中,对客户反馈的意见进行修改。经过几个迭代对用户反馈的修改开发工作,使系统更加趋于完美。

  5、提高复用性(重用性)

  在谈到复用性,也有人称之为重用性之前,我要说的一个重要的活动就是:代码重构。因为在进行迭代的敏捷开发中,没有整个系统的详细设计过程,那么如何保证我们开发系统组件的复用性?

  方法一:经常性的对你的代码进行重构以保持良好的设计和扩展性。

  方法二:架构师根据经验,和对未来需求的洞察力,在核心架构中设计出一部分可重用的组件。

  方法三:在团队的设计讨论会议上,成员之间通过头脑风暴和讨论,会得到一些共用的组件。

  方法四:定期组织项目团队的开发人员坐在一起,互相审核评审代码,发现系统中重复出现的代码片段,从而立即重构它们以得到可重用的组件。

  方法五:开发过程中,通过对旧的代码进行重构,也有可能得到一些可重用的组件。

  代码重构其实与软件工程师的技能和经验也有很大的关系,有经验的软件工程师在进行编码时,会分辨出有可能会被重用的部分,并将它们抽取出来封装成可被重用的类或者模块组件。

  综上所述,敏捷开发和迭代开发相结合的项目开发方式,给我们项目管理带来的好处多多。也是我长期通过项目开实践,在不断学习和总结的中觉得最佳的项目开发方式之一。它对项目成败和最终结果起到决定性因素。因为我觉得它的思想精髓本身就值得我们采用它,它强调的是持续改进,不断完善。这相对于经典的瀑布式开发来说是无法比拟的,经典的瀑布模式虽然在一个迭代周期内表现优异,但一旦需求变化,瀑布模式却显得无能为力。瀑布模式通常会在产品起点与最终结果之间规划出一条直线,然后沿着直线不断往前走。然而当项目到达终点时,用户通常会发现那已经不是他们想要的东西。而敏捷方法则采用小步快跑,每走完一步再调整并为下一步确定方向,直到真正的终点。迭代式和敏捷开发方式的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势。吸取精华,破其糟粕,只有这样,项目才会达到趋于完美的程度。这也是我们所有IT人,做任何项目都想达到的目标。

转自:http://www.mypm.net/articles/show_article_content.asp?articleID=24211&pageNO=2


2018-12-21 16:54:15 weixin_43918437 阅读数 1125
  • C语言程序设计--进阶篇教学视频

    该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。

    40807 人正在学习 去看看 贺利坚

软件研发中敏捷开发和迭代开发的异同

在讲敏捷开发之前,先了解几个常见的软件研发模式

瀑布模型:瀑布模型的软件研发过程与软件生命周期一致,由文档驱动,两相邻之间存在因果关系,需要对阶段性的产品进行review。

螺旋模型:从制定计划、 风险分析、实施工程(需求确认、软件需求、软件产品设计、设计确认与认证、详细设计、开发、测试)、 客户评估。每一次螺旋包括4个步骤:制定计划、风险分析、实施工程、客户评估。螺旋模型强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
接下来,本文主要在以下几个方面区别敏捷和迭代的异同

一、定义:

敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

迭代开发:整个开发工作被组织为一系列的短小的、固定长度(如2周-4周)的小项目,被称为一系列的迭代,这叫迭代开发。

二、区别:

1、性质不同:迭代开发是软件开发的生命周期模型,每一个迭代都是一个完整的瀑布模型,是一种开发过程;敏捷开发是多种软件开发项目管理方法的集合,是一种开发方法。这是两者最根本的区别。

2、开发方法模型不同:迭代开发对应的是瀑布模型,螺旋模型等;敏捷开发对应的是Scrum,XP(极限编程),Crystal(水晶编程)等开发方法。

3、对需求要求不同:迭代式开发适合那些需求信息不明确的项目;而敏捷开发是紧紧围绕用户需求,以用户为导向,以快速开发,快速验证,快速修正的迭代式开发打造大量精品。

三、联系:

1、开发方法:
敏捷开发和迭代开发都有采用迭代的方法进行软件开发。

2、实际应用中的联系:
1)敏捷开发的核心原则是拥抱变化,递增变化。迭代式开发适合那些需求信息不明确的项目,这样在开发过程中遇到需求的变化时,所带来的影响要比其他模型小。而现在的很多项目中,需求在项目进行中变化的事儿经常见,所以显得迭代式开发的优势更明显一些,这正符合敏捷开发的拥抱变化。而且迭代开发是不要求每一个阶段的任务做的都是最完美的,先将主要功能先搭建起来,以最短的时间,最少的损失先完成一个“不完美的成果物”直至提交,然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善,这正符合敏捷开发的递增变化。

2)敏捷开发只是一个总体概念,而迭代式开发只是几乎所有敏捷开发所采用的一个主要的基础实践。敏捷开发除迭代式开发外,还包含了其他许多管理与工程技术实践,如演进式架构设计、敏捷建模、重构、自动回归测试(ART)等等。总而言之,就是敏捷开发与迭代开发是整体与局部的关系,前者就像大家庭,而后者是大家庭中的一员

3)敏捷迭代开发是对用户反馈的核心功能进行规划,从最小化可用产品 的用户试用反馈,到每个功能用户参与的反馈,形成 开发 、测试、 验证的快速循环。

总结:敏捷和迭代虽然不一样,但是它们也是分不开的,迭代和敏捷开发方式的结合,既保证了产品的质量又在项目产品的持续改进中具有一定的优势。吸取精华,破其糟粕,只有这样,项目才会达到趋于完美的程度。

2016-04-12 21:33:20 HustPM_Dapeng 阅读数 3598
  • C语言程序设计--进阶篇教学视频

    该课程为“C语言及程序设计”系列课程中的第三部“进阶篇”。作为终结篇C语言教程,介绍了在实际应用中应用广泛的结构体数据表示和处理、利用文件进行输入输出、利用多文件组织项目开发,并结合对程序设计的进一步学习需求,概述数据结构及其选择问题和问题求解方法。以实践为主线的学习将继续,“银行储蓄系统”的开发将会迭代到第5版和第6版。

    40807 人正在学习 去看看 贺利坚
瀑布式开发、迭代开发,区别【都属于,生命周期模型】

        两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说。
        传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。特别是前期阶段,设计的越完美,提交后的成本损失就越少。很多外包项目就是这样的流程。
        迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。
        这两种开发模式都各自具有自己的特点,迭代式开发适合在一些需求信息不明确的项目中,这样在开发过程中遇到需求的变化时,所带来的影响要比瀑布式开发小。而现在的很多项目中,需求在项目进行中变化的事儿经常见,所以显得迭代式开发的优势更明显一些。
        但是,从本质上来说,二者都不过是一种开发的模式,即使是迭代式开发,在每一个迭代的环节中,不也是此从需求到设计,从设计到编码,从编码到测试吗?这不也是瀑布式模型的体现吗?只不过这个瀑布式中的每一个阶段不需要做到最优化,都留一些任务到下一层迭代中去做而已。
        所以,我觉得面对不同的问题采用不同的模式,模式是为了方便我们开发而服务的,不是要求我们必须按照某一种模式从头走到尾。
        就象迭代式开发,我们其实也经常用到这种模式。比如说开发项目中的某一个模块。我们先把能够实现主要功能的代码写出来。比如一个查询模块,先从模块的构思到设计再到编码,先查询功能的代码,测试一遍查询成功。这算是完成了第一层迭代。然后我们要再考虑一层迭代中的一些还未完成的细节问题,比如查询的check,查询结果的显示以及查询算法的优化等等,这就是第二层迭代。
 
瀑布式开发,敏捷开发,区别【一种生命周期模型,项目管理方法集合】

瀑布模型的特点传统的开发方式)
1、强调文档
前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期才可以看到软件的“模样”。
2、没有迭代与反馈。瀑布模型对反馈没有涉及,所以对变化的客户需求非常不容易适应。瀑布就意味着没有回头路。
3、管理人员喜欢瀑布模型的原因是把文档理解为开发的速度,可以方便地界定不同阶段的里程碑
 
敏捷开发
极限编程的思想体现了适应客户需求的快速变化,激发开发者的热情,也是目前敏捷开发思维的重要支持者。
敏捷软件开发是一个开发软件的管理新模式,用来替代以文件驱动开发的瀑布开发模式。
 
敏捷开发集成了新型开发模式的共同特点,它重点强调:
1.敏捷就是“快”。快才可以适应目前社会的快节奏,要快就要发挥个人的个性思维多一些个性思维的增多。
2.客户参与。以人为本,客户是软件的使用者,是业务理解的专家,没有客户的参与,开发者很难理解客户的真实需求。
3.强调软件开发的产品是软件,而不是文档。文档是为软件开发服务的,而不是开发的主体。
4.设计周密是为了最终软件的质量,但不表明设计比实现更重要。
5.迭代。软件的功能是客户的需求,界面的操作是客户的“感觉”。对迭代的强调是缩短了软件版本的周期
6.小版本。快速功能的展现,看似简单,但对于复杂的客户需求合理地分割与总体上的统一,要很好地二者兼顾是不容易的。

迭代开发敏捷开发,区别【一种生命周期模型,项目管理方法集合】

        迭代开发是一种软件开发的生命周期模型,与其对应的还有瀑布模型、螺旋模型等等
        敏捷开发是多种软件开发项目管理方法的集合,其中包括了XP、Scrum等十几种开发模式,这些开发方法有些共同点,比如重视响应变更,重视实现客户的价值,重视开发人员的自身发展等等,其核心体现在他们著名的四句原则中.这些开发方法基本都倾向于采用迭代的软件开发生命周期模型. 
(1)人和交互 重于过程和工具。
  (2)可以工作的软件 重于求全而完备的文档。
  (3)客户协作重于合同谈判。
  (4)随时应对变化重于循规蹈矩。  
        简单来说,迭代模型是敏捷开发普遍使用的软件生命周期模型,敏捷开发所包含的内容比迭代模型宽泛的多.
 
敏捷开发中,XP与SCRUM的区别

区别之一:  迭代长度的不同

XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的迭代长度一般为 2~ 4周.

区别之二: 在迭代中, 是否允许修改需求

XP在一个迭代中,如果一个User Story(用户素材, 也就是一个需求)还没有实现, 则可以考虑用另外的需求将其替换, 替换的原则是需求实现的时间量是相等的。 而Scrum是不允许这样做的,一旦迭代开工会完毕, 任何需求都不允许添加进来,并有Scrum Master严格把关,不允许开发团队收到干扰

区别之三: 在迭代中,User Story是否严格按照优先级别来实现

XP是务必要遵守优先级别的。Scrum在这点做得很灵活, 可以不按照优先级别来做,Scrum这样处理的理由是: 如果优先问题的解决者,由于其它事情耽搁,不能认领任务,那么整个进度就耽误了。 另外一个原因是,如果按优先级排序的User Story #6和#10,虽然#6优先级高,但是如果#6的实现要依赖于#10,则不得不优先做#10.

区别之四:软件的实施过程中,是否采用严格的工程方法,保证进度或者质量

Scrum没有对软件的整个实施过程开出养个工程实践的处方。要求开发者自觉保证,但XP对整个流程方法定义非常严格,规定需要采用TDD, 自动测试, 结对编程,简单设计,重构等约束团队的行为。因此,原作者认为, 这点上,XP的做法值得认同的,但是却把敏捷带入了一个让人困惑的矛盾, 因为xp的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, ...等等”

 

不难发现,这四个区别显见的是: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束

作者建议, 在管理模式上启用Scrum, 而在实践中,创造一个适合自己项目组的XP(“start with Scrum and then invent your own version of XP.”)

 

SCRUM介绍


        回顾一下我所认识的scrum,算是对自己知识的一个梳理。
        scrum到底是什么,书中都说,它不是方法学,不是过程,而是一个框架。我并没有太理解这句话,所以先把scrum中都有些什么来说一下。

 

        时间:scrum把时间分成一个个的sprint,也就是迭代周期。这个周期以2-6个星期为宜,但目前使用的最多的,是一个月,即四个星期。

        每一个sprint的开始和结束都会有一个会议,叫做sprint计划sprint演示,这很好理解,计划时计划做什么,演示时演示做完的东西。然后,并不是演示完了就完事的,sprint还有一个回顾会议,用来对这个sprint进行回顾,哪些做的好,哪些做的不好。这就是改进。

        组成sprint的每天中,都会有每日例会,叫做每日站会,所以谓站会,即是时间非常短的会议,众所周知的,没完没了的会议总是让我们,厌倦不已。而这种站会,我想差不多是从这方面来考虑的。

 

        人物:scrum中有scrum master, product owner和scrum团队。我理解scrum master就是project manager,而product owner就是product manager,团队还是那个团队,只是这里的团队,在规模上有一定的限制,它要求人员不要太多,不要太少,3-12个,通常4人团队比较多见,当然这个具体还得看实际情况来定。团队中开发测试人员比是1:1,即pair work。

 

        scrum中的需求,采用story的形式进行描述,整个产品的需求,被列成product backlog,而每一个迭代周期要做什么,是在每个sprint的计划会议上进行挑选的,根据po对backlog标记的优先级,团队对其进行estimate并挑选出这个sprint里能完成的story,scrum master把它们列入计划中。

        backlog有一个用于统计的东西,叫做燃尽图。从字面理解,就是燃烧掉多少的图,即sprint backlog中的被完成了多少,每完成一个story,就燃烧掉一个story。产品backlog有产品燃尽图,sprint有sprint燃尽图。

 

        以上基本就是我了解的一些scrum知识点,其中忽略了工具部分和工作开展方式部分。因为采用什么工具或采用什么方式来实现,我认为是根据实际情况来定的,而且,在每个sprint回顾会议中,这些东西都会被改进。使用excel或白板来记录story或backlog并不重要,重要的是,你是否有story或backlog。

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