You are on page 1of 48

Diseño arquitectonico

1
Temas

 Decisiones de diseño arquitectónico


 Vistas arquitectónicas
 Patrones arquitectónicos
 Arquitecturas de aplicaciones
Arquitectura de software

 El proceso de diseño para identificar los sub-sistemas que componen un


sistema y el marco para el control y comunicación de subsistemas es el diseño
arquitectónico.
 La salida de este proceso de diseño es una descripción de la arquitectura del
software.
Diseño arquitectonico

 Una etapa temprana del proceso de diseño del sistema.


 Representa el vínculo entre la especificación y los procesos de diseño.
 A menudo se lleva a cabo en paralelo con algunas actividades de
especificación.
 Implica identificar los principales componentes del sistema y sus
comunicaciones.
La arquitectura de un sistema de control
de robot de embalaje
Abstracción arquitectónica

 La arquitectura en el pequeño se ocupa de la arquitectura de los programas


individuales. En este nivel, nos interesa la forma en que un programa
individual se descompone en componentes.
 Arquitectura en el gran se refiere a la arquitectura de sistemas empresariales
complejos que incluyen otros sistemas, programas y componentes del
programa. Estos sistemas empresariales se distribuyen en diferentes
ordenadores, que pueden ser propiedad y gestionados por diferentes
empresas.
Ventajas de la arquitectura explícita

 Comunicación con las partes interesadas


 La arquitectura puede ser utilizada como un foco de discusión por los interesados
del sistema.
 Análisis del sistema
 Significa que el análisis de si el sistema puede satisfacer sus requisitos no
funcionales es posible.
 Reutilización a gran escala
 La arquitectura puede ser reutilizable a través de una gama de sistemas
 Se pueden desarrollar arquitecturas de línea de producto.
Representaciones arquitectónicas

 Los diagramas de bloques simples e informales que muestran entidades y


relaciones son el método más utilizado para documentar arquitecturas de
software.
 Pero estos han sido criticados porque carecen de semántica, no muestran los
tipos de relaciones entre entidades ni las propiedades visibles de entidades en
la arquitectura.
 Depende del uso de modelos arquitectónicos. Los requisitos para la semántica
de modelos dependen de cómo se usen los modelos.
Diagramas de caja y línea

 Muy abstractos - no muestran la naturaleza de las relaciones de los


componentes ni las propiedades externamente visibles de los subsistemas.
 Sin embargo, es útil para la comunicación con las partes interesadas y para la
planificación de proyectos.
Uso de modelos arquitectónicos

 Como forma de facilitar la discusión sobre el diseño del sistema


 Una vista arquitectónica de alto nivel de un sistema es útil para la comunicación
con las partes interesadas del sistema y la planificación del proyecto porque no
está llena de detalles. Las partes interesadas pueden relacionarse con él y
comprender una visión abstracta del sistema. Pueden entonces discutir el sistema
como un todo sin ser confundido por el detalle.
 Como una forma de documentar una arquitectura que ha sido diseñada
 El objetivo aquí es producir un modelo de sistema completo que muestre los
diferentes componentes de un sistema, sus interfaces y sus conexiones.
Decisiones de diseño arquitectónico

 El diseño arquitectónico es un proceso creativo por lo que el proceso difiere


dependiendo del tipo de sistema que se está desarrollando.
 Sin embargo, una serie de decisiones comunes abarcan todos los procesos de
diseño y estas decisiones afectan las características no funcionales del
sistema.
Decisiones de diseño arquitectónico

 ¿Existe una arquitectura de aplicación genérica que se pueda


utilizar?
 ¿Cómo se distribuirá el sistema?
 ¿Qué estilos arquitectónicos son apropiados?
 ¿Qué enfoque se utilizará para estructurar el sistema?
 ¿Cómo se descompondrá el sistema en módulos?
 ¿Qué estrategia de control se debe utilizar?
 ¿Cómo se evaluará el diseño arquitectónico?
 ¿Cómo debe documentarse la arquitectura?
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 construyen alrededor de una
arquitectura de núcleo con variantes que satisfacen requisitos particulares del
cliente.
 La arquitectura de un sistema puede diseñarse alrededor de uno de los
patrones o estilos más arquitectónicos.
 Estos captan la esencia de una arquitectura y pueden ser instanciados de
diferentes maneras.
Arquitectura y características del sistema

 Actuación
 Localizar operaciones críticas y minimizar las comunicaciones.
Utilice componentes grandes en lugar de granos finos.
 Seguridad
 Utilice una arquitectura en capas con activos críticos en las capas
internas.
 La seguridad
 Localizar las características críticas para la seguridad en un
número reducido de subsistemas.
 Disponibilidad
 Incluya componentes redundantes y mecanismos para la tolerancia
a fallos.
 Mantenibilidad
 Utilice componentes de grano fino y reemplazables.
Vistas arquitectónicas

 ¿Qué puntos de vista o perspectivas son útiles al diseñar y documentar la


