敏捷开发采取的模型_敏捷开发模型 - CSDN
精华内容
参与话题
  • 浅谈敏捷开发和迭代开发中的建模

    千次阅读 2016-09-07 18:13:39
    软件开发历经几十年的变革,各种开发方法层出不穷,各有利弊,随着开发项目的各种框架的成熟,敏捷开发和迭代开发是非常常见的开发方式,两者也经常一起被融合使用。那么如何在我们的软件开发过程中更好的结合这两种...

     

    软件开发历经几十年的变革,各种开发方法层出不穷,各有利弊,随着开发项目的各种框架的成熟,敏捷开发和迭代开发是非常常见的开发方式,两者也经常一起被融合使用。那么如何在我们的软件开发过程中更好的结合这两种开发模式,也是大家关注的方向。

     

     首先,简单的介绍一下什么敏捷开发迭代开发,一句话区别:敏捷开发与迭代式开发是整体与局部的关系目前迭代式开发几乎所有敏捷开发所采用的一个主要的单元实践,前者好比整个中国,后者好比一个省或者一个市。

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

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

    虽然软件工程里面成熟的方式方法不少,但是多年的实践告诉我们,想做一个完美的项目依然是艰难的。在项目开始,我们做不到对产品需求全部细化,但是就需要进行系统功能的设计,这样肯定是会增加项目开发风险的,但是我们开发的项目实际情况就是如此,不可能做到百分之百完全覆盖的需求细化,我们总是通过不断的对项目的修正和迭代,才可以使其越来越接近完美

    具体的做法如下:

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

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

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

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

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

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


    Trufun服务目标——国产最专业UML建模工具、需求管理工具、ALM管理工具等

    规范软件开发过程     优化软件开发流程

    保证软件开发质量     提高软件开发效率

        西安楚凡科技有限公司(Trufun)是全球领先的软件开发行业应用生命周期管理(ALM)CASE工具解决方案提供商,倡导"实用、简洁"的产品理念,拥有业内领先的国产中文UML建模工具,国产中文需求管理工具,国产中文MDA工具等一系列产品。支持软件开发的整个生命周期,涵盖需求获取、需求分析、分析设计、软件开发、软件测试、软件部署等环节。


    展开全文
  • 敏捷开发 PK 瀑布模型

    千次阅读 热门讨论 2014-05-19 17:45:34
    是以敏捷开发作为开发方式。以前都是遵循传统的瀑布模型,而新方式的开发思路直接与传统的开发思路来了个正面碰撞,擦出了阵阵“火花”。  在一开始接触敏捷开发时,有些兴奋,有些期许,但是在真正用来做项目...

       在去年12月底开始接触高校平台项目,到现在也快有小半年了。这次的开发不同以往。是以敏捷开发作为开发方式。以前都是遵循传统的瀑布模型,而新方式的开发思路直接与传统的开发思路来了个正面碰撞,擦出了阵阵“火花”。


        在一开始接触敏捷开发时,有些兴奋,有些期许,但是在真正用来做项目时,由于瀑布模式已经根深蒂固,再加上对需求不熟悉,对开发环境不熟悉,新方式的开发反而让人感到别扭,麻烦,甚至抵触。


        由于对敏捷开发的不理解,大家也爆发了很多争论,不过也正是这些争论,引导我们逐步走向了敏捷开发的正途上。


        记得当初在做yh收银系统的时候,采用的是传统的瀑布开发模式。自己做需求也是很费力气的,首先整理当前版本的系统功能,收集和整理以往的维护记录,整理客户的建议。然后再加上自己维护过程中发现需要改进的地儿和参考同类软件,历时1周,需求算是基本做出来了,但是还是有很多问题,许多想要的动能,自己也不确定到底是什么样的。以至于到概要设计完成后,发现设计与最终想要的差距太大,最终决定推倒重来,又花费了1周的事件才搞定需求。加上前面浪费的时间,光是做需求,就花费了近一个月的时间了。也就是说这近一个月的时间,小组成员大部分的时间(项目方面的)都荒废掉了的。


        设计花费的时间就更多了,我们采用的是三层架构+2层接口+抽象工厂模式,实现差不多都是组长去设计,然后画出时序图来,再安排小组成员去完成。做的过程中发现当初设计有问题,还得推到重新去设计。结果就造成了代码没花太长时间,而反复修改设计和各种文档花费时间太多了。


        实现过程看着时序图也不一定可以搞定,而且大家当时的水平也的确有待提高,经常被问题卡住,开发停滞了。没有一个例子做参考,做起来也很费劲。甚至有时候为了完成功能,使用简单的但是不安全的方式实现了,以至于后来得反复修改。


        而且开发时间跨度有点大(最终耗时5个月),小组中有抵触情绪蔓延。。。


        当然我这里只是说在使用瀑布模式做yh系统时,所遇到的问题,并不是说我们开发的一无是处。相反我们开发突破了以前许多设计枷锁,让我们的系统变得很人性化,当然这不是本次讨论的重点,就不在这里说了。


        以上这些问题是有部分是能力所限,但是通过改变开发模式也能解决这些问题。而敏捷开发就是其中一种解决方案。


        本次在做高校平台项目时,采用的是Scrum敏捷开发模式,在简单了解了敏捷开发模式后,越发感觉敏捷开发的优势了。瀑布模式是以文档驱动的,而Scrum则是以人为核心,只完成必要的文档即可,它更强调人与人的交流。而且Scrum之所以成为敏捷开发,主要还是因为它能快速响应变化,快速迭代。


        按照Scrum的开发流程,建立backlog,列story,在迭代计划会上大家一起评story优先级(跟scrum稍有不同),然后制定迭代计划,并一起对本次迭代任务进行评估工时。用集体的智慧和知识对“做什么,怎么做”打成共识。每个人只专注分配给自己或者自己领取的任务模块即可。每日立会也是一个很不错的了解开发进度的方式。每次做完任务后,都要叫Scrum Master来检查一遍。而且在迭代中期和末期都有集体审查,在很大程度中减少了系统bug,不至于最后bug遍地,无法集成。


        当然在这过程中也会遇到问题,被一些难的问题卡住了,会在立会中提到,如果不是很重要的问题,给2天时间解决,否则放弃这个任务,换另一个人去做。或者采取结对编程,这个的确很有效。在对一个大家都了解都比较少的,或者一些逻辑复杂的问题上,一般采用2种方式。一是2个人同时领取相同的任务,各自做各自的,谁完成了就用谁的。另一种是结对编程,2个人坐在一起来完成一个任务。我更推荐爱你结对编程,它在这些问题上的投入往往是1+1>2的,绝对是一个very good choice。


        本次开发设计到许多陌生的知识,如果单纯的理解起来,比较费力,不过如果有工具辅助就是另一回事儿了。本次管理上的不论是“禅道还是“JIRA都是非常值得推荐的项目管理软件。也是通过这两款项目管理软件,才使得我能快速了解和熟悉敏捷开发流程。另一个我觉的非常值得推荐的则是Confluence。Confluence则是一个很不错的Wiki,自我感觉要比使用svn更专业,也更方便。


        当然并不是所有的项目都适合用敏捷开发来做,选择哪种开发模式是根据项目而定的。对时效要求比较高的比如互联网产品,比较适合用敏捷开发。而一些大型、超大型的项目如军工、航天的,就不太适合敏捷开发。还是那句话,适合的才是最好的。


    展开全文
  • 敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。敏捷开发就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。那么什么项目适合...

    敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。敏捷开发就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。那么什么项目适合敏捷开发呢?下面一起来了解一下相关的知识吧!
      什么项目适合敏捷开发:
      1、产品复杂,不断有新的需求加入。
      当产品的开发受市场影响较大时,业务需求的变动就十分常见了,为了不影响项目开发进度,需求管理必不可少。有些团队会一个个排需求、做需求,而敏捷开发是通过任务分解把工作拆分为半天到几天的工作量,然后制定里程碑时间点,将复杂的需求细化成一个个小任务,再根据轻重缓急梳理优先级,简单快捷地帮助开发人员化繁为简,提高效率。
      2、团队庞大,沟通协作效率低。
      有时一款新产品的开发,需要多部门联动协作,然而每个成员的岗位和职责不同,所以每个人关注的项目信息不一样,关注信息的频率其实也不一样,有的比较频繁,有的则可能整个项目过程就只需沟通两三次。由于每个人的习惯不同,所以他们获取信息的手段也不太一样,有些人喜欢微信、QQ,有些人喜欢邮件,还有些人喜欢以会议的形式获取信息。这就导致了团队内部沟通效率低下,许多重要的信息难以实时传递。
      3、希望高效地管理开发进度。
      产品经理为了掌握项目的进展,掌握各项工作的状况,就必须对项目过程进行监控和跟踪。只有这样,出现了问题,才能及时进行资源调整和进度计划调整,重新规划某一个任务开始和结束的时间,并记录实际的进度情况。
      那么如何进行项目的进度跟踪呢?每日站立会议(也叫Scrum会议)是比较高效的办法。
      每日站立会在同样的时间和同样的地点召开,会议准时开始,一般不超过15分钟,每一个开发团队的成员都必须发言,会议中不进行讨论,主要解决以下问题:昨天完成了什么,今天即将做什么,以及遇到了什么困难。
      通过这种简单的会议形式,可以让项目组的所有成员了解每项任务的最新进展。这样产品经理才能监控哪些任务的进度落后于计划,并采取相应的措施予以纠正。
      敏捷开发的优点:
      1. 精确要求,精准成果。

      敏捷开发不似瀑布模式的开发,从一个点开始却会以一大片结束。这样的开发会导致成果与出发点严重偏离,重点无法被作为重点开发出来,而是与原来的构想相差甚远。敏捷开发似接力比赛,每一段赛道都不长,并且还能把握好每次交接棒的时机,遵循计划更响应变化,这使成果变得十分精准。
      2. 质量有保障。
      敏捷方法对每一次迭代周期的质量都有严格要求。敏捷开发团队拥有高水平的开发方法,有的会在正式开发功能代码之前先开发该功能的测试代码,质量可保证。
      3. 客户合作胜过合同谈判。
      好的团队会更在乎与客户合作的这个过程。
      4. 投资回报率高。
      在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。
      5. 较高的速度是敏捷开发最显着的优点之一。
      敏捷团队只专注于开发项目中当前最需要的、最具价值的部分。这样能很快地投入开发。另外,较短的迭代周期使团队成员能迅速进入开发状态。
      敏捷开发帮助企业寻找一种最快速开发软件的途径,帮助企业提高软件开发的效率,减速软件的投入使用。

    展开全文
  • 这是敏捷开发绩效管理的第一篇。(之一,之二,之三,之四,之五,之六,之七)“敏捷开发绩效管理”本身是个伪命题,因为敏捷开发本身不想涉及绩效管理,这就像“C++绩效管理”的搭配差不多。但是人们选择敏捷开发...

    这是敏捷开发绩效管理的第一篇。(之一之二之三之四之五之六之七

    “敏捷开发绩效管理”本身是个伪命题,因为敏捷开发本身不想涉及绩效管理,这就像“C++绩效管理”的搭配差不多。但是人们选择敏捷开发作为管理方法是有原因的:更高的交付保障,更高的生产率,更高的质量……这和人们选择C++(而不是C)的原因还是很接近的:都是为了更高的绩效。在下面的所有文章中,“敏捷开发绩效管理”都将不再是“敏捷开发中如何做绩效管理”,而是“如何利用敏捷开发提高绩效”。

     


    何为绩效管理

    绩效管理常常被片面理解为绩效考核,即如何确定个人的绩效,如何提工资和发奖金的问题。实际上绩效管理还包含制定绩效目标制定绩效计划制定配套的制度推动绩效等等,当然也包括最后的绩效考核,以最终达到绩效持续提升的目的

    上述内容在本系列中都有考虑,并根据笔者以往的经验和经历给出一些实际的案例供研讨使用。

     

    从一个经典问题看绩效管理的出发点

    绩效管理不是敏捷开发的要求——如果能理解敏捷开发也不是瀑布模型的要求,敏捷开发爱好者们或许就会释然了——绩效管理是企业管理的要求,是企业为了持续提升自己的绩效而采取的措施。

    从这个角度我们来看一个由来已久的问题:“敏捷开发是否考核个人?”很多人会脱口而出:“敏捷开发不考核个人。”但是如果再问“企业管理要求必须考核个人怎么办?毕竟工资和奖金不是发到团队总账户上的”估计再下去的回答,就只能说是闪烁其辞了。

    其实这也是一个伪命题,所以才导致很难回答。下面一点点分析。

    企业绩效管理的目的不是为了考核个人,而是为了提升企业绩效,所以尝试考核个人的企业实际上在“利用考核个人提升企业绩效”(尽管提升个人绩效会提升企业绩效,但勿入此牛角,因为前面有个尖)。因此这个问题从原始出发点来看,应该是:“企业是否应该通过考核个人来提升绩效?”,那么答案就是:“敏捷开发有比考核个人更能提升绩效的方法”。不是因为用了敏捷开发就不能考核个人,而是选择了敏捷开发,就意味着已经选择了比考核个人更有效的提升绩效的方法,因此没有必要让企业管理和敏捷开发较劲,它们打不起来的。

    不过这个或者这些更有效的方法是什么呢?这就是本系列博文的主要内容。

    本系列博文将较多涉及团队级别的绩效管理,内容包括团队管理的策略,个体管理,团队的外部目标设定,如何分解到个人,不同团队绩效管理的差异,非物质激励等。

    另外一个高级话题则是产品级别的绩效管理,包括产品发布计划,产品版本计划,产品线管理,产品负责人及产品负责人团队,不同产品类型的搭配等等。但这个话题以另外一个主线组织会更顺畅:敏捷开发产品管理,因此会形成另外一个系列,但其核心内容仍是“如何通过敏捷开发管理产品提高绩效”,如果您觉得本系列所涉及的范围太窄,敬请关注 http://blog.csdn.net/column/details/productmanagement.html

     

    (有读者反映每篇文章太长了,本系列会以较多的短篇文章形式发布,以便于选择关心的内容分别阅读。)

     

    本人正在参加CSDN博客之星评选,如果读完并喜欢这篇文章,欢迎投票:http://vote.blog.csdn.net/item/blogstar/cheny_com

    点击下载免费的敏捷开发教材:《火星人敏捷开发手册

     

    展开全文
  • Scrum 是以经验过程控制理论为依据,采用迭代、增量的方法来提高产品开发的可预见性并控制风险。Scrum 的三大支柱支撑起每个经验过程控制的实现。 第一大支柱是高透明度 高透明度确保管理结果的人看得到那些影响...
  • 敏捷开发加班吗?

    2012-10-08 17:43:32
    有些程序员认为,敏捷开发从制度上要求不加班(可持续的步调),因此会说“老板,现在你不是推敏捷开发吗,那我们就不能加班了,因为敏捷开发不能加班。”结果肯定是:“敏捷要敏捷,加班也要继续加班。” “存在...
  • 八分钟敏捷开发(scrum)扫盲

    千次阅读 2018-08-20 16:54:42
    敏捷开发(scrum)是一种软件开发的流程,强调快速反应、快速迭代、价值驱动。 Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作;运用该流程,你就能看到你团队高效的工作。 敏捷开发的特点就是...
  • 敏捷开发

    千次阅读 2016-07-14 18:45:16
    敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把...
  • 觉得这篇文章写的非常好,非常有助于大家了解敏捷开发,原文链接在下面 https://www.jianshu.com/p/eb8f4448c5c8 什么是敏捷开发敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。在...
  • 引言 随着计算机的普及,软件工程成为了计算机产业中特别重要的一个产业。自从瀑布式开发模式提出之后,软件工程就走上了规范化的道路。...本文从传统开发与敏捷开发的模式出发,对比敏捷开发与传统开发,浅析现...
  • 本文将结合敏捷开发周期短,变化快等特点,介绍如何通过在开发过程中采取一系列步骤来保证和提高整个开发团队的代码质量,并阐述了每一步可以利用的工具和最佳实践,从而使开发过程更加规范化,成就高质量的代码,...
  • 已上介绍来源于百度百科,就我个人理解,敏捷开发的作用,是将以前瀑布式开发一次性需要上线的东西,拆分成为多个可以在不同阶段分开独立上线的功能,采取迭代更新的方式,可以让需要交付的最终结果中的一部分提前
  • 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把...
  • 敏捷开发方法学及应用

    千次阅读 多人点赞 2013-12-13 00:20:54
    敏捷开发,瀑布式开发,XP,TDD,SCRUM,Lean,FDD,DSDM你了解多少?本篇文章是有关敏捷软件开发方法学及应用的基础知识。敏捷开发是有关团队怎么样合作去实现一个常规目标。敏捷开发并不仅仅适用于软件开发者,也...
  • 敏捷开发解决方案 自十年前以来,当今的软件工程界发生了巨大变化。 软件产品的开发正在加速,并且对快速发布产品的期望每天都在增强。 所有这些进入市场的时间正在悄悄地给开发代码留下时间。 由于这些变化,仅...
  • 敏捷开发概述

    千次阅读 2016-01-17 17:00:34
    一、历史背景 20世纪60年代,软件规模小,已作坊式开发为主; 20世纪70年代,硬件快速发展,软件规模和复杂度...21世纪,为了应对快速变化的需求,缩短交付周期,“敏捷开发”应运而生。 二、敏捷宣言 个体和交互
  • Agile Model Driven Development (AMDD): The Key to Scaling...敏捷模型驱动开发(AMDD):攀登敏捷软件开发的关键   Table of Contents 目录 Overview 概述Envisioning 展望 Initial agile requirements mod
  • 什么是敏捷开发?

    2011-08-15 11:05:57
    [quote]简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。[/quote] 最近一段时间以来...
1 2 3 4 5 ... 20
收藏数 6,573
精华内容 2,629
关键字:

敏捷开发采取的模型