Introducción al curso

1

Introducción al curso de Profesional de Arquitectura de Software

Atributos de calidad

2

Definición

3

Atributos: Idoneidad funcional

4

Atributos: Eficiencia de ejecución

5

Atributos: Compatibilidad

6

Atributos: Usabilidad

7

Atributos: Confiabilidad

8

Atributos: Seguridad

9

Atributos: Mantenibilidad

10

Atributos: Portabilidad

11

Tensiones entre atributos

12

Analizando PlatziServicios

Patrones de arquitectura

13

Patrones monolíticos vs distribuidos

14

Patrones: Modelo Vista Controlador

15

Patrones: Capas

16

Patrones: Orientado a eventos / Provisión de eventos.

17

Patrones: Microkernel - Plug-ins

18

Patrones: Comparte-nada

19

Patrones: Microservicios

20

Patrones: CQRS

21

Patrones: Hexagonal - Puertos y adaptadores

22

Patrones: Diseño orientado al dominio

23

Combinando patrones de arquitectura

24

Analizando nuevamente PlatziServicios

Diseño de una arquitectura

25

Pararse en hombros de gigantes

26

Herramientas y partes de un diseño: Tipos de conectores

27

Conectores: Llamado asincrónico / sincrónico. Modelo Cliente servidor.

28

Conectores: Enrutador, difusión

29

Conectores: Pizarra, repositorio, colas, modelo PUBSUB

30

Escenarios y tácticas

31

Escenarios: Disponibilidad, detección, reparación

32

Escenarios: Reintroducción y prevención

33

Escenarios: Mantenibilidad

34

Escenarios: Prevenir efectos dominó y diferir enlace

35

Escenarios: Eficiencia de ejecución

36

Escenarios: Seguridad

37

Escenarios: Capacidad de prueba

38

Escenarios: Usabilidad

39

Validar las decisiones de diseño: Arquitectura en evolución

40

Último análisis a PlatziServicios

Modelado y documentación de arquitectura

41

Cómo comunicar la arquitectura: Vistas y Puntos de vista

42

Documentación vs implementación

43

Conclusiones del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Analizando PlatziServicios

12/43
Recursos

Aportes 13

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • Cuando mas grande es el sistema mas capacidad de prueba debe tener para asegurar que ningún cambio rompe funcionalidades anteriores.

  • A medida que avanza un proyecto se pueden ir usando los atributos de calidad para tomar mejores decisiones de diseño a la hora de implementar una solución.

  • No hay que implementar todos los atributos a la vez pero una vez que se vayan usando hay que vigilar que no se genere tensión entre los atributos y que un debilite a otro.

Priorizar los atributos y atacarlos en orden

"Aplicando atributos de calidad en base a la madurez del proyecto"
Hay que priorizar los atributos y atacarlos uno a uno
StartUp:
Confiabilidad: Madurez y disponibilidad
Seguridad: Autenticidad y confidencialidad
Compatibilidad: Interoperabilidad
En crecimiento:
Eficiencia de ejecución: Uso de recursos y capacidad
Compatibilidad: Interoperabilidad
Seguridad: Comprobación de hechos, traza de responsabilidad, confidenciabilidad
Gran escala
Usabilidad: Accesibilidad, reconocimiento de idoneidad, operabilidad
Mantenibilidad: Modularidad, capacidad de prueba, capacidad de modificación
Confiabilidad: Tolerancia a fallos, capacidad de recuperación

Atributos de calidad de una start up:

Confiabilidad: representa que cuando quiera acceder este disponible.

Seguridad: Verificar autenticidad de quien ingrese, o sea el usuario.

Compatibilidad: Que sea apato a comunicarse con otros sistemas.

ATRIBUTOS DE CALIDAD EN CRECIMIENTO

Eficiencia de ejecución: Como empresa prestadora necesito medir el rendimineto de mis profesionales para comprender mi proprio crecimiento.

Compatibilidad > Interoperabilidad > Significa que otros sistemas puedan comunicarse con el nuestro sistema, puede ser lo mismo con una API , extracción o envio de datos.

Seguridad> Comprobación de hecho > traza de responsabilidad> Confidencialidad> Es un termino sencillo , y lo que se trata es de la seguridad juridica.

Usabilidad > accesibilidad > reconocimiento de idoneidad> operabilidad > Una forma de atender esa característica es teniendo el idioma del usuario.

Mantenibilidad>capacidad de prueba>capacidad de modificación: Ese punto se trata que tan accesible es dar mantenimiento al sistema.

Confiabilidad> tolerancia a fallos>capacidad de recuperación: que tan seguro son los datos guardados en el sistema y que capacidad de recuperación tiene el sistema.

Resumen de todo el modulo:

Atributos de calidad


Idoneidad funcional

Es lo que conecta los requerimientos del usuario con la forma en que se implementa en el sistema.

  • Completitud funcional: cuan completa esta la implementación con respecto a lo que se espera.

  • Exactitud funcional: Cuan preciso es el sistema al implementar.

  • Pertinencia funcional: Cuan alineado esta lo que se implementa con lo que se necesita.


Eficiencia de ejecución

trata de cuan bueno o eficiente es el sistema a la hora de responder a lo que el usuario necesita y que tan bien gestiona los recursos.

  • Tiempo a comportamiento: Que tan bueno es el tiempo de respuesta.

  • Uso de recursos: Cuanto el sistema aprovecha los recursos.

  • Capacidad: Cuales son las limitaciones del sistema y si corresponden con las esperadas.


Compatibilidad

Que tanto puede el sistema interoperar con otros sistemas y bajo otros contextos.

  • Interoperabilidad: Que tan fácil es comunicarse con el sistema.

  • Coexistencia: Si puede convivir junto a otros sistemas dentro de la red sin ningún inconveniente.