arquitectura de un sistema?
 ¿Qué anotaciones se deben utilizar para describir modelos arquitectónicos?
 Cada modelo arquitectónico sólo muestra una vista o perspectiva del sistema.
 Podría mostrar cómo un sistema se descompone en módulos, cómo interactúan los
procesos de tiempo de ejecución o las diferentes formas en que los componentes
del sistema se distribuyen a través de una red. Tanto para el diseño como para la
documentación, normalmente necesita presentar múltiples vistas de la
arquitectura del software.
4 + 1 modelo de vista de la arquitectura
del software
 Una vista lógica, que muestra las abstracciones clave en el sistema como
objetos u clases de objetos.
 Una vista de proceso, que muestra cómo, en tiempo de ejecución, el sistema
está compuesto de procesos que interactúan.
 Una vista de desarrollo, que muestra cómo se descompone el software para el
desarrollo.
 Una vista física, que muestra el hardware del sistema y cómo se distribuyen
los componentes de software a través de los procesadores del sistema.
 Relacionado con casos de uso o escenarios (+1)
Patrones arquitectónicos

 Los patrones son un medio para representar, compartir y reutilizar el


conocimiento.
 Un patrón arquitectónico es una descripción estilizada de la buena práctica
de diseño, que ha sido probada y probada en diferentes entornos.
 Los patrones deben incluir información sobre cuándo son y cuándo no son
útiles.
 Los patrones se pueden representar usando descripciones tabulares y gráficas.
La organización del Model-View-
Controller
Arquitectura de aplicaciones Web
utilizando el patrón MVC
Arquitectura en capas

 Se utiliza para modelar la interconexión de subsistemas.


 Organiza el sistema en un conjunto de capas (o máquinas
abstractas), cada una de las cuales proporciona un
conjunto de servicios.
 Soporta el desarrollo incremental de subsistemas en
diferentes capas. Cuando una interfaz de capa cambia,
sólo se afecta la capa adyacente.
 Sin embargo, a menudo artificial para estructurar los
sistemas de esta manera.
Una arquitectura en capas genérica
La arquitectura del sistema LIBSYS

22
Puntos clave
 Una arquitectura de software es una descripción de cómo se organiza un
sistema de software.
 Las decisiones de diseño arquitectónico incluyen decisiones sobre el tipo
de aplicación, la distribución del sistema, los estilos arquitectónicos que
se utilizarán.
 Las arquitecturas pueden ser documentadas desde varias perspectivas o
puntos de vista diferentes, tales como una vista conceptual, una vista
lógica, una vista de proceso y una vista de desarrollo.
 Los patrones arquitectónicos son un medio para reutilizar el conocimiento
sobre arquitecturas genéricas de sistemas. Describen la arquitectura,
explican cuándo se puede usar y describen sus ventajas y desventajas.
Arquitectura del repositorio

 Los subsistemas deben intercambiar datos. Esto se puede hacer de dos


maneras:
 Los datos compartidos se mantienen en una base de datos o repositorio central y
pueden ser accedidos por todos los subsistemas;
 Cada subsistema mantiene su propia base de datos y pasa los datos explícitamente
a otros subsistemas.
 Cuando se comparten grandes cantidades de datos, el modelo de repositorio
de uso compartido es el más comúnmente utilizado, esto es un mecanismo
eficiente de intercambio de datos.
Una arquitectura de repositorio para un
IDE
Arquitectura cliente-servidor

 Modelo de sistema distribuido que muestra cómo los datos y el procesamiento


se distribuyen a través de una gama de componentes.
 Se puede implementar en un solo ordenador.
 Conjunto de servidores autónomos que proporcionan servicios específicos
como impresión, gestión de datos, etc.
 Conjunto de clientes que llaman a estos servicios.
 Red que permite a los clientes acceder a los servidores.
Una arquitectura cliente-servidor para
una biblioteca cinematográfica
Arquitectura de tubos y filtros

 Las transformaciones funcionales procesan sus entradas para producir salidas.


 Puede ser referido como un modelo de tubería y filtro (como en shell UNIX).
 Las variantes de este enfoque son muy comunes. Cuando las transformaciones
son secuenciales, se trata de un modelo secuencial por lotes que se utiliza
ampliamente en sistemas de procesamiento de datos.
 No es realmente adecuado para sistemas interactivos.
Un ejemplo de la arquitectura de
tuberías y filtros
Arquitecturas de aplicaciones

 Los sistemas de aplicación están diseñados para satisfacer una necesidad


organizativa.
 Como las empresas tienen mucho en común, sus sistemas de aplicación
también tienden a tener una arquitectura común que refleja los requisitos de
la aplicación.
 Una arquitectura de aplicación genérica es una arquitectura para un tipo de
sistema de software que se puede configurar y adaptar para crear un sistema
que cumpla con requisitos específicos.
Uso de arquitecturas de aplicaciones

 Como punto de partida para el diseño arquitectónico.


 Como una lista de comprobación del diseño.
 Como forma de organizar el trabajo del equipo de desarrollo.
 Como medio de evaluar componentes para su reutilización.
 Como vocabulario para hablar de los tipos de aplicación.
