Categorias: Todos - componentes - uml - clases - secuencia

por EDUARDO VASQUEZ VALENCIA 1 ano atrás

146

Arquitectura de software

La arquitectura de software se centra en el diseño y la estructura de un sistema, utilizando herramientas como los diagramas UML para modelar diferentes aspectos y relaciones dentro del sistema.

Arquitectura de software

Arquitectura de software

UML comunes

Diagrama de despliegue
El diagrama de despliegue muestra los nodos de hardware y software, y las relaciones entre ellos
Este modelo se utiliza para mostrar cómo se implementa el sistema en hardware y software
Diagrama de componentes
El diagrama de componentes muestra los componentes, sus interfaces y las dependencias entre los componentes
Este modelo se utiliza para mostrar la estructura de componentes y su relación con el sistema
Diagrama de secuencia
El diagrama de secuencia muestra los objetos, sus interacciones y el orden en que se producen
Este modelo se utiliza para mostrar la secuencia de interacciones entre los objetos del sistema en un escenario de uso específico
Diagrama de clases
El diagrama de clases muestra las clases, sus atributos, métodos y las relaciones entre las clases
Este modelo se utiliza para modelar la estructura de clases y objetos del sistema, y las relaciones entre ellos
Diagrama de casos de uso
El diagrama de casos de uso muestra los actores del sistema, los casos de uso y las relaciones entre ellos
Este modelo se utiliza para identificar los requisitos funcionales del sistema y las interacciones del usuario con el sistema

Crisis del software

los proyectos de software a menudo experimentaban problemas en términos de calidad, costo, plazos y requisitos. Esta crisis se hizo evidente en la década de 1960 y se prolongó hasta la década de 1980
Falta de estándares y mejores prácticas: El desarrollo de software no tenía estándares o mejores prácticas bien establecidos
En los primeros días del desarrollo de software, no existían herramientas y metodologías eficaces para gestionar el proceso de desarrollo
Los requisitos del software a menudo no estaban bien definidos o eran mal entendidos por los desarrolladores
Los sistemas de software se volvieron cada vez más complejos a medida que se agregaban más funciones y características

Tipos de arquitectura

Arquitectura basada en eventos
Esta arquitectura permite una mayor escalabilidad y flexibilidad al permitir que los componentes se comuniquen de forma asíncrona y sin acoplamiento directo
Los componentes pueden publicar eventos a medida que ocurren, y otros componentes pueden suscribirse y recibir notificaciones
La arquitectura basada en eventos se centra en la comunicación entre componentes a través de eventos y mensajes
Arquitectura cliente-servidor
Esta arquitectura permite una mayor separación de intereses, permitiendo que el cliente y el servidor se desarrollen y evolucionen de forma independiente
La arquitectura cliente-servidor separa el sistema en dos partes: el cliente, que proporciona la interfaz de usuario y el servidor, que proporciona los servicios de lógica de negocios y acceso a datos
Arquitectura basada en microservicios
Esta arquitectura permite una mayor agilidad, escalabilidad y resistencia a fallos
Cada microservicio tiene una responsabilidad única y se comunica con otros servicios a través de interfaces definidas
La arquitectura basada en microservicios divide el sistema en pequeñas unidades de servicio independientes y altamente cohesivas
Arquitectura orientada a servicios (SOA)
Esta arquitectura permite una mayor flexibilidad y reutilización de componentes de software
Estos servicios se comunican a través de interfaces definidas y protocolos estandarizados
La arquitectura orientada a servicios se centra en la creación de servicios independientes que pueden ser reutilizados en diferentes aplicaciones
Arquitectura en capas
Esta arquitectura permite una mayor modularidad, escalabilidad y facilidad de mantenimiento
La arquitectura en capas organiza el sistema en diferentes capas, cada una con una función específica. Las capas típicas incluyen la capa de presentación, la capa de lógica de negocios y la capa de acceso a datos

En que consiste

Rendimiento
La arquitectura de software debe estar diseñada para garantizar un buen rendimiento del sistema, lo que incluye la gestión del rendimiento, la escalabilidad y la optimización del código
Integración
La arquitectura de software debe tener en cuenta la integración con otros sistemas, incluyendo sistemas externos, bases de datos, sistemas de comunicación y otros sistemas que puedan ser necesarios para el funcionamiento del sistema
Diseño modular
El diseño modular permite que el sistema de software esté compuesto por bloques de construcción independientes y reutilizables, lo que facilita la implementación, mantenimiento y escalabilidad del sistema
Capas de la arquitectura
La arquitectura de software debe tener varias capas bien definidas, como la capa de presentación, la capa de lógica de negocios y la capa de acceso a datos
Modelado de datos
El modelo de datos debe ser escalable y flexible para adaptarse a cambios futuros
La arquitectura de software debe incluir un modelo de datos bien definido para representar la información que se almacena y procesa en el sistema
Patrones de diseño
Utilizar patrones de diseño puede mejorar la calidad, el rendimiento y la escalabilidad del sistema
Los patrones de diseño son soluciones probadas y repetibles para problemas comunes de diseño de software
Requisitos del usuario
La arquitectura de software debe estar diseñada para satisfacer los requisitos del usuario, lo que incluye la funcionalidad del sistema, la facilidad de uso y la seguridad

Por que?

Reduce costos
Al evitar problemas comunes y tener una arquitectura escalable, los desarrolladores pueden reducir el tiempo necesario para desarrollar y mantener el software, lo que puede resultar en una reducción de costos significativa a largo plazo
Una arquitectura bien diseñada puede reducir los costos de desarrollo y mantenimiento del software
Facilita la comunicación
Al tener una comprensión común de la arquitectura, el equipo puede trabajar más eficazmente y reducir la probabilidad de malentendidos o errores
La arquitectura de software proporciona un lenguaje común para que los desarrolladores, arquitectos y otros miembros del equipo se comuniquen
Mejora la calidad del software
También puede ayudar a asegurar que el sistema sea seguro y fácil de mantener
Una arquitectura adecuada ayuda a los desarrolladores a evitar errores comunes, como la duplicación de código y la falta de modularidad
Una buena arquitectura de software puede mejorar la calidad del software
Permite la evolución del sistema
Si la arquitectura está bien diseñada, es más fácil agregar nuevas funcionalidades y hacer cambios en el sistema sin afectar negativamente su estabilidad o su capacidad para escalar
Una buena arquitectura de software facilita la evolución del sistema a medida que los requisitos cambian
Facilita la comprensión del sistema
La arquitectura proporciona una visión global del sistema que facilita la comprensión de sus componentes y cómo se relacionan entre sí.
Permite a los desarrolladores y otros miembros del equipo entender cómo está organizado un sistema de software y cómo funciona en general.

Quienes?

Grady Booch
uno de los fundadores de UML
trabajo en la definición de la arquitectura de software
trabajo desarrollo de patrones de diseño
Fred Brooks
autor de un libro que trata sobre la gestión de proyectos de software "El Mito del Hombre-Mes"
científico de la computación
Eric Evans
conocido por su trabajo en el diseño basado en el dominio y la arquitectura de software escalable
es el autor de un libro que trata sobre la forma en que el diseño de software puede estar estrechamente relacionado con la comprensión del dominio de la aplicación "Domain-Driven Design"
Martin Fowler
es conocido por su trabajo en patrones de diseño, refactoring y arquitectura de software
ha escrito varios libros influyentes sobre el desarrollo de software "Patrones de Diseño Empresarial" y "Refactorización"
autor y consultor de software