Características no funcionales del diseño de software – Diseño de sistemas 03

diseño-del-sistema-diseño del sistema 03-diseño de software características no funcionales-hogantech-hoganblab

Prefacio

Las características no funcionales en los sistemas de software modernos incluyen: disponibilidad (Disponibilidad), confiabilidad (Confiabilidad), escalabilidad (Escalabilidad), mantenibilidad (Mantenibilidad) y tolerancia a fallas (Fault Tolerance). Estas características no solo afectarán el rendimiento y la eficiencia del sistema de software. afectan directamente la experiencia del usuario. Este artículo también proporcionará una explicación detallada de las cinco características anteriores.

características no funcionales

En el diseño de sistemas, podemos dividirlo aproximadamente en dos tipos de requisitos para la planificación del diseño del sistema, a saber, requisitos funcionales (Requisitos funcionales) y requisitos no funcionales (Requisitos no funcionales).

  • Requisitos funcionales, como diseñar una plataforma de visualización de videos que incluya funciones como inicio de sesión de usuario, carga de videos, visualización de videos, etc.
  • Requisitos no funcionales, como diseñar una plataforma de visualización de videos que pueda manejar el tráfico de millones de usuarios.

Debería poder encontrar aquí que tanto los requisitos funcionales como los no funcionales son muy importantes, por lo que este artículo hablará primero sobre los requisitos no funcionales.

Disponibilidad

Disponibilidad Se refiere al porcentaje de servicios del sistema o del equipo general del sistema al que los usuarios pueden acceder y operar normalmente. Por ejemplo, si la disponibilidad de un servicio es 100%, significa que los servicios del sistema pueden operar y responder normalmente en cualquier momento, en lengua vernácula, el sistema no fallará.

Cómo medir la usabilidad

La disponibilidad se puede expresar como una relación matemática, simbolizada por A, siendo mejores los valores más altos. Lo expresamos con la siguiente fórmula matemática:

A (porcentaje) = (tiempo total – tiempo de inactividad del servicio) / tiempo total * 100%

Disponibilidad Tiempo de inactividad por año Tiempo de inactividad mensual El tiempo de inactividad semanal
90% (un 9) 36,5 días 72 horas 16,8 horas
99% (dos 9) 3,65 días 7.20 horas 1,68 horas
99.9% (tres 9) 8,76 horas 43,8 minutos 10,1 minutos
99.99% (cuatro 9s) 52,56 minutos 4,32 minutos 1,01 minutos
99.999% (cinco 9) 5,26 minutos 25,9 segundos 6,05 segundos
99.9999% (seis 9) 31,5 segundos 2,59 segundos 0,605 segundos
99.99999% (siete 9s) 3,15 segundos 0,259 segundos 0,0605 segundos

Como puede ver en la tabla anterior, podemos usar el porcentaje de disponibilidad para juzgar la estabilidad de un sistema. Generalmente, los sistemas con mayor tráfico querrán que el índice de disponibilidad esté cerca de 100%, para que los usuarios no se vean afectados.

factores de usabilidad

Los siguientes son algunos factores que pueden afectar la disponibilidad:

  • Fallo de hardware
  • error de software
  • problemas de red
  • error humano
  • desastre natural

Las empresas de servicios de sistemas suelen tomar una variedad de medidas para mejorar la disponibilidad, como por ejemplo:

  • Realizar mantenimiento y pruebas regulares
  • Implementar un plan de recuperación ante desastres

Fiabilidad

La confiabilidad es la velocidad a la que un servicio realiza su función dentro de un tiempo específico, donde las métricas de confiabilidad miden el desempeño de los servicios del sistema bajo diferentes condiciones operativas.

A menudo utilizamos la "media entre fallas (MTBF)" y el "tiempo medio de reparación (MTTR)" para medir la confiabilidad.

MTBF = número total de fallas/tiempo total transcurrido – suma de fallas

MTTR = reparaciones totales/tiempo total de mantenimiento

(Buscamos valores MTBF más altos y valores MTTR más bajos).

