harmony:进入 Harmony 世界 第 4 部分: 类库开发最佳实战

  本文较详细地介绍了 Harmony 项目类库(API库)开发过程当中经验从架构设计和软件Software工程角度介绍了类库开发过程当中积累类库模块划分、测试优先开发模式、结对编程、代码审核等等最佳实战

  类库模块划分

  类库模块划分是 Harmony 项目类库总体设计上主要特点通过将庞大 J2SE 类库划分为若干个相对独立而且小规模功能模块Harmony 开发者简化了类库实现过程降低了开发类库风险类库模块划分原则和具体划分方式是项目进行和结构设计实战当中不断整理总结和归纳出来

  Harmony 模块化背景和目标

  实现个完整兼容开源 J2SE这是种很棒开创性想法但它实现有着相当难度有很多问题需要注意开源软件Software开发流程具有自由性和不确定性通常情况是来自世界各地开发者个组织协调下分工合作不定期提交些功能模块然后集成到个大平台产品当中这样开发方式是开源软件Software固有特征但是对于 J2SE 这样庞大体系这样开发模式会增加产品风险为了减小风险便于平台升级和维护就要充分考虑以下问题:合理划分平台定义好模块的间接口以及降低耦合性整理总结来说有以下几个目标:

  符合 J2SE 基本结构   和现有 J2SE 实现功能上兼容同时在基本组件方面也要做到如 JVM、类库、JIT 组件等等大规模组件必须对应这样可以使 Java 类库开发工作易于管理开源社区参和者可以集中开发他擅长模块

  独立开发   为了开发便利和风险降低平台模块必须实现独立开发各个模块的间尽量减少耦合这样才可以发挥开源项目优势避免其缺陷

  模块替换   在 Java 开源世界里随时都有很多开源软件Software出现如果出现了某些优秀开源 J2SE 组件应该允许它们方便替换进来;另外如果发现本身某个模块实现上不足也可以方便替换出去而不影响整个平台

  共享组件   除开提供完整 J2SE 实现这个项目另外个有价值的处就是在于为开源社区提供共享 J2SE 组件这个目标十分重大个完整 J2SE 平台本身就意味着了聚集了很多有价值组件所以平台设计必须确保这些组件可以方便被共享和重用

  针对以上目标在 Harmony 项目中采用了模块化划分方式在 Sun 公司最初设计里面根本没有考虑过对 Java 模块化也没有开源想法所以原有耦合性是比较大而且这个划分既要有全局划分即把整个 J2SE 划分为几个大组件如 JVMAPI 类库Tools 等等也有对组件内部划分例如把类库进步划分成些模块区别模块实现区别功能

  类库设计

  完整 J2SE 平台模块化设计首先应该在最抽象层次按照设计目标划分出整体模块组件规定好它们互联规范标准比如对类库、虚拟机间接口定义;然后应该在比较具体层次在比较大组件当中再次划分子模块例如类库步划分

  类库(Class Library)是 J2SE 当中最复杂和最常用部分它为 Java 开发者提供了丰富编程接口给 Java 应用提供了基础类库Harmony 类库目标是要实现个标准 J2SE 类库和现有 Sun JDK 兼容虽然不会增加特性但是在完全不涉及 Sun 源代码前提下仅仅依靠公开 Java 文档设计和开发这样类库依然是项艰巨工作

  Harmony Class Library 分为 3十多个模块如果我们从上下层次上看它们主要上分为以下 4个大类主要模块如图所示

  图 类库划分总图



  这样虽然两人没有如传统结对编程里面提到那样直接监督对方编程但是通过测试代码两人实现了相互独立检查对方工作使得任何个类都有两个人来完成增加了交流机会和发现问题机会提高了产品质量这个思路方法基于测试工作重要地位以及测试优先工作流程是保证开源项目品质个很有效思路方法

  代码审核

  对于这个项目而言代码本身就是产品需要开放出来给全世界人看所以代码可读性和书写规范标准就变得十分重要为此开发者制定了统而严格规范标准(Checklist)使用公认优秀编码风格来实现这个平台从变量命名规范标准到结构安排这个规范标准十分清晰而完整

  为了保证这个 Checklist 被很好落实开发人员在 Development Pair 基础上在某些情况下(如新成员加入对工作尚不熟悉时)添加了个新角色:代码审核员(QA)

  般地在需要 QA Development Pair 当中有 Level1 和 Level2 两个 QA 角色:Level2 QA 主要负责检查结构和代码缺陷和隐患例如可能 Bug、不妥设计结构等等;Level1 QA 主要负责检查除开 Bug 以外表面上问题例如注释书写问题、代码命名规范标准和容易引人混淆代码书写等等

Tags:  harmony

延伸阅读

最新评论

发表评论