Визуализация программного обеспечения

Визуализация программного обеспечения (англ. software visualization, также software visualisation) — область, связанная с визуализацией информации о программных системах, в том числе их архитектуры, исходного кода, метрик исполнения и этапов жизненного цикла. Для этого используются статические, интерактивные или анимированные двумерные и трёхмерные визуальные представления их структуры, выполнения, поведения и эволюции[1]. Такие подходы применяются как для внутренних метрик программных систем, так и для анализа процессов их разработки и сопровождения[2].

Информация о программных системах

Для визуализации программного обеспечения используются различные виды данных о программных системах. К ключевым категориям относятся:

  • артефакты реализации, такие как исходный код;
  • данные программных метрик, получаемые в ходе измерений или реверс-инжиниринга;
  • трассы, отражающие выполнение программы;
  • данные тестирования (например, покрытие тестами);
  • сведения из репозиториев кода, фиксирующих изменения.

Цели

Основные цели визуализации программного обеспечения — поддержка понимания программных систем (то есть их структуры) и алгоритмов (например, посредством анимации работы алгоритмов сортировки), а также анализ и исследование программ, их аномалий (например, визуализация классов с высокой сцепленностью) и жизненного цикла. Одно из преимуществ метода — возможность объединять и сопоставлять разнородные сведения (к примеру, проецировать изменения кода на трассы выполнения программы)[2].

Визуализация программного обеспечения применяется как инструмент и метод исследования и анализа данных о программных системах, в том числе для выявления аномалий по аналогии с визуальным анализом данных[3]. Например, эти методы используются для мониторинга таких процессов, как качество кода или активность команд разработчиков[4]. В то же время визуализация сама по себе не является методом обеспечения качества ПО. Такие подходы интегрируются в концепцию программной интеллектуальности, позволяя исследовать и контролировать внутренние взаимосвязи программных систем.

Типы

Инструменты визуализации программного обеспечения применяются для отображения исходного кода и дефектов качества во время разработки и сопровождения программ. Существуют разные способы отображения исходного кода, например, с помощью карт программного обеспечения[5], которые позволяют, в частности, автоматически выявлять и визуализировать дефекты качества в объектно-ориентированных системах и сервисах. Обычно такие инструменты отображают прямые связи между классами и их методами и указывают на потенциальные проблемы качества, а также облегчают визуальную навигацию по системе.

Визуализация программ также часто реализуется с помощью специализированных программ для визуализации графов. Согласно исследованию 2003 года среди специалистов по реверс-инжинирингу и сопровождению ПО, используется широкий спектр инструментов: как универсальные пакеты визуализации графов (например, GraphViz и GraphEd), так и инструменты UML (Rational Rose, Borland Together) и специализированные средства (Visualization of Compiler Graphs (VCG), Rigi)[6]. К числу средств, поддерживающих визуализацию посредством обратного проектирования кода, относятся также ESS-Model, BlueJ и Fujaba, причём последняя может дополнительно находить шаблоны проектирования[7].

Примечания

