Что делает пользовательский интерфейс эффективным для отображения версий структурированных иерархических данных

StackOverflow https://stackoverflow.com/questions/2550633

  •  23-09-2019
  •  | 
  •  

Вопрос

Традиционная система контроля версий отображает информацию о версиях путем группировки Проекты->Папки->Файлы с древовидным представлением слева и подробным представлением справа, затем вы нажимаете на каждый элемент, чтобы просмотреть историю изменений для этой истории конфигурации.

Предполагая, что у меня есть вся историческая информация о версиях, доступная для проекта с точки зрения объектно-ориентированной модели (например,классы -> методы -> параметры и т. д.), какой, по вашему мнению, будет наиболее эффективным способом представления такой информации в пользовательском интерфейсе, чтобы вы могли легко перемещаться и получать доступ к представлению снимка проекта, а также к исторической информации о версиях?Поставьте себя в положение, что вы используете такой инструмент каждый день в своей работе, как вы сейчас используете SVN, SS, Perforce или любую систему VCS, что будет способствовать удобству использования, производительности и эффективности инструмента.

Лично я считаю, что классический способ отображения папок и файлов, подобный приведенному выше, очень ограничен и менее эффективен для отображения глубоко вложенных логических моделей.Если предположить, что это новый проект и не ограничен конкретной технологией, как, по вашему мнению, мне лучше всего к нему подойти?

Я ищу здесь идеи и предложения, которые помогут повысить ценность моего исследовательского проекта.Не стесняйтесь вносить любые предложения, которые вы считаете ценными.Еще раз спасибо всем, кто поделится своими мыслями.

ОТРЕДАКТИРОВАНО: Чтобы получить больше информации, средний элемент конфигурации, метод take будет вложен примерно в 6 уровней (проект->сборка->модуль->пространство имен->тип->метод и дополнительные уровни для перехода к дочерним элементам внутри него) и это всегда так, в отличие от структуры папок-файлов, где иногда в каком-то проекте имеется глубокая вложенная структура.Когда у вас так много уровней, панель дерева становится непригодной для навигации.ИМХО, панель дерева также менее эффективна в этом сценарии для представления общей структуры системы.

Это было полезно?

Решение

Вместо того, чтобы пытаться выбрать один Схема представления для размещения n уровней информации в графическом интерфейсе, почему бы не позволить пользователю выбрать правильный уровень детализации, который он/она хочет или нуждается?

Перспективы

Eclipse — один из примеров (не единственный), позволяющий пользователю определить перспективы.

В рабочей среде функция «Перспектива» используется для управления видимостью элементов модели и пользовательского интерфейса.
Он контролирует то, что вы видите в модели (какой проект, папку или файлы) и то, что вы видите в пользовательском интерфейсе (какие действия или представления).
Эти элементы управления позволяют перемещаться по рабочему пространству и изменять его в соответствии с задачами пользователя.

Перспективы легко адаптируется для любого вида иерархического отображения информации.

Perspective

Фильтрация информации по задачам

Еще один эффективный способ отображения сложной информации — предложить эффективный механизм фильтрации, исходя из текущей задачи.
Каждый раз, когда пользователь переключается на новую задачу, различные информационные деревья отображают только соответствующую информацию.

Видеть Майлин например:

Mylyn делает задачи первоклассной частью IDE, интегрирует широкие возможности автономного редактирования для инструментов ALM и отслеживает вашу деятельность по программированию, создавая «контекст задачи», который фокусирует ваше рабочее пространство и автоматически связывает все соответствующие артефакты с текущей задачей.
Это дает вам необходимую информацию под рукой и повышает производительность за счет уменьшения информационной перегрузки, облегчения многозадачности и обмена опытом.

Опять же, это можно применить к любому виду информации.

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

Другие советы

Как насчет вариации сюжета стебля и листьев?

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

График стебля и листа дает визуальное представление о том, сколько раз файл был изменен, а также обеспечивает быстрый доступ к просмотру (редактированию и т. д.) и версиям.

Вероятно, это будет всего лишь один взгляд на данные.Вы по-прежнему будете обременены вложенной структурой, но если вам придется с этим жить, возможно, это поможет.

Если вы вкладываете 6 уровней, вы, вероятно, искусственно смешиваете несколько задач.Ниже представлена ​​5D-модель.Похоже, вы должны использовать метод пространства имен в качестве основной модели навигации.Вы как минимум смешиваете структуру кода с его организацией на диске (файлы и папки) и сопоставлением с вариантами.Smalltalk IDE, такие как Фаро предоставить набор браузеров кода, упрощающих навигацию по нескольким измерениям, а также предоставить комплект для сборки браузера. Гламур чтобы создать свой собственный для других измерений навигации.

Вам захочется взглянуть на работу Ричарда Веттеля.Что-то подобное Кодовый город.Использование OpenGL для создания 3- и 4D (временного) отображения истории разработки проекта.Это часть исследований в области реинжиниринга программного обеспечения. ЛОСЬ.

