Está en la página 1de 61

Análisis y Diseño de

Sistemas II
INF-353
Prof. Leonel Savery
ls3612@unphu.edu.do
Diseño Arquitectónico
Diseño Arquitectónico

 Se ocupa de comprender cómo debe organizarse un sistema de


software y de diseñar la estructura general de ese sistema.
 En el modelo del proceso de desarrollo de software, el diseño
arquitectónico es la primera etapa en el proceso de diseño de
software.
 Es el enlace crítico entre el diseño y la ingeniería de requisitos, 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 de comunicación.
Diseño Arquitectónico

 En los procesos ágiles, generalmente se acepta que una


etapa temprana de un proceso de desarrollo ágil debe
centrarse en el diseño de una arquitectura general del
sistema. El desarrollo incremental de arquitecturas no
suele tener éxito. Los componentes de refactorización en
respuesta a los cambios suelen ser relativamente fáciles.
Sin embargo, la refactorización de la arquitectura del
sistema es costosa porque es posible que deba modificar
la mayoría de los componentes del sistema para
adaptarlos a los cambios arquitectónicos.
Diseño Arquitectónico

 El diseño arquitectónico se ocupa de comprender cómo


debe organizarse un sistema de software y de diseñar la
estructura general de ese sistema.
 El diseño arquitectónico es el enlace crítico entre el
diseño y la ingeniería de requisitos, 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 de
comunicación.
Agilidad y Arquitectura

 En general, se acepta que una etapa temprana de los


procesos ágiles es diseñar una arquitectura global de
sistemas.
 Refactorizar la arquitectura del sistema suele ser costoso
porque afecta a muchos componentes en el sistema
Ejemplo de Arquitectura
 La arquitectura de un sistema de control de robot de embalaje.
Abstracción arquitectónica

 La arquitectura en lo pequeño se ocupa de la arquitectura


de programas individuales. En este nivel, nos preocupa la
forma en que un programa individual se descompone en
componentes.
 La arquitectura en general se ocupa de la arquitectura de
sistemas empresariales complejos que incluyen otros
sistemas, programas y componentes de programas. Estos
sistemas empresariales se distribuyen en diferentes
equipos, que pueden ser propiedad y administrados por
diferentes compañías.
Ventajas de la Arquitectura Explícita

 Comunicación con las partes interesadas


 La arquitectura puede ser utilizada como un foco de discusión por
parte de los interesados del sistema.
 Análisis del sistema
 Significa que es posible el análisis de 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 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 las entidades en
la arquitectura.
 Depende del uso de modelos arquitectónicos. Los
requisitos para la semántica de los modelos dependen de
cómo se utilicen los modelos.
Diagramas de Caja y Líneas

 Muy abstractos: no muestran la naturaleza de las


relaciones de los componentes ni las propiedades visibles
externamente 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 una 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á saturado de detalles. Las partes
interesadas pueden relacionarse con él y comprender una vista
abstracta del sistema. Luego pueden discutir el sistema como un todo
sin ser confundidos por los detalles.
 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 del Diseño
Arquitectónico
Decisiones del Diseño Arquitectónico

 El diseño arquitectónico es un proceso creativo, por lo


que el proceso varía según el 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
Arquitectura de Reúso

 Los sistemas en el mismo dominio a menudo tienen


arquitecturas similares que reflejan conceptos de
dominio.
 Las líneas de productos de aplicaciones se construyen
alrededor de 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".
 Estos captan la esencia de una arquitectura y pueden ser
instanciados de diferentes maneras.
Arquitectura y Características del
Sistema
 Rendimiento
 Localizar operaciones críticas y minimizar comunicaciones. Utilice componentes de
grano grande en lugar de grano fino.
 seguridad
 Usar una arquitectura en capas con activos críticos en las capas internas.
 Seguridad
 Localice las características críticas de seguridad en un pequeño número de
subsistemas.
 Disponibilidad
 Incluir componentes y mecanismos redundantes para la tolerancia a fallos.
 Mantenibilidad
 Use componentes de grano fino, reemplazables.
Vistas Arquitectónicas
Vistas Arquitectónicas

 ¿Qué vistas o perspectivas son útiles al diseñar y


documentar la arquitectura de un sistema?
 ¿Qué notaciones deben usarse para describir los modelos
