Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE SOFTWARE
Diseño arquitectónico
Agenda
• Decisiones de diseño arquitectónico
• Puntos de vista arquitectónicos
• Patrones arquitectónicos
• Arquitecturas de aplicaciones
Diseño arquitectónico
• El diseño arquitectónico se preocupa por comprender
cómo debe organizarse un sistema de software y
diseñar la estructura general de ese sistema.
• El diseño arquitectónico es el vínculo crítico entre el
diseño y la ingeniería de requerimientos, ya que
identifica los principales componentes estructurales de
un sistema y las relaciones entre ellos.
• El resultado del proceso de diseño arquitectónico es un
modelo arquitectónico que describe cómo se organiza el
sistema como un conjunto de componentes que se
comunican entre si.
Arquitectura y el método ágil
• Se acepta generalmente que una etapa temprana de los
procesos ágiles es diseñar una arquitectura general del
sistema.
• Refactorizar la arquitectura del sistema suele ser
costoso porque afecta a muchos componentes del
sistema
La arquitectura de un sistema de control de un
robot de empaque
Sistema de
Visión
Sistema de
Controlador de Controlador de
Identificación de
brazo pinza
objetos
Sistema de
selección de
empaques
Sistema de Controlador de
empaquetamiento transportadora
Abstracción arquitectónica
• La arquitectura en lo pequeño tiene que ver con la
arquitectura de los programas individuales. En este
nivel, nos preocupa la forma en que un programa
individual se descompone en componentes.
• La arquitectura en general se refiere a la arquitectura de
sistemas empresariales complejos que incluyen otros
sistemas, programas y componentes de programas.
Estos sistemas empresariales se distribuyen en
diferentes computadoras, que pueden ser propiedad y
administradas por diferentes compañías.
Ventajas de la arquitectura explícita
• Comunicación con las partes interesadas
• La arquitectura puede ser utilizada como base de discusión
por las partes interesadas en sistemas.
• Análisis del sistema
• Significa que es posible analizar si el sistema puede cumplir
con sus requisitos no funcionales.
• Reutilización a gran escala
• La arquitectura puede ser reutilizable en una variedad de
sistemas
• Se pueden desarrollar arquitecturas de línea de productos.
Representaciones arquitectónicas
¿Qué organización
¿Cómo se descompondrán los
arquitectónica es mejor para ¿Cómo debe documentarse la
componentes estructurales del
cumplir con los requisitos no arquitectura del sistema?
sistema en subcomponentes?
funcionales del sistema?
Reutilización de la arquitectura
• Los sistemas en el mismo dominio a menudo tienen arquitecturas
similares que reflejan conceptos de dominio.
• Las líneas de productos de aplicación se basan en una arquitectura
central con variantes que satisfacen los requisitos particulares del
cliente.
• "La arquitectura de un sistema puede diseñarse en torno a uno o
más patrones arquitectónicos o "estilos ".
• Capturan la esencia de una arquitectura y se pueden instanciar
de diferentes maneras.
Arquitectura y las características del sistema
• Rendimiento
• Localizar operaciones críticas y minimizar las comunicaciones. Utilizar componentes
grandes en lugar de componentes muy pequeños.
• Protección
• Utilice una arquitectura por capas con componentes críticos en las capas internas.
• Seguridad
• Localice las características críticas para la seguridad en un número pequeño de
subsistemas.
• Disponibilidad
• Incluir componentes redundantes y mecanismos para tolerancia de fallas.
• Mantenibilidad
• Utilice componentes pequeños reemplazables.
Perspectivas arquitectónicas
Perspectivas arquitectónicas
Arquitectura del
sistema
Controlador Vista
Selección de Vista Dibuja el modelo.
Asigna acciones del usuario a
Solicita actualizaciones del
las actualizaciones del
modelo.
modelo.
Eventos de Envía eventos del usuario al
Selecciona la vista
Usuario controlador.
Notificación de
Cambio
Encapsula el estado de la
aplicación.
Notifica la vista de los
cambios de estado
Figura 6.3
Arquitectura de la aplicación web usando el patrón CVM
Navegador de
Internet
Controlador Vista
Formato para
mostrar
Procesamiento de pedidos de http. Creación de páginas
Lógica específica de la aplicación. dinámicas.
Validación de datos. Gestión de formatos.
Eventos de
Usuario
Notificación de
Cambio
Pedido de Pedido de
actualización Modelo actualizar
Figura 6.4
Arquitectura en capas
• Utilizado para modelar la interfaz de subsistemas.
• Organiza el sistema en un conjunto de capas (o máquinas abstractas),
cada una de las cuales proporciona un conjunto de servicios.
• Admite el desarrollo incremental de subsistemas en diferentes capas.
Cuando cambia la interfaz de una capa, solo se ve afectada la capa
adyacente.
• Sin embargo, a menudo es artificial estructurar sistemas de esta
manera.
Patrón de arquitectura en capas
Nombre Arquitectura en capas
Descripción Organiza el sistema en capas con funcionalidad relacionada asociada con cada capa. Una capa
proporciona servicios a la capa superior, por lo que las capas de nivel más bajo representan
servicios centrales que probablemente se utilizarán en todo el sistema. Ver Figura 6.6.
Ejemplo Un modelo en capas de un sistema para compartir documentos con derechos de autor en diferentes
bibliotecas, como se muestra en la Figura 6.7.
Cuándo se Se usa al construir nuevas instalaciones sobre los sistemas existentes; cuando el desarrollo se
utiliza? extiende a varios equipos y cada equipo es responsable de una capa de funcionalidad; cuando existe
un requisito para la seguridad multinivel.
Ventajas Permite el reemplazo de capas enteras siempre que se mantenga la interfaz. Se pueden proporcionar
recursos redundantes (por ejemplo, autenticación) en cada capa para aumentar la confiabilidad del
sistema.
Desventajas En la práctica, proporcionar una separación limpia entre capas a menudo es difícil y una capa de
alto nivel puede tener que interactuar directamente con las capas de nivel inferior en lugar de a
través de la capa inmediatamente debajo de ella. El rendimiento puede ser un problema debido a los
múltiples niveles de interpretación de una solicitud de servicio a medida que se procesa en cada
capa.
Una arquitectura genérica en capas
Interfaz de Usuario
Figura 6.6
Una arquitectura genérica en capas
Servicios de Configuración
Gestión de grupo Gestión de aplicación Gestión de identidad
Servicios de la aplicación
Email Mensajes Conferencias de Video Archivo de Periódicos
Procesamiento de textos Simulación Almacenamiento de Video
Hoja de cálculo Plataforma de aprendizaje virtual Archivo histórico
Servicios de herramientas
Autenticación Registro y monitoreo Interfaz
Almacenamiento de Almacenamiento de la Búsqueda
usuarios aplicación
Figura 6.7
Arquitectura de repositorio
• Los subsistemas deben intercambiar datos. Esto se puede hacer de
dos maneras:
• Los datos compartidos se mantienen en una base de datos
central o repositorio y todos los subsistemas pueden acceder a
ellos;
• Cada subsistema mantiene su propia base de datos y pasa datos
explícitamente a otros subsistemas.
• Cuando se van a compartir grandes cantidades de datos, el modelo
de repositorio de uso compartido se usa más comúnmente, este es
un mecanismo eficiente para compartir datos.
Patrón de repositorio
Nombre Repositorio
Descripción Todos los datos de un sistema se administran en un repositorio central al que pueden acceder todos
los componentes del sistema. Los componentes no interactúan directamente, solo a través del
repositorio.
Ejemplo La Figura 6.9 es un ejemplo de un IDE donde los componentes usan un repositorio de información
de diseño del sistema. Cada herramienta de software genera información que luego está disponible
para su uso por otras herramientas.
Cuándo se Debe usar este patrón cuando tenga un sistema en el que se generan grandes volúmenes de
utiliza? información que deben almacenarse durante mucho tiempo. También puede usarlo en sistemas
basados en datos donde la inclusión de datos en el repositorio desencadena una acción o
herramienta.
Ventajas Los componentes pueden ser independientes; no necesitan conocer la existencia de otros
componentes. Los cambios realizados por un componente se pueden propagar a todos los
componentes. Todos los datos se pueden administrar de manera coherente (por ejemplo, copias de
seguridad realizadas al mismo tiempo), ya que se encuentran en un solo lugar.
Desventajas El repositorio es un punto único de falla, por lo que los problemas en el repositorio afectan a todo el
sistema. Pueden haber ineficiencias en la organización de toda la comunicación a través del
repositorio. Distribuir el repositorio en varias computadoras puede ser difícil.
A repository architecture for an IDE
Editores Generadores
de UML de código
Editor de
Java
Traductor
Repositorio del Proyecto
de Diseños
Editor de
Python
Analizador Generador
de diseño de Reportes
Figura 6.9
Arquitectura cliente-servidor
Internet
Servidor de
Servidor de Servidor de Servidor de
Web
Catálogo Video Fotos
Informació
Catálogo de Tienda de Tienda de
n de Fotos y
Biblioteca Videos Fotos
Videos
Figura 6.11
Arquitectura de tubería y filtros
Identificar
pagos
Emitir
Encontrar pagos
recordatorio de
vencidos
pago.
Pagos
Arquitecturas de aplicación
Arquitecturas de aplicación
Obtener ID
Imprimir
de cuenta de
detalles
cliente Consulta de
cuenta
Validar Devolver
tarjeta tarjeta
Actualizar
cuenta
Seleccionar Dispensar
servicio efectivo
AT Base de Datos AT
M M
Interfaz de Usuario
Gestión de transacciones
Base de Datos
La arquitectura del sistema Mentcare
Navegador
Navegador web
web
Comprobación de Administrador de
Iniciar sesión Validación de Datos
Roles formularios y menús
Administrador de
Importación y
Gestión de seguridad Información de Creación de Informe
exportación de Datos
Pacientes
Gestión de transacciones
Base de Datos
Sistemas de información basados en la web
• Los sistemas de información y gestión de recursos ahora son
generalmente sistemas basados en la web donde las interfaces
de usuario se implementan utilizando un navegador web.
• Por ejemplo, los sistemas de comercio electrónico son
sistemas de gestión de recursos basados en Internet que
aceptan pedidos electrónicos de bienes o servicios y luego
organizan la entrega de estos bienes o servicios al cliente.
• En un sistema de comercio electrónico, la capa específica de la
aplicación incluye una funcionalidad adicional que admite un
"carrito de compras" en el que los usuarios pueden colocar una
cantidad de artículos en transacciones separadas y luego
pagarlos todos juntos en una transacción.
Implementación del servidor
• Estos sistemas a menudo se implementan como arquitecturas
de servidor-cliente de varios niveles
• El servidor web es responsable de todas las comunicaciones
del usuario, con la interfaz de usuario implementada
mediante un navegador web;
• El servidor de aplicaciones es responsable de implementar la
lógica específica de la aplicación, así como el
almacenamiento de información y las solicitudes de
recuperación;
• El servidor de la base de datos mueve la información hacia y
desde la base de datos y maneja la gestión de transacciones.
Sistemas de procesamiento de lenguaje
• Aceptan un lenguaje natural o artificial como entrada y
generan alguna otra representación de ese idioma.
• Pueden incluir un intérprete para actuar según las
instrucciones en el idioma que se está procesando.
• Utilizado en situaciones donde la forma más fácil de
resolver un problema es describir un algoritmo o describir
los datos del sistema
• Las herramientas de meta-casos procesan
descripciones de herramientas, reglas de métodos, etc.
y generan herramientas.
La arquitectura de un sistema de
procesamiento de lenguaje
Traductor
Instrucciones en
lenguaje de origen Verificar sintaxis
Verificar semántica
Generar
Instrucciones para
máquina abstracta
Intérprete
Análisis Árbol de
Definición de
Análisis
Léxico sintaxis Semántico
gramática
abstracta
Tabla de símbolos
Árbol de Sintaxis