专栏名称: 蚂蚁金服ProtoTeam
数据前端团队
目录
相关文章推荐
前端之巅  ·  Dagger:我们用 GO 和 ... ·  昨天  
前端早读课  ·  【第3458期】React ... ·  2 天前  
前端早读课  ·  【第3457期】揭秘!如何将动效描述自动转化 ... ·  3 天前  
51好读  ›  专栏  ›  蚂蚁金服ProtoTeam

移动端敏捷开发之实践

蚂蚁金服ProtoTeam  · 掘金  · 前端  · 2017-12-08 03:39

正文

由于本人水平有限,还往和多多大家交流,指出本文可以提升的地方,谢谢.

| 传统的开发模式

  • 瀑布模型
  • 增量模型
  • 快速原型模型
  • 螺旋模型
  • 喷泉模型
  • ... ...

每种开发模型都各有各的好处,应用的场景也不一样,我无法去评价或者诋毁某种开发模式,因为我不够格。

在互联网公司,需要进行快速迭代,用户的需求可能每天或者每周,每个月都在变。

冗长的开发周期敌不过用户的需求变化,所以敏捷开发 就诞生了,不能说敏捷开发十全十美,它只是一套方法论而已,需要改进去适应。

真正的竞争对手不是来自其它公司,而是用户不断变化的需求.

| 敏捷开发

一句话概括敏捷开发——"将整个项目周期分成多个敏捷开发周期。”

测试?后台?产品?设计?开发?

全部东西拆分成多个迭代后,每次迭代后出来的东西是看的见,摸得着的,也可以快速得到反馈,而不是等到全部东西出来。

敏捷开发流程的一些疑问与困惑


测试如何早期介入?测试用例评审会什么时候开?

开发与测试本来就是一个团队的。

沟通的效率高了,尤其是开发和测试,因为很多问题开发和测试可以先沟通,这样很多问题也就可以提前解决了。

测试要更早的介入开发中,可以尝试用测试驱动的方法,这一点尤其对自动化来说更重要,但要知道,并不是每个开发任务都能这么做,这个主要是测试要多和开发的人进行沟通。

测试用例评审无论是敏捷开发还是传统开发都会遇到,这个感觉很尴尬,如果是全部都来,感觉不太合理,很浪费时间.(需要不断的实践,找出合适自己的方法)

当然, 评审 也可以变通一下,如果时间允许,可以找个会议室一起认真的过一下,如果时间不允许,可以发送給功能相关人员,让他们提供意见即可,或者测试人员内部简单过一下也可以,不要拘于形式,以项目实际情况做适宜的变通。

技术可行性如何介入?

场景1:技术可行么,不会开发到一半写不下去了?技术方案要不要写?如何去技术选型?要不要去评估,又要浪费多少时间?

场景2:等到原型或者需求文档完全出来,然后在会议上进行各种讨论,很大程度上浪费了大家的时间,然后反复如此?时间都浪费在开会上了,效率低下。(可怕的是这个会议只是需求评审,并不关注可行性,又或者 需求评审,技术可行性一起来~!~!~!~!)

该这么办?

在早期产品 整理需求,用户数据,调研,竞品分析,进行产品 原型制作以及产品需求文档的过程中,

该项目的负责人或主要开发人员 就应该协助产品经理了解 产品的开发难度以及可行性,逻辑错误 等等,让产品做好原型或需求文档的调整。

移动端开发与后台开发如何并行开发,而不用等待?

场景:我们时常会遇到这种情况,后台有部分接口没有开发完毕,你需要等待他完成,你才能进行,拖延进度可不是一天,两天哈。

下面介绍了三种方式 ServiceMock 和 网络请求三件套(retrofit + okhttp + rxjava),后台直接暴力返回假数据:

  • ServiceMock服务模拟,本公司或第三方合作,需提前约定接口,传入的参数,返回的JSON。(最后移动端使用返回假数据)
