• No results found

Integrating the State Controller with Kubernetes

4.1 A State Controller for Kubernetes

4.1.2 Integrating the State Controller with Kubernetes

Dado que los proyectos contenidos en la base de datos de Leda están estimados en puntos función se va a hacer una breve introducción a esta técnica.

Los Puntos Función (PF) son una unidad de medida para el tamaño funcional propuesta en 1979 por Allan J. Albrecht. Para determinar el tamaño es necesario descomponer los sistemas en componentes más pequeños de manera que los desarrolladores, administradores y usuarios lo entiendan y analicen mejor.

36 3.3. ESTIMACIÓN POR ANALOGÍA

El análisis de esta unidad de medida se denomina Análisis de Puntos Función (FPA) y, en contra- posición a las métricas anteriormente establecidas -como el conteo de las líneas de código-, mide la funcionalidad que el usuario solicita y recibe, y permite calcular el desarrollo del software, los tipos y el tamaño de este, independiente de los detalles técnicos involucrados. Esto hace que la medida sea independiente del lenguaje o herramienta utilizada en el desarrollo del proyecto [3].

El Análisis de Puntos Función ha sido adoptado por la norma ISO/IEC desarrollada para garantizar que todos los métodos de Medición de Tamaño Funcional se basen en conceptos similares.

Además, existe una organización internacional denominada IFPUG1(Agrupación Internacional de Usuarios de Puntos Función) fundada en 1986 cuyo objetivo es mejorar, mantener y promocionar esta técnica, siendo así responsables tanto de su mantenimiento como de su evolución.

Esta organización ha creado un estándar reconocido por la industria del software: el Manual de Prácticas de Medición de Puntos de Función. La versión actual es la 4.3.1 y está disponible en diversos idiomas.

La estimación del tamaño de software resultante de esta técnica es necesaria para la medición de productividad, en las actividades de mantenimiento de sistemas y al estimar el esfuerzo necesario para realizar estas actividades.

Esta técnica se caracteriza por:

• Ser un método independiente de las herramientas de análisis, diseño y programación, debido a que se preocupa de la complejidad de las funciones a implementar, además es independiente del lenguaje, herramientas o metodologías utilizadas en la implementación.

• Requiere de una descomposición funcional del proyecto de software a realizar, en términos tales que se detectan todas las piezas elementales que componen el producto final.

• Pueden ser estimados a partir de la especificación de requisitos o especificaciones de diseño, haciendo posible de este modo la estimación del esfuerzo de desarrollo en etapas tempranas del mismo. Como los puntos de función están íntimamente relacionados con la declaración de requisitos, cualquier modificación a ésta, puede ser reflejada sin mayor dificultad en una re-estimación.

• Están basados en una visión externa del usuario del sistema, los usuarios no técnicos del software poseen un mejor entendimiento de lo que los puntos de función están midiendo. El método resuelve muchas de las inconsistencias que aparecen cuando se utiliza líneas de código como métrica del tamaño del software.

Esta técnica se basa en la suma del valor de los puntos función de las funciones de un sistema, que se dividen en funciones transaccionales y en funciones de datos. El valor de estas funciones se determina a través de sus componentes. Para ello, se identificarán los distintos componentes, se definirá la complejidad de cada uno de ellos y se multiplicará el número de componentes por su factor correspondiente. De esta manera y mediante la suma de todos los totales se obtienen los Puntos de Función No Ajustados (PFNA). Finalmente, al ponderar los puntos de función no ajustados (PFNA) por el valor del factor de ajuste se obtienen los puntos función ajustados. Este factor de ajuste está basado en 14 características generales del sistema, las cuales tienen asociada una descripción que ayuda a determinar su nivel de influencia en una escala de cero a cinco.

Por lo que, para conseguir este valor final es necesario realizar los siguientes pasos:

1. Determinar el tipo de medición que se va a realizar. Identificar el alcance y los límites de la medición.

CAPÍTULO 3. ESTADO DEL ARTE 37

2. Medir las funciones de datos. 3. Medir las funciones transaccionales.