arquitectónicos?
 Cada modelo arquitectónico solo muestra una vista o
perspectiva del sistema.
 Puede mostrar cómo se descompone un sistema en módulos, cómo
interactúan los procesos en tiempo de ejecución o las diferentes
formas en que los componentes del sistema se distribuyen en una
red. Tanto para el diseño como para la documentación,
normalmente debe presentar varias vistas de la arquitectura del
software.
Vistas Arquitectónicas
Modelo de Vista de Arquitectura de
Software 4 + 1
 Una vista lógica, que muestra las abstracciones clave en
el sistema como objetos o clases de objetos.
 Una vista de proceso, que muestra cómo, en tiempo de
ejecución, el sistema se compone de procesos
interactivos.
 Una vista de desarrollo, que muestra cómo el software se
descompone para el desarrollo.
 Una vista física, que muestra el hardware del sistema y
cómo los componentes de software se distribuyen entre
los procesadores del sistema.
 Relacionados con casos de uso o escenarios (+1)
Representando Vistas Arquitectónicas

 Algunas personas argumentan que el Lenguaje de


modelado unificado (UML) es una notación apropiada para
describir y documentar arquitecturas de sistemas
 No estoy de acuerdo con esto, ya que no creo que el UML
incluya abstracciones apropiadas para la descripción del
sistema de alto nivel.
 Los lenguajes de descripción arquitectónica (ADL) se han
desarrollado pero no se utilizan ampliamente.
Patrones
Arquitectónicos
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
buenas prácticas de diseño, que se ha probado y probado
en diferentes entornos.
 Los patrones deben incluir información sobre cuándo
están y cuándo no son útiles.
 Los patrones pueden representarse usando descripciones
tabulares y gráficas.
El patrón Model-View-Controller (MVC)
Nombre MVC
Descripción Separa la presentación y la interacción de los datos del sistema. El
sistema está estructurado en tres componentes lógicos que
interactúan entre sí. El modelo del componente gestiona los datos
del sistema y las operaciones asociadas a esos datos. El componente
Vista define y administra cómo se presentan los datos al usuario. El
componente Controlador gestiona la interacción del usuario (por
ejemplo, pulsaciones de teclas, clics del mouse, etc.) y pasa estas
interacciones a la Vista y al Modelo.
Cuando se utiliza Se utiliza cuando hay varias formas de ver e interactuar con los
datos. También se utiliza cuando se desconocen los requisitos
futuros para la interacción y la presentación de datos.
Ventajas Permite que los datos cambien independientemente de su
representación y viceversa. Admite la presentación de los mismos
datos de diferentes maneras con los cambios realizados en una
representación que se muestra en todos ellos.
Desventajas Puede involucrar código adicional y complejidad de código cuando
el modelo de datos y las interacciones son simples.
La Organización del Model-View-
Controller (MVC)
Arquitectura de una Aplicación Basada
en la WEB con 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.
 Apoya el desarrollo incremental de subsistemas en
diferentes capas. Cuando una interfaz de capa cambia,
solo se afecta la capa adyacente.
 Sin embargo, a menudo es artificial estructurar los
sistemas de esta manera.
El Patrón Arquitectónico 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 usarán en todo el
sistema.
Ejemplo Un modelo en capas de un sistema para compartir documentos de derechos de
autor en diferentes bibliotecas.
Cuando se Se usa cuando se construyen nuevas instalaciones sobre sistemas existentes; cuando
utiliza el desarrollo se distribuye en varios equipos con la responsabilidad de cada equipo
de una capa de funcionalidad; cuando exista un requisito de seguridad multinivel.
Ventajas Permite la sustitución de capas completas siempre que se mantenga la interfaz. Se
pueden proporcionar instalaciones 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 suele ser difícil y
una capa de alto nivel puede tener que interactuar directamente con las capas de
nivel inferior en lugar de hacerlo 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 en Capas Genérica
La Arquitectura del Sistema iLearn
Arquitectura de Repositorio

 Los subsistemas deben intercambiar datos. Esto se puede


hacer de dos maneras:
 Los datos compartidos se guardan 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 los datos
explícitamente a otros subsistemas.
 Cuando se deben compartir grandes cantidades de datos,