Для вашего исследования вы можете использовать пятимерную модель:

  • версия (хочу изменить)
  • статус (жизненный цикл:создание, тестирование, развертывание, удаление)
  • вид (требование, код, тест, документация)
  • иерархия (модуль, класс, метод)
  • вариант (во многом схожий, с описанием различий, семейств продуктов)

Большинство систем обрабатывают только некоторые из этих измерений.Чтобы справиться со всеми пятью, вам необходимо описать (исправить) свой процесс разработки.Если да, то вы можете описать варианты использования, которые вы хотите поддерживать в своем пользовательском интерфейсе.Если нет, вам нужен гибкий 5-мерный механизм отображения.Это будет не так просто в использовании.

Ссылка:

Управление проектными данными:пять измерений САПР, управление конфигурацией и управление данными о продуктах.
ван ден Хамер, П.Лепотер, К.
Philips Res., Эйндховен;

Этот документ появляется в: Труды IEEE
Дата публикации:Январь 1996 г.
Объем:84, Выпуск:1
На страницах:42-56
ISSN:0018-9219
Цитируемые ссылки:26
КОДЕН:IEEPAD
Регистрационный номер INSPEC:5175049
Идентификатор цифрового объекта:10.1109/5.476025
Текущая опубликованная версия:6 августа 2002 г.

Хм, я бы начал с силосных, вертикальных цилиндров, на каждую ветку:dev, Release, здесь будет один или несколько.Вам следует визуально разместить в нем версии, которые исторически были зафиксированы в этом бункере.Между этими версиями у вас будет множество других изменений, которые в конечном итоге вернутся вспять.

Вдоль каждого цикла есть точки фиксации за пределами бункера с количеством изменений x.Визуализируйте их логически сплющенными, как свисающие вниз фрукты. На высоком уровне это будет немного беспорядочно, но текстура, цвет, узор и размер фруктов дадут вам представление о том, что произошло.Также, наведя курсор на плод, вы увидите все комментарии, оставленные при коммите.

Затем щелкните стебель фрукта, и здесь вы перевернете представление на несколько стилей, но вместо перехода по иерархии к изменению используйте это изменение для навигации по иерархии.Большое пространство слева и небольшое пространство для иерархии справа.Наведение курсора на изменения приведет к перемещению по иерархии.Щелкните изменение, и иерархия заморозится, а затем вы можете щелкнуть иерархию и снова перейти к изолированному представлению, но на этот раз с единственным отображаемым файлом/функцией/что-то еще.

--- Редактировать --- вот набросок того, что я думал.Моя идея основана на использовании Mercurial в качестве репозитория системы контроля версий.По крайней мере, для меня было бы интереснее получить представление о типах изменений, внесенных в каждую версию, идея, которая может не соответствовать тому, к чему вы стремились.Глядя на типы изменений, хранилище должно иметь возможность охарактеризовать и количественно оценить, что было изменено, что, я думаю, является более важным, чем то, какие файлы были изменены.Маленькие точки будут просто изменением кода внутри самого метода или, возможно, добавлением частных методов в класс.Когда вы увеличиваете фрукт, он заполняет пространство, а стволы исчезают или исчезают, превращаясь в тусклый водяной знак или что-то в этом роде.

Надеюсь, этот грубый набросок лучше передает мою идею.альтернативный текст http://img704.imageshack.us/img704/9034/img0507h.jpg

Если вы хотите иметь возможность быстро найти, где код был изменен, вы можете использовать графическое представление, переходя к древовидному представлению (например, представленному mcliedtk) только при выборе элемента, который является достаточно низкоуровневым. (пространство имен или тип).

для каждого элемента, от нижнего уровня до верхнего, вычисляем % модификации:

  • для метода или атрибута:100 %, если создано/изменено/удалено, 0 % в противном случае.
  • для класса:среднее значение всех включенных элементов (метода или атрибута) или 100%, если они созданы/удалены.
  • то же самое для более высоких элементов (100%, если они созданы/удалены, в противном случае среднее значение компонентов).

теперь вам нужно получить представление, показывающее иерархическую структуру.
вы можете (например) использовать радиальный:проект находится в центре (т.е. в круге).сборки представлены в виде кольца, причем каждая сборка занимает одно и то же место.кольцо третьего уровня представляет модули, причем каждый модуль занимает одинаковое пространство для сборки (т.е. если имеется 4 сборки, каждая из них получает 90°, а если сборка состоит из 3 модулей, каждый модуль получает 1/3 от этих 90°) , и так далее.каждому элементу присваивается цвет, соответствующий его проценту модификации (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 может быстро стать нечитаемым (но тогда вы сможете отображать только 4 из 5 более высоких уровней...)

С уважением
Гийом

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top