BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

敏捷和模块化的关系

| 作者 Savita Pahuja 关注 3 他的粉丝 ,译者 夏雪 关注 0 他的粉丝 发布于 2014年11月29日. 估计阅读时间: 4 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

任何好流程的关键都是要模块化。许多公司的敏捷流程没有考虑他们应用的结构。由于这个原因,许多敏捷的举措都没有能够充分交付预期的商业利益。只有把底层实体(组织或者软件产品)的结构模块化,才能够实现敏捷。

Richard Nicholson是Paremus的首席执行官和创始人,他在 OSGi(Java模块化的开放的行业标准)的技术白皮书中描述了结构模块化和敏捷的关系。

一个实体要“敏捷”,它的结构就需要有高度的模块化。因此,关于敏捷的问题应该从“如何构建敏捷的业务系统?”变成“如何构建高度模块化的业务系统?”

随着业务单元和服务提供者的增加,组件构成数量和这些组件间的内部依赖也会随之增加。通常,如果任其发展下去,内部依赖的数量会迅速增加甚至超过组件的数量。结构会变得越来越复杂。

所以,敏捷系统需要显著地具备以下特征:

  • 一个分层的结构:每一层都是由下一层组件分层构成的。
  • 抽象:对于每一层来说,参与的组件所暴露的行为与那一层陈述的需求和能力有关。
  • 孤立:高度独立确保在每一层上每个参与的组件的内部构成对外是不可见的。
  • 自描述性:每一层内部参与的组件之间的关系是自描述的;也就是说,按照已发布的需求和能力来描述它们的相关性。
  • 变更的影响:通过语义性版本管理可以把依赖关系的变更影响表达出来。

Kirk Knoernschild是Gartner的研究室主任,他在其《Java应用架构》这本书中表达了对敏捷和结构模块化之间关系的看法,确定了“中层缺失”问题之所在。Knoernschild总结说在传统Java应用的架构中缺失了本质上的结构层。粗粒度的模块化范围是传统的服务层,另一方面细粒度的模块化是Java包和类的层次。粗粒度和细粒度之间缺少中间层。

基于OSGi联盟创建的开放的行业标准,OSGi通过提供Java模块化框架直接地解决这个问题。

  • OSGi bundle按照Java包表述需求和能力。因此,第三方可以直接看出来特定的OSGi bundle能否被其他备选方案替代。
  • OSGi bundle使用语义级版本管理。因此,第三方可以直接看出来一个OSGi bundle的变更对于那些使用者来讲是不是天翻覆地的变化。

OSGi还在结构层之上提供了µServices层。这里有轻量级的服务,这些服务能够在运行期彼此间动态地发现和绑定。OSGi服务可能同时在同一JVM中,或者通过使用OSGi远程服务规范的实现,分布在不同IP段的多个JVM上。

Richard描述了OSGi bundle与scrum和看板的映射:

我们很难把Scrum应用于大型的单片系统代码库。相反地,Scrum的概念很好地映射了高度模块化的代码库,这类代码库包含许多自描述的、强隔离的OSGi bundle。

看板的概念很自然地映射了高度模块化的代码库,这类代码库包含许多自描述的、强隔离的工件;特别要注意的是,看板制品(WIP)流程的思想直接映射了OSGi bundle的子集,大家都围绕它们积极地开展工作。因此,看板基于拉动的流程速率是与更细粒度的OSGi bundle的变更或发布相匹配的,如果在制品流程中的每个更小的OSGi bundle都可以相对地缩短花费的时间,那么自然而然看板基于拉动的流程速率就会相应地有所提升。

查看英文原文:Relation of Agility and Modularity

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT