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

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

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

(转自:http://blog.csdn.net/xiaoxian8023/article/details/8883791)

今天跟大家分享的是“敏捷开发、快速迭代”。我们大都采用的是“瀑布开发模式”,有了问题,就得返工,虽然最终的产品会比较齐全完善,但是开发周期太长,开发人员会产生排斥,甚至厌恶的心理。经过YH系统的开发,也且生体会到了这一弊端。

有问题就要去解决它!于是我想到了“敏捷开发”。借鉴敏捷开发模式,来改善软件开发过程,提高项目的开发效率。

要想借鉴,首先得弄懂以下3个问题。

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

我们可以这样认为,敏捷开发是一种面临迅速变化的需求快速开发的能力。要明确几点:
敏捷不仅仅是一个项目快速完成、而是对整个产品领域需求的高效管理;
敏捷不仅仅是简单的快,而是短周期的不断改进、提高和调整;
敏捷不仅仅是一个版本只做几个功能,而是突出重点、果断放弃当前的非重点;
敏捷不仅仅是随时增加需求,而是每个迭代周期对需求的重新审核和排序。

2.如何进行敏捷开发?
敏捷开发的体系建设主要有如下六个方面:
1、组织建设
      也就是团队建设,建立以产品经理为主导,包含产品、设计、前后台开发和测试的team,快速进行产品迭代开发;扁平化的团队管理,大家都有共同目标,更有成就感;

2、敏捷制度
      要找准适合自身的敏捷开发方式,主要是制定一个完善的效率高的设计、开发、测试、上线流程,制定固定的迭代周期,让用户更有期待;

3、需求收集
      这个任何方式下都需要有,需求一定要有交互稿,评审通过后,一定要确定功能需求列表、责任人、工作量、责任人等;

4、工具建设
      是指能够快速完成某项事情的辅助工具,比如开发环境的一键安装,各种底层的日志、监控等平台,发布、打包工具等;

5、系统架构
      略为超前架构设计:支持良好的扩容性和可维护性;组件化基础功能模块:代码耦合度低,模块间的依赖性小;插件化业务模块:降低营销活动与业务耦合度,自升级、自维护;客户端预埋逻辑;技术预研等等;

6、数据运营与灰度发布
      点击率分析、用户路径分析、渠道选择、渠道升级控制等等。

有幸拾得某位牛人的敏捷开发经验,再结合自己的理解,一起拿出来与大家分享一下:
1 、 重点明确,及时调整。
      通过分析需求的紧急性和重要性,做出优先级的判定,优先级从1排到10,没有重复;
      迭代中严格按照优先级顺序开发,即使最后时间不够,也能保证最需要的功能开发完成;
      每次迭代前重新调整需求的重要性,及时加入重要的业务需求和用户需求,将重要性不高的需求往后调整。

2、倾听用户的声音、相信用户的直觉。
      在迭代中充分关注线上版本用户的反馈,并且主动联系用户了解困扰,在当个迭代或下个迭代快速优化;通过对用户反馈的及时响应获得用户的认可和口碑。
      这里就提到一个名叫“AB test”的开发模式,一个问题有A、B两种解决方案,不知道哪个更符合用户的需求,那么就让用户去选择,根据用户的反馈去迅速调整。
      有兴趣的话,可以看看这个视频,是我在找资料时看到的,里面讲到了这个问题,即小米MIUI产品经理许斐演讲的“快速迭代的互联网开发模式 ”。

3、勇于创新、小步快跑。
      在迭代中勇于创新,快速实现创新想法,并在后续的迭代中不断优化。
      一直远离媒体视线的腾讯CEO马化腾,在“合作伙伴大会一周年”的活动上,也给合作伙伴和同行们“小步快跑,快速迭代”的建议,被赋予“一直在模仿,从未被超越”称号的腾讯开发团队,其实创新也是国内最多的。

4、持续不断地发现问题,解决问题。
      通过每天的版本发布来检验团队在每日立会上做出的承诺;
      测试和验证功能的开发程度;
      对于功能的实现第一时间给出反馈,并能快速调整,而不会像瀑布式等到开发末期才发现实现上的问题。

5、持续提升整个团队的产品能力。
      专门的团队面向一个产品领域;
      持续优化用户体验和产品流程;
      通过产品迭代的心跳保持产品团队的用户和市场敏感度;
      提升产品经理的产品感觉、提高技术团队的产品意识;
      团队伴随业务而成长,获得更高的成就感。

更多具体的实施和经验分享,可以参考“项目管理专栏”。

说了这么多,归结起来就是,产品通过不断的获取用户新需求,不断的更新迭代而愈加成熟。而快速迭代,则能提升团队的市场竞争力,从而快速占领市场。
看过一幅图片:快速迭代,越变越美。那么如何快速迭代呢?

3.如何快速迭代
其实这个问题已经在第二个问题中回答过了,这里再单拿出来说,是为了强调一下。
现在是互联网的时代,互联网产品的更新速度可谓是日新月异。互联网的开发模式也是主要围绕“快速迭代”的主题来开发产品的 在飞速发展的互联网行业里,产品是以用户为导向在随时演进的。因此,在推出一个产品之后要迅速收集用户需求进行产品的迭代——在演进的过程中注入用户需求的基因,完成快速的升级换代,裂变成长,才能让你的用户体验保持在最高水平。不要闭门造车以图一步到位,否则你的研发速度永远也赶不上需求的变化。

可能我们做的不是互联网的项目,但是如果是大项目,依旧推荐使用敏捷开发。分级需求,快速迭代产品。让用户能在短时间内用户用上你的产品,短时间内使用到新功能。

采用“短周期迭代法”,可以压缩项目开发实施周期,减少项目风险,简化管理,提高各个环节达成率,有效推进项目建设。

快速迭代,版本更新快,所以要考虑降低项目风险,确保正确的方向。

敏捷开发能够缩短项目的反馈周期,因其将项目分成了若干个迭代周期,每个迭代周期结束都能立即反馈。且通过不断的沟通,还能减少理解上的偏差,配合反馈,减少误解,从而降低修正错误的代价。且每个迭代周期的结束都能接受验证,从而能快速的适应变化,及时的适应新的需求,保证产品的正确性。

那么迭代周期设定为多少合适呢,“小步快跑、快速迭代”,当然系统大小也会影响到迭代周期,所以把迭代周期一般设置为1-6周为佳。

曾经跟QQ安全管家的一个开发人员聊过天,得知QQ安全管家是一星期一个beta版本,一月一个正式版。小米的MIUI更新周期,每天都有更新给荣誉开发组,每周都更新ROM包,提供给用户下载。百度每天都会有上百次更新升级上线,网页搜索的结果页每一天都有几十个等待测试上线的升级项目。可见快速迭代是多么许多公司都推荐的一种开发模式。

还有一点要注意,快速迭代,不是说一定要做好了,才能上线,半成品也能上线。

在没有上线之前,你怎么知道哪好那不好。所以半成品也是可以出门的,一定不要吝惜在家,丑媳妇才需要尽早见公婆。尽早的让用户去评判你的想法,你的设计是否可以赢得用户的喜爱。快速发出,紧盯用户反馈。百度完成了第一版的搜索引擎,也是让用户去做的选择。用百度CEO李彦宏(Robin)的话来说“你怎么知道如何把这个产品设计成最好的呢?只有让用户尽快去用它。既然大家对这版产品有信心,在基本的产品功能上我们有竞争优势,就应该抓住时机尽快将产品推向市场,真正完善它的人将是用户。他们会告诉你喜欢哪里不喜欢哪里,知道了他们的想法,我们就迅速改,改了一百次之后,肯定就是一个非常好的产品了。”

简单地分享了一下对敏捷开发,快速迭代的理解。这里再给大家一个连接,51CTO的《专题:初探敏捷开发》,供大家参阅。

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

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

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

一、定义:

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

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

二、区别:

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

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

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

三、联系:

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

2.实际应用中的联系

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

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

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





2014-01-05 11:55:54 iteye_11664 阅读数 98
  • C语言程序设计--进阶篇教学视频

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

    40739 人正在学习 去看看 贺利坚
[color=red][b]http://www.mypm.net/articles/show_article_content.asp?articleID=24211[/b][/color]
本人从事IT业七个年头。在这七年中,我做过很多的软件开发项目,经历了许多不同的项目组,在不同的项目中从事不同的角色,每个项目组根据项目类型的不同都有各自一套软件开发体系。最近两年,本人主要从事软件开发的管理工作。在工作中,不断的摸索与实践,并不断的学习和总结。下面我将谈到的是:软件开发,将敏捷开发和迭代开发相结合的好处。

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

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

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

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

  1、降低产品开发风险

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

  2、持续的测试和集成

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

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

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

  4、得到早期用户反馈项目管理论坛

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

  5、提高复用性(重用性)blog.mypm.net

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

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

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

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

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

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

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

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

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

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

团队最近在进行传统开发向敏捷开发的过渡,谈谈我对敏捷开发的认识。

1、敏捷开发定义

敏捷开发的定义:其实敏捷开发就是以用户需求为导向,需求进化为核心,采用迭代、逐步完善的方式进行软件开发,其中的核心思想就是用户需求的进化与迭代并逐步完善,前者保证我们所做的项目开发对于用户是有意义的(包括终端用户、产品、领导者、开发人员、运维人员等提出的合理需求),后者保证了开发的有序性,并在一定的周期内产出成果,并不断优化。

另外,敏捷开发只是一种开发思想,其具体的实现方法有很多,在实际的开发过程中经常用到的就是Scrum迭代。下面说一下什么是Scrum迭代。

2、Scrum迭代定义

Scrum迭代的定义:Scrum是一个敏捷开发框架,是一个增量的、迭代的开发过程。在这个框架中整个开发周期包括若干个小的迭代周期,每个小的迭代周期成为一个Spring,每个Spring建议长度为2到4周。

在Scrum中,使用Product Backlog来管理产品或项目的需求,Product Backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为User Story.

3、Scrum迭代在敏捷开发方法中的应用

Scrum的开发团队总是先开发对客户价值较高的需求,在需求分析会议上通过分析、讨论和估算得到需要开发的需求列表,在每个迭代结束时,Scrum团队将交付潜在可交付的产品增量。

另外Scrum迭代式软件开发方法,包含SM(项目经理)、PO(产品经理)、TEAM(开发人员)。职责分工如下:SM-维护团队的稳定性确保其不受外界干扰,PO-需求的整理、优先级排序、内部验收等,TEAM-整个团队的开发人员,主要负责研发与测试。

Scrum的开发方法主张一切从简,少文档、少会议、多沟通;但Scrum有几个必要的会议是不能省略的:1、项目启动会(需求评审、用时评估、故事分配、任务拆分、承诺完成时间)2、每日站会(昨天完成任务,今日计划完成任务,任务进度与困难)3、评审会(团队迭代周期成功的展示及验收)4、经验总结会(对迭代过程中优缺点,改进方法等)

4、更多精彩内容欢迎关注微信公众号

2011-10-27 08:58:52 VipWangJian 阅读数 91
  • C语言程序设计--进阶篇教学视频

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

    40739 人正在学习 去看看 贺利坚
迭代评估会议。

对本次迭代做一个评估和总结,及时吸取经验教训,同时增强团队信心和提高团队效率。

迭代回顾会议。

通常是在迭代结束时侯,召集项目团队成员,每人发不同颜色的几种便签纸(比如红、

黄、绿),分别独立写下本次迭代做得好的,存在的问题,改进的建议,然后归类汇总每个人

的意见,通过全体成员投票选择最需要下个迭代改进的几个点,并在下个迭代中落实,从而达

到改进的目的。

同传统的迭代总结不一样,迭代回顾会议更多的是全体成员都参与发表自己的看法,寻找改

进,而传统的阶段总结会议更象是一个总结报告会。

RCA根因分析(可选)。

建议将SDV测试发现的问题做一次RCA分析,还应该考虑RCA和遗留问题如何在后续迭代开

发中改进和避免。

敏捷开发 迭代流程

阅读数 7478

敏捷开发 迭代需求

阅读数 4275

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