4. Determinar los puntos función no ajustados. 5. Determinar el valor del factor de ajuste. 6. Calcular los puntos función ajustados.

Paso 1: Determinar la clase de medición que se va a realizar, establecer el límite de la aplicación y el alcance

Para realizar una medición del tamaño funcional en Puntos Función primero se ha de determinar el tipo de medición que se va a realizar ya que según su propósito existen tres tipos distintos:

• De un proyecto de desarrollo: en este caso se mide las funciones proporcionadas al usuario por el proyecto en la primera instalación del software que se ha desarrollado.

• De un proyecto de mejora: se trata de proyectos para desarrollar y entregar mantenimientos adaptativos. Se miden las modificaciones a la aplicación existentes entregadas a la finalización del proyecto. Como modificaciones se entienden las acciones que incorporan, cambian o eliminan funciones de usuario.

• De una aplicación: consiste en la medición de las funciones actuales que la aplicación propor- ciona al usuario. Se puede conseguir directamente a través de la medición de un proyecto de desarrollo como primera medida, para posteriormente actualizarla con las mediciones de todos los proyectos de mejora que hayan tenido lugar después.

En base a esto se debe determinar el alcance de la medición y posteriormente definir los límites de cada aplicación que va a ser medida.

Paso 2: Medir las funciones de datos

Se han de identificar las funciones de datos. Estas funciones representan la funcionalidad propor- cionada al usuario para satisfacer los requisitos de datos internos y externos. Estos datos son lógicos, se almacenan y están disponibles para su actualización y recuperación. Pueden ser identificadas bien como ficheros lógicos internos (Internal Logical Files, ILFs) o como ficheros lógicos externos (External Interface Files, EIFs).

Los ILFS son grupos de datos o información de control relacionados de manera lógica que son identificables por el usuario, que residen en su totalidad dentro de los límites de la aplicación y que son mantenidos dentro de la aplicación. El propósito principal de un ILF es mantener los datos conservados a través de uno o varios procesos elementales de la aplicación que se está midiendo.

Un EIF es un conjunto de datos o de información de control relacionados de manera lógica que son identificables por el usuario, solo usados para propósitos de referencia, y que a diferencia de los ILFs son mantenidos dentro de los límites de otra aplicación. Su intención principal es mantener los datos referenciados a través de uno o más procesos elementales dentro del límite de la aplicación medida. Esto significa que un EIF contabilizado para una aplicación debe ser un ILF en otra aplicación.

Por lo tanto, la principal diferencia entre un ILF y un EIF es que el primero es mantenido dentro de los límites de la aplicación mientras que el segundo se mantiene fuera de los límites de esta.

Una vez que se han clasificado estos componentes como ILF o EIF se les ha de asignar una complejidad en base a los atributos que almacenan o los grupos de atributos que se pueden identificar en ellos, siguiendo unas determinadas reglas definidas en el método. Esto supone determinar el número de tipos de elementos de datos (DET) y el número de tipos de elementos de registro (RET).

38 3.3. ESTIMACIÓN POR ANALOGÍA

• Un elemento del tipo dato (Data Element Type, DET) es un campo único, no repetido, recono- cible por el usuario.

• Un elemento del tipo registro (Resgister Element Type, RET) es un subgrupo de elementos de datos reconocible por el usuario, dentro de un ILF o un EIF. Dentro de este tipo de elemento, podemos distinguir dos tipos: opcionales y obligatorios. Un RET opcional es aquel en el cual el usuario puede elegirlo o no a la hora de crear una ocurrencia de datos.

Un RET obligatorio es aquel en el cual el usuario debe utilizar al menos uno. Esta complejidad se determina en función a las siguientes tablas:

1-19 DETS 20-50 DETS >=51 DETS 1 RET Baja Baja Media 2-5 RETS Baja Media Alta >=6 RETS Media Alta Alta

Tabla 3.2: Complejidad ILF/EIF

Para un ILF su valor en puntos función es: Complejidad

funcional Puntos función

Baja 7

Media 10

Alta 15

