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

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

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

                               敏捷开发和瀑布模型对比


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

 

2014-07-23 09:52:23 cczk8138 阅读数 588
  • Android开源项目实践之UI篇

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

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



敏捷开发是一种以用户的需求进化为核心、迭代、循序渐进的开发方法。在敏捷开发中,把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成


瀑布模型是一个项目开发架构,一般分成几个阶段: 可行性研究\需求分析\设计\编码\测试\运行维护,每个阶段都会产生循环反馈






2014-03-29 20:10:02 xiaoxian8023 阅读数 6523
  • Android开源项目实践之UI篇

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

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

   在去年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更专业,也更方便。


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


2019-07-03 21:13:48 skyejy 阅读数 109
  • Android开源项目实践之UI篇

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

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

 

 

 

敏捷开发

瀑布模型

 

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

软件生命周期划分为制定计划、需求分析软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

key word

“快”、迭代

文档驱动

适用场景

需求不明确 期限紧迫

需求明确 小系统开发项目

开发特点

适应变化,注重反馈,灵活性强

注重各个流程,一步一步,水到渠成

 

2019-04-08 20:18:30 dwayne_blog 阅读数 1049
  • Android开源项目实践之UI篇

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

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

在做软件开发时,程序员们肯定接触过各式各样的软件开发模型,例如:写了再改模型、瀑布模型、增量模型等。其实,很多开发模型是在瀑布模型基础上衍生出来的。

然而,了解“V”模式开发模型的程序员应该不多。“V”模式开发模型是汽车电子行业在瀑布模型的基础上做了改进,以符合汽车ECU开发需要的模型。

今天来讲讲瀑布模型与“V”模式开发模型的异同。

瀑布模型

瀑布模型产生的历史背景是20世界70年代出现的软件危机,该模型将软件开发分为若干阶段,由于其类似于瀑布从上到下的过程,故称其为“瀑布模型”。

瀑布模型
从图中可以看出,瀑布模型分为:项目提出及规划—需求分析—软件设计—软件编码实现—软件测试—上线运行等6个阶段。这几个阶段相互递进,也就是说本阶段完成后才能进行下一阶段的工作。

因此,瀑布模型在实践过程中具有以下局限性:

  • 试图将各步骤分离,然而这样严格的分离无法实现

  • 回溯修改几乎不可能,但软件开发需要时间回溯

  • 最终产品直到最后一个步骤才出现,而软件客户无法在早期直到软件原型,可能会引发软件功能与客户需求不匹配的情况

在移动互联网时代,快速抢占市场才是王道,如果企业采用瀑布模型开发软件,根本就无法存活。瀑布模型的上述局限性导致其已经无法完全适用于互联网行业的发展。

在我看来,瀑布模型不太适用于开发针对用户也就是针对“人”的软件。

然而,作为软件工程最先出现的开发模型,瀑布模型还有适用范围吗?当然有,比如汽车电子行业所采用的“V”模式开发流程便是遵循瀑布模型进行软件开发。

"V"模式开发模型

“V”模式开发模型是在瀑布模型的基础上发展而来的,那么什么是“V”模式呢?

“V”模式

该开发模型由于形似字母“V”而得名,但如果只看“V”的左边便能够看出是瀑布模型。因此,“V”模式开发模型是将瀑布模型进一步细化。

解释一下为何用"V"模型来表示,该模型开发流程仍是:系统需求—软件需求—软件设计—软件编码—单元测试—软件测试—系统测试—实车测试等几个步骤。

但该模型的特点是:

  • 系统需求确定后,系统测试工程师便开始写系统测试用例;
  • 软件需求确定后,软件测试工程师便开始写软件测试用例;
  • 软件设计确定后,软件工程师便开始写单元测试;
  • 最底层才是软件编码的实现。

也即是说,在软件编码完成前,系统测试用例、软件测试用例以及单元测试用例已经完成。

“V”模式开发流程将代码实现放在最后一步,即使客户需求发生变更也能很快做出修改,相比瀑布模型减少了回溯的成本和时间,提高了开发效率、降低了开发成本。

随着技术的更新,我认为汽车行业也不会严格采用“V”模型,毕竟现在很多车辆已经具备OTA工能。但涉及汽车安全方面的需求,可能还是需要遵循瀑布模型,毕竟车企会在保证车辆安全的前提下,才会将软件装车。

总结

不论是何种开发模型,其最终目的均是为了保证软件的开发质量。至于项目中使用何种模型,这需要结合软件特点以及所在行业共同确定。

ps: 欢迎关注我的公众号[酷酷的coder],分享转行菜鸟程序员成长过程汇总的烦恼和反思.
酷酷的coder

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