Литература

  • Roels, R. An Interactive Source Code Visualisation Plug-in for the MindXpres Presentation Platform // Computer Supported Education / R. Roels, P. Мезтеряга, B. Signer. — Springer, 2016. — Vol. 583. — P. 169–188. — ISBN 978-3-319-29584-8. — doi:10.1007/978-3-319-29585-5_10.
  • Burch, M. Visual data mining in software archives // Proceedings of the 2005 ACM symposium on Software visualization (SoftVis '05) / M. Burch, S. Diehl, P. Weißgerber. — 2005. — P. 37–46. — ISBN 1595930736. — doi:10.1145/1056018.1056024.
  • Diehl, S. Software Visualization. International Seminar Dagstuhl Castle, Germany, May 20–25, 2001 Revised Papers. — Springer, 2002. — Vol. 2269. — ISBN 978-3-540-43323-1. — doi:10.1007/3-540-45875-1.
  • Diehl, S. Software Visualization — Visualizing the Structure, Behaviour, and Evolution of Software. — Springer, 2007. — ISBN 978-3-540-46504-1.
  • Eades, P. Software Visualisation / P. Eades, K. Zhang. — World Scientific, 1996. — Vol. 7. — ISBN 981-02-2826-0.
  • Gîrba, T. How Developers Drive Software Evolution // Proceedings of International Workshop on Principles of Software Evolution (IWPSE 2005) / T. Gîrba, A. Kuhn, M. Seeberger … [и др.]. — IEEE Computer Society Press, 2005. — P. 113–122. — ISBN 0-7695-2349-8. — doi:10.1109/IWPSE.2005.21.
  • Keim, D.A. (январь—март 2002). “Information visualization and visual data mining”. IEEE Transactions on Visualization and Computer Graphics. 8 (1): 1—8. Bibcode:2002ITVCG...881847K. DOI:10.1109/2945.981847. Проверьте дату в |date= (справка на английском)
  • Knight, C. System and Software Visualization // Emerging Technologies / Chang Shi-kuo. — World Scientific, 2002. — Vol. 2. — P. 131–148. — ISBN 978-981-4491-78-5.
  • Kuhn, A. Exploiting the Analogy Between Traces and Signal Processing // Proceedings IEEE International Conference on Software Maintenance (ICSM 2006) / A. Kuhn, O. Greevy. — IEEE Computer Society Press, 2006. — P. 394–5. — ISBN 0-7695-2131-2. — doi:10.1109/ASE.2004.1342773.
  • Lanza, M. CodeCrawler — polymetric views in action // Proceedings. 19th International Conference on Automated Software Engineering, Linz, Austria, 20–24 сентября 2004. — 2004. — P. 394–5. — ISBN 0-7695-2131-2. — doi:10.1109/ASE.2004.1342773.
  • Lopez, F.L. Applying social network analysis to the information in CVS repositories // International Workshop on Mining Software Repositories (MSR 2004) W17S Workshop 26th International Conference on Software Engineering, Edinburgh, Scotland, UK, 25 мая 2004 / F.L. Lopez, G. Robles, B.J.M. Gonzalez. — IET, 2004. — P. 101–5. — ISBN 0-86341-432-X. — doi:10.1049/ic:20040485.
  • Marcus, A. 3D representations for software visualization // Proceedings of the 2003 ACM symposium on Software visualization / A. Marcus, L. Feng, J.I. Maletic. — 2003. — P. 27–ff. — ISBN 1581136420. — doi:10.1145/774833.774837.
  • Soukup, Tom. Visual Data Mining: Techniques and Tools for Data Visualization and Mining / Tom Soukup, Ian Davidson. — Wiley, 2002. — ISBN 978-0-471-27138-3.
  • Staples, M.L.; Bieman, J.M. (1999). “3-D Visualization of Software Structure”. Advances in Computers. 49: 96—143. CiteSeerX 10.1.1.13.3090. DOI:10.1016/S0065-2458(08)60284-3. ISBN 9780120121496.
  • Stasko, John. Software Visualization: Programming as a Multimedia Experience / John Stasko, Marc H. Brown, John B. Domingue … [и др.]. — MIT Press, 1998. — ISBN 978-0-262-19395-5.
  • Van Rysselberghe, F. Studying Software Evolution Information By Visualizing the Change History // Proceedings. 20th International Conference On Software Maintenance / F. Van Rysselberghe, S. Demeyer. — IEEE Computer Society Press, 2004. — P. 328–337. — ISBN 0-7695-2213-0. — doi:10.1109/ICSM.2004.1357818.
  • Wettel, R. Visualizing Software Systems as Cities // Proceedings of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis) / R. Wettel, M. Lanza. — IEEE Computer Society Press, 2007. — P. 92–99. — ISBN 978-1-4244-0599-2. — doi:10.1109/VISSOF.2007.4290706.
  • Zhang, K. Software Visualization — From Theory to Practice. — Kluwer, 2003. — ISBN 1-4020-7448-4.

Ссылки

  • SoftVis — симпозиум ACM по визуализации программного обеспечения
  • VISSOFT — конференция IEEE по визуализации программного обеспечения
  • EPDV — Eclipse Project Dependencies Viewer