Tabla 3.3: Complejidad ILF

Para un EIF su valor se puede ver en la siguiente: Complejidad

funcional Puntos función

Baja 5

Media 7

Alta 10

Tabla 3.4: Complejidad EIF

Paso 3: Medir las funciones transaccionales

Tras identificar las funciones de datos, se han de identificar las funciones transaccionales y clasificarlas según su tipología.

Representan la funcionalidad proporcionada al usuario para el procesamiento de los datos a través de la aplicación.

Constituyen procesos elementales que son la unidad de actividad mínima significativa para el usuario y suponen una transacción completa.

Estas funciones ejecutan procesos de almacenamiento, actualización, recuperación y visualización de los datos lógicos. Existen tres tipos de funciones: entradas externas (External Inputs, EI), salidas externas (External Outputs, EO) y consultas externas (External Inquieres, EQ).

Una entrada externa (IE) es un proceso elemental que cruza los límites de la aplicación desde fuera hacia a dentro. Procesa datos o controla información enviada desde fuera de los límites de la

CAPÍTULO 3. ESTADO DEL ARTE 39

aplicación. La intención principal de un EI es mantener uno o más ILF y/o alterar el comportamiento del sistema.

Una salida externa (EO) es un proceso elemental que envía datos o información de control fuera de los límites de la aplicación y que además incluye un procesamiento adicional más allá de una consulta. El propósito principal es presentar información al usuario o a través de lógica de procesamiento que no sea o además de la recuperación de datos o información de control. La lógica de procesamiento debe contener al menos una fórmula matemática o cálculo, crear datos derivados, mantener uno o más ILF y / o alterar el comportamiento del sistema.

Una consulta externa (EQ) es un proceso elemental que envía datos o información de control fuera de los límites de la aplicación. El propósito principal es presentar información al usuario a través de la lógica de procesamiento o de información de control. La lógica de procesamiento no contiene ninguna fórmula matemática, cálculos o datos derivados. Ningún ILF es mantenido durante el procesamiento ni el comportamiento del sistema es alterado.

Una vez que se han clasificado estos componentes como EI, EQ o EO se les ha de asignar una complejidad en base a los atributos que envía y recibe la propia función y los grupos lógicos o funciones de datos que utiliza. Para ello, se han de identificar los DETs y los FTRs.

Un fichero referenciado (File Type Reference, FTR) es un fichero lógico interno (ILF) leído o mantenido por una función transaccional o es un fichero de interfaz externo (EIF) leído por una función transaccional.

Su complejidad se obtiene en base a las siguientes tablas: Para un EI: 1-4 DETs 5-15 DETs <=16 DETs 0-1 FTRs Baja Baja Media 2 FTRs Baja Media Alta >=3 FTRs Media Alta Alta

Tabla 3.5: Complejidad EI

Para EQs o EOs:

1-4 DETs 6-19 DETs <=20 DETs 0-1 FTRs Baja Baja Media 2-3 FTRs Baja Media Alta >=4 FTRs Media Alta Alta

Tabla 3.6: Complejidad EQ/E0

Y sus correspondientes valores en puntos función son:

Complejidad Puntos Función

Baja 4

Media 5

Alta 7

Tabla 3.7: Puntos función EI.

40 3.3. ESTIMACIÓN POR ANALOGÍA

Complejidad Puntos Función

Baja 3

Media 4

Alta 6

Tabla 3.8: Puntos función EQ/EO.

Como resultado de sumar los puntos función obtenidos en cada una de las funciones medidas en los pasos anteriores obtenemos los puntos función no ajustados.

Paso 5: Determinar el valor del factor de ajuste

El Factor de Ajuste (VAF) también llamado Factor de Complejidad Técnica nos permite ponderar el valor de los Puntos Función no ajustados en un +/- 35 %, por lo que es muy importante determinar un valor preciso.

Este factor está basado en 14 características generales del sistema (GSCs) que evalúan la funcio- nalidad global de la aplicación que se está midiendo. Cada una de estas características tiene asociada una descripción que ayuda a determinar su grado de importancia dentro del sistema. El grado de influencia varía en función de una escala que va desde cero (sin influencia) a cinco (esencial).

