Карта программного обеспечения представляет собой статические, динамические и эволюционную информацию программных систем и их процессов разработки программного обеспечения с помощью карты 2D или 3D-ориентированной визуализации информации . Она представляет собой фундаментальную концепцию и инструмент в визуализации программного обеспечения , программного обеспечения , аналитики и диагностики программного обеспечения . Его основные приложения включают анализ рисков и мониторинг качества кода , деятельности команды или прогресса разработки программного обеспечения [1] и, как правило, повышение эффективности разработки программного обеспечения в отношении всех связанных артефактов, процессов и заинтересованных сторон на протяжении всего процесса.разработки программного обеспечения процесс и обслуживание программного обеспечения .
Мотивация и концепции
Карты программного обеспечения применяются в контексте разработки программного обеспечения : сложные долгосрочные проекты разработки программного обеспечения обычно сталкиваются с многочисленными трудностями, такими как трение между завершением функций системы и, в то же время, получением высокого уровня качества кода и качества программного обеспечения. для обеспечения программного сопровождения системы в будущем. В частности, «обслуживание сложных программных систем обычно обходится дорого, потому что разработчики тратят значительную часть своего времени на попытки понять структуру и поведение системы». [2] Ключевая идея программных карт состоит в том, чтобы справиться с этой проблемой и проблемами оптимизации, предоставляя эффективные средства связи, чтобы закрыть коммуникационный разрыв между различными заинтересованными сторонами и информационными областями в рамках проектов разработки программного обеспечения и получить понимание в смысле визуализации информации .
Программные карты используют преимущества четко определенных методов картографических карт с использованием метафоры виртуальной трехмерной модели города [3] для выражения лежащего в основе сложного абстрактного информационного пространства. Требуется метафора: «поскольку программное обеспечение не имеет физической формы, нет естественного отображения программного обеспечения в двумерное пространство». [4] Программные карты - это непространственные карты, которые должны преобразовывать данные иерархии и ее атрибуты в пространственное представление.
Приложения
Карты программного обеспечения обычно обеспечивают понятную и эффективную передачу информации о рисках и стоимости проектов разработки программного обеспечения различным заинтересованным сторонам, таким как руководство и группы разработчиков. Они сообщают руководителям проектов и менеджменту о состоянии приложений и систем, которые в настоящее время разрабатываются или продолжают развиваться. «Ключевым аспектом для принятия этого решения является то, что программные карты обеспечивают структурный контекст, необходимый для правильной интерпретации этих показателей эффективности». [5] Как инструмент коммуникации, карты программного обеспечения действуют как открытые, прозрачные информационные пространства, которые позволяют уравновешивать приоритеты качества кода и создания новых функций друг с другом, а также принимать решения и реализовывать необходимые меры для улучшения процесса разработки программного обеспечения. .
Например, они облегчают принятие решений о том, где в коде повышение качества было бы полезным как для ускорения текущих разработок, так и для снижения рисков будущих проблем с обслуживанием.
Благодаря высокой степени выразительности (например, плотности информации) и мгновенному автоматизированному созданию карты дополнительно служат для отражения текущего состояния системы и процессов разработки, устраняя существенный информационный разрыв между командами управления и разработки, повышая осведомленность о статус, и служить инструментом раннего обнаружения рисков.
СОДЕРЖАНИЕ
Карты программного обеспечения основаны на объективной информации , как определяются KPI приводимым анализом кода , а также импортируемой информацией из хранилища программного обеспечения систем, информации из исходных кодов или инструментов разработки программного обеспечения и инструментов программирования . В частности, карты программного обеспечения не связаны с конкретным языком программирования , моделирования языка или процесс разработки программного обеспечения модели.
Карты программного обеспечения используют иерархию артефактов реализации программного обеспечения, таких как файлы исходного кода, в качестве основы для построения отображения дерева , т. Е. Прямоугольной области, которая представляет всю иерархию, разделяя область на прямоугольные подобласти. Программная карта, неформально говоря, похожа на виртуальную трехмерную модель города , в которой артефакты программной системы выглядят как виртуальные прямоугольные трехмерные здания или башни, которые размещаются в соответствии с их положением в иерархии программной реализации.
Карты программного обеспечения могут выражать и объединять информацию о разработке программного обеспечения, качестве программного обеспечения и динамике системы, отображая эту информацию на визуальные переменные [6] элементов древовидной карты, такие как размер, высота, цвет или текстура отпечатка. Их можно систематически указывать, автоматически генерировать и организовывать по шаблонам.
Пример системы картографического программного обеспечения
Карты программного обеспечения «объединяют тематическую информацию о процессах разработки программного обеспечения (эволюции), качестве, структуре и динамике программного обеспечения и отображают эту информацию в картографической форме». [7] Например:
- Высота виртуального здания может быть пропорциональна сложности кодовой единицы (например, единым или комбинированным программным показателям ).
- Площадь земли виртуального 3D-здания может быть пропорциональна количеству строк кода в модуле или (например, NCLOC строк кода без комментариев).
- Цвет может отображать текущий статус разработки, то есть, сколько разработчиков изменяют / редактируют кодовый блок.
В этой примерной конфигурации карта программного обеспечения показывает ключевые точки в исходном коде, связанные с аспектами процесса разработки программного обеспечения. Например, с первого взгляда становится очевидным, что нужно изменить, чтобы:
- быстро внедрять изменения;
- быстро оценить влияние изменений в одном месте на функциональность в другом месте;
- уменьшить запутывания, которые приводят к неконтролируемым процессам в приложении;
- быстрее находить ошибки;
- обнаруживать и устранять плохой стиль программирования.
Карты программного обеспечения представляют собой ключевые инструменты в области автоматической диагностики программного обеспечения для диагностики программного обеспечения .
Как инструменты бизнес-аналитики и системы рекомендаций
Программные карты могут использоваться, в частности, как инструмент анализа и представления систем бизнес-аналитики , специализирующихся на анализе данных, связанных с программным обеспечением. Кроме того, программные карты «служат в качестве рекомендательных систем для разработки программного обеспечения». [7]
Карты программного обеспечения не ограничиваются информацией, связанной с программным обеспечением: они также могут включать любую иерархическую системную информацию, например, информацию об обслуживании сложных технических артефактов.
Техники визуализации
Программные карты исследуются в области программной визуализации . Визуализация программных карт обычно основана на древовидном отображении , «подходе к визуализации иерархических информационных структур» [8] или других подходах к отображению иерархии.
Алгоритмы компоновки
Для построения программных карт используются различные подходы к компоновке для создания базового пространственного отображения компонентов, таких как:
- Алгоритмы древовидной карты, которые изначально отображают иерархию программного обеспечения в рекурсивно вложенную прямоугольную область.
- Алгоритмы карты Вороного, которые первоначально отображают иерархию программного обеспечения путем создания карты Вороного .
Стабильность макета
Пространственное расположение, вычисленное макетами, например определенное древовидными картами, строго зависит от иерархии. Если программные карты должны генерироваться часто для развивающейся или изменяющейся системы, на удобство использования программных карт влияют нестабильные макеты, то есть незначительные изменения в иерархии могут вызвать значительные изменения в макете.
В отличие от обычных алгоритмов карты дерева Вороного, которые не предоставляют детерминированных макетов, алгоритм макета для карт дерева Вороного может быть расширен, чтобы обеспечить высокую степень сходства макета для различных иерархий. [9] Аналогичные подходы существуют для случая, основанного на древовидной карте.
История
Методы и приемы программных карт относятся к научному направлению программной визуализации и визуализации информации . Они составляют ключевую концепцию и методику в области диагностики программного обеспечения . У них есть приложения также в разработке программного обеспечения и аналитике программного обеспечения . Программные карты были широко разработаны и исследованы, например, в Институте Хассо Платтнера для системной инженерии ИТ, в частности для крупномасштабных сложных ИТ-систем и приложений.
Рекомендации
- ^ Bohnet, J .; Дёлльнер, Дж. (2011). «Мониторинг качества кода и активности разработки с помощью программных карт» . Материалы семинара IEEE ACM ICSE по управлению техническим долгом . Ассоциация вычислительной техники. С. 9–16. DOI : 10.1145 / 1985362.1985365 . ISBN 9781450305860.
- ^ Бонет, Дж. (2010). Визуализация следов выполнения и ее применение для сопровождения программного обеспечения (PhD). Hasso-Plattner-Institut, Потсдамский университет.
- ^ Wettel, R .; Ланца, М. (2007). «Визуализация программных систем как городов». Труды VISSOFT 2007 (4-й международный семинар IEEE по визуализации программного обеспечения для понимания и анализа) . Издательство IEEE Computer Society Press. С. 92–99. CiteSeerX 10.1.1.135.1979 . DOI : 10.1109 / VISSOF.2007.4290706 . ISBN 978-1-4244-0599-2.
- ^ Kuhn, A .; Loretan, P .; Нирстраз, О. (2008). «Согласованный макет для тематических программных карт». 2008 15-я рабочая конференция по обратному инжинирингу . С. 209–218. arXiv : 1209,5490 . DOI : 10,1109 / WCRE.2008.45 . ISBN 978-0-7695-3429-9.
- ^ Limberger, D .; Wasty, B .; Trümper, J .; Дёлльнер, Дж. (2013). «Интерактивные программные карты для анализа исходного кода через Интернет». Материалы 18-й Международной конференции по 3D-веб-технологиям . С. 91–98. DOI : 10.1145 / 2466533.2466550 . ISBN 9781450321334.
- ^ Карпендейл, штат Массачусетс, США "Рассмотрение визуальных переменных как основа для визуализации информации" (PDF) .
- ^ а б Трумпер, Йонас; Дёлльнер, Юрген (2012). «Расширение рекомендательных систем с помощью программных карт». Труды 3-го Международного семинара ICSE по системам рекомендаций для разработки программного обеспечения (RSSE) . Компьютерное общество IEEE. С. 92–96. DOI : 10,1109 / RSSE.2012.6233420 . ISBN 978-1-4673-1758-0.
- ^ Johnson, B .; Шнейдерман, Б. (1991). «Древовидные карты: заполняющий пространство подход к визуализации иерархических информационных структур» (PDF) . Продолжающаяся визуализация '91 . С. 284–291. DOI : 10.1109 / VISUAL.1991.175815 . ISBN 0-8186-2245-8.
- ^ Hahn, S .; Trümper, J .; Moritz, D .; Дёлльнер, Дж. (2014). «Визуализация различных иерархий с помощью стабильной компоновки карт дерева Вороного» . 2014 Международная конференция по теории и приложениям визуализации информации (IVAPP) . С. 50–58. ISBN 978-9-8975-8132-8.
Внешние ссылки
- Научная конференция VISSOFT (Рабочая конференция IEEE по визуализации программного обеспечения) [1]
- Интерактивная визуализация сложных трехмерных древовидных карт
- Мультимасштабное визуальное сравнение следов выполнения
- Интерактивные карты программного обеспечения для анализа исходного кода через Интернет
- Расширение систем рекомендаций с помощью программных карт
- Подход визуального анализа для поддержки безупречного обслуживания программного обеспечения
- ViewFusion: корреляция представлений структуры и действий для отслеживания выполнения
- Инструмент визуального анализа и дизайна для планирования реинжиниринга программного обеспечения
- Интерактивные пространственные аннотации для трехмерных древовидных карт крупномасштабных программных систем
- Визуализация следов выполнения и ее применение для сопровождения программного обеспечения
- Понимание сложных многопоточных программных систем с помощью визуализации трассировки
- Визуализация многопоточного поведения для облегчения обслуживания сложных программных систем
- Визуализация сильно сокращенных трассировок выполнения для облегчения исследования трассировки
- Проецирование изменений кода на трассировки выполнения для поддержки локализации недавно появившихся ошибок
- SyncTrace: визуальный анализ взаимодействия потоков