写点什么

敏捷和模块化的关系

  • 2014-11-28
  • 本文字数:1255 字

    阅读完需:约 4 分钟

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

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

2014-11-28 05:072022

评论

发布
暂无评论
发现更多内容

瓴羊Quick BI的存在,让企业管理不再复杂繁琐

对不起该用户已成仙‖

Astute Graphics for Mac(全系列ai插件合集)支持ai 2022/2023

理理

Astute Graphics AI插件

工信部数据库适配验证中心项目验收通过 柏睿数据参与共建

科技热闻

Spring竟然可以创建“重复”名称的bean?—一次项目中存在多个bean名称重复问题的排查

京东科技开发者

spring bean @Bean 企业号 3 月 PK 榜

对前端性能优化的一些小看法

Yestodorrow

软件工程高效学 | 软件工程基础

TiAmo

软件工程

全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx

三十而立

Java 分布式 java面试

公司刚来的阿里p8,看完我构建的分布式框架,甩给我一份文档

三十而立

Java 分布式 java面试

扒站软件:SiteSucker汉化激活

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具

微前端框架single-spa子应用加载解析

京东科技开发者

生命周期 微前端 VUE 3.0 源码 企业号 3 月 PK 榜 single-spa

滴滴 一面总结

Java你猿哥

Java 滴滴 java面试 面经

49天含泪苦学这些分布式技术文档,一不小心,吊打了字节跳动面试官

三十而立

Java 分布式 java面试

CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理

阿里巴巴云原生

阿里云 云原生 虚拟化 CNStack

三维动画视觉软件Autodesk Maya 2023软件介绍及安装教程

理理

maya Autodesk Maya 安装教程

Z世代新母婴人群消费洞察2023

易观分析

母婴 新消费 Z世代 消费

聊聊前端性能指标那些事儿

京东科技开发者

性能优化 前端 性能 前端性能 企业号 3 月 PK 榜

30s 就可以掌握的 Nginx 片段

Java你猿哥

Java nginx ssm Java工程师 nginx 开源版

如何使用责任链默认优雅地进行参数校验?

JAVA旭阳

Java spring

cookie时效无限延长方案

京东科技开发者

自动化测试 Cookie 接口自动化 UI自动化 企业号 3 月 PK 榜

机器学习算法(八):基于BP神经网络的乳腺癌的分类预测

汀丶人工智能

数据挖掘 机器学习 BP神经网络

面试造飞机?GitHub顶级“java面试手册2023”(面试通过率95%)

Java你猿哥

Java 面试 面经 Java工程师 春招

Spring依赖注入Bean类型的8种情况,你学废了吗?

Java永远的神

spring 源码 程序员 后端 java面试

OpenHarmony社区运营报告(2023年2月)

OpenHarmony开发者

OpenHarmony

阿里架构组分布式架构技术使用心得:全在这一份文档里面了

三十而立

Java java面试

解决90%面试问题!GitHub顶级"Java面试手册"了解下八股文天花板

Java你猿哥

Java 面经 校招 Java工程师 春招

ShareSDK常见问题

MobTech袤博科技

CoordConv:给你的卷积加上坐标

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

openEuler开源新项目,嵌入式实时虚拟机ZVM介绍

openEuler

Linux 操作系统 虚拟机 嵌入式 openEuler

pulsar 报错源码排查:"Not enough non-faulty bookies available"

李code

源码 pulsar 故障恢复 参数调优 白话源码

博睿学院 | 本周四,博睿学院数据集成系列公开课正式开讲

博睿数据

数据中台 智能运维 博睿数据 博睿学院

【共创共赢】AntDB数据库合作伙伴交流会(北京站)顺利举办

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 3 月 PK 榜

敏捷和模块化的关系_研发效能_Savita Pahuja_InfoQ精选文章