2019-07-14 15:33:51 qq_29924227 阅读数 94
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

什么是敏捷开发?

敏捷开发=迭代开发+增量开发
迭代开发:将一个大项目分解成多个小项目,每个小项目都有类似的生命周期。开发者首先发布一个简单的版本,然后再不断的增加功能或者进行改进,这个过程就是不断迭代的过程,每次迭代都有完整的生命周期(包括需求分析、设计、编码、测试、部署评估)。
增量开发:迭代开发只是将一个大项目分成多个小项目来完成,但是没有规定如何划分项目进行迭代。这时,就要按照增量开发的方式进行迭代,迭代的每个版本都会增加一个用户可以感知的完整功能,就是按照功能进行划分迭代。

敏捷开发的优点

  1. 及时交付:敏捷开发完成第一个版本就可以先进行交付,而不需要等到完成所有功能再进行交付
  2. 反应迅速,拥抱变化:当前市场需求变化很快,当需求发生变化的时候,敏捷开发可以及时的做出相应,进行改变。
  3. 80/20原则:根据增量开发,可以先完成具有80%价值的20%的功能。

什么是瀑布模式?

一种由需求文档驱动的开发模式,开发人员严格按照文档进行开发,瀑布开发模式分为几个阶段:
在这里插入图片描述

瀑布模式的缺点

  1. 需求隔离:每个开发人员只能接触到自己负责的阶段,对用户需求理解不高,开发人员像流水线上的工人。
  2. 变更代价大:正如这个开发模式的名字:瀑布 一样,如果开发过程中需求变更,代价极大。
  3. 束缚创造力:由于强调文档驱动,限制了开发人员的创造力
  4. 周期漫长
2019-10-25 11:01:17 janeqi1987 阅读数 22
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

敏捷开发

 

瀑布开发

 

很多支持敏捷的同学会说瀑布缺乏与业务的沟通和迭代次数,所以如果在项目的后期才发现要更改需求的话,则项目可能会失败或需要重新启动。这张图好像也解释了瀑布开发经常所面临的困境。

“瀑布”对“敏捷”的驳斥

敏捷本身不是项目管理框架,也不是“方法论”。它是一套与产品开发相关的原则和价值,特别是互联网产品经常会采用敏捷的方法来进行开发。但是,有一些基于敏捷原则的方法,这些方法是产品开发方法,而不是项目管理框架。

说到需求变更,瀑布也可以走需求变更,提变更申请,按照环节一步一步走,去规划工作量。虽然比敏捷是要慢一些,但是我整个流程是可靠的!为什么就说瀑布是死板的,不符合时代的呢?

似乎瀑布的做法也没有错误,我们何不按照这样的步骤,来完成我们的工作呢?这样的过程听起来是如此的可靠。看,我有明确的阶段;看,我有明确的审批;看,我有明确的变更流程。以瀑布模式进行开发的项目有这么多,已经证明了这是一个有效的实施方法,难道不是么?

另外被敏捷所诟病的瀑布项目经常失败通常是发生了非常严重的错误情况下才会产生。实际上只有在对项目的控制很差的情况下才会发生这种情况。瀑布型项目没有迭代和用户的多次反馈也是不正确的 - 很多项目可以通过产品原型图的方式和业务部门确认操作的流程,只是很多项目中并没有使用这种方法。

 

焦点碰撞

敏捷模式,两周一个迭代,每个迭代都能进行一定功能模块的交付,让用户更早的看到交付物,虽然只有部分,也可以让用户来提出自己的看法,产生变更的时候,开发人员也可以在下个迭代中进行修改,让用户进行再次的确认。

从这样看来,两者的碰撞就是在交付的及时性上与面对变更的成本上,所看到有极大的变化。瀑布在交付阶段比较靠后,交付的模块比较完整,在面对变更的时候,变更影响范围就比较大,变更的成本就极大。问题发现的阶段越靠后,解决问题所需要付出的成本就更高。这样,就体现出来了敏捷对瀑布在这样的情景下面的优势。

时间和成本,看起来就是敏捷和瀑布在选择时主要考虑的两个方面。未来能更好的指导未来的选择,下面还列出了更详细的敏捷和瀑布的优劣势。

I 敏捷开发的优势

开发的阶段性成果会在开发过程中尽早的进行审查,项目的风险会降低;

适用于需求不明确情况,因为需求不明确,所以需要在不断迭代的过程中来逐步理清需求。

灵活性较高,几乎可以在任何时间进行需求变更;

敏捷鼓励开发人员与业务用户之间进行多频次的沟通,业务用户的不合理需求以及开发人员的错误理解都会在这些频繁的沟通中进行不断审查和更新,

敏捷的协作通常要高得多,通常能开发出更高质量的产品;

适用于快速变化的项目,特别是面向前端业务人员的CRM项目更容易根据业务的变化而变化。

I 敏捷开发的劣势:

敏捷的概念接受度还不算太高,初次尝试可能不会非常成功;

最终交付的内容无法预测,预期和实际完成的内容经常会有很大差异;

敏捷需要高水平的协作以及开发人员和用户之间的定期沟通。 业务和IT人员在沟通前需要做大量的准备工作,但很多情况下业务的沟通时间无法保证;

当存在乙方供应商的情况,敏捷会面临更大的挑战性。 客户通常希望尽早了解他们的项目投入。 预估项目时间和成本难度较高;

