Este curso es más entendible y fácil de entender que el curso de fundamentos
Introducción al curso
Introducción al curso de Profesional de Arquitectura de Software
Atributos de calidad
Definición
Atributos: Idoneidad funcional
Atributos: Eficiencia de ejecución
Atributos: Compatibilidad
Atributos: Usabilidad
Atributos: Confiabilidad
Atributos: Seguridad
Atributos: Mantenibilidad
Atributos: Portabilidad
Tensiones entre atributos
Analizando PlatziServicios
Patrones de arquitectura
Patrones monolíticos vs distribuidos
Patrones: Modelo Vista Controlador
Patrones: Capas
Patrones: Orientado a eventos / Provisión de eventos.
Patrones: Microkernel - Plug-ins
Patrones: Comparte-nada
Patrones: Microservicios
Patrones: CQRS
Patrones: Hexagonal - Puertos y adaptadores
Patrones: Diseño orientado al dominio
Combinando patrones de arquitectura
Analizando nuevamente PlatziServicios
Diseño de una arquitectura
Pararse en hombros de gigantes
Herramientas y partes de un diseño: Tipos de conectores
Conectores: Llamado asincrónico / sincrónico. Modelo Cliente servidor.
Conectores: Enrutador, difusión
Conectores: Pizarra, repositorio, colas, modelo PUBSUB
Escenarios y tácticas
Escenarios: Disponibilidad, detección, reparación
Escenarios: Reintroducción y prevención
Escenarios: Mantenibilidad
Escenarios: Prevenir efectos dominó y diferir enlace
Escenarios: Eficiencia de ejecución
Escenarios: Seguridad
Escenarios: Capacidad de prueba
Escenarios: Usabilidad
Validar las decisiones de diseño: Arquitectura en evolución
Último análisis a PlatziServicios
Modelado y documentación de arquitectura
Cómo comunicar la arquitectura: Vistas y Puntos de vista
Documentación vs implementación
Conclusiones del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Guido Contreras Woda
La mantenibilidad como atributo de calidad es la capacidad del sistema de ser modificado. Ya sea para agregar nuevas funcionalidades o reparar errores.
Modularidad, La capacidad de un sistema de ser separado en partes y que el cambiar una de las partes del sistema no afecta el desempeño del sistema.
Reusabilidad, es una característica que habla sobre cuanto podemos aprovechar un modulo o una pieza de software para un propósito diferente.
Capacidad de análisis, cuánto podemos entender el problema que estamos resolviendo y conectar ese problema con la implementación de código. Hablamos de conexión entre el código y los requerimientos. una herramienta es GERKIN.
Capacidad de prueba, facilidad en la implementación de tests.
Un error muy común es utilizar la fecha actual en sistemas y evaluar el comportamiento de la porción de código.
Aportes 25
Preguntas 6
Este curso es más entendible y fácil de entender que el curso de fundamentos
Mis Apuntes:
Mantenibilidad
Nos referimos a todas esas cosas que hacen que un sistema pueda cambiar. Pueda evolucionar y a su vez pueda ser reparado.
Modularidad. Habla de la capacidad de un sistema en ser separado en partes dónde cada una de esas partes sea independiente de las otras.
Reusabilidad. Es una característica que habla sobre cuánto podemos aprovechar el esfuerzo que hicimos en desarrollar un módulo o una pieza de software y reutilizarla en otro lado, es decir, volver a usarla para otro propósito diferente o para una funcionalidad ligeramente diferente.
Capacidad de análisis. Conexión entre el código y los requerimientos.
Capacidad de modificación. Cuán fácil o difícil es ir al código y cambiar el comportamiento.
Capacidad de prueba. Habla sobre cuán fácil o difícil es crear estos test para que el sistema garantice que hace lo que se requiere que haga. Para tener una mejor capacidad de prueba tenemos que darle más importancia a nuestra estructura del código, a nuestras operaciones y cuán atómicas son y cuán independientes son unas de otras.
Mantenibilidad.
Se refiere a todas esas cosas que hacen que el sistema pueda cambiar, evolucionar y a su vez, ser reparado.
Capacidad de análisis
La herramienta que nos ayuda a tener conexión entre el código y los requerimientos, es Gherkin que sale de la comunidad de BDD (Behavior Driven Development).
Solo para que no batallen al buscarla, como me pasó a mi.
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 aprobechar funcionalidades del sistema para reutilizarlas.
Capacidad de analisis: Cuanto podemos relacionar un problema con la implementacion del sistema. Es decir, si se realiza algun cambio podremos entender rapidamente lo que podria conllevar dicha alteracion. Conexion entre el codigo y los requerimientos.
Capacidad de modificacion: Que tan facil es realizar cambios al sistema, como se que lo que hago no causara conficto a otras funcionalidades (Se suelen usar test automatizados para dicha accion).
Capacidad de prueba: Como garantizar que el sistema cumple con todos los requerimientos.
La mantenibilidad se mide con cobertura de código en Test y Análisis Estático de Código.
De que forma se crean o se tratan métodos puros? ya que normalmente los métodos y funciones usualmente requieren de otro método o función para continuar con el flujo que se programe? y hasta que punto se tiene en cuenta esto con la modularidad?
Estimado Guido, que herramientas para analisis de codigo estatico recomiendas segun la experiencia?
✅
Quisiera entender como se maneja el tema de modularidad a nivel de apliaciones WEB. Mi duda es ya que yo puedo tener una aplicacion web y extraigo sus funcionalidades más importantes. en el ejemplo aplicacion que Cotiza, Documenta, Expide. entonces para mi cada uno de estos podria catalogarce como un modulo, pero mi pregunta puntual es si a nivel de WEB se hace un despliegue para cada uno de esos modulos. si es así para mi la forma de hacerlo es a nivel de servicios yo expondira un servicio bien sea API o REST para cada uno de estos modulos, lo que quiero saber es si está afirmacion es correcta, osea que si los modulos a nivel de WEB se manejan a travez de servicios,
escuche modularidad y lo primero que me vino a la mente es docker
Mantenibilidad
Todo lo que hace que el sistema pueda cambiar y a su vez ser reparado
Podemos medirlo a través de test y análisis estático del código
Modularidad
Capacidad de ser separado en partes y que no se afecten entre sí
Reusabilidad
Cuanto podemos aprovechar un módulo en otro lado
Ejemplo: Servicio Opensource
Capacidad de Análisis
Cuanto podemos entender el problema que estamos teniendo e implementarlo a código, conexión entre el código y los requerimientos
Capacidad de Modificación
La facilidad de cambiar el código y su comportamiento, si afecta o no afecta otra parte del sistema y cuanto sabemos nosotros sobre eso
Capacidad de Prueba
Habla sobre la dificultad de crear test para garantizar que el sistema hace lo que queremos que haga
Mantenibilidad
Esta característica representa el grado de efectividad y eficiencia con la que un producto o sistema puede ser modificado para mejorarlo, corregirlo o adaptarlo a los cambios en el entorno y en los requisitos. Esta característica se compone de las siguientes subcaracterísticas:
• Modularidad, Grado en el cual un sistema o programa de computadora se compone de componentes discretos tales que un cambio en un componente tiene un impacto mínimo en otros componentes.
• Reusabilidad, Grado en el cual un activo puede ser utilizado en más de un sistema, o en la construcción de otros activos.
• Analizabilidad, Grado de efectividad y eficiencia con el cual es posible evaluar el impacto en un producto o sistema de un cambio intencional a una o más de sus partes, o diagnosticar un producto por deficiencias o causas de fallas, o identificar partes a ser modificadas .
• Modificabilidad, Grado en que un producto o sistema puede ser modificado de manera efectiva y eficiente sin introducir defectos o degradar la calidad del producto existente.
• Testabilidad, Grado de eficacia y eficiencia con el que se pueden establecer los criterios de prueba para un sistema, producto o componente y se pueden realizar pruebas para determinar si se han cumplido esos criterios.
Principio de responsabilidad única. Buenas prácticas de diseño.
Mantenibilidad: cuando el producto o sistema se adapta a mejoras, correcciones. Ese grado de efectividad y eficiencia se le conoce como mantenibilidad. Y tiene las siguiente sub características: Modularidad, Reusabilidad, Capacidad de modificación, Capacidad de Análisis, Capacidad de Prueba
Con mantenibilidad referimos a que tanto un sistema pueda a cambiar o evolucionar agregando nuevas funcionalidades (o actualizarlas) y también a que éste (el sistema) pueda ser reparado cuando ocurra un error. La mantenibilidad está muy relacionada con el testing. Cuando no implementamos test a nuestro código la mantenibilidad se ve muy afectada. Para garantizar la mantenibilidad de un sistema tenemos una herramienta muy potente: el análisis estático de código. El análisis estático de código lee el código (no lo ejecuta) y da sugerencias para que éste sea más mantenible. ****
Medimos la mantenibilidad con buenas coberturas se test y análisis estático del código de principio a fin de la aplicación. Se puede usar software para leer el código y mostrar alertas para mejorar el código y sea más mantenible.
Acabo de notar que tu te aprediste esto de memoria porque en ningun momento vuelves a ver la computadora
pruebas que verifiquen que el comportamiento del código es correcto desde el punto de vista de negocio.- Gerkin
Modularidad: Como se puede separar el sistema sin que falle?
Reusabilidad: Como se puede usar una pieza para otro prósito? ej. open source
Capacidad de análisis: Cuanto puedo entender el cambio?
**Capacidad de modificación:**que tan fácil es ir al código sin romperlo?
Capacidad de prueba: Cuán fácil es hacer pruebas?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?