La analítica de software es la analítica específica del dominio de los sistemas de software que tiene en cuenta el código fuente , las características estáticas y dinámicas (por ejemplo, métricas de software ), así como los procesos relacionados de su desarrollo y evolución . Su objetivo es describir, monitorear, predecir y mejorar la eficiencia y efectividad de la ingeniería de software a lo largo del ciclo de vida del software , en particular durante el desarrollo y el mantenimiento del software . La recopilación de datos generalmente se realiza mediante repositorios de software de minería, pero también se puede lograr mediante la recopilación de acciones de los usuarios o datos de producción. Una vía para utilizar los datos recopilados es aumentar los entornos de desarrollo integrados (IDE) con funciones basadas en datos. [1]
Definiciones
- "El análisis de software tiene como objetivo obtener información valiosa y procesable a partir de artefactos de software que ayuden a los profesionales a realizar tareas relacionadas con el desarrollo de software, los sistemas y los usuarios". [2] --- se centra en la analítica aplicada a los artefactos que componen un sistema de software.
- "El análisis de software es el análisis de datos de software para gerentes e ingenieros de software con el objetivo de capacitar a las personas y equipos de desarrollo de software para que obtengan y compartan información de sus datos para tomar mejores decisiones". [3] --- refuerza los objetivos centrales de los métodos y técnicas de análisis de software, centrándose tanto en los artefactos de software como en las actividades de los desarrolladores y equipos involucrados.
- "La analítica de software (SA) representa una rama de la analítica de big data . SA se ocupa del análisis de todos los artefactos de software, no solo del código fuente. [...] Estos niveles varían desde el nivel superior del consejo de administración y la configuración de la empresa gestión de visión y cartera, pasando por la planificación e implementación de la gestión de proyectos por parte de los desarrolladores de software ". [4] --- refleja el amplio alcance que incluye a varias partes interesadas.
Objetivos
La analítica de software tiene como objetivo respaldar decisiones y generar conocimientos, es decir, hallazgos, conclusiones y evaluaciones sobre los sistemas de software y su implementación, composición, comportamiento, calidad, evolución, así como sobre las actividades de las diversas partes interesadas de estos procesos.
- La información perspicaz obtenida por el análisis de software transmite comprensión o conocimiento significativo y útil para realizar las tareas objetivo. Por lo general, no se puede obtener fácilmente mediante el examen directo de big data sin la ayuda de métodos y técnicas de análisis.
- La información procesable obtenida por el análisis de software dirige o prescribe soluciones que las partes interesadas en los procesos de ingeniería de software pueden tomar (por ejemplo, profesionales de software, líderes de desarrollo o gerencia de nivel C).
Acercarse
Los métodos, técnicas y herramientas de análisis de software generalmente se basan en la recopilación, medición, análisis y visualización de la información que se encuentra en las múltiples fuentes de datos almacenadas en los entornos y ecosistemas de desarrollo de software. Los sistemas de software son adecuados para aplicar análisis porque, por un lado, la mayoría de los datos formalizados y precisos están disponibles y, por otro lado, los sistemas de software son extremadamente difíciles de administrar --- en pocas palabras: "los proyectos de software son altamente medibles, pero a menudo impredecible ". [3]
Las fuentes de datos principales incluyen código fuente , "registros, elementos de trabajo, informes de errores y ejecuciones de pruebas [...] registradas en repositorios de software como CVS, Subversion, GIT y Bugzilla". [5] También se pueden tener en cuenta los datos de telemetría , así como los seguimientos o registros de ejecución.
El análisis automatizado, los datos masivos y el razonamiento sistemático apoyan la toma de decisiones en casi todos los niveles. En general, las tecnologías clave empleadas por el análisis de software incluyen tecnologías analíticas como el aprendizaje automático , la minería de datos , las estadísticas , el reconocimiento de patrones , la visualización de información , así como la computación y el procesamiento de datos a gran escala. Por ejemplo, las herramientas de análisis de software permiten a los usuarios mapear los resultados de análisis derivados por medio de mapas de software , que permiten explorar de forma interactiva los artefactos del sistema y las métricas de software correlacionadas. También existen herramientas de análisis de software que utilizan tecnologías analíticas además de modelos de calidad de software en empresas de desarrollo de software ágiles , que respaldan la evaluación de las cualidades del software (por ejemplo, confiabilidad) y derivan acciones para su mejora. [6]
Historia
En mayo de 2009, la analítica de software se acuñó y propuso por primera vez cuando Dongmei Zhang fundó Software Analytics Group (SA) en Microsoft Research Asia (MSRA). El término se ha vuelto bien conocido en la comunidad de investigación en ingeniería de software después de que Zhang y sus colegas dieron una serie de tutoriales y charlas sobre análisis de software, en colaboración con Tao Xie de la Universidad Estatal de Carolina del Norte, en conferencias de ingeniería de software que incluyen un tutorial en la Conferencia internacional IEEE / ACM sobre ingeniería de software automatizada (ASE 2011), [7] una charla en el Taller internacional sobre tecnologías de aprendizaje automático en ingeniería de software (MALETS 2011), [8] un tutorial y una charla magistral impartida por Zhang en el IEEE -CS Conference on Software Engineering Education and Training, [9] [10] un tutorial en la International Conference on Software Engineering - Software Engineering in Practice Track, [11] y una charla magistral impartida por Zhang en la Conferencia de trabajo sobre minería de repositorios de software . [12]
En noviembre de 2010, Thomas Zimmermann y sus colegas del Empirical Software Engineering Group (ESE) en Microsoft Research Redmond propusieron en su artículo FoSER 2010, Software Development Analytics (Software Analytics con enfoque en el desarrollo de software). [13] Zimmermann y Tim Menzies de la Universidad de West Virginia organizaron un panel de peces de colores sobre análisis de desarrollo de software en la Conferencia Internacional sobre Ingeniería de Software, Ingeniería de Software en la Práctica. [14]
Ver también
- Repositorios de software de minería
- Mantenimiento del software
- Arqueología de software
- Desarrollo de software
- Proceso de desarrollo de software
- Experiencia de usuario
- Software de ordenador
- Software de la aplicacion
- Industria del software
- Analítica
Referencias
- ^ Bruch, Marcel; Bodden, Eric; Monperrus, Martin; Mezini, Mira (2010). "IDE 2.0: Inteligencia colectiva en el desarrollo de software" . doi : 10.1145 / 1882362.1882374 . Cite journal requiere
|journal=
( ayuda ) - ^ D. Zhang, S. han, Y. Dan, J.-G. Lou, H Zhang: "Análisis de software en la práctica". Software IEEE, septiembre / octubre 2013, págs. 30-35.
- ^ a b Raymond PL Buse y Thomas Zimmermann. "Necesidades de información para análisis de desarrollo de software". En Actas de la 34a Conferencia Internacional sobre Ingeniería de Software (ICSE 2012), Ingeniería de software en la práctica, Zúrich, Suiza, junio de 2012, págs. 987-996.
- ^ TM Abdellatif, LF Capretz, D. Ho. "Análisis de software a la práctica del software: una revisión sistemática de la literatura". 1. Taller internacional sobre ingeniería de Big Data, 2015, págs. 30-36.
- ^ Harald Gall, Tim Menzies, Laurie Williams y Thomas Zimmerman. "Análisis de desarrollo de software". Informes Dagstuhl, vol. 4, número 6, págs. 64-83.
- ^ Martínez-Fernández, Silverio; Vollmer, Anna Maria; Jedlitschka, Andreas; Franch, Xavier; López, Lidia; Ram, Prabhat; Rodríguez, Pilar; Aaramaa, Sanja; Bagnato, Alessandra (2019). "Evaluación y mejora continua de la calidad del software con herramientas de análisis de software: un caso de estudio" (PDF) . Acceso IEEE . 7 : 68219–68239. doi : 10.1109 / ACCESS.2019.2917403 . ISSN 2169-3536 .
- ^ Dongmei Zhang y Tao Xie. "xSA: eXtreme Software Analytics: unión de eXtreme Computing y Software Analytics". En Actas de la 26a Conferencia Internacional IEEE / ACM sobre Ingeniería de Software Automatizada (ASE 2011), Tutorial, Lawrence, Kansas, noviembre de 2011.
- ^ Dongmei Zhang, Yingnong Dang, Jian-Guang Lou, Shi Han, Haidong Zhang y Tao Xie. "Software Analytics como caso de aprendizaje en la práctica: enfoques y experiencias". In Proceedings of International Workshop on Machine Learning Technologies in Software Engineering (MALETS 2011), Lawrence, Kansas, noviembre de 2011. PDF Slides
- ^ Dongmei Zhang. "Software Analytics en la práctica y sus implicaciones para la educación y la formación". Fundamental. En Actas de la 24a Conferencia IEEE-CS sobre Educación y Capacitación en Ingeniería de Software (CSEE & T 2012), Tutorial, Nanjing, China, abril de 2012.
- ^ Dongmei Zhang, Yingnong Dang, Shi Han y Tao Xie. "Docencia y Capacitación en Analítica de Software". En Actas de la 24a Conferencia IEEE-CS sobre Educación y Capacitación en Ingeniería de Software (CSEE & T 2012), Tutorial, Nanjing, China, abril de 2012.
- ^ Dongmei Zhang y Tao Xie. "Software Analytics en la práctica: Mini tutorial". In Proceedings of the 34th International Conference on Software Engineering (ICSE 2012), Software Engineering in Practice, Mini Tutorial, Zurich, Suiza, junio de 2012, págs. 997. Diapositivas
- ^ Dongmei Zhang. "Conferencia magistral de MSR 2012: Análisis de software en la práctica: enfoques y experiencias". En Actas de la novena conferencia de trabajo sobre repositorios de software de minería (MSR 2012), Zúrich, Suiza, junio de 2012, págs.1.
- ^ Raymond PL Buse y Thomas Zimmermann. "Analítica para el desarrollo de software". En Actas del Taller sobre el futuro de la investigación en ingeniería de software (FoSER 2010), Santa Fe, NM, EE. UU., Noviembre de 2010, págs. 77-80.
- ^ Tim Menzies y Thomas Zimmermann. "Panel Goldfish Bowl: Análisis de desarrollo de software". En Actas de la 34a Conferencia Internacional sobre Ingeniería de Software (ICSE 2012), Ingeniería de software en la práctica, Zúrich, Suiza, junio de 2012, págs. 1032-1033.
enlaces externos
- InfoWorld: convierta las métricas de la aplicación en valor comercial
- Grupo de análisis de software de Microsoft Research Asia (SA)
- Grupo de ingeniería de software empírico de Microsoft Research Redmond (ESE)
- Análisis de software en la práctica y sus implicaciones para la educación y la formación, discurso de Dongmei Zhang en la 24a Conferencia IEEE-CS sobre educación y formación en ingeniería de software (CSEE & T 2012)
- Análisis de software en la práctica: enfoques y experiencias, diapositivas principales de Dongmei Zhang en la novena conferencia de trabajo sobre repositorios de software de minería (MSR 2012)
- Análisis de software en la práctica, diapositivas de mini tutoriales de Dongmei Zhang y Tao Xie en la 34a Conferencia Internacional sobre Ingeniería de Software (ICSE 2012)
- Análisis de software Pinterest
- Microsoft Azure: información sobre aplicaciones en Azure