天下武功无坚不破,唯快不破
天下任何武功,都有自己自己的不足,防守的再好,也有破解方法,只要意识、攻、守、应机变化等速度远远高于对方,势必游刃有余!往低处说,就是快速的进攻,让对方疲于招架,无还手之力,逼其露出破绽,进而胜之,往高处说,就是对方为来得及反应,就被击中,所谓拳打人不知,乃一击必杀之意。在武术当中以咏春拳、截拳道等很多拳法都是这个理念,事实证明,确实有一定的道理!
如果在软件开发流程中把 实现、测试、维护 环节实现自动化,将会大大提高开发效率,并且减少由于人为原因的错误。从实现真正的敏捷式开发
1.持续集成
软件开发过程中,从coding到上线,免不了要经历coding->编译->运行->打包->安装到目标机器这一系列环节,如果每个环节都要人为操作,效率肯定很低,更何况像苹果这类设备,如果没有证书,打包好的软件包也不能装到手机上。如果在开发过程中开发人员只负责开发和bug修复,当需要打包测试时,中间环节通过机器实现,将会节省开发者时间,从而提高效率。持续集成就是实现这一想法的概念,让开发者更专注于代码实现。
常用的持续集成工具:
Jenkins CI
Travis CI
Hudson CI
Circle CI
这里介绍一篇《IOS使用Jenkins进行持续集成》
2.持续部署
如果你的工程实现了组件化,那么就可以用cocoapods来管理项目中的各个组件,来实现持续化部署。
随着公司的发展,有些老的模块也许已经不再需要,而有些新的业务需要向主工程中添加,每个开发者都在操作主工程也许会对主工程造成无法预料的错误。如果实现了组件化,不同的开发者只负责自己的模块,等自己的模块通过测试后再通过pods集成到主工程中,就如U盘用时插上不用拔掉,而不影响整个系统。
在团队人员众多时,实现工程的组件化,将会减少各个模块的依赖,并且减少一些代码提交时的错误。
为了提高效率,各个模块也可以直接编译成静态库,从而减少主工程的编译时间
IOS项目管理软件我用的是cocoapods,功能和java中maven一样
如果不想公开自己的源代码,可以建自己私有的仓库
这里介绍一篇《ios项目-利用Pod进行组件化开发》
3.持续交付
当程序开发完成也已经通过测试,需要上传到AppStore,我们可以通过xcode打包然后上传,也可以用Application loader 把打好的ipa包直接拖进去,点击下一步,再上传到AppStore,这种方法虽然可行,但比较繁琐,试想一下有没有一个工具能把ipa文件直接发送的itunsconnect上去等待审核,于是就有了Fastlane的出现,用于把打好的文件包交付给应用应用市场。
这里介绍一篇《IOS-持续交付》
工作流:
最后总结:
小步快跑 快速迭代 能用机器代替人的工作就用机器