// data.json 返回JSON数据. 
// git地址:https://github.com/dreamhead/moco
// http://blog.csdn.net/shensky711/article/details/52770686
// java -jar moco-runner-0.11.1-standalone.jar http -p 12345 -c data.json
[{ 
    "request" : { "uri" : "/hello" }, 
    "response" : {
        "json" : {
            "code": 1,
            "message": "foo"
        } 
    }
}]
  • android retrofit + okhttp + rxjava,使用 Interceptor 拦截器也是可以返回假数据。

// 拦截器. (除了用作单元测试,还可以用作缓存处理,与服务端的并行开发)
public class MockInterceptor implements Interceptor {

    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        // 根据 path 的请求路径,返回相应的数据.
        // HttpUrl uri = chain.request().url();
        // String path = uri.url().getPath();
        String responseString = ""; // 返回相应的数据.

        Response response = new Response.Builder()
                .code(200)
                .message(responseString)
                .request(chain.request())
                .protocol(Protocol.HTTP_1_0)
                .body(ResponseBody.create(MediaType.parse("application/json"), responseString.getBytes()))
                .addHeader("content-type", "application/json")
                .build();
        return response;
    }
... ...
}
  • 由服务端API接口返回假数据(服务端同学的压力偏大一些)。

敏捷开发总体流程概述

1. 开一次 原型的需求评审,是为了让 测试,产品,开发,等等达成共识,这次会议很重要.(按照我们公司实际的情况,这种会议要开几轮,看大家情况而定吧)

2. 产品与UE,UI一起商讨界面的细节,比如跳转动画等等.(也可以开个会议或者私下沟通,不拘泥于形式)

3. 测试用例也不一定需要开会,主要看时间急不急,不拘泥于形式嘛.

4. 设计师根据原型图完成设计稿.(这里会影响 sprint backlog的进度)

5. 产品 排序 Product Backlog 的优先级 .

6. 计划会议 Sprint 中能够领取多少个 Backlog ,并估算时间。

7. 然后就是开发,每日例会,修BUG.

8. 迭代的最后一天,还有两个环节要做:成果展示(评审会议 review)和 团队的内部总结(回顾会议),也有可能就发布了。

敏捷开发流程Sprint中的4个会议

Sprint周期(2~4周):

  • 1~2天计划会议.
  • 1~3周的开发.
  • 2~3天的测试,修复BUG.
  • 1天的评审会议,回顾会议.

Sprint计划会议(Planning)

Sprint 计划会议非常关键,应该算是 Scrum中最重要的活动(这当然是我的主观意见)。

要是它执行的不好,整个 sprint 甚至都会被毁掉。

Sprint计划会议 (1~2天),将领取的Backlog分解成一个个实际的开发任务,并评估开发时间。

  • 对于需要使用的新技术,要估算学习和调研的时间。
  • 我们需要编写什么样的接口?
  • 我们需要创建什么样的架构?
  • 我们需要更新哪些表?
  • 我们需要更新或是编写哪些组件?
  • 根据统计,每个程序员每天的有效工作时间是5个小时左右,其他时间都被沟通,喝水,休息,上洗手间等占据,所以如果某个任务估算超过5个小时,那就代表了这个任务完成需要超过一天的时间。
  • 对于开发任务,估算尽可能的细,一般来说,每个任务的估算不应该超过5个小时,如果超过5个小时,就应该再把这个任务细分。只有尽可能细的估算任务,总的时间是大概精确地,因为估算时间是一个正态分布,有的任务估算的时间偏大了,有的时间任务估算的时间偏小了,估算越细,总体下来估算还是准确了。

最后,根据产品经理的优先级和开发人员的估算时间,确定最终的开发任务和优先级,即完成Sprint backlog。

Sprint每日站会(Daily)

例会目的:

  • 提前发现问题
  • 进度

例会内容:

每日例会前,开发人员整理各自的任务列表,包括

1. 昨天完成的任务,每个任务使用了多少时间,没完成的任务估算还要多少时间。







请到「今天看啥」查看全文