Un mapa de software representa información estática, dinámica y evolutiva de los sistemas de software y sus procesos de desarrollo de software mediante visualización de información orientada a mapas 2D o 3D . Constituye un concepto fundamental y una herramienta de visualización de software , software de análisis y diagnóstico de software . Sus aplicaciones principales incluyen el análisis de riesgos y el seguimiento de la calidad del código , la actividad del equipo o el progreso del desarrollo de software [1] y, en general, la mejora de la eficacia de la ingeniería de software con respecto a todos los artefactos, procesos y partes interesadas relacionados en todo elproceso de ingeniería de software y mantenimiento de software .
Motivación y conceptos
Los mapas de software se aplican en el contexto de la ingeniería de software : los proyectos de desarrollo de software complejos y a largo plazo suelen enfrentarse a múltiples dificultades, como la fricción entre completar las funciones del sistema y, al mismo tiempo, obtener un alto grado de calidad del código y del software. para garantizar el mantenimiento del software del sistema en el futuro. En particular, "el mantenimiento de sistemas de software complejos tiende a ser costoso porque los desarrolladores dedican una parte importante de su tiempo a tratar de comprender la estructura y el comportamiento del sistema". [2] La idea clave de los mapas de software es hacer frente a ese desafío y problemas de optimización proporcionando medios de comunicación efectivos para cerrar la brecha de comunicación entre las diversas partes interesadas y dominios de información dentro de los proyectos de desarrollo de software y obtener conocimientos en el sentido de visualización de la información .
Los mapas de software aprovechan técnicas de mapas cartográficos bien definidos que utilizan la metáfora del modelo de ciudad virtual en 3D [3] para expresar el espacio de información abstracto y complejo subyacente. Se requiere la metáfora "dado que el software no tiene forma física, no existe un mapeo natural del software en un espacio bidimensional". [4] Los mapas de software son no espaciales mapas que tienen que convertir los datos de jerarquía y sus atributos en una representación espacial.
Aplicaciones
Los mapas de software generalmente permiten una comunicación comprensible y efectiva, por supuesto, los riesgos y los costos de los proyectos de desarrollo de software a varias partes interesadas, como los equipos de gestión y desarrollo. Comunican el estado de las aplicaciones y los sistemas que se están desarrollando o que se están desarrollando más a los líderes del proyecto y a la gerencia de un vistazo. “Un aspecto clave para esta toma de decisiones es que los mapas de software brindan el contexto estructural necesario para la correcta interpretación de estos indicadores de desempeño”. [5] Como instrumento de comunicación, los mapas de software actúan como espacios de información abiertos y transparentes que permiten equilibrar las prioridades de la calidad del código y la creación de nuevas funciones y decidir e implementar las medidas necesarias para mejorar el proceso de desarrollo de software. .
Por ejemplo, facilitan las decisiones sobre en qué parte del código un aumento de la calidad sería beneficioso tanto para acelerar las actividades de desarrollo actuales como para reducir los riesgos de futuros problemas de mantenimiento.
Debido a su alto grado de expresividad (por ejemplo, densidad de información) y su generación instantánea y automatizada, los mapas sirven adicionalmente para reflejar el estado actual del sistema y los procesos de desarrollo, cerrando una brecha de información esencial entre los equipos de gestión y desarrollo, mejorando la conciencia sobre el estado y servir como instrumento de detección temprana de riesgos.
Contenido
Los mapas de software se basan en información objetiva determinada por el análisis de código impulsado por KPI , así como por información importada de los sistemas de repositorio de software , información de los códigos fuente o herramientas de desarrollo de software y herramientas de programación . En particular, los mapas de software no están vinculados a un lenguaje de programación específico , lenguaje de modelado o modelo de proceso de desarrollo de software .
Los mapas de software utilizan la jerarquía de los artefactos de implementación del software, como los archivos de código fuente , como base para construir un mapeo de árbol , es decir, un área rectangular que representa toda la jerarquía, subdividiendo el área en subáreas rectangulares. Un mapa de software, hablando informalmente, se parece a un modelo de ciudad virtual en 3D , en el que los artefactos del sistema de software aparecen como edificios o torres virtuales, rectangulares en 3D, que se colocan de acuerdo con su posición en la jerarquía de implementación del software.
Los mapas de software pueden expresar y combinar información sobre el desarrollo de software, la calidad del software y la dinámica del sistema mapeando esa información en variables visuales [6] de los elementos del mapa de árbol como el tamaño de la huella, la altura, el color o la textura. Pueden especificarse, generarse automáticamente y organizarse mediante plantillas de forma sistemática.
Ejemplo de sistema de software de mapeo
Los mapas de software "combinan información temática sobre los procesos de desarrollo de software (evolución), la calidad, la estructura y la dinámica del software y muestran esa información de manera cartográfica". [7] Por ejemplo:
- La altura de un edificio virtual puede ser proporcional a la complejidad de la unidad de código (por ejemplo, métricas de software únicas o combinadas ).
- El área del suelo de un edificio virtual en 3D puede ser proporcional al número de líneas de código en el módulo o (por ejemplo, líneas de código sin comentarios NCLOC).
- El color puede expresar el estado de desarrollo actual, es decir, cuántos desarrolladores están cambiando / editando la unidad de código.
Con esta configuración ejemplar, el mapa de software muestra puntos cruciales en el código fuente con relaciones con aspectos del proceso de desarrollo de software. Por ejemplo, resulta obvio de un vistazo qué cambiar para:
- implementar cambios rápidamente;
- evaluar rápidamente el impacto de los cambios en un lugar sobre la funcionalidad en otro lugar;
- reducir enredos que conducen a procesos incontrolados en la aplicación;
- encontrar errores más rápido;
- descubrir y eliminar el mal estilo de programación.
Los mapas de software representan herramientas clave en el ámbito de los diagnósticos de software de diagnóstico de software automatizados .
Como herramientas de inteligencia empresarial y sistemas de recomendación
Los mapas de software se pueden utilizar, en particular, como herramienta de análisis y presentación de sistemas de inteligencia empresarial , especializados en el análisis de datos relacionados con el software. Además, los mapas de software "sirven como sistemas de recomendación para la ingeniería de software". [7]
Los mapas de software no están limitados por la información relacionada con el software: también pueden incluir cualquier información jerárquica del sistema, por ejemplo, información de mantenimiento sobre artefactos técnicos complejos.
Técnicas de visualización
Los mapas de software se investigan en el dominio de la visualización de software . La visualización de mapas de software se basa comúnmente en el mapeo de árboles , "un enfoque de relleno de espacio para la visualización de estructuras de información jerárquica" [8] u otros enfoques de mapeo jerárquico.
Algoritmos de diseño
Para construir mapas de software, se utilizan diferentes enfoques de diseño para generar el mapeo espacial básico de componentes como:
- Algoritmos de mapa de árbol que inicialmente mapean la jerarquía del software en un área rectangular anidada recursivamente.
- Algoritmos de mapa de Voronoi que inicialmente mapean la jerarquía del software generando un mapa de Voronoi .
Estabilidad de diseño
La disposición espacial calculada por diseños como los definidos por mapas de árbol depende estrictamente de la jerarquía. Si los mapas de software deben generarse con frecuencia para un sistema en evolución o cambiante, la usabilidad de los mapas de software se ve afectada por diseños no estables, es decir, cambios menores en la jerarquía pueden causar cambios significativos en el diseño.
A diferencia de los algoritmos normales de mapas de árbol de Voronoi, que no proporcionan diseños deterministas, el algoritmo de diseño para mapas de árboles de Voronoi se puede ampliar para proporcionar un alto grado de similitud de diseño para diferentes jerarquías. [9] Existen enfoques similares para el caso basado en mapas de árboles.
Historia
Los métodos y técnicas de mapas de software pertenecen al ámbito científico de la visualización de software y la visualización de información . Forman un concepto y una técnica clave dentro de los campos del diagnóstico de software . Tienen aplicaciones también en minería de software y análisis de software . Los mapas de software han sido desarrollados e investigados extensamente por, por ejemplo, en el Instituto Hasso Plattner de ingeniería de sistemas de TI, en particular para sistemas y aplicaciones de TI complejos y a gran escala.
Referencias
- ^ Bohnet, J .; Döllner, J. (2011). "Seguimiento de la calidad del código y la actividad de desarrollo mediante mapas de software" . Actas del taller IEEE ACM ICSE sobre gestión de la deuda técnica . Asociación para Maquinaria de Computación. págs. 9-16. doi : 10.1145 / 1985362.1985365 . ISBN 9781450305860.
- ^ Bohnet, J. (2010). Visualización de Rastros de Ejecución y su Aplicación al Mantenimiento de Software (PhD). Hasso-Plattner-Institut, Universidad de Potsdam.
- ^ Wettel, R .; Lanza, M. (2007). "Visualización de sistemas de software como ciudades". Actas de VISSOFT 2007 (4º Taller Internacional IEEE sobre Visualización de Software para Comprensión y Análisis) . IEEE Computer Society Press. págs. 92–99. CiteSeerX 10.1.1.135.1979 . doi : 10.1109 / VISSOF.2007.4290706 . ISBN 978-1-4244-0599-2.
- ^ Kuhn, A .; Loretan, P .; Nierstrasz, O. (2008). "Diseño coherente para mapas de software temáticos". 2008 XV Jornada de Trabajo sobre Ingeniería Inversa . págs. 209–218. arXiv : 1209.5490 . doi : 10.1109 / WCRE.2008.45 . ISBN 978-0-7695-3429-9.
- ^ Limberger, D .; Wasty, B .; Trümper, J .; Döllner, J. (2013). "Mapas de software interactivos para el análisis de código fuente basado en web". Actas de la 18ª Conferencia Internacional sobre Tecnología Web 3D . págs. 91–98. doi : 10.1145 / 2466533.2466550 . ISBN 9781450321334.
- ^ Carpendale, MST "Consideración de variables visuales como base para la visualización de información" (PDF) .
- ^ a b Trümper, Jonas; Döllner, Jürgen (2012). "Ampliación de sistemas de recomendación con mapas de software". Actas del 3er Taller Internacional ICSE sobre Sistemas de Recomendación para Ingeniería de Software (RSSE) . Sociedad de Informática IEEE. págs. 92–96. doi : 10.1109 / RSSE.2012.6233420 . ISBN 978-1-4673-1758-0.
- ^ Johnson, B .; Shneiderman, B. (1991). "Mapas de árboles: un enfoque de relleno de espacio para la visualización de estructuras de información jerárquica" (PDF) . Procediendo Visualización '91 . págs. 284-291. doi : 10.1109 / VISUAL.1991.175815 . ISBN 0-8186-2245-8.
- ^ Hahn, S .; Trümper, J .; Moritz, D .; Döllner, J. (2014). "Visualización de diferentes jerarquías por diseño estable de voronoi treemaps" . 2014 Congreso Internacional sobre Teoría y Aplicaciones de Visualización de Información (IVAPP) . págs. 50–58. ISBN 978-9-8975-8132-8.
enlaces externos
- Conferencia científica VISSOFT (Conferencia de trabajo de IEEE sobre visualización de software) [1]
- Representación interactiva de mapas de árbol 3D complejos
- Comparación visual multiescala de trazas de ejecución
- Mapas de software interactivos para el análisis de código fuente basado en la web
- Ampliación de sistemas de recomendación con mapas de software
- Un enfoque de análisis visual para respaldar el mantenimiento perfecto del software
- ViewFusion: Correlacionar vistas de estructura y actividad para seguimientos de ejecución
- Una herramienta de análisis y diseño visual para la reingeniería de software de planificación
- Anotaciones de área interactivas para mapas de árbol 3D de sistemas de software a gran escala
- Visualización de trazas de ejecución y su aplicación al mantenimiento de software
- Comprensión de sistemas de software complejos de subprocesos múltiples mediante el uso de la visualización de seguimiento
- Visualización de comportamiento multiproceso para facilitar el mantenimiento de sistemas de software complejos
- Visualización de trazas de ejecución masivamente podadas para facilitar la exploración de trazas
- Proyección de cambios de código en seguimientos de ejecución para respaldar la localización de errores introducidos recientemente
- SyncTrace: análisis visual de interacción de hilos