移动端敏捷开发之实践

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

 

|传统的开发模式

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

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

    183210_BGvJ_269399.png

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

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

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

|敏捷开发

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

183611_yd7L_269399.png

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

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

 

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


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

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

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

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

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

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

 

技术可行性如何介入?

场景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接口返回假数据(服务端同学的压力偏大一些)。

敏捷开发总体流程概述

011552_U2DU_269399.png

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

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

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

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

012624_WNno_269399.png

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

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

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

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

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

212822_anN2_269399.png

Sprint周期(2~4周):

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

 

Sprint计划会议(Planning)

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

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

002157_XOn2_269399.png 

 

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

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

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

Sprint每日站会(Daily)

153049_bNck_269399.png190700_3eTV_269399.png

例会目的:

  • 提前发现问题
  • 进度,风险把控

例会内容:

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

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

2. 剩余的开发时间

  • 昨天做了什么?
  • 今天准备做什么?
  • 需要哪些同事配合或遇到什么困难?

例会注意事项:

  • 避免讨论具体问题,会议后私下讨论。
  • 时间最好为5~15分钟之内。

Sprint评审会议(Review)

相关开发人员在评审会议中向全体人员演示APP的功能。(这次可以当成验收)

网上有些文章是取消掉这个环节,还有的是经过评审会议 就发布de等等。

仁者见智吧,适合自己的才是最好的。

 

Sprint回顾会议(Retrospective)

回顾会议我们能说是复盘么?还只是总结会议?还是一场批斗大会?表彰大会?

研发完成后开回顾会议,每个成员都在会议中提出两点:

  • 做的好的地方
  • 不好的地方

这个过程走两轮,即每个成员都要提两点做得好和不好的地方。注意当一个成员提出自己的意见时,为了避免误变成批斗大会,其他成员不做任何的评论。

最后再总结如何改进等等。

|敏捷注意事项

 

| 敏捷例子

 

| 工具

  • https://lanhuapp.com 蓝湖

蓝湖对于程序员,设计师,产品能减少很多沟通成本.

  • https://www.apiview.com// 后台API文档
  • https://www.leangoo.com/ 敏捷开发 看板工具

|参考资料

敏捷开发概念

敏捷开发-实例1

SCRUM敏捷开发教程

如何在项目中实施敏捷开发scrum

从PM的角度聊聊敏捷开发

敏捷开发之Scrum扫盲篇

瀑布与敏捷的对比

没有敏捷工具如何做管理敏捷项目

敏捷革命

 

 

转载于:https://my.oschina.net/hailongqiu/blog/1583752

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移动端App开发技术路线通常包括以下几个方面: 1. 开发语言:Java、Kotlin、Swift、Objective-C是目前主流的移动端开发语言。Java和Kotlin主要用于Android开发,Swift和Objective-C主要用于iOS开发。 2. 开发工具:Android Studio是用于Android开发的主要集成开发环境(IDE),提供了丰富的开发工具和功能。对于iOS开发,Xcode是官方推荐的开发工具,提供了界面设计、代码编辑、调试等功能。 3. 框架和库:移动端开发常用的框架和库有很多,例如: - Android开发常用的框架和库有:Android Jetpack、Retrofit、Glide、OkHttp等。 - iOS开发常用的框架和库有:UIKit、Alamofire、Kingfisher、AFNetworking等。 4. 数据存储:移动端App通常需要与服务器进行数据交互,常用的数据存储方式有: - 使用RESTful API与服务器进行数据交互。 - 使用本地数据库存储数据,如SQLite、Realm等。 5. 用户界面设计:移动端App的用户界面设计需要考虑用户体验和界面美观,常用的设计工具有: - Sketch:用于设计iOS界面。 - Adobe XD:用于设计Android界面。 6. 版本控制:使用版本控制工具(如Git)进行代码管理和团队协作。 7. 测试和调试:移动端App的测试和调试是开发过程重要的一环,常用的测试工具有: - Android开发的Android Debug Bridge(ADB)和Android Emulator。 - iOS开发的模拟器和真机调试。 8. 发布和分发:发布和分发App需要遵循各个平台的规定,例如: - Android开发者需要将App打包成APK文件,并上传到Google Play Store进行发布。 - iOS开发者需要将App打包成IPA文件,并通过App Store Connect进行发布。 总结起来,移动端App开发技术路线包括选择开发语言、使用开发工具、掌握框架和库、数据存储、用户界面设计、版本控制、测试和调试、发布和分发等方面。根据具体的需求和平台选择相应的技术和工具进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值