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