Please enable JavaScript.
Coggle requires JavaScript to display documents.
Arquitectura de software (diseño) - Coggle Diagram
Arquitectura de software (diseño)
Niveles de diseño
Diseño arquitectónico: define la estructura general del sistema y sus componentes principales.
Diseño de componentes: detalla la funcionalidad interna de cada módulo.
Diseño de interfaces: especifica cómo interactúan los componentes y subsistemas.
Diseño de datos: organiza la estructura lógica y física de los datos.
Principios de diseño
Abstracción: simplificar los elementos complejos mostrando solo lo esencial.
Encapsulamiento: ocultar los detalles internos y exponer solo lo necesario.
Modularidad: dividir el sistema en partes independientes y reutilizables.
Alta cohesión y bajo acoplamiento: asegurar independencia entre módulos.
Separación de responsabilidades: cada componente debe cumplir una sola función clara.
Escalabilidad: permitir que el sistema crezca sin perder rendimiento.
Métodos de diseño de arquitectura
ADD (Attribute-Driven Design): se basa en los atributos de calidad y escenarios arquitectónicos.
ATAM (Architecture Tradeoff Analysis Method): evalúa decisiones arquitectónicas y su impacto.
CBAM (Cost Benefit Analysis Method): analiza el costo-beneficio de las decisiones de diseño.
Views & Perspectives: proporciona diferentes vistas (lógica, de procesos, de despliegue) para entender el sistema.
Conceptos de diseño
Patrones arquitectónicos: MVC, microservicios, capas, cliente-servidor.
Tácticas arquitectónicas: estrategias para mejorar atributos de calidad como seguridad, rendimiento o disponibilidad.
Frameworks: reutilización de estructuras base como Spring, Django o Angular.
Diseño orientado a servicios (SOA): integración de servicios independientes y reutilizables.
Otros conceptos de diseño
Modelos de dominio: representan el conocimiento y las reglas del negocio.
Componentes COTS (Commercial Off-The-Shelf): uso de software comercial existente.
Servicios en la nube: diseño basado en plataformas como AWS, Azure o GCP.
Diseño centrado en el usuario: prioriza la experiencia del usuario en el sistema.