4

传统的版本控制系统通过将 Projects->Folders->Files 分组来显示版本信息,左侧是 Tree 视图,右侧是 details 视图,然后您将单击每个项目以查看该配置历史的修订历史。

假设我从面向对象模型的角度(例如类 -> 方法 -> 参数等)拥有项目可用的所有历史版本信息,您认为在 UI 中呈现此类信息的最有效方式是什么?您可以轻松导航和访问项目的快照视图以及历史版本信息?将自己置于您每天在工作中使用此类工具的位置,就像您当前使用 SVN、SS、Perforce 或任何 VCS 系统一样,这将有助于该工具的可用性、生产力和有效性。

我个人发现像上面这样显示文件夹和文件的经典方式对显示深度嵌套的逻辑模型非常有限制,而且效率较低。假设这是一个新建项目并且不受特定技术的限制,您认为我应该如何最好地解决这个问题?

我在这里寻找想法和意见,为我的研究项目增加价值。随意提出任何您认为有价值的建议。再次感谢任何分享他们想法的人。

编辑:为了提供更多信息,一个平均配置项,采取一个方法将嵌套在大约 6 个级别(项目->程序集->模块->命名空间->类型->方法,以及更多级别以导航到其中的子项) 并且情况始终如此,不像在文件夹文件结构中偶尔在某些项目中具有深层嵌套结构。当您有那么多级别时,树窗格将无法导航。恕我直言,树窗格在这种情况下也不太有效地呈现系统的整体结构。

4

5 回答 5

3

茎叶图的变化怎么样?

http://en.wikipedia.org/wiki/Stemplot

这是来自统计的概念,但您可以扩充传统的树结构,在树中每个文件的右侧添加一个版本列表。通过适当的对齐,我认为这可能是一个视觉表达和可用的解决方案。像这样的东西:

* Root Directory
    * Sub Directory A
        * File A.A     | 1 2 3
        * File A.B     | 1 2
    * File A           | 1 2 3 4 5 6 7 8 9
    * File B           | 1 2 3 4 5

茎叶图直观地指示文件已修订的次数,以及快速访问查看(编辑等)和版本。

这可能只是对数据的一种看法。你仍然会受到嵌套结构的阻碍,但如果你不得不忍受它,也许这会有所帮助。

于 2010-03-31T05:36:07.893 回答
2

为什么不让用户选择他/她想要或需要的正确级别的详细信息,而不是尝试选择一种呈现方案来拟合 GUI 中的 n 级信息?

观点

Eclipse 是一个允许用户定义透视图的示例(不是唯一的示例) 。

在工作台中,透视功能用于控制模型和用户界面中项目的可见性。
它控制您在模型中看到的内容(哪个项目、文件夹或文件)以及您在用户界面中看到的内容(哪些操作或视图)。
这些控件可以以适合用户任务的方式浏览和修改工作区。

透视图可以很容易地适应任何类型的分层信息显示。

看法

每个任务的信息过滤

另一种显示复杂信息的有效方法是根据当前任务提出一种有效的过滤机制。
每次用户切换到新任务时,各种信息树只显示相关信息。

以 Mylyn为例:

Mylyn 使任务成为 IDE 的一流部分,为 ALM 工具集成了丰富的离线编辑功能,并监控您的编程活动以创建一个“任务上下文”,以集中您的工作空间并将所有相关工件自动链接到手头的任务。
这使您需要的信息触手可及,并通过减少信息过载、促进多任务处理和简化专业知识共享来提高生产力。

同样,这可以应用于任何类型的信息。

http://www.tasktop.com/sites/default/files/images/part1-overview.jpg

于 2010-04-03T20:49:00.970 回答
2

如果您嵌套 6 个级别,您可能会人为地混合多个关注点。参见下面的 5D 模型。看起来您应该使用 namespace-class-method 作为基本导航模型。您至少将代码结构与其在磁盘上的组织(文件和文件夹)以及到变体的映射混合在一起。像Pharo这样的Smalltalk IDE提供了一组代码浏览器,使您可以轻松地沿着几个维度进行导航,并提供了一个浏览器构建工具包Glamour来制作您自己的其他导航维度。

你会想看看 Richard Wettel 所做的工作。类似于Codecity的东西。使用 OpenGL 创建项目开发历史的 3D 和 4D(时间)显示。它是MOOSE软件再工程研究的一部分。

