Resultados: Herramienta COMPROMISE
5. RESUL T ADOS: HERRAMIENT A COMPR OMISE 79
5.2 Fase de Elaboración y Construcción
5.2.3 Iteración 3: Implementación de las funciones para el Análisis de Conformidad de ProcesosConformidad de Procesos
Como podemos observar en el código nos definimos un contexto JAXB (línea 3) con la instancia que queremos que tenga como padre de las demás, en este caso es la clase MethodLibrary. Después creamos un fichero, que será el que contendrá nuestro archivo XML (línea 7) y por último, después de definir una serie de propiedades del objeto marshaller (línea 8), introducimos el contenido (method) en el fichero en la línea 10.
5.2.2.3 Pruebas
A continuación se presenta una prueba en la que el documento es compuesto y en el que es creado bajo el nombre defichero_test.xml. Se comprueba que una vez creado, éste existe y no ha dado ningún problema. Será tarea de la herramienta EPFC encargarse de su validación, y de esta manera comprobamos que es un fichero creado conforme al metamodelo UMA y que todos sus elementos son pasados al contenido de método de la Librería de Método definida en el documento.
1 M e t h o d L i b r a r y method = new M e t h o d L i b r a r y ( ) ;
2 JAXBContext c o n t e x t ;
3 t r y {
4 c o n t e x t = JAXBContext . n e w I n s t a n c e ( M e t h o d L i b r a r y . c l a s s ) ;
5 M a r s h a l l e r m a r s h a l l e r = c o n t e x t . c r e a t e M a r s h a l l e r ( ) ;
6 m a r s h a l l e r . s e t P r o p e r t y ( M a r s h a l l e r . JAXB_FORMATTED_OUTPUT , t r u e ) ;
7
8 F i l e f i l e = new F i l e ("./fichero_test.xml") ;
9 m a r s h a l l e r . s e t P r o p e r t y ( M a r s h a l l e r . JAXB_ENCODING ,"ISO-8859-1") ;
10 m a r s h a l l e r . m a r s h a l ( method , f i l e ) ;
11 a s s e r t T r u e ( f i l e . e x i s t s ( ) ) ;
Listado 5.3:Test Composición XML.
5.2.3 Iteración 3: Implementación de las funciones para el Análisis de
implementadas por la organización (o en su defecto un número alto previamente fijado antes de la evaluación), además deberá disponer de todos los activos necesarios para su ejecución satisfactoria (herramientas, roles que se ocupen de ciertas tareas, etc.).
5.2.3.1 Análisis y Diseño
A partir de aquí se planteó el problema de cómo lograr la correspondencia automática entre tareas. Es por eso que se determinaron tres vías para resolverlo, presentadas a continuación:
• Mediante la comparación del nombre: El nombre de la tarea en el proceso de la organización se debe corresponder íntegramente con el nombre de la tarea perteneciente al modelo de referencia. Esta solución es idónea si se conservan los nombres (en nuestro caso lo conservaría, pues la tarea con la que formamos el proceso en EPFC proviene del modelo de referencia cargado a partir de la bbdd de ARMONÍAS-DGS.), no obstante en el momento en que los nombres cambien no habrá correspondencia, aunque sea la misma tarea.
• Comparación del id:Es una forma unívoca y muy útil, no obstante ocurrirá lo mismo que con el anterior, si hay algún problema la detección de la correspondencia entre ambas tareas fallará.
• Con un ratio definido del nombre y propiedades de la tarea:Proponer un ratio de concordancia de nombre, de esta manera definiremos un umbral a partir del cual se considera que una tarea corresponde con otra.
En un origen la herramienta da opción al uso de cualquiera de las tres posibilidades, incluso a la selección de las tres (Figura 5.12). No obstante, conforme fue creciendo la madurez del proyecto se determinó que estas funciones se reducirían a una sola en lo sucesivo, únicamente comparandose el nombre en la continuación del desarrollo.
Figura 5.12:Prototipo de Interfaz para la visualización de la conformidad
A continuación se presentan dos diagramas correspondientes a la etapa de análisis y diseño. Por un lado, en la Figura 5.13 corresponden a los pasos que sigue la herramienta para obtener el análisis de conformidad de un proceso.
Figura 5.13:Diagrama clases de análisis para evaluar la Conformidad de Proceso
En la figura 5.14, se muestra el diseño de las clases que intervienen en la función de Recomendador. Recordar que la función recomendador nos indica los elementos que nos faltan para completar un marco de referencia (Tareas, Herramientas y Roles).
Figura 5.14:Diagrama Clases Recomendador
Por último, otra funcionalidad a completar al término de esta iteración fue la de recomen- dador. Esta función indica cuánto nos falta por implementar y lo que tenemos implementado (elementos del marco de referencia) además de apoyarnos en el gráfico de barras 5.12 que nos indica el tanto por ciento de tareas que reunimos para cada uno de los marcos de referencia.
Figura 5.15:Gráfica de Compliance total de la organización.
5.2.3.2 Implementación
A continuación, en el Listado 5.4, podemos observar la implementación de los aspectos mencionados. Las listas“porcentaje_compliance_g1”y“nombre_compliance_g1”contienen los nombres de los procesos y el tanto por ciento de la concordancia de las tareas del proceso con las del modelo de calidad examinado. Haremos esta función para cada una de las gráficas presentes en la herramienta.
Como podemos ver en la línea 11, las tareas con las que comparamos están en la base de datos de ARMONÍAS-DGS.
1 p u b l i c v o i d r e a l i z a _ c o m p l i a n c e ( ) {
2
3 f o r ( i n t i = 0 ; i < p r o c e s o s . s i z e ( ) ; i ++) {
4 //metemos el proceso en el array que representaremos
5 n o m b r e _ c o m p l i a n c e _ g 1 [ i ] = p r o c e s o s . g e t ( i ) . getName ( ) ;
6 //sacamos todas las tareas y comparamos el nombre con la bbdd de armonías.
7 V e c t o r t a s k s _ a r m o n i a s = u t i l . g e t A l l _ T a s k _ b y _ P r o c e s s _ V e c t o r ( s e l e c c i o n _ h i s t o r i c o ) ;
8
9 a u x _ t a r e a s _ o r g = t a s k _ m a n a g e r . g e t T a s k b y P r o c e s s ( p r o c e s o s . g e t ( i ) . getName ( ) ) ;
10 f o r ( i n t j = 0 ; j < a u x _ t a r e a s _ o r g . s i z e ( ) ; j ++) {
11 i f ( u t i l . e x i s t T a s k ( s e l e c c i o n _ h i s t o r i c o , a u x _ t a r e a s _ o r g . g e t ( j ) . getName ( ) ) ) {
12 p e r c e n t + + ;
13 }
14 }
15 p o r c e n t a j e _ c o m p l i a n c e s _ g 1 [ i ] = ( i n t ) ( ( ( d o u b l e ) p e r c e n t / ( d o u b l e ) t a s k s _ a r m o n i a s . s i z e ( ) ) *100 ) ;
16 }
17 18 }
Listado 5.4:Ejemplo clase Manager.
Para llevar a cabo la implementación de la función Recomendador es de vital importancia haber hecho la de conformidad, pues en realidad se basa en ella. Es decir, para cada marco de referencia extraemos las tareas que posee (de la BBDD de ARMONÍAS-DGS) y vamos comparando todas y cada una de ellas con las de los procesos de la organización, de esta forma se sabe en cada instante que porcentaje de tareas del marco de referencia están cubiertas por la organización.
En la siguiente iteración, serán estas listas las que provean de datos a las gráficas para representarlos.
5.2.3.3 Pruebas
En la etapa de pruebas correspondientes a la presente iteración elaboraremos casos de prueba para la función recomendador. Como hemos enunciado con anterioridad, dicha función tiene como objetivo proveer al usuario de aspectos por implementar para lograr la conformidad con los marcos armonizados de procesos deseada. Estas pruebas han sido realizadas bajo un entorno controlado y con procesos definidos previamente conociendo el resultado de los valores analizados.
En el métodosetUp()que inicia el test de la Figura 5.5, se llama afuncion_recomendador(), el cual debe retornar valores para las listastareas_por_representar,roles_por_representary herramientas_por_representar. En la primera función de test llamadatestCreacion()(líneas 8, 9 y 10) se comprueban que éstas hayan tomado los valores devueltos por la función anterior. En el test denominadoInsercion_correctase comprueba que cumplen con los valores establecidos de manera manual. Por último en el testgeneracion_reporte()se comprueba que los métodos que devuelven en forma de cadena de caracteres los valores por implementar no estén vacíos.
1 @Before
2 p u b l i c v o i d s e t U p ( ) {
3 f u n c i o n _ r e c o m e n d a d o r ( ) ;
4 }
5
6 @Test
7 p u b l i c v o i d t e s t C r e a c i o n ( ) {
8 a s s e r t N o t N u l l ( t a r e a s _ p o r _ r e p r e s e n t a r ) ;
9 a s s e r t N o t N u l l ( r o l e s _ p o r _ r e p r e s e n t a r ) ;
10 a s s e r t N o t N u l l ( h e r r a m i e n t a s _ p o r _ r e p r e s e n t a r ) ;
11 }
12
13 @Test
14 p u b l i c v o i d I n s e r c i o n _ c o r r e c t a ( ) {
15 a s s e r t T r u e ( t a r e a s _ p o r _ r e p r e s e n t a r . s i z e ( ) = = 2 5 ) ;
16 a s s e r t T r u e ( r o l e s _ p o r _ r e p r e s e n t a r . s i z e ( ) ==3) ;
17 a s s e r t T r u e ( h e r r a m i e n t a s _ p o r _ r e p r e s e n t a r . s i z e ( ) ==1) ;
18 }
19
20 @Test
21 p u b l i c v o i d g e n e r a c i o n _ r e p o r t e ( ) {
22 a s s e r t N o t E q u a l s ( T a r e a s _ p a r a _ I n f o r m e ( ) , "") ;
23 a s s e r t N o t E q u a l s ( H e r r a m i e n t a s _ p a r a _ I n f o r m e ( ) , "") ;
24 a s s e r t N o t E q u a l s ( R o l e s _ p a r a _ I n f o r m e ( ) , "") ;
25 }
Listado 5.5:Test Función Recomendador.