Вы когда -нибудь видели ваш код как город?

Вы когда -нибудь видели ваш код как город?

16 июня 2025 г.

Авторы:

(1) Александр Краузе-Глау, Группа по разработке программного обеспечения, Университет Киля, Киль, Германия (akr@informatik.uni-kiel.de);

(2) Вильгельм Хассельбринг, Группа по разработке программного обеспечения, Университет Киля, Киль, Германия (wha@informatik.uni-kiel.de).

Аннотация и I. Введение

II Подход

А. Архитектурный дизайн

B. Доказательство реализации концепции

Iii. Представленные сценарии использования

IV Дизайн эксперимента и демография

А. Участники

B. Целевая система и задача

C. Процедура

V. Результаты и обсуждение

VI Связанная работа

VII. Выводы и будущая работа, признание и ссылки

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

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

Насколько нам известно, это первый подход, который объединяет редакторы кодов с совместно полезными городами кода. Поэтому мы провели исследование пользователя для сбора первых отзывов о воспринимаемой полезности и воспринимаемой удобстве использования нашего подхода. Мы дополнительно собрали информацию о ведении журнала, чтобы предоставить больше данных о времени, проведенных в городах, встроенных в редакторы кода. Семь команд с двумя студентами участвовали в этом исследовании. Результаты показывают, что большинство участников считают наш подход полезным и будет использовать его для собственного использования. Мы предоставляем видеозаписи каждого участника, необработанные результаты и все шаги, чтобы воспроизвести наш эксперимент как дополнительный пакет. Кроме того, живая демонстрация нашего инструмента доступна в Интернете.1 Мы приглашаем других исследователей расширить наше программное обеспечение OpenSource.2 Видео URL: https://youtu.be/3qzvsehneug

Индексные термины–Software Визуализация, динамический анализ, понимание программы, парное программирование, интегрированная среда разработки

I. Введение

Понимание исходного кода по -прежнему является основным методом, чтобы понять поведение программной системы [1]. Это не неожиданно, потому что разработчики обучены распознавать повторяющиеся закономерности и полученное поведение в исходном коде. Они даже могут провести большую часть своего времени разработки в интегрированных средах развития (IDE) [2]. Тем не менее, навигация в IDES приводит к избыточному, но неизбежным накладным расходам [3], а с точки зрения разработчиков визуализации программного обеспечения (SV) обеспокоены переключателем контекста, вызванным автономными инструментами SV [4]. В результате близость кода является необходимым свойством для SV [5], [6], чтобы добиться успеха в своей предполагаемой области, то есть в разработке профессионального программного обеспечения. Близость кода означает способность инструмента визуализации обеспечивать легкий и быстрый доступ к исходному, базовому исходному коду [7]. В этом контексте в прошлом были показаны подходы к исследованиям, которые внедряют SV в редакторы кода и IDE (оба отныне в качестве редактора кода), чтобы связать исходный код с его визуализацией [8] - [11].

В этой статье мы представляем наш совместно полезный подход SV, который можно встроить в редакторы кода. По сравнению с соответствующими подходами мы используем динамический анализ в качестве источника для рендеринга трехмерных городов кода [12], [13]. SV связан непосредственно с исходным кодом, который находится в разработке в редакторе кода и наоборот. Поэтому мы напрямую связываем поведение времени выполнения с соответствующими элементами программы, например, методами Java. Пользовательские взаимодействия синхронизируются между редактором кода и визуализацией, а также транслируются сотрудникам. В качестве доказательства концепции мы реализовали расширение Visual Studio Code3 (VS Code), которое осознает наш дизайн. Мы провели первое исследование пользователя, чтобы собрать обратную связь, касающуюся воспринимаемой полезности и воспринимаемого удобства использования нашего подхода. Кроме того, мы собрали информацию о ведении журнала, чтобы предоставить больше данных, касающихся статистики использования SV, которые включены в редакторы кода. В этом исследовании семь команд с двумя студентами в каждом совместно использовали наш подход в сценарии, связанном с адаптацией. В целом, результаты показывают высоко оцененную полезность.

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

Fig. 1: (Simplified) Architectural design of our approach.

Представляя предполагаемые сценарии использования для нашего подхода в разделе III. После этого раздел IV объясняет нашу экспериментальную настройку. Раздел V представляет и обсуждает результаты нашего исследования. Затем раздел VI вводит соответствующую работу. Наконец, мы завершаем эту статью и представляем будущую работу в разделе VII.

II ПОДХОД

В этом разделе мы представляем архитектурный дизайн и доказательство реализации концепции для этой исследовательской работы. Для этого мы опираемся на наш ранее опубликованный подход под названием «Визуализация программного обеспечения» в качестве услуги (SVAAS), то есть предоставление услуги по пониманию программы для совместной программы с использованием SV. Из -за пространственных ограничений мы передаем читателей [14] для описания основных понятий нашего подхода.

А. Архитектурный дизайн

На рисунке 1 показан (упрощенный обзор) архитектурного дизайна нашего подхода. Он независим от технологий, за исключением SV-компонента на основе браузера. Как показано, он разделен на четыре этапа (голубые области). На рисунке 1-A и на рисунке 1-B изображены этапы мониторинга и анализа, соответственно. Это основа нашей концепции SVAAS. Например, конвейер анализа может быть горизонтально масштабирован для обработки различной нагрузки одновременных пользователей, поэтому положительно влияет на эффективность общего инструмента [15]. Хотя получение данных, анализ и облачные технологии являются важными аспектами нашей концепции, подробное объяснение выходит за рамки данной статьи. Поэтому мы передаем читателей [14] для получения подробной информации и сосредоточены на оставшихся двух этапах.