Ejemplos de tipos de aplicación

 Aplicaciones de procesamiento de datos


 Aplicaciones impulsadas por datos que procesan los datos en lotes sin intervención
explícita del usuario durante el procesamiento.
 Aplicaciones de procesamiento de transacciones
 Aplicaciones centradas en los datos que procesan las solicitudes de los usuarios y
actualizan la información en una base de datos del sistema.
 Sistemas de procesamiento de eventos
 Aplicaciones en las que las acciones del sistema dependen de la interpretación de
eventos desde el entorno del sistema.
 Sistemas de procesamiento de idiomas
 Aplicaciones donde las intenciones de los usuarios se especifican en un lenguaje
formal que es procesado e interpretado por el sistema.
Ejemplos de tipos de aplicación

 Aquí se centra en el procesamiento de transacciones y los


sistemas de procesamiento de idiomas.
 Sistemas de procesamiento de transacciones
 Sistemas de comercio electrónico;
 Sistemas de reserva.
 Sistemas de procesamiento de idiomas
 Compiladores;
 Intérpretes de comandos.
Sistemas de procesamiento de
transacciones
 Procesar solicitudes de usuario de información de una base de datos o
solicitudes para actualizar la base de datos.
 Desde una perspectiva de usuario, una transacción es:
 Cualquier secuencia coherente de operaciones que satisface una meta;
 Por ejemplo - encontrar los tiempos de vuelos de Londres a París.
 Los usuarios realizan solicitudes de servicio asíncronas que luego son
procesadas por un gestor de transacciones.
La estructura de las aplicaciones de
procesamiento de transacciones
La arquitectura de software de un
sistema ATM
Arquitectura de sistemas de información

 Los sistemas de información tienen una arquitectura genérica que puede ser
organizada como una arquitectura en capas.
 Se trata de sistemas basados en transacciones, ya que la interacción con estos
sistemas generalmente implica transacciones de base de datos.
 Las capas incluyen:
 La interfaz de usuario
 Comunicaciones de usuario
 Recuperación de información
 Base de datos del sistema
Arquitectura de sistemas de información
en capas
La arquitectura del MHC-PMS
Sistemas de información basados en la
Web
 Los sistemas de información y de gestión de recursos suelen ser sistemas
basados en la web en los que 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 funciones adicionales que soportan un "carrito de la compra" en el que
los usuarios pueden colocar una serie de artículos en transacciones separadas
y luego pagarlos juntos en una sola transacción.
Implementación del servidor

 Estos sistemas se implementan a menudo como servidor cliente /


arquitecturas de múltiples niveles. El servidor web es responsable de todas las
comunicaciones del usuario, con la interfaz de usuario implementada
utilizando un navegador web;
 El servidor de aplicaciones es responsable de implementar la lógica específica de la
aplicación, así como las solicitudes de almacenamiento y recuperación de
información;
 El servidor de base de datos mueve la información hacia y desde la base de datos y
gestiona la gestión de transacciones.
Sistemas de procesamiento de idiomas

 Acepte un lenguaje natural o artificial como entrada y


genere otra representación de ese idioma.
 Puede incluir un intérprete para actuar según las
instrucciones en el idioma que se está procesando.
 Utilizado en situaciones donde la manera más fácil de
resolver un problema es describir un algoritmo o describir los
datos del sistema
 Las herramientas de meta-caso procesan descripciones de
herramientas, reglas de métodos, etc. y generan herramientas.
La arquitectura de un sistema de
procesamiento del lenguaje
Componentes del compilador

 Un analizador léxico, que toma los tokens del lenguaje de entrada y los
convierte en una forma interna.
 Una tabla de símbolos que contiene información sobre los nombres de
entidades (variables, nombres de clases, nombres de objetos, etc.)
utilizados en el texto que se está traduciendo.
 Un analizador de sintaxis, que comprueba la sintaxis del idioma que se
está traduciendo.
 Un árbol de sintaxis, que es una estructura interna que representa el
programa que se está compilando.
Componentes del compilador

 Un analizador semántico que utiliza información del árbol de sintaxis y la


tabla de símbolos para comprobar la corrección semántica del texto del
idioma de entrada.
 Un generador de código que 'camina' el árbol de sintaxis y genera código de
máquina abstracto.
Una arquitectura de compilador de
tuberías y filtros
Una arquitectura de repositorio para un
sistema de procesamiento de idiomas
Resumen

 Los modelos de arquitecturas de sistemas de aplicación nos ayudan a


comprender y comparar aplicaciones, validar diseños de sistemas de
aplicaciones y evaluar componentes a gran escala para su reutilización.
 Los sistemas de procesamiento de transacciones son sistemas interactivos que
permiten que la información en una base de datos sea remotamente accesible
y modificada por un número de usuarios.
 Los sistemas de procesamiento de idiomas se utilizan para traducir textos de
un idioma a otro y para llevar a cabo las instrucciones especificadas en el
idioma de entrada. Incluyen un traductor y una máquina abstracta que
ejecuta el lenguaje generado.

You might also like