Usabilidad

Facilidad de uso

  • Reconocimiento de idoneidad: Cuanto nos damos cuenta que un sistema es lo que nosotros necesitamos usar para resolver nuestro objetivo.

  • Curva de aprendizaje: Que tanta dificultad tiene aprender a usar el sistema.

  • Operabilidad: Cantidad de esfuerzo que conlleva su uso u operaciones.

  • Protección a errores: Se trata de indicarle al usuario cuando realiza alguna acción errónea que se equivoco de manera que este pueda entender y a la vez darle feedback para solucionar el problema.

  • Estética de interfaz: brindar buena experiencia al usuario en cuanto a interfaces graficas.

  • Accesibilidad: Facilidad de uso para la mayor cantidad de gente con condiciones especiales posible.


Confiabilidad

Cuanto el sistema nos permitirá su buen uso a través del tiempo.

  • Madurez: Trata de que cuanto menos fallo presente el sistema más maduro es. La distancia temporal entre cada fallo permite medir su nivel de madurez.

  • Disponibilidad: Cuanto tiempo esta fuera de servicio el sistema respecto a su siclo de vida normal (Expresado en porcentajes).

  • Tolerancia a fallos: Que tanto puede el sistema seguir dando servicio a pesar de los fallos.

  • Capacidad de recuperación: Cuanto el sistema puede seguir dando servicio luego de un fallo y cuanto se tomó volver a dar servicio luego de un fallo en caso de que haya estado fuera de servicio.


Seguridad

Hablamos de que tanto el sistema protege la información del usuario, lo autentifica, y le gestiona los accesos.

  • Confidencialidad: Como el sistema relaciona a cada usuario con lo que puede o no puede acceder.

  • Integridad: Que tan seguro es el sistema.

  • Comprobación de hechos: Como el sistema puede demostrar de manera veraz cada acción o decisión del usuario.

  • Traza de responsabilidad: Relacionar cada acción realizada en el sistema el usuario que la ejecuto.

  • Autenticidad: Como el sistema identifica al usuario o como comprueba que el usuario es quien dice ser.


Mantenibilidad

Es todo eso que hace que un sistema pueda cambiar o evolucionar.

  • Modularidad: La capacidad de un sistema en ser dividido por partes donde cada una sea independiente de otra.

  • Reusabilidad: Que tanto podemos aprovechar funcionalidades del sistema para reutilizarlas.

  • Capacidad de análisis: Cuanto podemos relacionar un problema con la implementación del sistema. Es decir, si se realiza algún cambio podremos entender rápidamente lo que podría conllevar dicha alteración. Conexión entre el código y los requerimientos.

  • Capacidad de modificación: Que tan fácil es realizar cambios al sistema, como se que lo que hago no causara conflicto a otras funcionalidades (Se suelen usar test automatizados para dicha acción).

  • Capacidad de prueba: Como garantizar que el sistema cumple con todos los requerimientos.


Portabilidad

La compatibilidad del sistema en diferentes entornos de ejecución.

  • Adaptabilidad: Cuan fuertemente depende el sistema de un entorno especifico.

  • Capacidad de instalación: que tanta dificultad presenta el despliegue del sistema en diferentes entornos.

  • Capacidad de reemplazo: La podemos medir conociendo los nuevos requerimientos o facilidades que hay hoy y configurarlo a favor de nuestro sistema.

Una de las cosas más importantes al momento de identificar los atributos de calidad es que sean detallados y medibles. La arquitectura puede cambiar bastante si puedo esperar segundos incluso minutos para obtener un resultado, como en un reporte, a si debe ser en tiempo cercano al real, como un sensor de un avión. Eso naturalmente depende del negocio, pero es importante saber sin lugar a ambiguedades la disponibilidad, seguridad, desempeño, etc que de verdad requirere el sistema y con base en eso priorizar.

Es importante tener en cuenta que estos atributos son dependientes de las historias de usuario. Una vez que se tiene la historia de usuario se puede hacer este análisis

ATRIBUTOS DE CALIDAD EN CRECIMIENTO
Eficiencia de ejecución: Como empresa prestadora necesito medir el rendimineto de mis profesionales para comprender mi proprio crecimiento.
Compatibilidad > Interoperabilidad > Significa que otros sistemas puedan comunicarse con el nuestro sistema, puede ser lo mismo con una API , extracción o envio de datos.

🤖🤖🤖
Atributos de calidad
Confiabilidad:
• Madurez.
• Disponibilidad.
Seguridad:
• Autenticidad.
• Confidencialidad.
Compatibilidad:
• Interoperabilidad.
Atributos de calidad en crecimiento
Eficiencia de ejecución:
• Uso de recursos.
• Capacidad.
Compatibilidad:
• Interoperabilidad
Seguridad:
• Comprobación de hechos.
• Traza de responsabilidad.
• Confidencialidad.
Atributos de calidad Gran escala
Usabilidad:
• Accesibilidad.
• Reconocimiento de idoneidad.
• Operabilidad.
Mantenibilidad:
• Modularidad.
• Capacidad de prueba.
• Capacidad de modificación.
Confiabilidad:
• Tolerancia a fallos.
• Capacidad de recuperación.

A medida que avance el diseño, es importante tener en cuenta estos atributos de calidad.

Estas consideraciones sobre atributos de calidad, pueden aplicarse para realizar un análisis sobre un sistema que ya está prácticamente construido?

"La simplicidad es la mayor sofisticación" atendiendo esta premisa debemos enfocarnos en aplicar los atributos de calidad en base a la madurez del proyecto