Software Intelligence es información sobre la condición estructural de los activos de software producidos por software diseñado para analizar la estructura de la base de datos , el marco del software y el código fuente para comprender y controlar mejor los sistemas de software complejos en entornos de tecnología de la información . [1] De manera similar a Business Intelligence (BI), Software Intelligence se produce mediante un conjunto de herramientas y técnicas de software para la extracción de datos y la estructura interna del software. Los resultados finales son información utilizada por las partes interesadas de la empresa y el software para tomar decisiones informadas, [ cita requerida ]medir la eficiencia de las organizaciones de desarrollo de software, comunicar sobre el estado del software, prevenir catástrofes de software. [2]
Historia
Software Intelligence ha sido utilizado por Kirk Paul Lafler, un ingeniero, empresario y consultor estadounidense, y fundador de Software Intelligence Corporation en 1979. En ese momento, estaba relacionado principalmente con las actividades de SAS , en las que es experto desde 1979. [3]
A principios de la década de 1980, Victor R. Basili participó en diferentes artículos que detallaban una metodología para recopilar datos válidos de ingeniería de software relacionados con la ingeniería de software, evaluación del desarrollo de software y variaciones. [4] [5] En 2004, diferentes proveedores de software en análisis de software comenzaron a utilizar los términos como parte de su estrategia de marketing y de nomenclatura de productos. Luego, en 2010, Ahmed E. Hassan y Tao Xie definieron Software Intelligence como una " práctica que ofrece a los profesionales del software información actualizada y pertinente para respaldar sus procesos diarios de toma de decisiones y Software Intelligence debe respaldar los procesos de toma de decisiones a lo largo de la vida de un sistema de software ". Continúan definiendo Software Intelligence como un " fuerte impacto en la práctica del software moderno " para las próximas décadas. [6]
Capacidades
Debido a la complejidad y la amplia gama de componentes y temas implicados en el software, la inteligencia del software se deriva de diferentes aspectos del software:
- La composición de software es la construcción de componentes de aplicaciones de software. [7] Los componentes resultan de la codificación de software, así como de la integración del código fuente de componentes externos: código abierto, componentes de terceros o marcos. Se pueden integrar otros componentes mediante la llamada de la interfaz de programación de aplicaciones a bibliotecas o servicios.
- La arquitectura de software se refiere a la estructura y organización de elementos de un sistema, relaciones y propiedades entre ellos.
- Las fallas de software designan problemas que pueden causar seguridad, estabilidad, resistencia y resultados inesperados. No existe una definición estándar de fallas de software, pero la más aceptada es la de The MITRE Corporation, donde las fallas comunes se catalogan como Enumeración de debilidades comunes . [8]
- Las calificaciones de software evalúan los atributos del software. Históricamente, la clasificación y la terminología de los atributos se han derivado del modelo de calidad ISO 9126-3 y el posterior modelo de calidad ISO 25000: 2005 [9] .
- La economía del software se refiere a la evaluación de recursos del software en el pasado, presente o futuro para tomar decisiones y gobernar. [10]
Componentes
Las capacidades de las plataformas de inteligencia de software incluyen un número creciente de componentes:
- Analizador de código que sirve como base de información para otros componentes de Software Intelligence que identifican objetos creados por el lenguaje de programación, objetos externos de código abierto , objetos de terceros, marcos , API o servicios.
- Visualización gráfica y diseño de la estructura interna del producto de software o la aplicación considerada [11], incluidas las dependencias, desde la adquisición de datos (captura de datos automatizada y en tiempo real, entradas del usuario final) hasta el almacenamiento de datos, las diferentes capas [12] dentro el software y el acoplamiento entre todos los elementos.
- Capacidades de navegación dentro de los componentes y funciones de análisis de impacto
- Lista de fallas, violaciones arquitectónicas y de codificación, contra las mejores prácticas estandarizadas, [13] bloqueador de nube que evita la migración a un entorno de nube, [14] y llamadas de datos fraudulentas que implican la seguridad e integridad del software [15]
- Grados o puntajes de la calidad estructural y del software alineados con estándares de la industria como OMG , CISQ o SEI que evalúan la confiabilidad, seguridad, eficiencia, capacidad de mantenimiento y escalabilidad a la nube u otros sistemas.
- Métricas que cuantifican y estiman la economía del software, incluido el esfuerzo de trabajo, el tamaño y la deuda técnica [16]
- Referencias y evaluaciones comparativas de la industria que permiten comparaciones entre los resultados del análisis y los estándares de la industria.
Aspecto del usuario
Se deben hacer algunas consideraciones para integrar con éxito el uso de los sistemas de inteligencia de software en una empresa. En última instancia, el sistema de inteligencia de software debe ser aceptado y utilizado por los usuarios para que agregue valor a la organización. Si el sistema no agrega valor a la misión de los usuarios, simplemente no lo usan como lo declaró M. Storey en 2003. [17]
A nivel de código y representación del sistema, los sistemas de inteligencia de software deben proporcionar un nivel diferente de abstracciones: una vista abstracta para diseñar, explicar y documentar y una vista detallada para comprender y analizar el sistema de software. [18]
A nivel de gobernanza, la aceptación por parte del usuario de Software Intelligence cubre diferentes áreas relacionadas con el funcionamiento interno del sistema, así como con la salida del sistema. Abarca estos requisitos:
- Integral: la información faltante puede llevar a una decisión incorrecta o inapropiada, además de ser un factor que influye en la aceptación del usuario de un sistema. [19]
- Exacto: la exactitud depende de cómo se recopilen los datos para garantizar una opinión y un juicio justos e indiscutibles. [20]
- Preciso: la precisión generalmente se juzga comparando varias mediciones de la misma fuente o de fuentes diferentes. [21]
- Escalable: la falta de escalabilidad en la industria del software es un factor crítico que conduce al fracaso. [22]
- Creíble: los resultados deben ser confiables y creíbles.
- Implementable y utilizable.
Aplicaciones
La inteligencia de software tiene muchas aplicaciones en todas las empresas relacionadas con el entorno del software, ya sea software para profesionales, individuos o software integrado. Dependiendo de la asociación y el uso de los componentes, las aplicaciones se relacionarán con:
- Cambio y modernización: documentación y planos uniformes en todos los componentes internos, código externo integrado o llamada a componentes internos o externos del software [23]
- Resiliencia y seguridad: medición frente a los estándares de la industria para diagnosticar fallas estructurales en un entorno de TI. [24] Validación del cumplimiento en materia de seguridad, normativa específica o cuestiones técnicas.
- toma de decisiones y gobierno: Proporcionar análisis sobre el software en sí o las partes interesadas involucradas en el desarrollo del software, por ejemplo, medición de la productividad para informar a los líderes empresariales y de TI sobre el progreso hacia los objetivos comerciales. [25] Evaluación y evaluación comparativa para ayudar a los líderes empresariales y de TI a tomar decisiones informadas y basadas en hechos sobre el software. [26]
Mercado
La inteligencia de software es una disciplina de alto nivel y ha ido creciendo gradualmente cubriendo las aplicaciones enumeradas anteriormente. Hay varios mercados que impulsan su necesidad:
- Análisis de la cartera de aplicaciones (APA) destinado a mejorar el rendimiento empresarial [27] [28]
- Evaluación de software para producir KPI de software [29] y mejorar la calidad y la productividad
- Validación y medidas de seguridad y resiliencia del software
- Evolución del software o modernización de legado, para lo cual se necesitan planos de los sistemas de software ni herramientas que mejoren y faciliten las modificaciones.
Referencias
- ^ Dąbrowski R. (2012) sobre almacenes de arquitectura e inteligencia de software. En: Kim T., Lee Y., Fang W. (eds) Tecnología de la información de la generación futura. FGIT 2012. Lecture Notes in Computer Science, vol 7709. Springer, Berlín, Heidelberg
- ^ Ahmed E. Hassan y Tao Xie. 2010. Inteligencia de software: el futuro de la minería de datos de ingeniería de software. En Actas del taller FSE / SDP sobre el futuro de la investigación en ingeniería de software (FoSER '10). ACM, Nueva York, NY, EE. UU., 161–166
- ^ "Sr. Kirk Paul Lafler" .
- ^ Basili, Víctor R. (1981). Recopilación, validación y análisis de datos. Métricas de software: análisis y evaluación (PDF) . Prensa del MIT. pag. 143. ISBN 0-262-16083-8.
- ^ Basili, Victor R .; Weiss, David M. (noviembre de 1984). Una metodología para recopilar datos válidos de ingeniería de software (PDF) . IEEE Trans. Softw. Ing. 10, 6 (noviembre de 1984). págs. 728–738. doi : 10.1109 / TSE.1984.5010301 . hdl : 1903/7513 .
- ^ Ahmed E. Hassan y Tao Xie. 2010. Inteligencia de software: el futuro de la minería de datos de ingeniería de software. En Actas del taller FSE / SDP sobre el futuro de la investigación en ingeniería de software (FoSER '10). ACM, Nueva York, NY, EE. UU., 161–166. doi : 10.1145 / 1882362.1882397
- ^ Nierstrasz, Oscar y Theo Dirk Meijler. "Direcciones de investigación en la composición de software". Encuestas de computación de ACM 27.2 (1995): 262-264 doi : 10.1145 / 210376.210389
- ^ Kanashiro, L. y col. "Predicción de fallas de software con modelos de baja complejidad basados en datos de análisis estáticos". Revista de Ingeniería y Gestión de Sistemas de Información 3.2 (2018): 17 doi : 10.20897 / jisem.201817
- ^ "ISO 25000: 2005" (PDF) . Archivado (PDF) desde el original el 14 de abril de 2013 . Consultado el 18 de octubre de 2013 .
- ^ Boehm, Barry W. y Kevin J. Sullivan. "Economía del software: una hoja de ruta". Actas de la conferencia sobre El futuro de la ingeniería de software. 2000. doi : 10.1145 / 336512.336584
- ^ Renato Novais, José Amancio Santos, Manoel Mendonça, Evaluación experimental de la combinación de múltiples estrategias de visualización para el análisis de la evolución del software, Journal of Systems and Software, Volumen 128, 2017, pp. 56-71, ISSN 0164-1212 , doi : 10.1016 / j.jss.2017.03.006 .
- ^ Rolia, Jerome A. y Kenneth C. Sevcik. "El método de las capas". Transacciones IEEE sobre ingeniería de software 21.8,1995, 689-700, doi : 10.1109 / 32.403785
- ^ Reglas de ingeniería de software sobre la calidad del código. http://it-cisq.org/standards/code-quality-standards/
- ^ Balalaie, Armin, Abbas Heydarnoori y Pooyan Jamshidi. "La arquitectura de microservicios permite devops: migración a una arquitectura nativa de la nube". Ieee Software 33.3, mayo-junio de 2016, 42-52, doi : 10.1109 / MS.2016.64
- ^ Q. Feng, R. Kazman, Y. Cai, R. Mo y L. Xiao, "Towards an Architecture-Centric Approach to Security Analysis", 2016 XIII Conferencia de trabajo IEEE / IFIP sobre arquitectura de software (WICSA), Venecia, 2016 , págs. 221-230, doi : 10.1109 / WICSA.2016.41.
- ^ R. Haas, R. Niedermayr y E. Juergens, "Teamscale: Abordar la deuda técnica y controlar la calidad de su software", Conferencia internacional IEEE / ACM de 2019 sobre deuda técnica (TechDebt), Montreal, QC, Canadá, 2019, págs. 55-56, doi : 10.1109 / TechDebt.2019.00016.
- ^ Storey MA. (2003) Diseño de una herramienta de exploración de software utilizando un marco cognitivo. En: Zhang K. (eds) Visualización de software. Serie Internacional Springer en Ingeniería y Ciencias de la Computación, vol. 734. Springer, Boston, MA.
- ^ Seonah Lee, Sungwon Kang, ¿Qué información situacional ayudaría a los desarrolladores al utilizar un recomendador de código gráfico ?, Journal of Systems and Software, Volumen 117, 2016, págs. 199-217, ISSN 0164-1212 , doi : 10.1016 / j.jss.2016.02.050 .
- ^ Linda G. Wallace, Steven D. Sheetz, La adopción de medidas de software: perspectiva de un modelo de aceptación de tecnología (TAM), información y gestión, volumen 51, número 2, 2014, págs. 249-259, ISSN 0378-7206 , doi : 10.1016 / j.im.2013.12.003
- ^ Lippert, SK y Forman, H. (2005). Utilización de la tecnología de la información: examen de los factores cognitivos y experienciales del comportamiento posterior a la adopción. IEEE Transactions on Engineering Management, 52, 363–381.
- ^ Rajiv D. Banker y Chris F. Kemerer (1992). Métricas de evaluación del desempeño para el desarrollo de sistemas de información: un modelo principal-agente. Investigación de sistemas de información, volumen 3, número 4, 379–400.
- ^ M. Crowne, "Por qué fallan las nuevas empresas de productos de software y qué hacer al respecto. Evolución del desarrollo de productos de software en las empresas de nueva creación", IEEE International Engineering Management Conference, 2002, págs. 338–343 vol.1. doi : 10.1109 / IEMC.2002.1038454
- ^ Parnas, David Lorge, Documentación precisa: La clave para un mejor software, El futuro de la ingeniería de software, 2011, 125-148, doi : 10.1007 / 978-3-642-15187-3_8
- ^ https://www.bcg.com/capabilities/technology-digital/software-intelligence.aspx
- ^ LaValle S, Lesser E, Shockley R, Hopkins MS y Kruschwitz N (2011) Big data, analytics y el camino de la información al valor. MIT Sloan Management Review 52 (2), 21–32.
- ^ Janez Prašnikar, Žiga Debeljak, Aleš Ahčan (2005) Benchmarking como herramienta de gestión estratégica, Gestión de calidad total y excelencia empresarial, volumen 16, número 2, 257-275, doi : 10.1080 / 14783360500054400
- ^ https://www.gartner.com/it-glossary/application-portfolio-analysis
- ^ https://www.gartner.com/doc/3812067/effective-strategies-deliver-sustainable-cost
- ^ https://www.omg.org/spec/AFP