Métricas

Una métrica se refiere a una medida cuantitativa utilizada para evaluar y cuantificar diferentes aspectos de un sistema de software, su rendimiento, calidad y eficiencia. Estas medidas proporcionan información objetiva y cuantitativa que permite a los desarrolladores, ingenieros de software y gerentes de proyectos comprender, monitorear y mejorar diversos aspectos del desarrollo y el funcionamiento del software.

## Métricas de predicción

Las métricas de predicción son un conjunto de medidas que se utilizan para anticipar o estimar ciertos aspectos de un producto de software en desarrollo o una vez que esté completo. Estas métricas son valiosas porque permiten a los equipos de desarrollo y a las organizaciones planificar, gestionar y tomar decisiones basadas en datos con respecto a la calidad, el rendimiento y otros aspectos del software.

## Métricas de control

Las métricas de control son medidas utilizadas para supervisar y evaluar la calidad de un producto de software durante su desarrollo. Estas métricas desempeñan un papel fundamental en el seguimiento y la gestión de proyectos de software, ya que ayudan a identificar áreas problemáticas, tomar decisiones informadas y garantizar que se cumplan los estándares de calidad y los objetivos del proyecto.

## Métricas Orientadas a Objetos

   Son medidas utilizadas en la programación orientada a objetos para evaluar diversas características y propiedades de un sistema de **Software**. Estas métricas se centran en los objetos, clases y estructuras de un programa en lugar de considerar el código de manera global. Algunas de las métricas orientadas a objetos más comunes incluyen:

### Número de Métodos por Clase (NOM - Number of Methods)

Esta métrica cuenta cuántos métodos (funciones) están definidos en una clase. Un alto valor de **NOM** puede indicar una clase compleja que realiza demasiadas tareas diferentes. Esto podría ser una señal de que la clase viola el principio de responsabilidad única y podría requerir una refactorización.

### Número de Atributos por Clase (NOA - Number of Attributes)

Mide la cantidad de atributos (variables de instancia) en una clase. Un alto valor de **NOA** puede indicar una clase con una gran cantidad de datos internos, lo que podría dificultar la comprensión y el mantenimiento del código. Esto también puede ser una señal de falta de cohesión en la clase.

### Ciclomatic Complexity (CC)

La complejidad celomática mide la complejidad de control de un método o función. Cuanto mayor sea el valor de **CC**, mayor será la cantidad de caminos de ejecución posibles en el código. Un alto valor de **CC** puede indicar que el método es difícil de entender y mantener debido a su complejidad.

### Coeficiente de Acoplamiento (LCOM - Lack of Cohesion of Methods)

Mide la falta de cohesión entre los métodos de una clase. Un valor bajo de **LCOM** indica que los métodos de la clase están relacionados entre sí, lo que es deseable para una buena encapsulación y diseño orientado a objetos. Un valor alto de **LCOM** indica falta de cohesión, lo que podría sugerir que la clase realiza tareas diferentes y debería dividirse en clases más pequeñas y cohesivas.

### Profundidad de Herencia (DIT - Depth of Inheritance Tree)

Mide cuántas clases derivan de una clase base en una jerarquía de herencia. Un valor alto de DIT indica una jerarquía de clases profunda, lo que puede hacer que el código sea más difícil de entender y mantener. Puede sugerir la necesidad de reducir la profundidad de la jerarquía de clases.

### Número de Líneas de Código por Método (NLOC - Number of Lines of Code per Method)

Mide cuántas líneas de código hay en un método. Los métodos muy largos tienden a ser difíciles de entender y mantener, por lo que un alto valor de **NLOC** puede indicar que el método debe dividirse en métodos más pequeños y cohesivos.

### Índice de Acoplamiento (CI - Coupling Index)

Mide cuánto depende una clase de otras clases. Un alto **CI** puede indicar una clase que tiene demasiadas dependencias, lo que puede hacer que el código sea menos flexible y más difícil de mantener.

### Número de Clases Derivadas (NOC - Number of Children)

Esta métrica se aplica fundamentalmente es interfaces o clases abstractas. Mide cuántas clases derivan de una clase base. Un alto valor de **NOC** puede indicar que una clase base tiene una influencia significativa en el sistema y puede ser crítica para la arquitectura del software.