在敏捷项目中,最大的问题可能是业务部门永远不希望有最终的截止时间。

I 瀑布开发的优势:

在管理良好的项目中,瀑布可以在早期提供交付的信心;

项目团队成员不需要在同一地点频繁沟通;

在需要大量的设计或分析的情况下瀑布是一种更合适的方法;

如果在基本产品开发之外存在许多接口和依赖关系,瀑布式项目会使用工具来建模和管理这些接口和依赖关系。

I 瀑布开发的劣势:

许多企业和业务人员确实不容易在前期定义清楚需求,早期计划中所依据的假设需求可能存在很大风险;

沟通的风险要高得多 - 特别是很多项目都是前期单向的沟通,后期项目和业务人员的预期差别很大;

瀑布项目的风险一般都很高,因为基于无效假设基础上的需求可能会让项目无限度扩大。 所以你会看到很多瀑布项目都出现成本超出预算或延迟的情况。

结论:

敏捷和瀑布的实施方法差别还是很大的,瀑布几乎可以应用于任何类型的项目,尤其是大型的项目。

敏捷方法今年来越来越受欢迎,尤其是当前SaaS软件当道,特别像Salesforce这样自带开发平台的SaaS产品可以非常容易的搭建初始原型并进行快速迭代,所以我们才会看到有越来越多的企业采用敏捷的方式来进行项目实施。总的来说敏捷并不能完全替代瀑布,它只是给了我们另外一种好的选择。

2019-02-28 17:43:55 weixin_44702197 阅读数 113
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

        敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。强调以人为本,专注于交付对客户有价值的软件。是一个用于开发和维持复杂产品的框架。主要还是以用户的需求进化为核心,采用迭代和循序渐进的方法进行软件开发。

        用通俗易懂的话来说就是客户交付给你一个大的项目。你们研究以后将其分为几个小的可独立运作的小项目分别完成。期间你会影响软件的使用。但是当你们已经完成了小项目的时候客户又提出这个东西不用了或者要变成另外一个东西,那么就需要快速的进行更改。保证快速完成。

敏捷开发的基本流程如下:

1、产品经理将整个项目做一个需求。

2、 召开产品会议,确定哪些需求是需要在第一个迭代中完成的。完成整个产品需要多久。

3、把迭代的功能需求写在纸条上贴在任务墙,让大家认领分配。

4、每天组织十五分钟左右的立会。总结昨天任务完成情况、领取今天任务。在任务墙上更改任务进程。

5、在迭代完成时开评审会议,向客户展示产品,听取客户意见。

6、完成后召开总结大会,总结得失。

 

谈起敏捷开发不得不提瀑布式开发。

 

传统的瀑布式开发一般流程如下:

1、需求分析

2、方案设计。

3、实施/编码

4、测试/评估

 

瀑布式开发流程如下:

1、概念阶段

2、需求阶段

3、开发实现

4、功能测试

5、系统测试

6、内部体验

7、产品发布

在这七个流程中需求阶段、开发实现及功能测试可看做一个敏捷迭代。

瀑布模式把每个环节都可以看做一个黑盒,每个员工只关注自己阶段的工作。这样做的好处是员工可以更加专注的做好自己的本职工作,坏处是沟通不到位,如果有员工离职后面就会很麻烦。同时前面出现的BUG远远大于后面BUG对软件的影响。而敏捷开发则不会出现,因为分为不同个迭代完成,所以可以随时根据客户的需求更改。BUG影响也相对较小。同时客户可以在一次迭代完成以后对产品做一次反馈,可以及时更改,客户满意度更高一些。瀑布式开发较适合相对稳定的大型开发,敏捷开发则更加灵活。

 

 

2018-09-03 15:56:36 tangweiee 阅读数 4515
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

                               敏捷开发和瀑布模型对比


               瀑布、迭代、螺旋、敏捷——在这里讨论的敏捷,都属于过程模型

 

2017-01-12 17:36:11 huadian417 阅读数 14243
  • Android开源项目实践之UI篇

    本课程主要展现了如何利用Android开源代码进行app的开发。例如: 1.异步网络请求(android-async-http); 2.百变圆形滚动条(ProgressWheel);3.滑动导航栏(PagerSlidingTabStrip);4.瀑布流与上拉刷新,下拉加载完美结合(PinterestLikeAdapterView)...

    21071 人正在学习 去看看 李忠义

一:敏捷式开发(极限编程思想的体现)
敏捷开发(AD:Agile Development )以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。
下图简单说明了敏捷开发的关键要素:

总图:

这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述
相关概念解释:AM:(敏捷建模)

二:瀑布式开发(传统开发模式)
瀑布式(WM:Waterfall Model)开发是一种老旧的,正在过时的计算机软件开发方法。最开始的软件行业普遍采用这种方法,但是这种方法套用自传统工业生产,不适应计算机软件开发的具体情况。
大体分为这几个阶段:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动。
这里写图片描述

个人体会:
楼主个人参与的系统为 工程项目管理系统,是施工企业的业务管理系统。施工企业业务非常复杂且多变化,想要一次性进行完整的调研几乎是不可能的,因此使用传统的瀑布开发模式会带来极大的工作量,延长项目周期。而采用敏捷式开发模式,可以与业主就业务系统及时反复的多次沟通,小版本多次迭代,更能保证项目执行的质量和进度。

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