您的位置:首页 > 业界新闻

持续化思考之:项目迭代式开发,是选择垂直开发好还是水平开发?

2012-10-17 16:39 519 查看
                                                                                                                【本Blog均为xu1ji原创,仅作为学习总结之用。如转载,请保留此声明并注明本页URL】
  

                                                                
垂直开发   Vs.  水平开发?(欢迎评论)

问题背景描述:

      我们现在在做一个相对大型的互联网应用,搜索引擎相关。

      采用敏捷+迭代的开发方式,开发流程也还算比较规范(svn+jra+持续部署)。

       产品在做的时候,也是一边思考新的功能,一边开发,一边测试和提新需求,所以整个开发基本都是在不断的提新需求,不断改bug,不断修正的过程中。根据大的功能模块,将产品发布分为一期,二期,三期,然后逐步完成,直到把它做成一个很成熟,安全性,健壮性,用户体验都很好的产品。

      然后我这也让我思考:项目推进过程中,比较核心的一个问题:项目应该水平推进还是垂直推进?

      水平推进:在产品定义完备的情况下,先把后台服务全部搭建完成,测试通过,优化工作全部完成。再做前台的全部功能,最后做优化和用户体验,做每个功能模块都考虑清楚和别的模块的接口,因为做每一个部分都是从全局出发的。

      垂直推进:先做一个简化的系统版本,打通数据流,很多功能暂时不考虑。然后把前台界面,用户体验做到极致。然后加入若干功能,做优化和用户体验,再依次加入新的功能。(我们现在的方式就属于这种..)

持续思考日志:

  

  写于2012-10-17:

    作为一个刚刚毕业的我来说,我觉得这个问题很难理解。

    尽管我知道,垂直推进跟符合“软件工程”的思想,能够尽快看到产品,有效规避风险,采用滚雪球的方式开发能够使产品稳定迭代的向前推进。但是水平搜索更符合我觉得理想的开发过程:

            定义所有功能模块-->定义接口与通信方式->选择算法-->开发测试。

     这样所有的代码都是基于全局思考的,都是有效而且完备的。不用担心现在做的将来会被反复改写、对其他模块考虑不充分甚至因为需求直接删掉。

   

总结一下,垂直迭代的优缺点有:

   1. 优    尽早看到产品。这个对于外包类项目,尤其是那些乙方完全不懂技术的来讲,尤其重要。

   2. 优    尽早做界面,可以有更充分的交互测试,也可以尽早为后台程序提供更好的修改参考。

   3. 缺    垂直迭代往往伴随着产品定义不充分或者不明确,这就会导致每个模块处理的都是局部问题,没有做全局考虑(尤其是一些全局功能:比如权限控制等),只见树木不见森林的开发是很要命的,将会导致大量模块间接口的bug,系统规模慢慢增长的时候,系统架构会接受更大的挑战。

   4.  缺   如果一开始,开发人员没有一个全局的认识,包括功能上的,模块接口上的,模块通信上的等,就很难在开放工程中,做到“心中有数”,做到明确知道系统的来龙去脉,更不要说把握系统的思想了。

   水平迭代的优缺点:

   1. 优    系统架构清晰,前期会把所有模块接口,功能定义清晰。

   2. 优    步步为营,如果后台尘埃落定,前台就不用考虑后台的事情,每一阶段只考虑一个层面的问题,一切尽在把控中。

   3  缺    产品,界面出现较晚,做到后期,出现问题修改代价比较大。

        

    深入一步看,关键在于

              产品前期定义是核心,这也是垂直开发的弊端,如能前期充分定义和思考,垂直会更具有优势。

    

  写于2012-12-15:

    就写一句:

    没有前期的充分设计,没有对产品充分的理解和信心,我甚至不知道今天做的有什么用,会不会马上就被删掉,六个字:

    心里完全没底。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息