Proceso de diseño del software para un modelo de la calidad en Cuba
PROCESS OF SOFTWARE DESIGN FOR A MODEL OF QUALITY IN CUBA
Leanet Tamayo Oro1*,
Yoandy Lazo Alvarado 2,
José Felipe Ramírez Pérez 1
1,2 Departamento de Consultoría y Evaluación a Procesos, Centro Nacional de Calidad de Software (CALISOFT), Cuba
1 Centro de desarrollo CECIN, Universidad de las Ciencias Informáticas (UCI), Cuba
[email protected]
RESUMEN– El crecimiento de la industria del software precisa que las empresas opten por elevar la calidad de los productos que ofertan, entregándolos en menor tiempo y reduciendo sus costos. Aplicar buenas prácticas en el diseño garantiza calidad en el producto final y mejorar indicadores de rendimiento del proceso. En este contexto se han definido normas y modelos de referencia, que presentan una estrategia de trabajo progresiva para la maduración del proceso de desarrollo de software. Cuba cuenta con un modelo aplicable al contexto del país y que toma como base las buenas prácticas de los modelos y normas de referencia, titulado Modelo de la Calidad para el Desarrollo de Aplicaciones Informáticas (MCDAI). La presente investigación, propone un conjunto de requisitos, a incorporase al MCDAI, que sintetiza las buenas prácticas de gestión de reutilización en el proceso de Diseño del producto de software. La propuesta incluye una descripción gráfica y textual del proceso, que facilita el cumplimiento de los requisitos, así como los roles involucrados. También se define un sistema de indicadores que permite medir la utilidad y el nivel de implementación del proceso. Este proceso fue sometido a grupos focales y a encuesta de satisfacción de usuarios potenciales para comprobar la utilidad y aplicabilidad de la propuesta y a proyectos pilotos para comprobar que la misma se encuentre apta para extenderse a la industria cubana de software.
Palabras clave–Diseño, reutilización, modelo de la calidad, desarrollo de la solución.
Keywords– Design, reuse, quality model, solution development.
La competitividad en el mercado de la industria del software exige a las empresas elaborar productos que satisfagan las necesidades de las partes interesadas, en menos tiempo de desarrollo, con bajos costos y elevados estándares de calidad [1-3]. Para alcanzar estos propósitos se adoptan modelos y normas internacionales, los cuales ofrecen una estrategia de trabajo progresiva que contribuye, a largo plazo, a mejorar los indicadores de rendimiento de los procesos de desarrollo de software [4-11]. Cuba cuenta con un Modelo de la Calidad para el Desarrollo de Aplicaciones Informáticas (MCDAI) el cual tiene como propósito que sea fácil de entender y aplicar, y que sirva de base para alcanzar evaluaciones futuras en otros modelos de referencia internacional [12]. El proceso de diseño del producto juega un papel fundamental en la calidad final del mismo. Esta afirmación la corrobora Pressman al expresar: “Tanto la calidad como la facilidad de recibir mantenimiento son resultado de un buen diseño” [13].
Los modelos y normas internacionales proponen un conjunto de buenas prácticas para el diseño del software entre la que se encuentra la reutilización de activos principales de software [4].
Los autores de la presente investigación concuerdan con [14-16] al afirmar que incorporar buenas prácticas para la reutilización de software en el proceso de diseño es una posible solución para dar respuesta a un mercado que exige productos cada vez más fiables, baratos y entregados a tiempo.
La reutilización de software es el proceso de crear sistemas de software a partir de un software existente. El enfoque de la reutilización ha variado desde una perspectiva individual (donde se reutiliza código fuente cuando es necesario), hacia una oportunista donde se cuenta con un repositorio de componentes que son reutilizados una vez surja una necesidad, hasta una reutilización gestionada donde el proceso de creación de componentes reutilizables se realiza de manera institucionaliza, sistematiza, planifica y mejora [15, 17].
Este enfoque es el utilizado por las líneas de productos de software, la cual se define como un grupo de sistemas de software que comparten un conjunto común y gestionado de características para satisfacer las necesidades específicas de un segmento de mercado o misión particular y se desarrollan a partir de un conjunto común de activos principales de forma prescrita [18].
Organizaciones reconocidas como: Hewlett-Packard, Cummins, Inc., General Motors, CelsiusTech, Rockwell- Collins, Motorola, Philips, Nokia, Boeing, Raytheon y Salion, Inc., han adoptado el enfoque de líneas de productos y refieren obtener mejoras competitivas en atributos de la calidad (modificabilidad, testabilidad, usabilidad y adaptabilidad de los productos y servicios que brindan), reducción de tiempo de desarrollo, que permitió la disminución de los gastos y el aumento del índice de satisfacción de los clientes, entre otras [4, 19]. El enfoque de reutilización en Cuba por lo general no está dirigido al desarrollo de líneas de producto de software. En un diagnóstico realizado en el 2014 a una muestra de catorce (14) organizaciones desarrolladoras de software, se identificó que el 66,98% de las mismas dirigen su producción a un segmento de mercado, sin embargo, las buenas prácticas de gestión de la reutilización, identificadas en [7, 18, 20, 21], no se implementan en el 49% y se implementan parcialmente en el 33%. Los resultados del diagnóstico también permitieron identificar que el 52,24% de los proyectos se entregaron fuera de tiempo, el 16,42% no cumplieron la totalidad de los requisitos pactados con el cliente, el 50% no analizan alternativas de solución a partir de componentes reutilizables y el 65% no registra las principales decisiones arquitectónicas [22].
Las empresas que conforman la naciente Industria de Servicios y Aplicaciones Informáticas en Cuba, están clasificadas mayoritariamente por pequeñas y medianas empresas de software (PYME) en un 57%, el 22% se consideran grandes empresas y el 21% micro empresas, de acuerdo con el criterio que plantean varios autores donde las empresas según la cantidad de empleados se clasifican en: micro empresas de 1 a 9 trabajadores, pequeñas empresas de 10 a 49 trabajadores, medianas empresas de 50 a 199 trabajadores y gran empresa, superior a 200 trabajadores [23, 24].
En noviembre de 2017 se aplicó otro estudio a una muestra en ocho organizaciones desarrolladoras de software en Cuba, con la finalidad de profundizar en el comportamiento del proceso de diseño del software y las actividades de gestión de reutilización que incorporan, aplicando las técnicas entrevista, observación y encuesta. Los resultados permitieron identificar que: el 92% no define una arquitectura de dominio que tenga en cuenta los elementos comunes y variantes para la familia de aplicaciones, el 97% no evalúa la arquitectura, el 69% no aplica un programa que gestione el desarrollo de activos reutilizables, el 65% no evalúa las oportunidades de reutilización a partir de activos de dominio desarrollados, ni identifican los esfuerzos de adaptación, creación o adquisición de nuevos activos y el 90% no cuenta con un repositorio de activos reutilizables.
A partir de las dificultades antes expuestas se plantea la necesidad de elaborar un proceso de Diseño del Producto de Software para el MCDAI, que incorpore buenas prácticas de la gestión de reutilización para ayudar a mejorar los indicadores de rendimiento del proceso de la Industria de Aplicaciones y Servicios Informáticos en Cuba.
Los autores de la presente investigación realizaron una revisión bibliográfica con el propósito de identificar las buenas prácticas a tener en cuenta en el diseño del software y la reutilización en los siguientes modelos y normas [9], [10], [7], [11], [6] y [20] y en los artículos [13-16, 19]. En la tabla 1 se muestra un resumen de las buenas prácticas identificadas, constituyendo la base para la propuesta de la presente investigación.
En el caso de los modelos CMMI-DEV, MoProSoft y COMPETISOFT presentan las bases para desarrollar con reutilización (definición y descripción de interfaces, análisis de alternativas de solución, análisis de si hacer/reutilizar/adquirir), pero no tienen el enfoque gestionado de la reutilización.
Tabla 1. Buenas prácticas del diseño del software (fuente: elaboración propia)
Buenas prácticas |
CMMI-DEV |
MPS.Br |
MoProSoft |
COMPETISOFT |
ISO/IEC /IEEE |
|
12207 |
15288 |
|||||
Diseñar y documentar el producto o componente de producto |
x |
x |
x |
x |
x |
x |
Diseñar interfaces internas y externas |
x |
x |
x |
x |
x |
x |
Seleccionar soluciones alternativas |
x |
x |
x |
x |
x |
|
Realizar análisis sobre si hacer-reutilizar o comprar |
x |
x |
x |
x |
x |
|
Definir la arquitectura de dominio teniendo en cuenta los elementos comunes y variantes |
x |
x |
x |
|||
Gestionar un programa de gestión de reutilización |
x |
x |
x |
|||
Gestionar la biblioteca de activos reutilizable |
x |
x |
x |
Las normas ISO/IEC/IEEE 12207 y 15288, proponen un proceso de gestión del conocimiento que impulsa la gestión de reutilización de activos de software. El MPS.Br propone un área de gestión de reutilización y una de desarrollo para la reutilización donde se separan las actividades de gestión, infraestructura y alineación estratégica con los objetivos de negocio, con las actividades ingenieriles necesarias para el desarrollo de activos reutilizables. Teniendo en cuenta lo antes descrito se decidió realizar una propuesta propia que indique “qué” hacer para diseñar el producto incorporando paulatinamente prácticas para la gestión de la reutilización y ejemplificando “cómo” ponerla en práctica mediante un proceso que contiene actividades y roles asociados, así como un conjunto de indicadores que ayuden a medir y mejorar el proceso propuesto.
Para la elaboración de la propuesta se convocaron 12 especialistas de más de ocho años de experiencia en los roles de jefe de proyecto, arquitecto y desarrollador. posteriormente se realizó un análisis, basado en el método grupo focal, con el propósito de definir los requisitos que serían incluidos en la propuesta como parte del modelo MCDAI, teniendo en cuenta las buenas prácticas identificadas (ver tabla 1) y las incidencias de estas sobre los problemas detectados. Los requisitos identificados fueron agrupados por los niveles de madurez que plantea el MCDAI: Básico, Intermedio y Avanzado [12], lo cual permite que la propuesta pueda ser adoptada de forma escalonada, incorporando pequeñas mejoras en las organizaciones.
Como resultado de la investigación se decidió incorporar buenas prácticas del diseño del software y de gestión de reutilización al Proceso Base Desarrollo de la Solución (DS) del MCDAI, ya que el mismo tiene como propósito: seleccionar y evaluar soluciones a partir de alternativas existentes. Diseñar, implementar y ensamblar los componentes que forman parte de la solución para dar cumplimiento a los requisitos. Identificar oportunidades de reutilización sistemática de activos de software y desarrollar activos a partir de ingeniería de dominios.
Para cumplir con este propósito se definieron los siguientes requisitos separados por niveles de madurez.
D 1 Identificar soluciones (Identifica y registra las decisiones arquitectónicas, las cuales comprenden: soluciones tecnológicas, patrones y estilos arquitectónicos, entre otras necesarias para realizar el producto).
D 2 Diseñar el producto o el componente de producto. (Realiza el diseño estructural de acuerdo a las decisiones tomadas para satisfacer los requisitos de las partes interesadas pertinentes).
D 1.1 Evaluar las posibles soluciones aplicables. (Realiza el análisis de alternativas de solución y registra los criterios y la decisión tomada, analiza además si es mejor desarrollar un componente de producto, reutilizar o adquirirlo en el mercado).
D 2.1 Definir y describir interfaces. (Identifica y registra las interfaces entre los componentes del sistema y los externos al mismo).
D 1.2 Evaluar las posibles soluciones aplicables a partir de activos reutilizables. (Encargado de analizar el esfuerzo de adopción, modificación o creación de activos de dominio a partir de la biblioteca de activos reutilizables).
D 8 Desarrollar en función de la reutilización de activos de software. (Encargado de definir una arquitectura de dominio que a partir del modelo de variabilidad escogido que indique los elementos comunes y variantes para la familia de aplicaciones).
Como parte de la solución, se propone los procesos (Diseño del producto e identificación de soluciones aplicables) que facilita a las entidades la implementación de los requisitos; no es de obligatorio cumplimiento sino una guía que se puede adecuar a las condiciones de cada entidad. Debido a la amplitud de la solución propuesta, se muestra a continuación una breve descripción de los procesos.
Las actividades de reutilización se van incorporando paulatinamente en el proceso, en el nivel básico, se fomenta el registro de las tecnologías y la identificación de componentes que se pueden reutilizar en futuros desarrollos (para que de manera individual los desarrolladores puedan reutilizar los elementos de la arquitectura que consideren necesario), en el nivel intermedio se incorpora la identificación y descripción de las interfaces, fomentando un principio básico del desarrollo basado en componentes como son la modularización, abstracción y ocultación de información, que además constituye la base para la gestión de reutilización, en el nivel avanzado se propone que se aplique ingeniería de dominio e ingeniería de aplicaciones para el desarrollo de los componentes del producto, donde en un flujo de actividades, se definen los elementos comunes y variantes para la familia de aplicaciones en la arquitectura de dominio, así como la estructura de datos e interfaces estándares, en el otro flujo se realiza ingeniería de aplicaciones donde se contextualiza la arquitectura de dominio para un cliente específico, teniendo en cuenta las variabilidades exigidas como parte de sus requisitos.
A continuación, se presenta la descripción gráfica y textual del Proceso Diseño del Producto ver figura 1:
El Comité técnico / Arquitecto teniendo en cuenta las necesidades, el alcance y los objetivos del proyecto definidos en la “Oferta” y/o “Proyecto técnico”:
Identifica los principales componentes del producto y realiza su representación estructural a un alto nivel de abstracción, determinando las relaciones existentes entre los elementos que lo componen.
Se obtiene como resultado de la ejecución de esta actividad la “Oferta” y/o “Proyecto técnico” / Propuesta técnica inicial (actualizada).
El arquitecto teniendo en cuenta la propuesta técnica inicial definida en la “Oferta” y/o “Proyecto técnico” y la “Especificación de requisitos”:
Define los atributos de la calidad y requisitos funcionales que impactan en la arquitectura.
Realiza la priorización de las unidades funcionales.
Determinan los componentes que funcionan como plataforma del sistema que será desarrollado y que sirve como base para futuras implementaciones.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura del sistema”.
El arquitecto teniendo en cuenta la propuesta técnica inicial definida en la “Oferta” y/o “Proyecto técnico”, la “Especificación de requisitos”, el “Modelo conceptual” y las partes interesadas definidas en el “Plan de desarrollo”:
Refina la descomposición del sistema en módulos o componentes, en dependencia del tamaño y complejidad del mismo y teniendo en cuenta las soluciones aplicables como son las tecnologías, estilos arquitectónicos, patrones entre otros.
Determina los datos persistentes que se necesitan manejar en el sistema e identifica el modelo de datos.
Define la estructura de los nodos físicos como apoyo al despliegue del sistema.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura del sistema” / Estructura de los elementos del sistema.
A partir de la “Especificación de requisitos” y la “Arquitectura del sistema”:
El arquitecto define y describe las interfaces entre los componentes del sistema (internas), y las interfaces con componentes externos al mismo para controlar los elementos de entrada/ salida y garantizar la integración con elementos externos y con el resto de los componentes del sistema.
El Diseñador identifica y describe las interfaces con los usuarios del sistema de manera tal que se cumplan los requisitos de usabilidad aplicables.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura del sistema” / Descripción de interfaces (actualizada).
En el nivel avanzado, el Comité técnico / Arquitecto teniendo en cuenta la propuesta técnica inicial definida en la “Oferta” y/o “Proyecto técnico”, la “Especificación de requisitos”, las partes interesadas definidas en el “Plan de desarrollo” y el estilo arquitectónico estándar y la plataforma tecnológica definidas en la “Arquitectura de dominio”:
Determina las vistas arquitectónicas que se van a desarrollar, de acuerdo a los puntos de vista necesarios para satisfacer a las partes interesadas en posibles entornos específicos. Ejemplos: vista lógica, vista de datos, vista de infraestructura, vista de procesos, entre otras.
Define/Refina la estructura estándar del sistema e identifica los componentes que van a ser comunes y variantes, opcionales u obligatorios para toda la familia de aplicaciones. Ejemplo de vista a utilizar: vista de lógica (la misma puede incluir el diagrama de paquetes con la descomposición del sistema, la descripción de cada elemento y sus relaciones, entre otros elementos).
Determina los datos persistentes que se necesitan manejar en el sistema y se apoya en el “Modelo conceptual”, para definir el modelo de datos estándar. Ejemplo de vista a utilizar: vista de datos (la misma puede incluir el diagrama entidad-relación y el modelo de datos).
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura del dominio” / Vista arquitectónicas (creadas).
A partir de la “Especificación de requisitos” y la “Arquitectura del dominio”:
El arquitecto define y describe las interfaces estándares entre los componentes de la familia de aplicaciones (internas), y las interfaces con componentes externos, para controlar los elementos de entrada-salida y garantizar la integración con el resto de los componentes, donde se especifica los elementos comunes y variantes, opcionales u obligatorios.
El Diseñador identifica y describe las interfaces para posibles usuarios de la familia de aplicaciones como un marco de trabajo común, de manera que se cumplan los requisitos de usabilidad aplicables.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura de dominio” / Vista de integración (creada) / Vista de Presentación (creada).
El arquitecto teniendo en cuenta la propuesta técnica inicial definida en la “Oferta” y/o “Proyecto técnico”, la “Especificación de requisitos”, el “Modelo de dominio”, el “Modelo conceptual” y las partes interesadas definidas en el “Plan de desarrollo”:
En función de las vistas arquitectónicas definidas en la “Arquitectura de dominio”, determina las vistas que se van a modificar o desarrollar, de acuerdo a los puntos de vista necesarios para satisfacer a las partes interesadas en un entorno específico.
En función de los elementos variantes identificados en el “Análisis de los componentes de la solución que se van a hacer/reutilizar/adquirir” del “Documento de toma de decisiones”, y siguiendo el estilo arquitectónico estándar; se modifican los elementos necesarios en los componentes variantes y/o se incorporan nuevos competentes, para satisfacer las necesidades del cliente específico.
Identifica nuevos datos persistentes en relación al “Modelo de datos” identificados en la “Arquitectura de dominio”.
Define la estructura de los nodos físicos como apoyo al despliegue del sistema.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura del sistema” / Vistas arquitectónicas.
A partir de la “Especificación de requisitos”, “Arquitectura del dominio” y la “Arquitectura del sistema”:
El arquitecto identifica y describe las interfaces internas y externas que se modificarán o agregarán, para controlar los elementos de entrada-salida y garantizar la integración con el resto de los componentes.
El diseñador identifica y describe las modificaciones a las interfaces para los usuarios del sistema, de manera que se cumplan los requisitos de usabilidad aplicables.
Se obtiene como resultado de la ejecución de esta actividad la “Arquitectura de dominio” / Vista de integración (creada) / Vista de Presentación (creada).
El equipo de evaluación, teniendo en cuenta los atributos de la calidad aplicables y los requisitos arquitectónicamente significativos, verifica que el diseño se encuentre técnicamente correcto guiado por el subproceso AC-Ejecutar Evaluación.
El Comité técnico / Arquitecto identifica las soluciones aplicables al producto como lo plantea el sub-proceso DS-Identificación de Soluciones Aplicables.
El Comité técnico / Arquitecto teniendo en cuenta las necesidades, el alcance y los objetivos del proyecto identificados, así como, estudios de mercado realizados y el “Estándar de solución técnica”:
Identifica las soluciones aplicables de la propuesta técnica inicial a un alto nivel de abstracción. Entre las soluciones aplicables se encuentran: Gestor de bases de datos, COTS, lenguaje de programación, Marco de trabajo para el desarrollo, entre otros.
Identifica y refina la propuesta de soluciones aplicables al producto como parte de la arquitectura del software/sistema (Gestor de bases de datos, COTS, lenguaje de programación, Marco de trabajo para el desarrollo y la interfaz de usuario, patrones, estilos, escenarios, algoritmos, entre otros).
Se obtiene como resultado de la ejecución de esta actividad la “Oferta” y/o “Proyecto técnico” / Propuesta técnica inicial, la “Arquitectura del sistema” / Soluciones aplicables (actualizada).
A partir del nivel Intermedio el Comité técnico / Arquitecto teniendo en cuenta las necesidades, el alcance y los objetivos del proyecto así como, estudios de mercado realizados, y el “Estándar de solución técnica”:
Realiza un estudio sobre productos similares y tendencias tecnológicas para identificar alternativas de solución aplicables. Ejemplos: alternativas por tipos de tecnologías de desarrollo (Gestor de bases de datos, COTS, lenguaje de programación, Marco de trabajo para el desarrollo y la interfaz de usuario, API, entre otros), alternativas estructurales, entre otros.
Para la concepción inicial del proyecto, se identifican alternativas de soluciones aplicables de la propuesta técnica inicial a un alto nivel de abstracción.
Como parte de la elaboración y refinamiento de la arquitectura, se identifican nuevas alternativas de soluciones que refinan la arquitectura.
Se obtiene como resultado de la ejecución de esta actividad el “Documento de toma de decisiones” / Alternativas aplicables.
El Comité técnico / Arquitecto teniendo en cuenta el “Documento de toma de decisiones” / Alternativas aplicables: Realiza el análisis si hacer, reutilizar o adquirir los componentes de la solución identificados, teniendo en cuenta los criterios de factibilidad definidos, aplicando técnicas para la toma de decisiones.
En el nivel Avanzado, cuando se aplica ingeniería de aplicaciones, para realizar el análisis también se tiene en cuenta el “Modelo de dominio” almacenado en la “Biblioteca de activos reutilizables”.
Identifica criterios para la selección de la solución aplicable al producto. Algunos ejemplos de criterios pueden ser: cumplimiento requisitos arquitectónicamente significativos de los atributos de la calidad, cobertura de patrones por parte de los lenguajes y tecnologías identificados, costos de desarrollo, aprovisionamiento y mantenimiento, limitaciones tecnológicas, riesgos, capacidades de los usuarios finales, entre otros.
Evalúa las alternativas de solución teniendo en cuenta los criterios seleccionados y métodos para la toma de decisiones (Ejemplos: Tormenta de ideas, espina de pescado, diagrama de campo de fuerza, entre otros) con el objetivo de seleccionar las soluciones aplicables al producto.
Para la concepción inicial del proyecto, se evalúan alternativas de soluciones aplicables para seleccionar la propuesta técnica inicial a un alto nivel de abstracción.
Como parte de la elaboración y refinamiento de la arquitectura, se identifican nuevas alternativas de soluciones a partir de la evaluación de las nuevas propuestas de solución aplicables con el objetivo de refinar la arquitectura.
A partir del nivel Avanzado se define el estilo arquitectónico estándar y la plataforma tecnológica a utilizar para desarrollar los activos de dominios para la familia.
Se obtiene como resultado de la ejecución de esta actividad el “Documento de toma de decisiones” / Evaluación (actualizado) y la “Arquitectura del sistema” (actualizado) o “Estudio de factibilidad” (actualizado).
El Comité técnico / Arquitecto teniendo en cuenta los componentes del producto identificados en la “Oferta” / “Proyecto técnico” o el documento de “Arquitectura del sistema”:
Determina los criterios de factibilidad para realizar el análisis de si hacer, reutilizar o adquirir los componentes del producto identificados (Ejemplos de criterios: tiempo, recursos, esfuerzo, costos, entre otros).
A partir del análisis realizado, identifica los componentes que serán desarrollados.
Se obtiene como resultado de la ejecución de esta actividad el “Documento de toma de decisiones” / Análisis de los componentes de la solución que se van a hacer/reutilizar/adquirir (actualizado) y la “Arquitectura del sistema” (actualizado) o “Oferta” / “Proyecto técnico” (actualizado).
En el nivel Avanzado el Comité técnico / Arquitecto a partir de los activos de dominio existentes en la “Biblioteca de activos reutilizables” (Modelo de dominio o Arquitectura de dominio), el “Documento de toma de decisiones” / análisis hacer/reutilizar/adquirir (actualizado) y el dominio de aplicación al que estará dirigido el desarrollo del nuevo producto:
Evalúan los activos reutilizables que formarán parte del proyecto, para determinar el esfuerzo de adopción, modificación de los activos de dominios existentes o la necesidad de crear un nuevo activo de dominio.
Determina los activos de dominios que se adoptarán como parte de la solución, los que serán modificados y si es necesario, los que serán desarrollado como nuevos activos de dominio.
En el caso de los componentes que requieren modificación, se identifican los elementos a variar a partir de la Arquitectura de dominio y las peculiaridades del proyecto específico.
Se obtiene como resultado de la ejecución de esta actividad el “Documento de toma de decisiones” (actualizado), la “Arquitectura del sistema” (actualizado) y la “Arquitectura de dominio” (actualizado).
El objetivo del indicador es analizar la eficacia del proceso Diseño del producto donde las medidas base son las siguientes:
AE: Cantidad de actividades del proceso ejecutadas. AP: Cantidad de actividades del proceso planificadas.
CAP: Cantidad de artefactos del procesos planificados.
ARE: Cantidad de artefactos del proceso realizados.
CIE: Cantidad de inconsistencias encontradas con el diseño.
CIC: Cantidad de inconsistencias corregidas con el diseño.
CRP: Cantidad de requisitos arquitectónicamente significativos planificados.
CRD: Cantidad de requisitos arquitectónicamente significativos cubiertos en el diseño.
Medidas Derivadas:
ICA: Índice del cumplimiento de las actividades del proceso.
IRA: Índice de la realización de artefactos. IDR: Índice en el desarrollo de los requisitos. ICR: Índice de cumplimiento de requisitos. EP: Eficacia del proceso.
IDR: Índice en el desarrollo de los requisitos.
ICR: Índice de cumplimiento de requisitos.
EP: Eficacia del proceso.
Cada medida derivada anteriormente descrita puede tomarse como un indicador por separado y ser analizada una vez sea aplicada la propuesta para comprobar la mejoría que el proceso permitió introducir.
Indicador 2: Tiempo dedicado al diseño del producto
X = T
Donde T es el tiempo dedicado a la actividad de diseño.
Se realiza un análisis entre proyectos que han aplicado el proceso definido para comprobar la mejoría basada en datos históricos.
El objetivo del indicador es comprobar la disminución de la tasa de defectos asociados a los requisitos arquitectónicamente significativos teniendo en cuenta datos históricos.
Donde:
ND: Cantidad de defectos encontrados.
LC: Líneas de código.
Se realiza un análisis teniendo en cuenta la reducción de los defectos una vez aplicada la propuesta. De acuerdo con la norma ISO/IEC 25023:2017 [25] que propone medidas para la calidad del producto, se identificaron algunas medidas en las que la propuesta puede influir directamente y que se pueden tomar como referencia para mejorar el producto y, por consiguiente, el proceso de diseño del mismo.
Vale resaltar que la correcta ejecución del proceso de diseño va a implicar que todos los productos que se generen a partir de esta arquitectura de dominio cumplan con los atributos de la calidad definidos.
Indicador 4: Indicadores del producto. Acoplamiento de componentes.
El objetivo del indicador analizar la fortaleza que poseen los componentes independientes y cuántos componentes son libres de los impactos de cambios a otros componentes en un sistema o programa de computadora.
Donde:
A = Número de componentes que se implementan sin impacto en otros.
B = Número de componentes especificados que deben ser independientes.
Indicador 5: Indicadores del producto. Reutilización de activos.
El objetivo del indicador es determinar cuántos activos de un sistema se pueden reutilizar (los activos podrían ser productos de trabajo tales como documentos de requisitos, módulos de código fuente, módulos de prueba y hardware específico, etc.).
Donde:
A = Número de activos diseñados e implementados para ser reutilizables.
B = Número de activos en un sistema.
El objetivo del indicador es determinar qué tan eficientes son las modificaciones hechas en comparación con el tiempo esperado
Ai= Tiempo de trabajo total dedicado a realizar un tipo específico de modificación i.
Bi = Tiempo esperado para realizar el tipo específico de modificación i (puede basarse en datos históricos o en tiempo medio de la industria).
n = Número de modificaciones medidas.
X mayor que 1 representa modificaciones ineficientes y X menos de 1 representa modificaciones muy eficientes.
Con la intención de validar los requisitos y el proceso de Diseño del producto, se realizaron grupos focales, la cual constituye una técnica valiosa y muy utilizada en la última década para obtener información. Para su conformación se tuvo en cuenta los criterios emitidos por Aigneren [26], al decir que el tamaño del grupo debe oscilar entre cuatro (4) y doce (12) participantes; asegurando que todos puedan emitir sus criterios y que haya riqueza de ideas.
Para cumplir con lo antes expuesto se convocó a varios especialistas de la Industria de Aplicaciones y Servicios Informáticos, dedicados a realizar tareas relacionadas con el diseño del producto, para analizar los resultados de esta investigación en siete (7) encuentros. A continuación las empresas y la cantidad de especialistas que participaron fueron: CALISOFT con tres (3) especialistas, XETID (2), UCI (1), Cedipad (1), Joven Club (1), OSRI (1), ETECSA (1), SICS/MITRANS (2) y en total sumaron 12 profesionales. Los acuerdos tomados en las sesiones de trabajo derivaron en mejoras a los procesos que fueron valiosas para que se lograra un proceso refinado y alineado con las características de la industria.
En el último encuentro al exponer el resultado final del proceso de Diseño del Producto, fue aprobado por todo el equipo participante. En dicho encuentro predominó el criterio: “El proceso es una propuesta que se ajusta a las necesidades de la industria de aplicaciones y servicios informáticos”. Se obtuvo opiniones positivas respecto a la contribución de los requisitos y el proceso propuesto para el diseño del producto de software, así como la integralidad de la propuesta y la posibilidad que brinda para ser adaptado a múltiples entornos de desarrollo. Los elementos de apoyo que lo componen, como son: la descripción gráfica y textual de los procesos y el sistema de indicadores, facilitarán la implantación de los requisitos en cada entidad sin necesidad de invertir mucho tiempo y recursos.
Se aplicó la técnica IADOV para evaluar el nivel de satisfacción de los usuarios con la calidad del producto diseñado mediante el proceso definido. La técnica fue aplicada a 20 usuarios del sistema con un promedio de 10 años de experiencia en el negocio. Los productos que se encuestaron formaron parte de las organizaciones: DATYS, AICROS, Joven Club, donde se tuvo en cuenta los siguientes elementos:
Satisfacción con el producto realizado.
Utilidad del proceso de diseño para influir en la calidad del producto final.
Aplicabilidad del proceso ante la necesidad de mejorar el diseño del producto del software en Cuba.
En los resultados que se muestran en la figura 3 se puede apreciar que el 75% de los usuarios muestran una clara satisfacción con la propuesta presentada. Además, no se contó con usuarios insatisfechos, por los que se obtuvo un Índice de Satisfacción Grupal de 0.85, en base a 1, lo que indica la satisfacción de los usuarios con el producto, teniendo en cuenta la calidad percibida.
Figura 3. Valoración de usuarios sobre el proceso. Fuente: elaboración propia.
También se realizaron pilotos como parte de la validación en entornos reales, donde el diseño fue guiado por el proceso descrito en el modelo. Para realizar dicha validación se tuvo en cuenta pequeñas y grandes organizaciones desarrolladoras de software, con el fin de determinar si el proceso es compatible con estos dos entornos.
El proceso de Diseño, se aplicó en cuatro (4). La composición de dichas empresas también es variada características, como por ejemplo hay empresas que tienen implantadas normas de la calidad y otras que solo usan los modelos, normas, estándares y/o guías de calidad como referencia.
Se recopiló información de los indicadores de rendimiento del proceso, antes y después de aplicar la propuesta para realizar un caso de estudio a partir de esta información en cinco proyectos (ver tabla 2). A continuación se especifican los indicadores que fueron evaluados en el caso de estudio:
T = tiempo dedicado al diseño.
TD = tasa de defectos.
CR = cumplimiento de requisitos arquitectónicamente significativos.
Pi = Proyectos del 1 al 5 que aplicaron la propuesta.
Antes (Sin aplicar la propuesta) |
Indicadores |
Después (Aplicada la propuesta) |
Indicadores |
||||
T |
TD |
CR |
T |
TD |
CR |
||
P1 |
500 h |
0.3 |
0.66 |
P1 |
350 h |
0.2 |
0.98 |
P2 |
400 h |
0.4 |
0.94 |
P2 |
250 h |
0.3 |
0.98 |
P3 |
200 h |
0.6 |
0.55 |
P3 |
130 h |
0.4 |
0.95 |
P4 |
210 h |
0.4 |
0.48 |
P4 |
120 h |
0.1 |
0.75 |
P5 |
300 h |
0.5 |
0.68 |
P5 |
250 h |
0.2 |
0.99 |
En la tabla 2 se pudo apreciar una mejoría en los indicadores de rendimiento, una vez aplicada la propuesta, mediante la reducción de tiempo y la tasa de defectos, así como un aumento del índice de cumplimiento de requisitos arquitectónicamente significativos.
5. Conclusiones
El análisis crítico realizado a los modelos y normas estudiados permitió identificar buenas prácticas de gestión reutilización para definir los requisitos del proceso de Diseño del Producto y separarlas por niveles de madurez para su adopción de manera escalonada.
La descripción gráfica y textual del proceso Diseño del producto constituye una guía para adoptar los requisitos identificados y facilitar su adopción.
La validación de la propuesta, contribuyó a constatar que existe conformidad con los procesos propuesto por parte de usuarios potenciales, y que la ejecución del proceso puede contribuir a aumentar el rendimiento del mismo.
Se recomienda desarrollar para el modelo MCDAI procesos de Ingeniería de Requisitos y de Construcción del Producto que incorpore las buenas prácticas de gestión de reutilización, al igual que procesos que gestionen la biblioteca de activos reutilizables y el programa de gestión de reutilización necesarios para complementar la propuesta y contribuir a aumentar el rendimiento del proceso de desarrollo de software en Cuba.
Se agradece a las organizaciones desarrolladoras de software en Cuba donde se llevaron a cabo los diagnósticos y los pilotos de los procesos propuestos, al igual que las que aportaron personal competente participar en los equipos técnicos de trabajo, así como al Ministerio de Comunicaciones por el apoyo brindado en el seguimiento al programa de mejora de procesos de la industria y a la academia (Universidad de las Ciencias Informáticas) por suministrar personal académico calificado.
Referencias
Bastarrica, C., Productividad en la Industria TIC. Bits, Ciencia y Sociedad. 2011.
Medina, E., A.J. Solís, I.P.T. de Andalucía, La necesidad de un sistema de la calidad para prevenir y controlar los problemas. Parque tecnológico de Andalucía. 2006.
Regaliza, P., et al., Proyectos software des-de una perspectiva cibernética, in in IX Congreso de Ingeniería de Organización: Gijón, 8-9 Septiembre de 2005. . 2005.
Salazar Labrada, L., Desarrollo del proceso Solución Técnica para los proyectos de desarrollo de la Universidad de la Ciencias Informáticas. 2017, UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS.
Aguilar, L.F., Gobernanza. El nuevo proceso de gobernar. Publicado por Fundación Friedrich Naumann para la Libertad, México, 2010.
SOFTEX, MPS.BR - Mejora de Procesos del Software Brasileño. Guía General. 2009.
SEI, S.E.I., CMMI para Desarrollo, Versión 1.3. 2010.
CYTED, C.y.T.p.e.D., COMPETISOFT-Mejora de Procesos para Fomentar la Competitividad de la Pequeña y Mediana Industria del Software de Iberoamérica. Versión 0.2. 2006.
ISO, I., IEEE, 12207 Systems and software engineering-software life cycle processes. International Organization for Standardization, Geneva, Switzerland, 2017.
ISO, I., IEEE, 15288. Systems and software engineering‐System life cycle processes. 2015.
Oktaba, H., Modelo de Procesos para la Industria de Software- MoproSoft-Versión 1.3, Agosto de 2005. 2005, NMX-059/01- NYCE-2005.
Pérez, D.M., Guía general para un modelo cubano de desarrollo de aplicaciones informáticas, in Universidad de las Ciencias Informáticas(UCI). 2014.
Pressman, R.S., Ingeniería de Software. Un enfoque práctico. septima edición ed. 2010.
Jacobson, I., M. Griss, and P. Jonsson, Software reuse: architecture, process and organization for business success. 1997: ACM Press/Addison-Wesley Publishing Co.
Manso, M.M. and F.J.P. García Medición en la Reutilización Orientada a Objetos. 2013.
McClure, C., Software reuse techniques. 1997: Prentice-Hall.
Martinez, J., T. Ziadi, and T.F. Bissyandé, Bottom-Up Adoption of Software Product Lines - A Generic and Extensible Approach. 2015.
Northrop, L., et al., A framework for software product line practice, version 5.0. SEI.–2007– http://www.sei.cmu. edu/productlines/index. html, 2012.
Bergey, J.K., et al., Fourth DoD Product Line Practice Workshop Report. 2001.
SOFTEX, MPS.BR - Mejora de Proceso del Software Brasileño. Guía de Implementación – Parte 5: Fundamentos para Implementación del Nivel C del MR-MPS. 2011.
SOFTEX, MPS.BR - Mejora de Proceso del Software Brasileño. Guía de Implementación - Parte 3: Fundamentos para Implementación del Nivel E del MR-MPS. 2009.
CALISOFT, C.N.d.C.d.S., CS-03-D (14-001) Libro de diagnóstico. 2014.
Castañeda, R.H., CUBA: La necesidad de las pymes en los ajustes socioeco-nómicos en curso. 2011.
ÚbeDa, H.B.A.a.M.a., Gestión de Pymes Colombia-Chile. Comparación entre dos regiones. Cuadernos del SIUNE Publicación del Sistema de Investigación Institución Universitaria de Envigado, SIUNE. 2011.
ISO, O.I.d.E., ISO/IEC 25023: Systems and software engineering -- Systems and software Quality Requirements and Evaluation (SQuaRE) -- Measurement of system and software product quality. 2017.
Aigneren, M., La técnica de recolección de información mediante los grupos focales, Artículo publicado en CEO. Revista electrónica, 2006(7).