Аноним

Техники визуализации при разработке алгоритмов: различия между версиями

Материал из WEGA
 
(не показаны 4 промежуточные версии 1 участника)
Строка 26: Строка 26:




Инструменты визуализации программного обеспечения должны быть способны анимировать ''не только «игрушечные» программы'', но и весьма сложные алгоритмические коды, и тестировать их поведение на больших наборах данных. К сожалению, даже системам, предназначенным для больших информационных пространств, нередко недостает продуманных механизмов навигации и методов устранения узких мест процесса отображения. Задача устранения этого типа ограничений пока остается нерешенной.
Инструменты визуализации программного обеспечения должны быть способны анимировать ''не только «игрушечные» программы'', но и весьма сложные алгоритмические коды, и тестировать их поведение на больших наборах данных. К сожалению, даже системам, предназначенным для больших информационных пространств, нередко недостает продуманных механизмов навигации и методов обхода узких мест процесса отображения. Задача устранения этого типа ограничений пока остается нерешенной.




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




'''Техника'''
'''Техника'''


Важнейшим аспектом визуализации динамического поведения выполняемой программы является способ его перевода в графические абстракции. Существуют два основных подхода привязки визуализаций к коду: Подход на основе событий и подход на основе отображения состояний.
Важнейшим аспектом визуализации динамического поведения выполняемой программы является способ его перевода в графические абстракции. Существуют два основных подхода привязки визуализаций к коду: подход на основе событий и подход на основе отображения состояний.




'''Визуализация на основе событий'''
'''Визуализация на основе событий'''


Естественный подход к анимации алгоритмов заключается в аннотировании алгоритмического кода вызовами подпрограмм визуализации. Первый этап заключается в определении конкретных действий, выполняемых алгоритмом и представляющих интерес с точки зрения визуализации. Такие действия обычно называются интересующими событиями. К примеру, в алгоритме сортировки перестановка двух элементов может считаться интересующим событием. Второй этап заключается в соединении интересующего события с модификацией графического изображения. Сцены анимации можно определить путем настройки подходящих процедур визуализации, управляющих состоянием графической системы в соответствии с актуальными параметрами, генерируемыми конкретным событием. Либо эти процедуры визуализации могут просто записывать журнал событий в файл для их визуализации по окончании выполнения программы. Вызовы подпрограмм визуализации обычно выполняются посредством аннотирования исходного алгоритмического кода в точках, в которых происходят интересующие события. Это можно выполнить вручную либо при помощи специализированных редакторов. Примерами наборов инструментов для реализации подхода на основе событий могут служить Polka [ ] и GeoWin, тип данных C++, способный легко связываться с важнейшими алгоритмическими библиотеками программных модулей – такими как CGAL [ ] и LED A [19].
Естественный подход к анимации алгоритмов заключается в аннотировании алгоритмического кода вызовами подпрограмм визуализации. Первый этап состоит в определении конкретных действий, выполняемых алгоритмом и представляющих интерес с точки зрения визуализации. Такие действия обычно называются ''интересующими событиями''. К примеру, в алгоритме сортировки перестановка двух элементов может считаться интересующим событием. Второй этап заключается в создании ассоциации интересующего события с модификацией графического изображения. Сцены анимации можно определить путем настройки подходящих процедур визуализации, управляющих состоянием графической системы в соответствии с актуальными параметрами, генерируемыми конкретным событием. Либо эти процедуры визуализации могут просто записывать журнал событий в файл для их визуализации ''по окончании выполнения программы'' (postmortem). Вызовы подпрограмм визуализации обычно выполняются посредством аннотирования исходного алгоритмического кода в точках, в которых происходят интересующие события. Это можно выполнить вручную либо при помощи специализированных редакторов. Примерами наборов инструментов для реализации подхода на основе событий могут служить Polka [28] и GeoWin, тип данных C++, способный легко связываться с важнейшими алгоритмическими библиотеками программных модулей – такими как CGAL [14] и LED A [19].




'''Визуализация на основе отображения состояний'''
'''Визуализация на основе отображения состояний'''


Системы визуализации алгоритмов на основе отображения состояний полагаются на предположение, заключающееся в том, что наблюдение изменений переменных дает ключ к действиям, выполняемым алгоритмом. Главной задачей являются захват и мониторинг модификаций данных, а не обработка интересующих событий, выдаваемых аннотированным алгоритмическим кодом. По этой причине такие системы также называются системами визуализации данных, управляемыми данными. Обычные отладчики могут рассматриваться как системы, управляемые данными, поскольку они предоставляют непосредственную обратную связь в ответ на модификацию переменных. Основным преимуществом этого подхода по сравнению с подходом на основе события является намного большая степень допустимого игнорирования кода: для анимации программы необходимо знать только интерпретацию переменных. С другой стороны, если уделять внимание только модификации данных, это может привести к ограничению возможных вариантов настройки и усложнению процесса создания анимаций, естественным образом отражающих интересующие события. В качестве примеров инструментов визуализации на основе отображения состояний можно привести Pavane [23, 25], ставший воплощением первого изменения парадигмы визуализации алгоритмов с момента появления понятия интересующих событий, и Leonardo [10] – интегрированную среду разработки, визуализации и выполнения программ на C.
Системы визуализации алгоритмов на основе отображения состояний полагаются на предположение, заключающееся в том, что наблюдение изменений переменных дает ключ к действиям, выполняемым алгоритмом. Главной задачей являются захват и мониторинг модификаций данных, а не обработка интересующих событий, выдаваемых аннотированным алгоритмическим кодом. По этой причине такие системы также называются системами визуализации данных, ''управляемыми данными''. Обычные отладчики могут рассматриваться как системы, управляемые данными, поскольку они предоставляют непосредственную обратную связь в ответ на модификацию переменных. Основным преимуществом этого подхода по сравнению с подходом на основе событий является намного большая степень допустимого игнорирования кода: для анимации программы необходимо знать только интерпретацию переменных. С другой стороны, если уделять внимание только модификации данных, это может привести к ограничению возможностей настройки и усложнению процесса создания анимаций, естественным образом отражающих интересующие события. В качестве примеров инструментов визуализации на основе отображения состояний можно привести Pavane [23, 25], ставший воплощением первого изменения парадигмы визуализации алгоритмов с момента появления понятия интересующих событий, и Leonardo [10] – интегрированную среду разработки, визуализации и выполнения программ на C.




Строка 50: Строка 50:


== Применение ==
== Применение ==
Техники визуализации при разработке алгоритмов находят применение в таких областях, как тестирование и отладка реализаций алгоритмов, визуальная проверка сложных структур данных, определение узких мест производительности системы и оптимизация кода. Некоторые примеры подобного использования приведены [12].
Техники визуализации при разработке алгоритмов находят применение в таких областях, как тестирование и отладка реализаций алгоритмов, визуальная проверка сложных структур данных, определение узких мест производительности системы и оптимизация кода. Некоторые примеры подобного использования приведены в работе [12].


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


== См. также ==
== См. также ==
Строка 116: Строка 116:


29. Tal, A., Dobkin, D.: Visualization of Geometric Algorithms. IEEE Trans. Visual. Comp. Graphics 1,194-204(1995)
29. Tal, A., Dobkin, D.: Visualization of Geometric Algorithms. IEEE Trans. Visual. Comp. Graphics 1,194-204(1995)
[[Категория: Совместное определение связанных терминов]]