El análisis de software es el análisis específico 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, las métricas del software ), así como los procesos relacionados con su desarrollo y evolución . Su objetivo es describir, monitorear, predecir y mejorar la eficiencia y la eficacia de la ingeniería de software a lo largo de su ciclo de vida , en particular durante el desarrollo y el mantenimiento del software . La recopilación de datos se realiza normalmente mediante la minería de repositorios de software , pero también se puede lograr recopilando acciones de los usuarios o datos de producción.
Definiciones
- "El análisis de software tiene como objetivo obtener información útil y procesable de los artefactos de software que ayudan a los profesionales a realizar tareas relacionadas con el desarrollo de software, los sistemas y los usuarios". [1] --- se centra en el análisis aplicado 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 obtener y compartir información de sus datos para tomar mejores decisiones". [2] --- fortalece 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.
- "El análisis de software (SA) representa una rama del análisis de big data . El 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 el establecimiento de la visión empresarial y la gestión de la cartera, pasando por la planificación y la implementación de la gestión de proyectos por parte de los desarrolladores de software". [3] --- refleja el amplio alcance que incluye a varias partes interesadas.
Objetivos
El análisis de software tiene como objetivo respaldar la toma de decisiones y generar conocimientos, es decir, hallazgos, conclusiones y evaluaciones sobre los sistemas de software y su implementación, composición, comportamiento, calidad y evolución, así como sobre las actividades de las distintas partes interesadas en estos procesos.
- La información reveladora obtenida mediante el análisis de software transmite conocimientos y conocimientos útiles y significativos para realizar tareas específicas. Por lo general, no se puede obtener fácilmente mediante el examen directo de big data sin procesar sin la ayuda de métodos y técnicas de análisis.
- La información procesable obtenida mediante el análisis de software orienta o prescribe soluciones que pueden adoptar las partes interesadas en los procesos de ingeniería de software (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 suelen basarse 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 muy adecuados para aplicar el análisis porque, por un lado, se dispone de datos mayoritariamente formalizados y precisos y, por otro, los sistemas de software son extremadamente difíciles de gestionar; en pocas palabras: "los proyectos de software son altamente mensurables, pero a menudo impredecibles". [2]
Las fuentes de datos principales incluyen código fuente , "registros, elementos de trabajo, informes de errores y ejecuciones de pruebas [...] registrados en repositorios de software como CVS, Subversion, GIT y Bugzilla". [4] También se pueden tener en cuenta los datos de telemetría , así como los rastros o registros de ejecución.
El análisis automatizado, los datos masivos y el razonamiento sistemático respaldan 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 el procesamiento y 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 respaldan la exploración interactiva de artefactos del sistema y métricas de software correlacionadas. También existen herramientas de análisis de software que utilizan tecnologías analíticas sobre modelos de calidad de software en empresas de desarrollo de software ágil , que respaldan la evaluación de las cualidades del software (por ejemplo, confiabilidad) y la derivación de acciones para su mejora. [5]
Historia
En mayo de 2009, el término análisis de software se acuñó y propuso por primera vez cuando Dongmei Zhang fundó el Grupo de Análisis de Software (SA) en Microsoft Research Asia (MSRA). El término se ha vuelto muy conocido en la comunidad de investigación de ingeniería de software después de que Zhang y sus colegas, en colaboración con Tao Xie de la Universidad Estatal de Carolina del Norte, brindaran una serie de tutoriales y charlas sobre análisis de software en conferencias de ingeniería de software, incluido un tutorial en la Conferencia Internacional IEEE/ACM sobre Ingeniería de Software Automatizada (ASE 2011), [6] una charla en el Taller Internacional sobre Tecnologías de Aprendizaje Automático en Ingeniería de Software (MALETS 2011), [7] un tutorial y una charla magistral brindada por Zhang en la Conferencia IEEE-CS sobre Educación y Capacitación en Ingeniería de Software, [8] [9] un tutorial en la Conferencia Internacional sobre Ingeniería de Software - Ingeniería de Software en la Pista Práctica, [10] y una charla magistral brindada por Zhang en la Conferencia de Trabajo sobre Minería de Repositorios de Software. [11]
En noviembre de 2010, Thomas Zimmermann y sus colegas del Grupo de Ingeniería de Software Empírico (ESE) de Microsoft Research Redmond propusieron la Analítica de Desarrollo de Software (Analítica de Software con un enfoque en el Desarrollo de Software) en su artículo FoSER 2010. [12] Zimmermann y Tim Menzies de la Universidad de Virginia Occidental organizaron un panel sobre la analítica de desarrollo de software en la Conferencia Internacional sobre Ingeniería de Software, Ingeniería de Software en la Práctica. [13]
Véase también
Referencias
- ^ D. Zhang, S. han, Y. Dan, J.-G. Lou, H. Zhang: "Software Analytics in Practice". IEEE Software, septiembre/octubre de 2013, págs. 30-35.
- ^ de Raymond PL Buse y Thomas Zimmermann. "Necesidades de información para el análisis del desarrollo de software". En Actas de la 34.ª 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. "De la analítica 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 del desarrollo de software". Dagstuhl Reports, vol. 4, número 6, págs. 64-83.
- ^ Martínez-Fernández, Silverio; Vollmer, Anna Maria; Jedlitschka, Andreas; Franch, Xavier; Lopez, Lidia; Ram, Prabhat; Rodriguez, Pilar; Aaramaa, Sanja; Bagnato, Alessandra (2019). "Evaluación y mejora continua de la calidad del software con herramientas de análisis de software: un estudio de caso" (PDF) . IEEE Access . 7 : 68219–68239. Bibcode :2019IEEEA...768219M. doi : 10.1109/ACCESS.2019.2917403 . ISSN 2169-3536.
- ^ Dongmei Zhang y Tao Xie. "xSA: eXtreme Software Analytics - Marriage of eXtreme Computing and Software Analytics" (xSA: Analítica de software extrema: la unión de la computación extrema y la analítica de software). En Actas de la 26.ª 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. "El análisis de software como caso de aprendizaje en la práctica: enfoques y experiencias". En las Actas del Taller internacional sobre tecnologías de aprendizaje automático en ingeniería de software (MALETS 2011), Lawrence, Kansas, noviembre de 2011. PDFSlides
- ^ Dongmei Zhang. "Software Analytics in Practice and Its Implications for Education and Training" (Análisis de software en la práctica y sus implicaciones para la educación y la formación). Discurso inaugural. En Actas de la 24.ª Conferencia IEEE-CS sobre educación y formación en ingeniería de software (CSEE&T 2012), Tutorial, Nanjing, China, abril de 2012.
- ^ Dongmei Zhang, Yingnong Dang, Shi Han y Tao Xie. "Enseñanza y capacitación para el análisis de software". En Actas de la 24.ª 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 in Practice: Mini Tutorial". En Actas de la 34.ª Conferencia Internacional sobre Ingeniería de Software (ICSE 2012), Ingeniería de software en la práctica, Mini Tutorial, Zúrich, Suiza, junio de 2012, págs. 997. Diapositivas
- ^ Dongmei Zhang. "Discurso inaugural de MSR 2012: Análisis de software en la práctica: enfoques y experiencias". En Actas de la 9.ª Conferencia de trabajo sobre minería de repositorios de software (MSR 2012), Zúrich, Suiza, junio de 2012, pág. 1.
- ^ Raymond PL Buse y Thomas Zimmermann. "Análisis 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. "Goldfish Bowl Panel: Software Development Analytics". En Actas de la 34.ª 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 las aplicaciones en valor comercial
- Grupo de análisis de software de Microsoft Research Asia (Sudáfrica)
- Grupo de ingeniería de software empírico (ESE) de Microsoft Research Redmond
- Análisis de software en la práctica y sus implicaciones para la educación y la formación, discurso de apertura de Dongmei Zhang en la 24.ª 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 9.ª Conferencia de trabajo sobre minería de repositorios de software (MSR 2012)
- Análisis de software en la práctica. Diapositivas de un minitutorial de Dongmei Zhang y Tao Xie en la 34.ª Conferencia internacional sobre ingeniería de software (ICSE 2012)
- Análisis de software Pinterest
- Microsoft Azure: información sobre aplicaciones en Azure