Articulo de referencia

Mapa de software

Un mapa de software representa información estática, dinámica y evolutiva de sistemas de software y sus procesos de desarrollo de software mediante visualización de información ...

Un mapa de software representa información estática, dinámica y evolutiva de sistemas de software y sus procesos de desarrollo de software mediante visualización de información orientada a mapas en 2D o 3D . Constituye un concepto y una herramienta fundamentales en la visualización de software , el análisis de software y el diagnóstico de software . [ 1 ] Sus aplicaciones principales incluyen el análisis de riesgos y el monitoreo de la calidad del código , la actividad del equipo o el progreso del desarrollo de software [ 2 ] y, en general, la mejora de la efectividad de la ingeniería de software con respecto a todos los artefactos, procesos y partes interesadas relacionados a lo largo del proceso de ingeniería de software y el mantenimiento del 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 funcionalidades del sistema y, al mismo tiempo, obtener un alto grado de calidad del código y del software para garantizar el mantenimiento del sistema en el futuro. En particular, "mantener sistemas de software complejos tiende a ser costoso porque los desarrolladores dedican una parte significativa de su tiempo a intentar comprender la estructura y el comportamiento del sistema". [ 3 ] La idea clave de los mapas de software es abordar ese desafío y los problemas de optimización proporcionando medios de comunicación eficaces para cerrar la brecha de comunicación entre las diversas partes interesadas y los dominios de información dentro de los proyectos de desarrollo de software y obtener perspectivas en el sentido de la visualización de la información .

Los mapas de software aprovechan técnicas cartográficas bien definidas, utilizando la metáfora del modelo virtual de ciudad en 3D [ 4 ] para expresar el complejo espacio de información abstracto subyacente. La metáfora es necesaria «dado que el software no tiene forma física, no existe una representación natural del software en un espacio bidimensional» [ 5 ] . Los mapas de software son mapas no espaciales que deben convertir los datos jerárquicos y sus atributos en una representación espacial.

Aplicaciones

Los mapas de software generalmente permiten una comunicación comprensible y efectiva del curso, los riesgos y los costos de los proyectos de desarrollo de software a diversas partes interesadas, como la gerencia y los equipos de desarrollo. Comunican el estado de las aplicaciones y los sistemas que se están desarrollando o que se están desarrollando aún 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 proporcionan el contexto estructural necesario para la correcta interpretación de estos indicadores de rendimiento". [ 6 ] 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 entre sí y decidir e implementar las medidas necesarias para mejorar el proceso de desarrollo de software .

Por ejemplo, facilitan la toma de decisiones sobre en qué parte del código sería beneficioso un aumento de la calidad, 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 a su generación instantánea y automatizada, los mapas también sirven para reflejar el estado actual de los procesos de sistema y desarrollo, salvando una brecha de información esencial entre los equipos de gestión y desarrollo, mejorando el conocimiento del estado y sirviendo como instrumento de detección temprana de riesgos.

Contenido

Los mapas de software se basan en información objetiva determinada mediante el análisis de código basado en indicadores clave de rendimiento (KPI) , así como en información importada de sistemas de repositorio de software , información de los códigos fuente o herramientas de desarrollo y programación de software . En particular, los mapas de software no están vinculados a un lenguaje de programación , lenguaje de modelado o modelo de proceso de desarrollo de software específico .

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 en árbol ; es decir, un área rectangular que representa toda la jerarquía, subdividiéndola en subáreas rectangulares. En términos informales, un mapa de software se asemeja a un modelo virtual de una ciudad en 3D , donde los artefactos del sistema de software aparecen como edificios o torres virtuales rectangulares en 3D, ubicados según 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, la calidad y la dinámica del software, asignando dicha información a variables visuales [ 7 ] de los elementos del mapa de árbol, como el tamaño, la altura, el color o la textura. Se pueden especificar sistemáticamente, generar automáticamente y organizar mediante plantillas.

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". [ 8 ] 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 individuales o combinadas ).
  • El área del terreno de un edificio virtual 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 actual del desarrollo, 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 relacionados con aspectos del proceso de desarrollo de software. Por ejemplo, resulta evidente de un vistazo qué hay que cambiar para:

  • implementar cambios rápidamente;
  • evaluar rápidamente el impacto de los cambios en un lugar sobre la funcionalidad en otros lugares;
  • reducir los enredos que conducen a procesos incontrolados en la aplicación;
  • encontrar errores más rápido;
  • Descubrir y eliminar los malos estilos de programación .

Los mapas de software representan herramientas clave en el ámbito del diagnóstico automatizado de software .

Como herramientas de inteligencia empresarial y sistemas de recomendación

Los mapas de software pueden utilizarse, 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". [ 8 ]

Los mapas de software no se limitan a 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 llenado de espacio para la visualización de estructuras de información jerárquicas" [ 9 ] 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 los componentes, tales como:

  • Algoritmos de mapa de árbol que inicialmente representan la jerarquía del software en un área rectangular anidada recursivamente.
  • Los algoritmos de mapas de Voronoi representan inicialmente la jerarquía del software mediante la generación de un mapa de Voronoi .