### Número de Líneas de Código por Clase (LOC/Class)

Mide cuántas líneas de código tiene una clase en particular. Las clases con un alto **LOC** pueden ser difíciles de gestionar y entender, lo que puede indicar la necesidad de dividirlas en clases más pequeñas y cohesivas.

## Métricas de Desarrollo Móvil

El desarrollo de **aplicaciones móviles** ha experimentado un crecimiento significativo en los últimos años, convirtiéndose en un componente esencial en la vida de las personas y en un mercado altamente competitivo. Para asegurar el éxito de una **aplicación móvil** y garantizar la satisfacción de los usuarios, es fundamental mantener altos estándares de calidad. En este contexto, las métricas de calidad para aplicaciones móviles desempeñan un papel crucial. Por lo anterior, te traemos una serie de métricas que se deben tener en cuenta a la hora de desarrollar **APPS móviles**.

### Tiempo de Carga

Se refiere al período que transcurre desde que un usuario inicia la aplicación hasta que está completamente lista para su uso. Este es un factor crítico para la satisfacción del usuario, ya que los tiempos de carga largos pueden resultar en la frustración de los usuarios y llevarlos a abandonar la aplicación antes de poder utilizarla.

### Tiempo de Respuesta

Se refiere a la velocidad con la que la aplicación responde a las acciones del usuario, como toques, deslizamientos y clics. Un tiempo de respuesta lento puede hacer que la aplicación se sienta poco receptiva y dificultar la interacción del usuario.

### Consumo de Batería

Esta métrica evalúa cuánta energía consume la aplicación en el dispositivo móvil. Las aplicaciones que agotan rápidamente la batería pueden ser menos atractivas para los usuarios, ya que pueden afectar negativamente la duración de la batería de sus dispositivos.

### Uso de Datos Móviles

Mide la cantidad de datos móviles que la aplicación consume durante el uso. Las aplicaciones que utilizan grandes cantidades de datos pueden resultar costosas para los usuarios, especialmente si exceden los límites de sus planes de datos.

### Crashes y Errores

Esta métrica evalúa la estabilidad de la aplicación al medir la frecuencia de cierres inesperados (crashes) y errores en la aplicación. Las aplicaciones propensas a crashes y errores son consideradas de baja calidad y pueden provocar la desinstalación.

### Tasa de Abandono (Churn Rate)

Mide la cantidad de usuarios que abandonan la aplicación después de un período de tiempo específico. Una alta tasa de abandono puede indicar problemas de retención de usuarios y es importante para comprender si los usuarios encuentran valor en la aplicación.

### Calificación y Reseñas de Usuarios

Evalúa las calificaciones y reseñas que los usuarios dejan en las tiendas de aplicaciones. Las malas calificaciones y reseñas pueden disuadir a los nuevos usuarios y afectar la percepción general de la aplicación.

### Tamaño de la Aplicación

Mide el espacio que ocupa la aplicación en el dispositivo del usuario. Las aplicaciones muy grandes pueden agotar el espacio de almacenamiento disponible y desalentar a los usuarios de descargarlas.

### Rendimiento en Diferentes Dispositivos y Versiones de SO

Evalúa cómo se comporta la aplicación en una variedad de dispositivos móviles y versiones del sistema operativo. La compatibilidad y el rendimiento consistentes son esenciales para llegar a un público amplio.

### Seguridad

Evalúa la seguridad de la aplicación, incluyendo vulnerabilidades de seguridad y la protección de los datos del usuario. La seguridad es una preocupación importante, especialmente para aplicaciones que manejan información sensible.

### Usabilidad y Experiencia del Usuario (UX)

Mide la facilidad de uso y la calidad de la experiencia del usuario en la aplicación. Una buena usabilidad es esencial para retener a los usuarios y garantizar una experiencia positiva.

### Tiempo de Retención

Mide cuánto tiempo los usuarios mantienen la aplicación instalada en sus dispositivos. El tiempo de retención es un indicador importante de la satisfacción y el valor continuo que la aplicación ofrece a los usuarios.

### Velocidad de Navegación

Evalúa la velocidad de navegación dentro de la aplicación, incluyendo la rapidez con la que se cargan las páginas y la fluidez de la interacción. La velocidad de navegación influye en la experiencia del usuario.