写点什么

Architexa 简介:让 UML 变得简单、快速

  • 2010-06-19
  • 本文字数:2273 字

    阅读完需:约 7 分钟

Architexa 是个全新的基于 Eclipse 的 UML 建模工具,开发人员可以凭借 Architexa 的 UML 图快速洞悉代码之间的关系并与他人共享这些内容。之所以能快速探测代码基,关键在于 Architexa 为开发者提供了 3 种熟悉的图表类型(层次图、类图与序列图),随着开发人员对代码基理解的不断深入,他们可以在 Architexa 的帮助下构建代码之间关系和粒度。

最近 InfoQ 有幸采访到了 Architexa 的创建者 Vineet Sinha 以深入了解该工具,同时明晰了它为何能帮助开发者处理日益膨胀的代码基。

Architexa 是如何在其他 UML 工具欠缺的地方帮助开发者的?

我们将精力放在了代码需求而非设计需求上,希望能帮助开发者更快地理解代码,理解好相关的任务、相关的文档并能轻松地讨论这些重要的代码概念,然后与同伴分享这一切。

在一开始探索代码基时可以使用层次图这一强大的工具。能否向读者做个简单的介绍?这个想法来自于现有的工作还是经过了不断的演变才得出的?你是如何想到它的呢?

Architexa 中的层次图会根据现有的代码基作出最接近于层次架构图的估算。我们注意到大多数层次架构图都是团队或项目所用的高层次图表的主要形式,通常不太容易从众多的代码基中找出层次架构图的踪迹。如果这类图可以帮助开发者找到他们最感兴趣的部分代码基,我们打算快速实现一个版本以满足开发者所需。

Architexa 通过分析代码并展示模块来构建层次架构图,如果某个模块依赖于另一个模块,那么就会将它放在图表的上面。除此之外,我们还需要猜——默认情况下,模块基本上是根据代码基的目录结构创建的。而且,大多数代码基经常包含循环,我们使用了复杂的算法来处理这种循环,但依然能保证提供高效的层次图。

大多数工具套件都是我在 MIT(CSAIL)读博士时尝试并开发的,我们想要的是一个卓越的工具。主要的想法来自于很多地方:我在下面这些地方花了大量的时间: (i) 阅读了多个项目的软件文档以了解共通的东西,(ii) 分析了目前提供有效的代码视图的工具:虽然这些工具都非常复杂并且需要培训,但他们各有千秋,我们可以从中了解到这些工具常见的使用模式,这样就能通过几次鼠标点击来简化工具的使用了,(iii) 典型的树形 widget,通常他们都会收起并显示大量信息,(iv) 大量优秀的工具,以便从中找到适合我们的图表的技术。

在构建好了第一个原型后,我们发现了很多问题。虽说实现了大多数主要的想法,但我们意识到了真实世界中的问题(代码经常有循环),我们开发这些技术不仅是为了解决这些问题(通过层次来忽略掉一些代码循环),更是为了减轻用户的负担,这样他们就能轻松处理问题了(用户可以根据这种循环依赖进行扩展、使用彩色高亮显示当前模块之上、使用了当前模块以及与当前模块之间存在循环的模块)。

用户可以借助于 Architexa 白手起家,无需对代码基有任何了解就能起步并不断探索。在探索代码基时你发现了自己的使用模式了么?你是如何在每天的开发 / 设计工作中使用这个工具的?

我们发现了大量的使用模式并积极地探求这些模式来不断提升工具的品质。但大多数使用模式还是取决于用户所要完成的任务:

  • 如果开始查看项目(或是项目的一部分),用户通常都需要高层次视图,在这种情况下,他们会使用层次架构视图从上开始,然后双击视图深入到代码内部。
  • 如果想要查看项目(或是子项目)的核心,用户通常都需要了解多个类之间的交互关系,因此想要看到多种关系图(继承、方法调用、属性访问等等),他们尤其喜欢使用类图。
  • 如果想要了解一个重要的用例,用户则需要看到控制流程,在这种情况下,序列图是个不错的选择。

有没有什么办法可以比较现有的图表和改变后的代码基呢?

在代码基发生变化时,图表的使用有多种可能。我们支持两种用例:

  • 在用户创建好图表后又修改了代码基时:如果再一次打开图表就会看到一个红色的错误标识,标识类 / 关系缺失。
  • 在用户修改完代码基后又想创建图表时:用户可以右键单击项目,转到 team 菜单并让 Architexa 根据变更构建一个新图表而非检入代码。这么做的好处在于可以考虑到代码评审问题,因为生成的图表通常都是修改后功能的最好总结。

我们还会在这个地方增加更多支持。

手工生成图表是探索代码基的好办法,但在构建过程中自动生成(类似于 JavaDoc)则可以更好地描绘系统的演变过程。Architexa 也能实现该功能么?

