INTRODUCCIÓN
El número de proyectos de software crecen cada vez más y aumentan su complejidad, al igual que la competitividad entre las empresas de desarrollo de software (Ráquira, et al., 2017). Estas empresas buscan lograr que el proceso que guíe el desarrollo de software sea integrado, con el fin de obtener un producto que cumpla con los requisitos definidos, el tiempo, costo y calidad, permitiendo desarrollar un proyecto exitoso (Sospedra, et al., 2017). La aplicación temprana de buenas prácticas (Arteaga, et al., 2018) incrementaría la probabilidad de éxitos en los proyectos de software. Las buenas prácticas incluyen directrices y estándares internacionales, construidos a partir de la experiencia de expertos, con el propósito de mejorar las probabilidades de éxito en el logro de los objetivos de un proyecto (Arteaga, et al., 2018).
Existe diversidad y heterogeneidad de los estándares disponibles que evalúan los procesos de software, como la familia de normas de ISO 9000, ISO 33000, CMMI, ITIL, COBIT y PMBOK. Sin embargo, la proliferación de los estándares conlleva a que organizaciones se vean abrumadas y confundidas al tomar una decisión sobre la elección y aplicación de un estándar que resuelva sus necesidades y como resultado aumente el costo y tiempo para la evaluación de los mismos.
La aplicación de lenguajes formales para la representación de conocimiento pudiera ser una alternativa para abordar los problemas generados en el análisis de los estándares de calidad de software. Las ontologías son uno de esos lenguajes formales que permiten modelar un dominio y apoyar razonamiento sobre los conceptos (Bhatia, et al., 2016). Constituyen una herramienta que proporcionan un entendimiento compartido entre personas, organizaciones, y los sistemas para salvar las brechas (Yang, et al., 2019).
En este artículo se propone una ontología para el análisis de estándares que responden a la calidad de software. Debido a que las ontologías son un lenguaje formal basado en lógicas descriptivas su utilización permitirá representar información de los estándares, mediante la formalización en el ámbito del conocimiento. Además, podrá contribuir a proporcionar búsqueda inteligente facilitando la comprensión de los estándares a partir de sus características y especificaciones dentro del dominio dado. Podría constituir una herramienta interactiva que sea fácil de entender por todos los involucrados en el desarrollo de un software y que aporte elementos necesarios para su aplicación. La utilización sistemática de esta ontología para describir diferentes estándares de software, así como de los resultados de su adopción pudiera resultar en una base de conocimiento útil para el dominio del desarrollo de software.
MÉTODOS O METODOLOGÍA COMPUTACIONAL
Estándares de calidad del proceso de software
Los estándares de calidad de software conciben especificaciones para que los entregables cumplan con las expectativas del negocio (Acosta, et al., 2017). Se definen como un conjunto de criterios que guían la forma en que se aplican la ingeniería de software (Aizprua, et al., 2019; Pressman, 2010). Los estándares de software tienen una función importante en la gestión y el aseguramiento de calidad del software. Los estándares deberán evaluar los procesos que constituyen el desarrollo del software, es decir que exista calidad en el proceso de desarrollo. De este proceso, se obtendrá un producto de software que también será evaluado (Scalone, 2006). Es por ello, que los estándares se dedican a evaluar la calidad de proceso y/o producto (Sommerville, 2011). En esta investigación se hará uso de los estándares que se enfocan a la calidad de los procesos.
En el ámbito de esta investigación se seleccionaron varios de los estándares más representativos, tanto para la comunidad científica como para la industria de desarrollo de software. Para su selección, se consideró la relevancia asignada por los participantes en una encuesta aplicada a 20 especialistas en centros productivos en la Universidad de Ciencias Informáticas (UCI) y en el laboratorio de calidad en la empresa XETID. El segundo aspecto se basó en estándares de amplia demanda en la industria cubana del software. Del resultado de la encuesta se obtuvo que los estándares ISO y CMMI (modelo Integración de Modelos de Madurez de las Capacidades) lograron los mayores niveles de incidencia, como se muestra en la Figura 1. La aplicación del segundo indicador permitió identificar a dos estándares, el primero es PMBOK, el cual es uno de los estándares promovidos por el Laboratorio de Gestión de Proyecto de la UCI (Amaro et al. 2019). El segundo es MCDAI (Modelo de la Calidad para el Desarrollo de Aplicaciones Informáticas), el cual tiene como objetivo proporcionar a la industria cubana de software un modelo basado en las mejores prácticas internacionales y es promovido por la empresa CALISOF, una de las organizaciones de referencia en la calidad de software en Cuba.
Fuente: Elaboración propia.
La Norma ISO 9001:2015 (ISO, 2015) se ha convertido en la base de los sistemas de gestión de la calidad más implementados a nivel mundial. Se basa en un conjunto de principios establecidos para la correcta implementación de un Sistema de Gestión de Calidad en una organización que desarrolla productos u ofrece servicios (Burdino, et al., 2019). Por otra parte, CMMI es una evolución de la metodología CMM. La finalidad de CMMI es mejorar y evaluar la madurez de los procesos de desarrollo de software. En el caso de la Guía de los Fundamentos para la Dirección de Proyectos (Guía del PMBOK) (PMI, 2017) proporciona pautas para la dirección de proyectos individuales y define conceptos relacionados con la dirección de proyectos. Describe el ciclo de vida de la dirección de proyectos y los procesos relacionados (PMI, 2017).
MCDAI, distingue por su facilidad de uso y se plantea el propósito de servir de base para alcanzar evaluaciones futuras en otros modelos de referencia internacional (Oro, et al., 2017). MCDAI se basa en los estándares y modelos internacionales referentes al desarrollo de software CMMI-DEV v1.3, MoProSoft (Modelo de Procesos para la Industria del Software), MPS.Br (Mejora de Proceso de Software Brasileño), COMPETISOFT (Mejora de Procesos para Fomentar la Competitividad de la Pequeña y Mediana Industria del Software de Iberoamérica), PMBOK, ISO 9001:2015 y la ISO 12207:2008 Procesos del Ciclo de Vida del Software. El MCDAI incluye como entrada las regulaciones nacionales y las buenas prácticas de los modelos y estándares de referencias mencionados anteriormente. Propone una estructura que soporta los principales procesos de la organización.
Ontología: Lenguaje, herramientas y metodología
El concepto de ontología ha sido ampliamente discutido (Noy, et al., 2001; Gruber, 1993; Studer, et al., 1998). Una ontología es “una especificación formal y explícita de una conceptualización compartida” (Gruber, 1993). Una ontología está formada por una taxonomía relacional de conceptos y por un conjunto de axiomas o reglas de inferencia mediante los cuales se podrá inferir nuevo conocimiento (Quintero, et al., 2019). Las ontologías también ayudan a eliminar la ambigüedad, aumentando coherencia e integración de los distintos puntos de vista de los usuarios (Bajnaid, et al., 2016), para referirse a los términos en el área aplicada, pudiéndose compartir o reutilizar éstos entre diferentes aplicaciones que hagan uso de la ontología. Además especifican una taxonomía o herencia de conceptos que establecen una categorización o clasificación de las entidades del domino (Fernández, 2015). La ontología constituye una herramienta que gestiona el conocimiento dentro de un dominio dado, formada por conceptos claves que favorezcan al entendimiento y formar un conocimiento nuevo.
Se desarrolló una ontología con el fin de explotar sus beneficios que podrían aliviar la problemática planteada sobre los estándares de calidad. Se utilizó el lenguaje OWL (Ontología Web Language, el cual permite representar los términos y las relaciones entre ellos de manera que sean fácilmente procesables por aplicaciones informáticas (Keet, 2018). Además, se utilizó la herramienta Protégé (Protégé, 2019) para crear y editar la ontología. Protégé es una herramienta gratuita que es ampliamente adoptado para la manipulación de ontologías en OWL. Se adoptó la metodología NeOn (Figueroa, 2010) para guiar el proceso de desarrollo de la ontología. NeOn es una metodología sólida de amplia aceptación en la comunidad. Como ilustra la Figura 2 está basada en escenarios que se apoya en los aspectos de colaboración de desarrollo de ontologías y la reutilización. Aporta guías metodológicas para la reutilización y la reeingeniería de fuentes de conocimiento existentes que ya han alcanzado cierto grado de consenso en una cierta comunidad.
Fuente: Elaborado por (Figueroa 2010).
RESULTADOS Y DISCUSIÓN
Ontología para representar estándares de calidad del proceso de software
Siguiendo las especificaciones de la metodología NeOn (Figueroa, 2010) y por la naturaleza de este proyecto se ha visto conveniente reutilizar el escenario 1 (desde la especificación de la aplicación). Este escenario va desde la conceptualización hasta la implementación e intervienen otros escenarios de la metodología, donde se utilizarán el escenario 2 (reutilización y reeingeniería de recursos no ontológicos) y el escenario 3 (La reutilización de los recursos ontológicos).
Escenario 1: Desde la especificación de la aplicación. Especificación
Como parte de este escenario la metodología describe diferentes actividades a realizar, donde se describen el objetivo de la ontología, los usuarios a los que estará dirigida y los usos que se pretende dar a la misma. Obteniéndose el Documento de Especificación de Requisitos de la Ontología (ORSD):
La ontología debe estar en español ya que se pretende que sea aplicada en el territorio cubano.
Debe ser flexible por la constante actualización e inclusión de estándares de calidad.
Tiene como propósito mejorar el análisis de los estándares de calidad para su entendimiento y utilización en el desarrollo de los proyectos de software en el dominio de empresas de desarrollo de software cubanas.
La ontología deberá incluir y cubrir conceptos relacionados con los estándares de calidad, principales características y elementos que componen cada estándar, buscando equivalencia entre los conceptos y relaciones.
Como usuarios finales van a estar todas las personas interesadas en mejorar los procesos, productos y proyectos de software.
La tarea de extracción de la terminología y su frecuencia se ha llevado a cabo utilizando las preguntas de competencias (PC) y las respuestas a cada una de ellas.
PC:
¿Qué término(s) son usado(s) para determinado concepto?
¿Con qué otro(s) estándar(es) se puede combinar el estándar seleccionado inicialmente?
¿Qué elementos son compatibles entre los estándares tratados?
¿Cuáles son las relaciones entre conceptos asociados a estándar(es)?
Escenario 2: Reutilización y Re-ingeniería de los recursos no-ontológico
Los recursos no ontológicos son complementos para modelar las clases y relaciones de la ontología. La búsqueda de recursos no ontológicos se llevó a cabo principalmente sobre los estándares oficiales dirigidos a la calidad de procesos y productos para los proyectos de softwares. Estos estándares son descritos en documentos proporcionados por la ISO, IEC, SEI y PMI. También se revisaron los sitios web oficiales de estas organizaciones y otros documentos oficiales encontrados en internet donde se describen o se especifican los estándares en cuestión.
A partir del material recopilado se procedió a la valoración y selección de aquellos recursos relevantes que contribuyen a dar respuesta a las preguntas de competencia planteadas en el escenario 1. El proceso de selección involucró una revisión exhaustiva de la terminología contenida en los recursos no ontológicos que cubren el dominio de los estándares, con el objetivo de identificar cuáles pueden ser clases, y cuáles atributos. Identificando conceptos tales como, relaciones, actividades, niveles, características, procesos, entre otros. Estos aspectos son de obligatorio conocimiento para todas aquellas personas o instituciones que desean utilizar cualquiera de los estándares.
Escenario 3: Reutilización de recursos ontológicos
La reutilización de recursos ontológicos es una de las actividades más relevantes dentro del proceso de construcción de la ontología (Arciniega, et al., 2016). En este escenario se realiza una búsqueda de recursos ontológicos que contribuyan a disminuir en tiempo y costo el desarrollo de la ontología. Se encontró la ontología (Gaytá, 2014), creada durante la materia de validación y verificación en la Maestría de Ingeniería de Software en el Centro de Investigación en Matemáticas (CIMAT). De la taxonomía expuesta en la Figura 3 se tendrán en cuenta cinco de las clases principales (Goal, Level, Practice, Process, Subpractice) que se estará utilizando para la propuesta ontológica.
Fuente:Elaborado por Gaytá Solís 2014.
Luego del estudio de los trabajos relacionados con el dominio, la búsqueda y reutilización de recursos ontológicos y no ontológicos, se identificaron los conceptos y se conceptualizaron, para luego modelalo en la herramienta Protégé. En esta actividad se plasma el conocimiento en un modelo conceptual como se muestra en la Figura 4.
Teniendo como base el modelo conceptual representado anteriormente, se definieron las clases, relaciones y axiomas que permitieron implementar la ontología, quedando conformada por 38 clases, en la Figura 5 se muestra una porción de la jerarquía de clases.
Fuente: Elaboración propia.
Se establecieron las relaciones semánticas entre los conceptos (Object Properties), vinculando semánticamente los conceptos en una ontología (Bravo, et al., 2019). Se identificaron 33 propiedades con sus jerarquías, mostrada en la Figura 6, además sus dominios y rangos. Ejemplo de esto, es la propiedad Compuesto_Por que relaciona a las clases Capitulo y Subcapitulo y un Proceso_Base se encuentra Agrupado_Por la clase Categoria_MCDAI. Para describir los conceptos fueron representados en la ontología los atributos (Data Properties), como se muestra en la Figura 7.
Evaluación de la Ontología
Para demostrar la aplicabilidad de la ontología y verificar el cumplimiento del objetivo propuesto para el análisis de los estándares del proceso de calidad de software, se utilizaron las preguntas de competencias contenidas en el ORSD. Mediante el uso del razonador Pellet se verificaron las propiedades como sistema lógico-formal. En la figura 8 y 9 se muestra lo inferido por el razonador para la PC3: ¿Qué elementos son compatibles entre los estándares tratados?
Para esta PC Pellet infiere que el área de proceso Planificación del Proyecto (PP) es compatible con Proceso_Base de MCDAI y con Area_Conocimiento de PMBOK-6, mostrado en la Figura 8 y Figura 9, proporcionando una buena práctica para obtener software de alta calidad; producto a que los estándares son complementarios. La compatibilidad establecida es resultado del grado de similitud entre el propósito de cada concepto. Ejemplo, PP tiene como propósito establecer y mantener planes que definan las actividades del proyecto y Gestión del cronograma del proyecto (Gestion_Cronograma_Proyecto) incluye los procesos requeridos para administrar la finalización del proyecto a tiempo. La relación puede ayudar al usuario que al ejecutar el área de proceso PP puede incluir procesos del área de conocimiento Gestión del cronograma del proyecto considerando que CMMI aporta el qué hacer para llevar a cabo un proyecto y PMBOK como hacerlo.
La compatibilidad establecida entre áreas de procesos de CMMI y procesos bases de MCDAI se debe a que MCDAI propone un conjunto de buenas prácticas sirviendo de base para la evaluación y certificación de estándares como CMMI.
Fuente:Elaboración propia.
CONCLUSIONES
Con el estudio a los estándares se tiene que la existen elementos representativos de cada uno que deben conocer cualquier organización e institución desarrolladora de software. Existen insuficiencias en el análisis a estos elementos, ocasionando que se dificulte su correcta aplicación. Se decide que el conocimiento sobre los estándares de calidad de los procesos de software sea representado mediante una ontología, siendo una herramienta útil que permite compartir información y conocimiento. La ontología desarrollada incluye información sobre conceptos representativos, tales como, categorías, áreas de procesos, relaciones, áreas de conocimientos, actividades, entre otros conceptos. La ontología responde a la descripción y análisis de estándares de calidad de proceso de software provee un marco de unificación, integración y reducción de la ambigüedad conceptual, favoreciendo el entendimiento desde el lenguaje formal y natural. Como trabajos futuros, se recomienda que se valide la propuesta ontológica como un sistema lógico-formal y que se realice una evaluación empírica para demostrar el impacto positivo en la mejora del análisis de la información asociada a los modelos y estándares.