el modelo de reparto de compartir es el más comúnmente
utilizado: este es un mecanismo eficiente para compartir
datos.
El Patrón de Repositorio
Nombre Repositorio
Descripción Todos los datos de un sistema se gestionan 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 siguiente imagen es un ejemplo de un IDE donde los componentes utilizan un
repositorio de información de diseño del sistema. Cada herramienta de software genera
información que luego está disponible para ser utilizada por otras herramientas.
Cuando se Debe usar este patrón cuando tenga un sistema en el que se generen grandes volúmenes
utiliza de información que deba almacenarse durante mucho tiempo. También puede usarlo en
sistemas controlados por datos donde la inclusión de datos en el repositorio desencadena
una acción o herramienta.
Ventajas Los componentes pueden ser independientes, no necesitan saber de la existencia de otros
componentes. Los cambios realizados por un componente pueden propagarse a todos los
componentes. Todos los datos se pueden administrar de forma coherente (por ejemplo, las
copias de seguridad se realizan 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. Puede haber ineficiencias en la organización de todas las
comunicaciones a través del repositorio. Distribuir el repositorio entre varias
computadoras puede ser difícil.
Una Arquitectura de Repositorio para un
IDE
Arquitectura Cliente-Servidor

 Modelo de sistema distribuido que muestra cómo se


distribuyen los datos y el procesamiento en una variedad
de componentes.
 Puede ser implementado en una sola computadora.
 Conjunto de servidores independientes que proporcionan
servicios específicos como impresión, gestión de datos,
etc.
 Conjunto de clientes que solicitan estos servicios.
 Red que permite a los clientes acceder a los servidores.
El Patrón Cliente-Servidor
Nombre Cliente-Servidor
Descripción En una arquitectura cliente-servidor, la funcionalidad del sistema se organiza en
servicios, con cada servicio entregado desde un servidor separado. Los clientes son
usuarios de estos servicios y acceden a los servidores para hacer uso de ellos.
Ejemplo La siguiente imagen es un ejemplo de una biblioteca de películas y videos / DVD
organizada como un sistema cliente-servidor.
Cuando se Se utiliza cuando hay que acceder a los datos de una base de datos compartida
utiliza desde una variedad de ubicaciones. Debido a que los servidores se pueden replicar,
también se pueden usar cuando la carga en un sistema es variable.
Ventajas La principal ventaja de este modelo es que los servidores se pueden distribuir a
través de una red. La funcionalidad general (por ejemplo, un servicio de impresión)
puede estar disponible para todos los clientes y no es necesario que sea
implementada por todos los servicios.
Desventajas Cada servicio es un punto único de falla tan susceptible a ataques de denegación de
servicio o falla del servidor. El rendimiento puede ser impredecible porque depende
de la red y del sistema. Pueden ser problemas de gestión si los servidores son
propiedad de diferentes organizaciones.
Una Arquitectura Cliente-Servidor para
una Biblioteca de Videos
Arquitectura de Tuberías y Filtros

 Las transformaciones funcionales procesan sus entradas


para producir salidas.
 Puede ser referido como un modelo de tubería y filtro
(como en el shell de UNIX).
 Las variantes de este enfoque son muy comunes. Cuando
las transformaciones son secuenciales, este es un modelo
secuencial por lotes que se usa ampliamente en los
sistemas de procesamiento de datos.
 No es realmente adecuado para sistemas interactivos.
Patrón de Tuberías y Filtros
Nombre Tuberías y Filtros
Descripción El procesamiento de los datos en un sistema está organizado de modo que cada
componente de procesamiento (filtro) es discreto y lleva a cabo un tipo de
transformación de datos. Los datos fluyen (como en una tubería) de un componente a
otro para su procesamiento.
Ejemplo La siguiente imagen es un ejemplo de un sistema de tubería y filtro utilizado para
procesar facturas.
Cuando se Comúnmente se usa en aplicaciones de procesamiento de datos (tanto por lotes como
utiliza por transacciones) donde las entradas se procesan en etapas separadas para generar
salidas relacionadas.
Ventajas Fácil de entender y apoya la reutilización de la transformación. El estilo de flujo de
trabajo coincide con la estructura de muchos procesos de negocios. La evolución
mediante la adición de transformaciones es sencilla. Se puede implementar como un
sistema secuencial o concurrente.
Desventajas El formato para la transferencia de datos debe acordarse entre las transformaciones
comunicantes. Cada transformación debe analizar su entrada y separar su salida a la
forma acordada. Esto aumenta la sobrecarga del sistema y puede significar que es
imposible reutilizar las transformaciones funcionales que utilizan estructuras de datos
incompatibles.
Un Ejemplo de Arquitectura Tubería y
Filtro Usado en un Sistema de Facturación
Aplicación de
Arquitecturas
Aplicación de Arquitecturas

 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
puede configurarse y adaptarse para crear un sistema que
cumpla con los requisitos específicos.
Uso de Arquitecturas de Aplicación

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


 Como lista de verificación de diseño.
 Como forma de organizar el trabajo del equipo de
desarrollo.
 Como medio de valoración de componentes para su
reutilización.
 Como vocabulario para hablar de tipos de aplicaciones.
Ejemplos de Tipos de Aplicaciones

 Aplicaciones de procesamiento de datos


 Aplicaciones controladas por datos que procesan datos en lotes sin la
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 donde las acciones del sistema dependen de la
interpretación de eventos del entorno del sistema.
 Sistemas de procesamiento de lenguaje
 Aplicaciones en las que las intenciones de los usuarios se especifican
en un lenguaje formal procesado e interpretado por el sistema.
Ejemplos de Tipo de Aplicación

 Dos arquitecturas genéricas de aplicaciones muy utilizadas


son los sistemas de 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 lenguaje
 Compiladores;
 Intérpretes de mando.
*
Sistemas de Procesamiento de
Transacciones
 Procesar las solicitudes de los usuarios para obtener
información de una base de datos o solicitudes para
actualizar la base de datos.
 Desde la perspectiva del usuario, una transacción es:
 Cualquier secuencia coherente de operaciones que satisfaga un
objetivo;
 Por ejemplo, encuentra los horarios de los vuelos de Londres a
París.
 Los usuarios realizan solicitudes de servicio asíncronas que
luego son procesadas por un administrador 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 organizarse como una arquitectura en
capas.
 Estos son sistemas basados en transacciones, ya que la
interacción con estos sistemas generalmente involucra
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
por Capas
La Arquitectura del Sistema Mentcare
Sistemas de Información Basados en la
Web
 Los sistemas de gestión de la información y los recursos ahora
suelen ser sistemas basados en la web en los que las interfaces
de usuario se implementan mediante un navegador web.
 Por ejemplo, los sistemas de comercio electrónico son sistemas
de administració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 sola transacción.
Implementación del Servidor

 Estos sistemas a menudo se implementan como


arquitecturas / servidores cliente de múltiples 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 las solicitudes de
recuperación y almacenamiento de información;
 El servidor de la base de datos mueve la información hacia y desde
la base de datos y maneja la administración de transacciones.
Sistemas de Procesamiento de Lenguaje

 Acepta un lenguaje natural o artificial como entrada y


genere alguna otra representación de ese idioma.
 Puede incluir un intérprete para actuar sobre las
instrucciones en el idioma que se está procesando.
 Se utiliza en situaciones en las que la forma más fácil de
resolver un problema es describir un algoritmo o describir
los datos del sistema.
 Las herramientas Meta-Case procesan descripciones de
herramientas, reglas de métodos, etc. y generan
herramientas.
Arquitectura de Sistema de
Procesamiento de Lenguaje
Componentes del Compilador

 Un analizador léxico, que toma tokens de lenguaje de


entrada y los convierte en una forma interna.
 Una tabla de símbolos, que contiene información sobre los
nombres de las 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 traduce.
 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 verificar la
corrección semántica del texto del idioma de entrada.
 Un generador de código que "recorre" el árbol de sintaxis y
genera un código de máquina abstracto.
Una Arquitectura de Repositorio para un
Sistema de Procesamiento de Lenguaje
Un Compilador para la Arquitectura
Tubería y Filtro
En Resumen
 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 se pueden documentar desde varias
perspectivas o vistas diferentes, 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 de sistemas
genéricos. Describen la arquitectura, explican cuándo
puede usarse y describen sus ventajas y desventajas.
En Resumen
 Los modelos de arquitecturas de sistemas de aplicaciones
nos ayudan a comprender y comparar aplicaciones, validar
los 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 accesible y modificada de forma
remota por varios 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.

También podría gustarte