WebServer (рисунок 1-C) обслуживает статические файлы, которые включают веб-SV, то есть CSS, JavaScript и HTML. Кроме того, он выступает в качестве обратного прокси для клиентов для подключения к бэкэнд -сервисам, например, для получения данных для визуализации. У пользователей теперь есть два параметра, чтобы связать SV со своим редактором кода:

• Для первого варианта они могут использовать автономный SV, который работает внутри их веб-браузера, и подключается к расширению в своем редакторе кода (рис. 1-D). Последний действует как шлюз между редактором кода и SV. Это похоже на «классический» подход для зрителей кода, встроенных в SVS, и относится ко многим другим работам (см. Раздел VI). Взаимодействия, которые должны быть связаны между редактором кода и SV, например, «Откройте файл класса в редакторе кода при нажатию на связанный объект визуализации», синхронизируются службой редактора кода (рисунок 1-E).

• Для второго варианта пользователи могут установить расширение в своем редакторе кода, который уже включает в себя Frontend (Рисунок 1-F). В этом случае нам не нужна внешняя служба для синхронизации событий взаимодействия, но используем встроенный механизм связи между редактором кода и его расширением. Поэтому мы уменьшаем переключение контекста, которое происходит при переключении от SV на редактор кода и наоборот [4]. Еще одним преимуществом второго варианта является то, что он также может быть установлен в облачных редакторах кода, которые работают в браузерах. Это может быть полезным в некоторых вариантах использования, например, в соответствии с новыми разработчиками, как показано в разделе III.

Fig. 2: Proof of concept implementation – The editor of VS Code displays a Java class. The ExplorViz extension visualizes the associated runtime behavior and adds visual functions to the editor to directly link source code and visualization.

Независимо от выбранной опции, пользователи могут совместно использовать SV. Чтобы достичь этого, служба совместной работы (рис. 1-G) транслирует события, например, «пользователь x открыл пакет Y», для всех клиентов того же сеанса, за исключением того, что вызвало событие [16]. Затем клиенты применяют полученные события к своему SV, поэтому синхронизируют их государства.

B. Доказательство реализации концепции

Мы прототипировали наш подход в нашем SV Tool Explorviz.4. Развитие нашего инструмента началось в 2012 году [17] и было сосредоточено на нескольких аспектах в течение времени, таких как проблемы развития [18], [19] и расширенная реальность [16], [20]. Совсем недавно мы используем Explorviz для исследования совместной визуализации программного обеспечения в контексте понимания программы [16], [21]. Explorviz в настоящее время использует динамический анализ в качестве источника для визуализации. Наш изображенный SV настроен для визуализации агрегированного поведения времени выполнения десяти секунд [14].

На рисунке 2 показан скриншот нашей реализации прототипа. Мы разработали расширение кода VS, которое осознает ранее упомянутый дизайн. Его можно использовать в качестве шлюза, чтобы связать внешний SV с редактором кода или вместо этого предоставить встроенный SV. Из -за пространственных ограничений мы сосредоточены на последнем и передаем читателей на наше дополнительное видео. Расширение использует HTML Iframe для встроенного веб-фронта, поэтому SV, в коде VS (см. Рисунок 1-F на предыдущей странице). Встроенный SV может быть включен или выключен через кнопку логотипа Explorviz (Рисунок 2-A). Он автоматически помещается в новую группу редакторов рядом с исходным кодом (рисунок 2-b). Пользователи могут выбрать одну из своих (в настоящее время или ранее) проанализированных программных систем (как показано в дополнительном видео) и открыть связанный SV. Последнее предоставляется в виде трехмерных городов кода с использованием Three.js5 для рендеринга (рис. 2-C). Встроенный фронт использует передачу кроссоригина на основе объекта окна JavaScript для взаимодействия с VS-кодом. Следовательно, нам не нужна внешняя служба, которая синхронизирует события взаимодействия, как это происходит при использовании внешнего фронта или, как показано в связанных работах (см. Раздел VI). Каждую десятую секунду фронтэнд запускает обновление SV. Для этого он получает последние данные времени выполнения для выбранной системы программного обеспечения из конвейера анализа и обновляет визуализацию, если это необходимо. Кроме того, Frondend отправляет новые данные в код VS, который затем выделяет классы и методы Java, которые использовались в агрегированном поведении времени выполнения. Это показано значками желоба и кодовыми линзами на рисунке 2-D. Пользователи могут щелкнуть на кодовую линзу, чтобы сосредоточить связанную сущность в SV, например, многоэтажное здание, визуализируя класс Java. Наоборот, нажатие, например, в строке связи, приведет к открытию файла и сосредоточено на связанном методе в коде VS. С точки зрения совместной работы, пользователи могут присоединиться или провести совместную сеанс из встроенного фронта и использовать совместные функции SV, например, пингирование или общие всплывающие окна (рисунок 2-E), чтобы взаимодействовать друг с другом (пожалуйста, см. [16] для получения более подробной информации). Кроме того, совместная сессия также позволяет программировать удаленную пар. Для кода VS в целом разработчики могут, например, использовать расширение Microsoft Liveshare для кода VS. LiveShare имеет отличные функции и удобство использования, но использует серверы Microsoft, которые могут быть недоступны в будущем или не могут быть использованы из -за проблем соблюдения. Ради воспроизводимости нашей оценки, мы поэтому решили не использовать доступный продукт, такой как Liveshare Microsoft, но разработали собственное решение (для исследования пользователя). Это можно увидеть на рисунке 2- F, где изображен выбор живого текста другого пользователя (как желтый фон владельца). Эти события выбора текста синхронизируются путем реализации службы редактора внешнего кода (рисунок 1-E) с использованием веб-питания для почти в реальном времени.

Эта статья естьДоступно на ArxivПод CC по лицензии 4.0.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE