代码之家  ›  专栏  ›  技术社区  ›  Fadrian Sudaman

什么使一个有效的ui能够显示结构化层次数据的版本控制

  •  4
  • Fadrian Sudaman  · 技术社区  · 14 年前

    传统的版本控制系统通过将项目分组来显示版本控制信息->文件夹->文件,左侧为树状视图,右侧为详细信息视图,然后您将单击每个项目查看该配置历史的修订历史。

    假设我从面向对象模型的角度(例如类->方法->参数等)拥有一个项目的所有历史版本控制信息,那么您认为在ui中呈现这些信息的最有效方法是什么,以便您可以方便地导航和访问项目的快照视图以及历史版本控制信息?把你自己放在这样一个位置,你每天都在使用这样一个工具,就像你现在正在使用SVN,SS,perforce或任何VCS系统,什么会有助于工具的可用性,生产力和有效性。

    我个人认为,像上面这样的显示文件夹和文件的经典方法限制性很强,而且对于显示深度嵌套的逻辑模型来说效率较低。假设这是一个新的项目,不受特定技术的限制,你认为我应该如何最好地解决这个问题?

    我在这里寻找想法和投入,以增加我的研究项目的价值。请随意提出你认为有价值的建议。再次感谢大家分享他们的想法。

    编辑: 要提供更多信息,平均配置项take方法将嵌套在大约6个级别中(project->assembly->module->namespace->type->method,以及更多级别以导航到其中的子项),并且这种情况始终存在,而不像在文件夹文件结构中在某些项目中,ccasionly具有深嵌套结构。当您有这么多的级别时,树窗格将无法导航。在这个场景中,树窗格显示系统的整体结构也不太有效。

    5 回复  |  直到 11 年前
        1
  •  2
  •   VonC    11 年前

    而不是试图选择 一个gui中n个层次信息的表示方案,为什么不让用户选择他/她想要或需要的正确的细节层次呢?

    视角

    eclipse是允许用户 define perspectives .

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

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

    Perspective

    每个任务的信息筛选

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

    Mylyn 例如:

    mylyn使任务成为ide的第一类部分,集成alm工具的丰富和离线编辑,并监视您的编程活动,以创建一个“任务上下文”,该上下文集中您的工作区,并自动将所有相关工件链接到手头的任务。
    这将您需要的信息放在指尖,并通过减少信息过载、促进多任务处理和简化专业知识共享来提高生产力。

    同样,这也适用于任何类型的信息。

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

        2
  •  3
  •   mcliedtk    14 年前

    茎和叶的变化怎么样?

    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
    

    茎叶图提供了一个可视化的指示,显示一个文件被修改了多少次,以及快速访问查看(编辑等)和版本。

    很可能这只是对数据的一种看法。你仍然会被嵌套结构所困扰,但是如果你不得不忍受这种情况,也许这会有所帮助。

        3
  •  2
  •   Benjol    14 年前

    如果你正在嵌套6个级别,你可能是人为地混合了多个关注点。关于5D车型,请参见下文。看起来您应该使用命名空间类方法作为 基本导航模型。您至少将代码结构与其在磁盘上的组织(文件和文件夹)以及到变体的映射混合在一起。Smalltalk公司 Pharo 提供一组代码浏览器,使沿几个维度的导航变得容易,并提供一个浏览器构建工具包 Glamour 为其他导航维度创建自己的导航。

    你会想看看理查德·韦特尔所做的工作。 类似于 Codecity . 使用opengl创建项目开发历史的3和4d(时间)显示。它是软件重组研究的一部分。 MOOSE .

    对于您的研究,您可能需要使用5维模型:

    • 版本(要更改)
    • 状态(生命周期:创建、测试、部署、退役)
    • 视图(需求、代码、测试、文档)
    • 层次结构(模块、类、方法)
    • 变型(基本相似,描述差异,产品系列)

    大多数系统只处理其中的一些维度。要处理这五个问题,您必须描述(修复)您的开发过程。如果你这样做了,你可以在你的用户界面中描述你想要支持的用例。如果不是,你需要一个5维灵活的显示引擎。那就不那么容易用了。

    参考文献:

    管理设计数据:CAD框架、配置管理和产品数据管理的五个维度。
    范登哈默,P.莱普特,K。
    飞利浦股份有限公司,埃因霍温;

    本文发表于: ieee会议录
    出版日期:1996年1月
    卷:84期,第1期
    页码:42-56
    ISSN:0018-9219
    引用文献:26篇
    代码:IEEPAD
    INSPEC注册号:5175049
    数字对象标识符:10.1109/5.476025
    当前版本发布:2002-08-06

        4
  •  1
  •   Felan    14 年前

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

    在每个循环中,思洛存储器外部都有提交点,更改次数为x。把它们想象成逻辑上扁平的水果,从高层次看会有点混乱,但是水果的质地、颜色、图案、大小会让你感觉到发生了什么。同时,悬停在水果上会提供任何与承诺相关的评论。

    然后单击水果的茎,在这里您可以将视图翻转成多个样式,但不要将层次导航到更改,而是使用更改来导航层次。左边是大空间,右边是小层次空间。将鼠标悬停在更改上将在层次结构上压缩。单击更改,层次结构被冻结,然后可以单击层次结构,再次转到思洛视图,但这次只显示了文件/函数/任何内容。

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

    希望这幅简陋的素描能更好地传达我的想法。 alt text http://img704.imageshack.us/img704/9034/img0507h.jpg

        5
  •  1
  •   PATRY Guillaume    14 年前

    如果希望能够快速找到修改代码的位置,则可以使用图形表示法,仅当选择足够低级别(命名空间或类型)的元素时,才转到树状表示法(如mcliedtk提供的表示法)。

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

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

    现在,您必须获得一个表示,即显示层次结构。
    可以(例如)使用径向: 这个项目在中心。组件以环的形式呈现,每个组件占用相同的空间。第三级环表示模块,每个模块为其组件占用相同的空间(即如果有4个组件,则每个组件获得90°;如果一个组件有3个模块,则每个模块获得90°的1/3),依此类推。每个元素从其修改百分比(0%=绿色=无修改,>85%=红色=重磅修改)中获取颜色映射。

    一个例子可能是 http://www.neoformix.com/2006/BB_TopicRadialTreemapImages.png http://www.datavisualization.ch/wp-content/uploads/2009/04/stacked_wedge_01.png

    在专业方面,你可以很快地看到修改发生在哪里,在哪个级别。
    在负数方面,这给出了自引用日期以来的修改,而修改一次或两次的文件与修改10次的文件相同。您可能还需要添加工具提示以方便导航,因为6级可能很快无法使用(但之后您只能显示5级中的4级…)

    当做
    纪尧姆

    推荐文章