Este curso es más entendible y fácil de entender que el curso de fundamentos
Introducción al curso
Diseño y Documentación de Arquitectura de Software
Atributos de calidad
Atributos de Calidad en Sistemas: Definición y Medición
Idoneidad Funcional: Completitud, Exactitud y Pertinencia
Eficiencia de Ejecución en Sistemas Informáticos
Compatibilidad en Sistemas: Interoperabilidad y Coexistencia
Subcaracterísticas de Usabilidad en Desarrollo de Software
Confiabilidad de Sistemas: Madurez, Disponibilidad, Resiliencia y Recuperación
Seguridad de Usuarios en Desarrollo de Software
Subcaracterísticas de Mantenibilidad en Sistemas de Software
Medición de Adaptabilidad en Sistemas de Software
Relación y Tensión entre Atributos de Calidad en Sistemas de Software
Atributos de Calidad en Arquitectura de Software
Patrones de arquitectura
Patrones de Arquitectura Monolítica y Distribuida
Modelo Vista Controlador: Separación de Responsabilidades en Aplicaciones
Arquitectura de Capas: Diseño y Comunicación entre Niveles
Patrones de Arquitectura Orientada a Eventos y Event Sourcing
Patrón de Arquitectura MicroKernel y su Implementación en IDEs
Arquitectura "Comparte Nada": Optimización y Procesamiento de Datos
Patrón de Microservicios en Arquitectura de Software
Patrón CQRS para Separación de Consultas y Comandos
Arquitectura Hexagonal: Diseño y Aplicación Práctica
Diseño Orientado al Dominio: Conceptos y Aplicaciones Prácticas
Patrones de Arquitectura para Aplicaciones Escalables y Modulares
Patrones de Arquitectura en Proyectos de Crecimiento Empresarial
Diseño de una arquitectura
Diseño de Arquitecturas a Medida: Herramientas y Estrategias
Tipos de Conectores en Arquitectura de Software
Conectores Asíncronos y Sincrónicos: Implementación y Uso Práctico
Diferencias entre Enrutadores y Difusores en Comunicación de Mensajes
Conexión de Productores y Consumidores con Colas de Mensajes
Framework de Diseño Orientado a Atributos: Escenarios y Tácticas
Tácticas para Mejorar la Disponibilidad de Sistemas
Tácticas para Mejorar la Disponibilidad del Sistema
Tácticas para Mejorar la Mantenibilidad del Software
Prevención de Efectos Dominó en Mantenibilidad de Software
Estrategias para Mejorar la Eficiencia de Ejecución en Sistemas
Tácticas de Seguridad Informática para Detectar, Resistir y Recuperarse de Ataques
Estrategias para Mejorar la Capacidad de Prueba de Software
Tácticas de Usabilidad en Diseño de Interfaces de Usuario
Validación de Arquitectura con ATAM y Métricas de Calidad
Diseño de Arquitectura para Startups y Empresas Escalables
Modelado y documentación de arquitectura
Documentación Efectiva de Arquitectura de Software
Sincronización de Modelos de Arquitectura y Código Fuente
Evaluación de Atributos de Calidad en Arquitectura de Software
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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 26
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?