Estabilidad del diseño

La disposición espacial calculada mediante diseños como los definidos por los diagramas de árbol depende estrictamente de la jerarquía. Si es necesario generar mapas de software con frecuencia para un sistema en constante evolución o cambio, la usabilidad de dichos mapas se ve afectada por diseños inestables; es decir, pequeños cambios en la jerarquía pueden provocar cambios significativos en el diseño.

A diferencia de los algoritmos de mapas de árbol de Voronoi regulares, que no proporcionan diseños deterministas, el algoritmo de diseño para mapas de árbol de Voronoi se puede extender para proporcionar un alto grado de similitud de diseño para jerarquías variables. [ 10 ] Existen enfoques similares para el caso basado en mapas de árbol.

Historia

Los métodos y técnicas de mapas de software pertenecen a la disciplina científica de la visualización de software y la visualización de información . Constituyen un concepto y una técnica clave en el campo del diagnóstico de software . También tienen aplicaciones en la minería de software y el análisis de software . Los mapas de software han sido ampliamente desarrollados e investigados, por ejemplo, en el Instituto Hasso Plattner de Ingeniería de Sistemas de TI , en particular para sistemas y aplicaciones de TI complejos y de gran escala.

Referencias

  1. Diehl, Stephan (2007). Visualización de software  : visualización de la estructura, el comportamiento y la evolución del software . Berlín: Springer. ISBN 978-3-540-46505-8OCLC 184984646 .​ 
  2. Bohnet, J.; Döllner, J. (2011). «Monitoring Code Quality and Development Activity by Software Maps» . Actas del taller IEEE ACM ICSE sobre gestión de la deuda técnica . Association for Computing Machinery. págs. 9–16 . doi : 10.1145/1985362.1985365 . ISBN  9781450305860. S2CID 17258620 . 
  3. Bohnet, J. (2010). Visualización de trazas de ejecución y su aplicación al mantenimiento de software (Tesis doctoral). Hasso-Plattner-Institut, Universidad de Potsdam.
  4. Wettel, R.; Lanza, M. (2007). «Visualizing Software Systems as Cities». Actas de VISSOFT 2007 (4.º Taller Internacional IEEE sobre Visualización de Software para la Comprensión y el 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. S2CID 9974947 . 
  5. Kuhn, A.; Loretan, P.; Nierstrasz, O. (2008). «Diseño consistente para mapas de software temáticos». XV Conferencia de Trabajo sobre Ingeniería Inversa de 2008. págs. 209–218 . arXiv : 1209.5490 . doi : 10.1109/WCRE.2008.45 . ISBN  978-0-7695-3429-9. S2CID 232783 . 
  6. 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 la web». Actas de la 18.ª Conferencia Internacional sobre Tecnología Web 3D . págs. 91–98 . doi : 10.1145/2466533.2466550 . ISBN  9781450321334. S2CID 3040005 . 
  7. Carpendale, MST "Considerando las variables visuales como base para la visualización de información" (PDF) .
  8. 1 2 Trümper, Jonas; Döllner, Jürgen (2012). «Extending Recommendation Systems with Software Maps». Actas del 3er Taller Internacional ICSE sobre Sistemas de Recomendación para Ingeniería de Software (RSSE) . IEEE Computer Society. págs. 92–96 . doi : 10.1109/RSSE.2012.6233420 . ISBN  978-1-4673-1758-0. S2CID 1609575 . 
  9. Johnson, B.; Shneiderman, B. (1991). «Mapas de árbol: un enfoque que llena el espacio para la visualización de estructuras de información jerárquicas» (PDF) . Actas de Visualization '91 . págs. 284–291 . doi : 10.1109/VISUAL.1991.175815 . ISBN  0-8186-2245-8. S2CID 1733343 . 
  10. Hahn, S.; Trümper, J.; Moritz, D.; Döllner, J. (2014). «Visualización de jerarquías variables mediante la disposición estable de mapas de árbol de Voronoi» . Conferencia Internacional de 2014 sobre Teoría y Aplicaciones de la Visualización de la Información (IVAPP) . págs. 50–58 . ISBN  978-9-8975-8132-8.
  • Conferencia científica VISSOFT (IEEE Working Conference on Software Visualization)
  • Renderizado interactivo de mapas de árboles 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 los sistemas de recomendación con mapas de software
  • Un enfoque de análisis visual para apoyar el mantenimiento perfectivo del software
  • ViewFusion: Correlación de vistas de estructura y actividad para trazas de ejecución
  • Una herramienta de análisis y diseño visual para la planificación de reingeniería de software.
  • 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 multihilo complejos mediante la visualización de trazas.
  • Visualización del comportamiento multihilo para facilitar el mantenimiento de sistemas de software complejos.
  • Visualización de trazas de ejecución masivamente depuradas para facilitar la exploración de trazas.
  • Proyección de cambios de código en trazas de ejecución para facilitar la localización de errores introducidos recientemente.
  • SyncTrace: Análisis visual de la interacción entre subprocesos