重要的图表通常会跨越多个类,每个重要的类也会跨越多个图表,因此把他们放到 JavaDoc 中没什么意义。我们允许用户将图表上传到一台简单的类似于 wiki 的服务器上。这样,用户不仅可以与其他人共享这些图片(只需使用浏览器即可),还使得我们可以增加额外的信息,这样使用 Architexa 客户端的其他用户就可以继续探索其他人写的代码了。这些图表代表了代码基中的重要概念,因此他们不仅支持用户添加注释,还可以在不同的地方嵌入这些图表,还有版本的概念,这样就能反映出主要概念的演变过程了。我们还会在这个地方增加更多支持。

该工具目前支持哪些语言?

此次发布只支持 Java,但我们还有 C++ 原型。

该工具是否有助于说明组件以及核心类的交互呢(比如说 MVC/Web 框架交互)?

当然了。该套件的目标就是展示代码中显露出来的关系(方法调用、继承等等)和运行时出现的关系(对接口或基类的调用)。我们通过静态关系实现这一点,但允许用户以任何可行的方式修改图表。

能否说说第一版中尚未包含但即将发布的特性,读者对此可能很有兴趣?

此次发布包含了大量的特性。虽然我们实现了很多特性,但目前主要的目标还是倾听用户的想法。

感兴趣的读者可以访问 Architexa 的站点 http://www.architexa.com 了解更多信息。

查看英文原文: Architexa aims to make UML quick and easy

2010-06-19 21:274096
用户头像

发布了 88 篇内容, 共 262.3 次阅读, 收获喜欢 8 次。

关注

评论

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

甲方日常 90

句子

工作 随笔杂谈 日常

2021年1月国产数据库排行榜:OceanBase重回前三,TDSQL增长趋势最强劲!

墨天轮

数据库

Elasticsearch和Kibana变更开源许可协议;Facebook利用AI增强为视障人士描述照片能力

京东科技开发者

云计算

不可忽视的PHP数据精度损失问题

架构精进之路

php 七日更 28天写作

一文读懂HTTP协议的昨天,今天与明天

后台技术汇

28天写作

云原生架构下复杂工作负载混合调度的思考与实践

星环科技

云计算

面试官:一年跳槽三次,你是怎么做到的?

程序员阿沐

程序员 面试 软件测试 测试工程师

产品利益相关者分析

LT_product_elearning

一文告诉你Java日期时间API到底有多烂

YourBatman

LocalDateTime Date JSR310 Calendar

同事有话说:ThreadPoolExecutor是怎么回收线程的

Java 程序员 面试

区块链养成宠物游戏开发动物世界app系统搭建方案

v16629866266

【并发编程的艺术】内存语义分析:volatile、锁与CAS

程序员架构进阶

Java 架构 Java内存模型 28天写作

PostgreSQL使用clickhousedb_fdw访问ClickHouse

PostgreSQLChina

数据库 postgresql 开源 软件

nacos 配置中心自动化运维之namespace坑

Sky彬

nacos

阿里P8大牛亲自教你!实战讲述Flutter跨平台框架应用,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

软件测试在不同应用场景中,我们该如何进行测试呢?

程序员阿沐

编程 程序员 软件测试 教程 测试环境

听说隔壁班的程序员给女友做了个智能风扇

智能物联实验室

物联网

趋势预测:2021年五大流行的编程语言

禅道项目管理

Java php python 爬虫 趋势

互斥锁 vs 自旋锁

行者AI

互斥

免费ETL批量调度,任务调度,作业调度自动化运维工具Taskctl Web

敏捷调度TASKCTL

大数据 kettle 海豚调度 自动化部署 ETL

《Java 面经手册》PDF,全书5章29节,417页11.5万字,完稿&发版!

小傅哥

Java 面试 小傅哥 PDF 面经手册

并发条件队列之Condition 精讲

伯阳

AQS 多线程 lock Condition 条件队列

使用 async_hooks 模块进行请求追踪

智联大前端

node.js 大前端 koa async_hooks

2021分享三面阿里:Java面试核心手册+Java电子书+技术笔记+学习视频

比伯

Java 编程 架构 面试 程序人生

LeetCode题解:389. 找不同,位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

转角遇上Volcano,看HPC如何应用在气象行业

华为云开发者联盟

容器 云原生 HPC Volcano 批量计算

毫不留情地揭开负载均衡的真面目~

田维常

负载均衡

JDK源码深度学习!阿里P9架构师终于总结出了这份“源码级”的笔记了

Java架构追梦

Java 源码 架构 jdk 面试

自动化测试现状趋势解读,附带近年自动化测试常用工具

程序员阿沐

程序员 软件测试 自动化测试 测试工程师

kotlin下载!我们究竟还要学习哪些Android知识?Android岗

欢喜学安卓

android 程序员 面试 移动开发

图解分析:Kafka 生产者客户端工作原理

码农架构

kafka 中间件 消息队列 消息中间件

Architexa简介:让UML变得简单、快速_Java_Ian Roughley_InfoQ精选文章