对于您的研究,您可能希望为此使用 5 维模型:

  • 版本(想要更改)
  • 状态(生命周期:创建、测试、部署、停用)
  • 查看(需求、代码、测试、文档)
  • 层次结构(模块、类、方法)
  • 变体(非常相似,描述差异,产品系列)

大多数系统只处理其中的几个维度。要处理所有这五个问题,您必须描述(修复)您的开发过程。如果这样做,您可以在 UI 中描述要支持的用例。如果没有,您需要一个 5 维柔性显示引擎。那将不会那么容易使用。

参考资料:

管理设计数据:CAD 框架、配置管理、产品数据管理五个维度。
van den Hamer,P. Lepoeter,K.
Philips Res.,埃因霍温;

本文发表于:IEEE
出版日期: 1996 年 1 月
卷: 84,期数: 1
页数: 42-56
ISSN: 0018-9219引用的
参考文献: 26
代码: IEEPAD
INSPEC 登录号: 5175049
数字对象标识符: 10.1109/5.476025
当前版本发布时间: 2002-08-06

于 2010-04-07T20:27:50.583 回答
1

嗯,我会从筒仓、垂直圆柱体开始,对于每个分支:开发、发布,这里会有一个或多个。您应该直观地将历史上提交的版本放置在其中。在这些版本之间,您将有任何数量的其他更改最终循环回来。

沿着每个循环,在筒仓外都有提交点,其中有 x 次更改。将它们从逻辑上看成扁平的水果垂下来,从高处看会有点混乱,但水果的质地、颜色、图案、大小会让你对发生的事情有所了解。悬停在水果上也会提供提交时所做的任何评论。

然后单击水果的茎,在这里您将视图翻转为几种样式,但不是将层次结构导航到更改,而是使用更改来导航层次结构。左边的空间很大,右边的空间很小。将鼠标悬停在更改上将围绕层次结构进行压缩。单击更改,层次结构被冻结,然后您可以单击层次结构并再次进入筒仓视图,但这次只显示文件/函数/任何内容。

---编辑---这是我在想的一种草图。我的想法是基于使用 Mercurial 作为源代码控制存储库。至少对我来说,了解每次修订中所做的各种更改会更有趣,这个想法可能与您的目标不符。通过查看各种更改,存储库应该能够表征和量化更改的内容,我认为这比更改的文件更重要。小点只是方法本身内的代码更改或可能将私有方法添加到类中。当你放大一个水果时,它会填满整个空间,树干会消失或褪色成暗淡的水印或类似的东西。

希望这个粗略的草图能更好地传达我的想法。 替代文字 http://img704.imageshack.us/img704/9034/img0507h.jpg

于 2010-04-08T20:26:49.887 回答
1

如果您希望能够快速找到代码被修改的地方,您可以使用图形表示,仅在选择足够低级的元素时才使用树状表示(例如 mcliedtk 提供的表示) (命名空间或类型)。

对于每个元素,从下层到上层,计算修改百分比:

  • 对于方法或属性:如果创建/修改/删除,则为 100%,否则为 0%
  • 对于一个类:所有包含元素(方法或属性)的平均值,如果创建/删除,则为 100%
  • 对于更高的元素也是如此(如果创建/删除,则为 100%,否则为组件的平均值)。

现在你必须得到一个显示层次结构的表示。
您可以(例如)使用径向的:项目位于中心(即一个圆圈)。组装被呈现为一个环,每个组装占据相同的空间。第三层环代表模块,每个模块为其装配占用相同的空间(即,如果有 4 个装配,每个得到 90°,如果一个装配有 3 个模块,每个模块得到 90°的 1/3) , 等等。每个元素都从其修改百分比映射颜色(0% = 绿色 = 无修改,>85% = 红色 = 大量修改)

例如http://www.neoformix.com/2006/BB_TopicRadialTreemapImages.pnghttp://www.datavisualization.ch/wp-content/uploads/2009/04/stacked_wedge_01.png

在专业方面,您可以快速查看修改发生的位置和级别。
不利的一面是,这给出了自参考日期以来的修改,修改一次或两次的文件与修改 10 次的文件相同。您可能还必须添加工具提示以方便导航,因为 6 级可能很快变得不可读(但随后您只能显示 5 个更高级别中的 4 个......)

问候
纪尧姆

于 2010-04-09T14:50:57.213 回答