Fiabilidad y disponibilidad

La confiabilidad y la disponibilidad parecen muy similares, pero en realidad son dos conceptos diferentes. La confiabilidad (Reliability) y la disponibilidad (Disponibilidad) son dos indicadores importantes para medir si los servicios del sistema cumplen con los objetivos de nivel de servicio (SLO) acordados. La disponibilidad se centra en la pérdida de tiempo, la confiabilidad se centra en la frecuencia de las fallas. La disponibilidad y la confiabilidad son indispensables. Podemos juzgar la estabilidad de un sistema a través de estos dos indicadores.

Escalabilidad

La escalabilidad se refiere a la capacidad del sistema para manejar cargas de trabajo crecientes sin afectar el rendimiento. Por ejemplo, las plataformas de vídeo deben poder manejar un número cada vez mayor de usuarios y descargas y reproducciones de vídeos.

Las cargas de trabajo pueden ser de diferentes tipos, incluidas las siguientes:

  • Carga de trabajo de solicitudes: esta es la cantidad de solicitudes que maneja el sistema.
  • Carga de trabajo de datos/almacenamiento: esta es la cantidad de datos almacenados por el sistema.

Dimensiones

La escalabilidad tiene diferentes dimensiones:

  • Escalabilidad de tamaño: Escalabilidad significa que podemos agregar más usuarios y datos al sistema.
  • Escalabilidad administrativa: La escalabilidad de la gestión se refiere a la capacidad de un único sistema descentralizado de ser compartido fácilmente por un número cada vez mayor de usuarios.
  • Escalabilidad geográfica: La escalabilidad geográfica se refiere a la facilidad con la que un programa puede servir a otras regiones a pesar de las limitaciones de desempeño. Para decirlo sin rodeos, el sistema se puede utilizar en diferentes países y zonas horarias sin afectar demasiado el rendimiento.

Escalabilidad diferente

Solemos mencionar la escalabilidad, que se puede dividir en dos tipos:

Escalado vertical \ Ampliación de escala

La expansión vertical se refiere a la actualización del equipo de servidor existente, por ejemplo, proporcionando más CPU o RAM para la expansión. La expansión vertical nos permite ampliar la capacidad de memoria y el rendimiento del servidor, pero todavía existe un límite superior para las actualizaciones de la computadora. No hay forma de actualizar infinitamente el equipo y el costo de la expansión vertical suele ser muy alto.

Escalado horizontal \ Escalado horizontal

La expansión horizontal se refiere al aumento del número de servidores a través de conexiones de red. Para decirlo sin rodeos, si es necesario ampliar el sistema, continúe aumentando la cantidad de servidores y realice la conexión y transmisión a través de la red. La ventaja de esto es que el costo es relativamente bajo.

Mantenibilidad

Además de crear sistemas de software, también necesitamos mantener el sistema. Esta mantenibilidad significa que el sistema puede corregir errores, agregar nuevas funciones, mantener la plataforma del sistema actualizada y garantizar un funcionamiento fluido para mantener el funcionamiento normal del sistema.

El concepto de mantenibilidad se puede dividir en tres aspectos básicos:

  1. Operabilidad (Operability): Se refiere a la dificultad de garantizar que el sistema funcione sin problemas en circunstancias normales y pueda restaurarse al estado normal en caso de falla.
  2. Lucidez: Se refiere a la complejidad del código. Cuanto más conciso y claro sea el código del sistema, más fácil será de entender y mantener, y viceversa.
  3. Modificabilidad: Se refiere a la capacidad del sistema para integrar fácilmente funciones nuevas y modificadas.

Cómo medir la mantenibilidad (Mantainability)

La mantenibilidad es la probabilidad de que un servicio vuelva a funcionar dentro de un período de tiempo específico después de una falla. También podemos utilizar métricas de mantenibilidad, que miden con qué facilidad y rapidez se puede restaurar un servicio a sus condiciones operativas normales.