Evaluación de los factores de complejidad

No influencia Incidental Moderado Medio Significativo Esencial

0 1 2 3 4 5

Tabla 3.9: Influencia de los factores.

Las 14 características generales comentadas anteriormente son:

1. Comunicación de datos: describen el grado en que la aplicación se comunica directamente con el procesador.

2. Procesamiento de Datos Distribuido: describe el grado en el que la aplicación transfiere datos entre sus componentes físicos.

3. Rendimiento: describe el grado en que las consideraciones de tiempo de respuesta y las tasas de transferencia han influido en el desarrollo de la aplicación.

4. Configuración Altamente Utilizada: describe el grado en que las restricciones de recursos de ordenador han influido en el desarrollo de la aplicación.

5. Tasa de Transacciones: describe el grado en el que la tasa de transacciones de negocio ha influido en el desarrollo de la aplicación.

6. Entrada de Datos On-line: refleja el grado en que los datos son introducidos o recuperados por medio de transacciones interactivas.

7. Eficiencia del Usuario Final: describe el grado de consideración del factor humano y la facilidad de uso para el usuario de la aplicación medida.

8. Actualización On-line: describe el grado en que los archivos lógicos internos son actualizados on-line.

9. Complejidad de Procesamiento: describe el grado en que la lógica del proceso ha influido en el desarrollo de la aplicación.

CAPÍTULO 3. ESTADO DEL ARTE 41

10. Reusabilidad: describe el grado en que la aplicación y el código de la aplicación han sido espe- cíficamente diseñados, desarrollados, y mantenidos para ser utilizables en otras aplicaciones. 11. Facilidad de Instalación: refleja el grado en que la conversión desde entornos previos ha influido

en el desarrollo de la aplicación.

12. Facilidad de Operación: describe el grado en que la aplicación se ocupa de aspectos operativos, tales como el arranque, copias de seguridad, y procesos de recuperación.

13. Múltiples Localizaciones: refleja el grado en que la aplicación ha sido desarrollada para distintos entornos hardware y software.

14. Facilidad de Cambio: describe el grado en que la aplicación ha sido desarrollada para facilitar la modificación de la lógica de proceso o de la estructura de datos

Una vez que se ha determinado la influencia de cada una de estas características, se utiliza una fórmula para obtener el valor de este factor:

V AF = 0,65 + 0,01 Í14 i=1Ft

DondeFt es el valor adjudicado a cada característica general del sistema.

Paso 6: Calcular y determinar los puntos función ajustados

Tras determinar el factor de ajuste, deberemos elegir la fórmula que mejor se ajuste al propósito de la medición. Una vez que establecemos la fórmula, la aplicaremos para realizar el cálculo de los puntos función ajustados.

En función del tipo de medición es necesario utilizar un tipo de fórmula asociada. • Para un proyecto de desarrollo:

DFP = (U FP + CFP) · VAF

Donde UFP es medición de puntos función no ajustados para las funciones añadidas después de la instalación

CFP es medición de puntos función no ajustados VAF es el valor del factor de ajuste

• Para un proyecto de mejora:

AFP = [(U FPB + ADD + CHGA) − CHGB + DEL)] · VAFA

Donde UFPB es medición de puntos función no ajustados de la aplicación antes del proyecto de mejora

ADD medición de puntos función no ajustados de las funciones añadidas al proyecto de mejora CHGA medición de puntos función no ajustados de las funciones modificadas por el proyecto de mejora

CHGB medición de puntos función no ajustados de las funciones modificadas por el proyecto de mejora, antes de hacer los cambios

DEL medición de las funciones eliminadas por el proyecto de mejora VAFA valor del factor de ajuste después de que el proyecto finalice • Para un proyecto de función de una aplicación:

AFP = ADD · VAF

Donde ADD es la medición de puntos función no ajustados VAF es el valor de factor de ajuste

42 3.3. ESTIMACIÓN POR ANALOGÍA