文章目录
- 序
- 1.什么是敏捷开发
- 1.1现状
- 1.2 敏捷开发带给我们什么
- 2.敏捷开发的架构图
- 2.1 几个概念
- 2.2 架构分析
- 框架实现
序
说起敏捷开发,大家或多或少会有些印象。而在android上的敏捷开发可能还并未普及。博主将与大家共同讨论一起交流android上的敏捷开发、框架搭建等知识。
本博将通过 讲解敏捷开发概念->敏捷开发架构思想->开发环境搭建->项目源码敏捷开发构建、拆分 等逐步带您走进android敏捷开发的世界。
学敏捷开发,开启 架构师之路…(夸张了呵呵,其实没有,这是基础)
首先让我们了解一下什么是敏捷开发。
1.什么是敏捷开发
简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
1.1现状
博主认为其核心是:原子+稳定+复用=敏捷开发。拿实际项目来说,稍大一点的项目可能涉及到多种功能与多种发行版本。
以下可能是您的现状:
- 所有源码在一个工程,臃肿庞大,命名各异
- 每次都为分布在各地的工具方法而整篇的查找项目源码
- 为客户BT的需求一遍又一遍的拆分、整合那些固化功能
- 为新的产品开发copy旧的代码无限复制粘贴
- 在旧版本fix bug后呆呆的把变更一遍又一遍的在高版本上修复(也许还忘记修复)
- 浪费大量的时间在每次编译整个项目上(编译整体项目可能需要数分钟,而编译单模块也许只需要数十秒)
- com.xxx.xxx.A.java,这TM到底是那个功能的类(挨个问同事吧)
- 不知到如何提升自己
如果您有以上困扰,很好,因为春天很快就要到了,因为我们有敏捷开发。
1.2 敏捷开发带给我们什么
- 清晰框架结构
- 高度复用接口
- 灵活的模块组合
- 高速稳定的产品迭代
- UI与逻辑的解藕
- 低廉的维护成本
举例来说:
某网聊软件(可想像成微信)中功能包括
- 文字、语音通讯
- 联系人管理
- 朋友圈
- 摇一摇
- …
多个功能在项目中很容易分成多个模块来交给工程师实现,普通的工作方法我们不再赘述,试想一下,如果这每个功能看作一个模块,每个模块可独立运行并且可以被任意项目集成,那么,也许公司的音乐播放器项目加入朋友圈说不定也不错呢,而这一切只需要配置一些xml而已。
2.敏捷开发的架构图
纠错:图中Modle应为Module,由于引用的其他文章的图就没做修改。
2.1 几个概念
- Frame 整个项目的框架、组织者。里面并没有实际的代码,只是通过配置文件决定了项目需要哪几个模块
- Module 模块,项目的组成部分,通常表示单一或部分功能集合。
- Component 组件,包含Model的UI以及需求逻辑,在android敏捷开发中包含(Activity、Service、BroadCast Receiver、Provider)
- Lib lib库,为Component提供了具体的实现,封装了其需要的各种方法。
2.2 架构分析
- 从图中我们看到,首先Frame包通过配置文件决定项目的模块,这样来满足我们上话提到的各种需求,
- 此处的Module是我强加来的,其实Frame只需要依赖Component即可以构成项目,因为从依赖链看往往Component会依赖一个特定Lib,但是从逻辑看Component + Lib才完整。所以建议大家把Component + Lib想象成一个Model。
- 然后每一个模块又通常被分为独立的组件和Lib,这样的好处很明显,通常变化的只有组件,而Lib一但完成只需要维护其稳定即可,当项目界面需要大变化的或需要我们向三方提供此模块功能的时候可以直接提供此Lib,也就是我们说的SDK。
- 最后是我们项目积累封装好的各中jar包,例如图上提到的HTTP、FILE等工具类,可以直接被依赖进来,提高了复用率,我们还可以随时丰富其接口,供大家使用。