Por ejemplo, considere la capacidad de servicio de un elemento del sistema en media hora 95%. En este caso, la probabilidad de que los componentes del sistema vuelvan a un estado completamente normal en media hora es 0,95. Usamos el tiempo medio de reparación (MTTR) como medida de M.

MTTR = reparaciones totales/tiempo total de mantenimiento

En otras palabras, MTTR es el tiempo promedio que lleva reparar y restaurar un componente fallido. Nuestro objetivo es que el valor del MTTR disminuya.

Tolerancia a fallos

¿Qué es la tolerancia a fallos?

Las aplicaciones del mundo real a gran escala suelen tener cientos de servidores y bases de datos que aceptan solicitudes de miles de millones de usuarios y almacenan grandes cantidades de datos. Estas aplicaciones también requieren un mecanismo para ayudar a garantizar la seguridad de los datos y evitar la necesidad de volver a ejecutar programas intensivos evitando puntos únicos de falla.

La tolerancia a fallos se refiere a la capacidad de un sistema para continuar ejecutándose incluso si uno o más componentes del sistema fallan. Aquí, los componentes del sistema pueden ser software o hardware, pero en la práctica, es muy difícil diseñar un sistema de software totalmente tolerante a fallos.

tecnología de tolerancia a fallas

Si el fallo se produce en el hardware o en el software, acabará afectando a los datos. La tolerancia a fallas se puede lograr mediante una variedad de técnicas y métodos, pero aún depende de la estructura de nuestro sistema.

  • Replicación: esta es una de las técnicas de tolerancia a fallos más utilizadas. Esta tecnología también se utiliza especialmente en bases de datos. Podemos copiar servidores y datos. Cuando un servidor privado en el sistema falla, se convertirá automáticamente en un servidor copiado. Cuando dicho sistema encuentre otra falla, no afectará el uso. Por.
  • Puntos de control: los puntos de control son un método para realizar una copia de seguridad del estado del sistema en la base de datos para facilitar una inspección rápida en el futuro cuando se produzca un error o una falla del servicio. Cuando falla un sistema distribuido, podemos obtener los datos actuales de puntos de control anteriores para permitir a los ingenieros repararlo.

Conclusión

Este artículo habla sobre conceptos importantes como la disponibilidad del sistema (Disponibilidad), confiabilidad (Confiabilidad), escalabilidad (Escalabilidad), mantenibilidad (Mantenibilidad) y tolerancia a fallas (Tolerancia a fallas).

  1. Disponibilidad(Disponibilidad)Representa la disponibilidad del sistema para los usuarios.
  2. fiabilidad(Fiabilidad)Representa la probabilidad de falla del sistema.
  3. Escalabilidad(Escalabilidad)Representa la capacidad del sistema para manejar la carga de trabajo.
  4. Mantenibilidad(Mantenibilidad)Representa la facilidad de mantenimiento del sistema.
  5. Tolerancia a fallos(Tolerancia a fallos)Representa la capacidad del sistema para soportar fallas.

Comprender estos conceptos y adoptar las técnicas adecuadas puede ayudar a los desarrolladores a crear sistemas que sean más confiables, eficientes y fáciles de usar.

Las siguientes son algunas sugerencias para mejorar la disponibilidad, confiabilidad, escalabilidad, mantenibilidad y tolerancia a fallas del sistema:

  • Adoptar diseño redundante: Mejore la tolerancia a fallas del sistema mediante el uso de múltiples elementos o nodos del sistema.
  • Realice un mantenimiento regular: Verifique y actualice periódicamente los sistemas para evitar fallas.
  • Utilice una arquitectura escalable: Diseñe sistemas que puedan escalarse fácilmente para satisfacer las crecientes necesidades de los usuarios o volúmenes de datos.
  • Utilice tecnología probada: Utilice técnicas probadas y confiables para mejorar la estabilidad del sistema.
  • Para una prueba exhaustiva: Pruebe su sistema minuciosamente antes de implementarlo para identificar y solucionar problemas potenciales.
es_ESEspañol