Está en la página 1de 30

INGENIERIA DE

SOTFWARE
DISEÑO ARQUITECTONICO
¿Qué es la arquitectura?

Cuando se piensa en la arquitectura de una construcción, llegan a la


mente muchos atributos distintos. En el nivel más sencillo, se considera
la forma general de la estructura física. Pero, en realidad, la
arquitectura es mucho más que eso. Es la manera en la que los
distintos componentes del edificio se integran para formar un todo
cohesivo. Es la forma en la que la construcción se adapta a su ambiente
y se integra a los demás edificios en la vecindad. Es el grado en el que el
edificio cumple con su propósito y en el que satisface las necesidades
del propietario.
Arquitectura del Software
La arquitectura del software de un programa o sistema de cómputo es
la estructura o estructuras del sistema, lo que comprende a los
componentes del software, sus propiedades externas visibles y las
relaciones entre ellos.
La arquitectura no es el software operativo. Es una representación que
permite 1) analizar la efectividad del diseño para cumplir los
requerimientos establecidos, 2) considerar alternativas arquitectónicas
en una etapa en la que hacer cambios al diseño todavía es
relativamente fácil y 3) reducir los riesgos asociados con la construcción
del software.
Géneros Arquitectónicos
• Inteligencia artificial: Sistemas que simulan o incrementan la cognición humana, su
locomoción u otros procesos orgánicos.
• Comerciales y no lucrativos: Sistemas que son fundamentales para la operación de una
empresa de negocios.
• Comunicaciones: Sistemas que proveen la infraestructura para transferir y manejar datos,
para conectar usuarios de éstos o para presentar datos en la frontera de una infraestructura.
• Contenido de autor: Sistemas que se emplean para crear o manipular artefactos de texto o
multimedios.
• Dispositivos: Sistemas que interactúan con el mundo físico a fin de brindar algún servicio
puntual a un individuo.
• Entretenimiento y deportes: Sistemas que administran eventos públicos o que proveen una
experiencia grupal de entretenimiento.
Géneros Arquitectónicos
• Financieros: Sistemas que proporcionan la infraestructura para transferir y manejar
dinero y otros títulos.
• Juegos: Sistemas que dan una experiencia de entretenimiento a individuos o
grupos.
• Gobierno: Sistemas que dan apoyo a la conducción y operaciones de una
institución política local, estatal, federal, global o de otro tipo.
• Industrial: Sistemas que simulan o controlan procesos físicos.
• Legal: Sistemas que dan apoyo a la industria jurídica.
• Médicos: Sistemas que diagnostican, curan o contribuyen a la investigación médica.
• Militares: Sistemas de consulta, comunicaciones, comando, control e inteligencia
(o C4I), así como de armas ofensivas y defensivas.
Géneros Arquitectónicos
• Sistemas operativos: Sistemas que están inmediatamente instalados en el
hardware para dar servicios de software básico.
• Plataformas: Sistemas que se encuentran en los sistemas operativos para
brindar servicios avanzados.
• Científicos: Sistemas que se emplean para hacer investigación científica y
aplicada.
• Herramientas: Sistemas que se utilizan para desarrollar otros sistemas.
• Transporte: Sistemas que controlan vehículos acuáticos, terrestres, aéreos o
espaciales.
• Utilidades: Sistemas que interactúan con otro software para brindar algún
servicio específico.
Estilos Arquitectónicos
El software construido para sistemas basados en computadora también
tiene uno de muchos estilos arquitectónicos. Cada estilo describe una
categoría de sistemas que incluye 1) un conjunto de componentes
(como una base de datos o módulos de cómputo) que realizan una
función requerida por el sistema, 2) un conjunto de conectores que
permiten la “comunicación, coordinación y cooperación” entre los
componentes, 3) restricciones que definen cómo se integran los
componentes para formar el sistema y 4) modelos semánticos que
permiten que un diseñador entienda las propiedades generales del
sistema al analizar las propiedades conocidas de sus partes
constituyentes.
Taxonomía de
estilos de
arquitectura
Arquitecturas centradas en los
datos. En el centro de esta
arquitectura se halla un
almacenamiento de datos (como
un archivo o base de datos) al
que acceden con frecuencia otros
componentes que actualizan,
agregan, eliminan o modifican los
datos de cierto modo dentro del
almacenamiento.
Taxonomía de
estilos de
arquitectura
Arquitecturas de flujo de datos. Esta
arquitectura se aplica cuando datos
de entrada van a transformarse en
datos de salida a través de una serie
de componentes computacionales o
manipuladores.
Un patrón de tubo y filtro tiene un
conjunto de componentes, llamados
filtros, conectados por tubos que
transmiten datos de un componente
al siguiente.
Taxonomía de
estilos de
arquitectura
Arquitecturas de llamar y regresar. Este estilo arquitectónico
permite obtener una estructura de programa que es
relativamente fácil de modificar y escalar. Dentro de esta
categoría existen varios subestilos:
• Arquitecturas de programa principal/subprograma. Esta
estructura clásica de programa descompone una función en una
jerarquía de control en la que un programa “principal” invoca
cierto número de componentes de programa que a su vez
invocan a otros.
• Arquitecturas de llamada de procedimiento remoto. Los
componentes de una arquitectura de programa
principal/subprograma están distribuidos a través de
computadoras múltiples en una red.
Taxonomía de
estilos de
arquitectura
Arquitecturas orientadas a objetos. Los componentes
de un sistema incluyen datos y las operaciones que
deben aplicarse para manipularlos. La comunicación y
coordinación entre los componentes se consigue
mediante la transmisión de mensajes.
Arquitecturas en capas. En la figura se ilustra la
estructura básica de una arquitectura en capas. Se
define un número de capas diferentes; cada una
ejecuta operaciones que se aproximan
progresivamente al conjunto de instrucciones de
máquina.
Diseño Arquitectónico

Cuando comienza el diseño arquitectónico, el


software que se va a desarrollar debe situarse
en contexto, es decir, el diseño debe definir las
entidades externas (otros sistemas, dispositivos,
personas, etc.) con las que interactúa el
software y la naturaleza de dicha interacción.
Esta información por lo general se adquiere a
partir del modelo de los requerimientos.
En el nivel de diseño arquitectónico, el
arquitecto del software usa un diagrama de
contexto arquitectónico (DCA) para modelar la
manera en la que el software interactúa con
entidades más allá de sus fronteras.
Diseño Arquitectónico
En relación con dicha figura, los sistemas que interactúan con el sistema objetivo (aquel
para el que va a desarrollarse un diseño arquitectónico) están representados como sigue:
• Sistemas superiores: aquellos que utilizan al sistema objetivo como parte de algún
esquema de procesamiento de alto nivel.
• Sistemas subordinados: los que son usados por el sistema objetivo y proveen datos o
procesamiento que son necesarios para completar las funciones del sistema objetivo.
• Sistemas entre iguales: son los que interactúan sobre una base de igualdad (por ejemplo,
la información se produce o consume por los iguales y por el sistema objetivo).
• Actores: entidades (personas, dispositivos, etc.) que interactúan con el sistema objetivo
mediante la producción o consumo de información que es necesaria para el procesamiento
de los requerimientos.
Diseño Arquitectónico
En relación con dicha figura, los sistemas que interactúan con el sistema objetivo (aquel
para el que va a desarrollarse un diseño arquitectónico) están representados como sigue:
• Sistemas superiores: aquellos que utilizan al sistema objetivo como parte de algún
esquema de procesamiento de alto nivel.
• Sistemas subordinados: los que son usados por el sistema objetivo y proveen datos o
procesamiento que son necesarios para completar las funciones del sistema objetivo.
• Sistemas entre iguales: son los que interactúan sobre una base de igualdad (por ejemplo,
la información se produce o consume por los iguales y por el sistema objetivo).
• Actores: entidades (personas, dispositivos, etc.) que interactúan con el sistema objetivo
mediante la producción o consumo de información que es necesaria para el procesamiento
de los requerimientos.
Patrones de arquitectura de software
Programación en capas
Como dice su nombre, este patrón de arquitectura de software divide la estructura
del software en diferentes capas, que comúnmente se conocen como:
• Capa de presentación
• Capa Lógica
• Capa de Datos
En cada una de ellas, el programador organiza un tipo de código específico, por
ejemplo, todas las vistas del software en una capa, toda la interactividad en otra, el
desarrollo de las funcionalidades en una tercera y la base de datos en una capa
final.
Así cada una se dedica a una parte del software, sin dejar de estar relacionadas.
Patrones de arquitectura de software
Programación en capas
IMPORTANTE,Pueden ser tantas capas como sean necesarias, y solo se pueden comunicar con la
siguiente o la anterior. O sea, la lógica con los datos, o la presentación con la lógica.
La idea de este patrón surgió para evitar el acoplamiento, o sea, que un cambio en una línea de
código implicara cambiar todo lo demás.
Utilizando la programación en capas o n-capas, como se le conoce también, podemos modificar solo
una parte del software, y el resto continuará funcionando correctamente.
Una variante de este patrón es el Tres capa, que en síntesis es lo mismo, pero tiene exactamente 3
capas:
• Presentación (vistas)
• Negocio(funcionalidades)
• Datos (modelos de base de datos)
Y se ve como lo muestra la figura:
Patrones de arquitectura de software
Tres niveles
Aunque les parezca que leyeron sobre esto en el patrón anterior, no es así.
La diferencia entre estos patrones es poca y se encuentra en que las capas
de un software pueden almacenarse todas en un mismo ordenador, pero si
utiliza el patrón tres niveles significa que cada capa, o grupo de estas, se
guardará en un lugar diferente a la otra.
La cantidad de niveles no es una camisa de fuerza, puede variar, de acuerdo
con cómo se desee organizar el código fuente. Algunas opciones son:
Vistas, Lógica + Datos
Vistas +Lógica, Lógica+ Datos
Patrones de
arquitectura de
software
Tres niveles
Gráficamente este patrón sería similar a la
imagen.
La ventaja de utilizar tres niveles radica
esencialmente en la autonomía de los recursos
donde se encuentran el software, dedicando lo
necesario para que cada parte pueda ejecutarse
con la mayor eficiencia posible.
Además, si el software crece en cuanto a código
fuente durante el desarrollo, no habrá problemas,
el espacio ya estará organizado para ello.
Patrones de arquitectura de software
Arquitectura de microservicios y Arquitectura orientada a servicios
En el mundo del software, el desarrollo basado en servicios tiene dos
patrones arquitectónicos:
• Arquitectura de microservicios
• Arquitectura orientada a servicios
ambos se basan en el desarrollo de un software mediante servicios que
se ejecutan de manera individual, comunicándose entre ellos utilizando
código que se programa para que se ‘’llamen’’ unos a otros.
Patrones de
arquitectura de
software
Arquitectura de microservicios y Arquitectura orientada a
servicios
La diferencia está en que el primero de ellos solo se enfoca
en determinar que se desarrolle una aplicación donde cada
proceso o funcionalidad se represente por un servicio,
mientras que el segundo es un concepto más grande y
abarcador.
La arquitectura orientada a servicios no solo desarrolla la
aplicación siguiendo este método, sino que piensa el
software desde este enfoque, por lo que si la tecnología
evoluciona, será fácil mantener el sistema funcionando y
actualizado.
Patrones de
arquitectura de
software
Modelo vista controlador
La arquitectura de software basada en el patrón
Modelo-Vista-Controlador (MVC), divide el desarrollo
del sistema en conceptos.
Su objetivo es separar la lógica del negocio de la
presentación.
Pudiera parecer similar al N-Capas, pero a diferencia de
este, la lógica puede estar presente en todos los
componentes y cada componente puede comunicarse
con los demás indistintamente, sin tener que pasar por
alguno de ellos de manera obligatoria.
Patrones de arquitectura de software

Modelo vista controlador


pring ASP.NET
El MVC es muy popular
debido que es la Ruby on Rails Grails
arquitectura base de
varios marcos de trabajo ExtJS 4 Angular JS
(framework):
Laravel Zend Framework
Symfony CondeIgniter
Django Delphi
Patrones de arquitectura de software

Arquitectura de microkernel
Pasando de lo general a los especifico, un kernel o núcleo, es el nombre
que recibe la parte del sistema operativo que se encarga de manejar los
procesos que se ejecutan en la una computadora y planificar cómo usar
los recursos de esta.
Un ejemplo claro sería cuando ponemos a copiar varios archivos, el núcleo
ajusta la velocidad a la que se copian para que terminen casi al mismo
tiempo.
Este tipo de patrón de arquitectura de software se utiliza en los sistemas
para manejar errores de software o del hardware de manera
independiente, y dividendo los sistemas en secciones de forma tal que si
ocurre un fallo no se propague al resto del software.
Patrones de arquitectura de software

Arquitectura de microkernel
Sus principales ventajas son:
• La reducción de complejidad.
• La descentralización.
• Acción depuradora para el trabajo con los controladores de los sistemas
operativos.
Esto a su vez provoca que al utilizar este tipo de patrón, se sobrecargue la
memoria del equipo o que no funciones bien la integración entre las
aplicaciones.
Patrones de arquitectura de software

Arquitectura de microkernel
Así se ve este patrón,

que utilizan algunos sistemas como los que le mostramos a continuación:

AmigaOS ChorusOS Minix


SO3 Zircon AmayaOS
NeXTSTEP Amoeba AIX
Patrones de arquitectura de software

Arquitectura en pizarra
Este patrón sigue el esquema de pizarra de la vida real.
La pizarra en cuestión tiene un estado inicial, relacionado con un problema; y un
estado final que se alcanza cuando se encuentra la solución.
Para lograr el objetivo, la pizarra maneja agentes que se encargan de trabajar de
manera independiente.
Cómo funciona:
1. La pizarra escribe un conjunto de tareas para los agentes, dirigidas a diferentes
áreas dentro del software.
2. Cada agente lee en la pizarra la tarea, la ejecuta y escribe el resultado en ella.
3. Otros agentes pueden utilizar respuestas encontradas para poder resolver su tarea.
4. Al final, la pizarra alcanza la solución basada en los resultados de cada tarea
Patrones de arquitectura de software

Arquitectura en pizarra
Es importante destacar que las tareas de los agentes, y los agentes en sí, no tienen
que poseer ninguna relación.
Sin embargo, la forma de trabajar debe ser una misma lógica y los resultados
deben ser escritos de una forma común definida en el software.
¿Cuándo se utiliza? Es incorporado a software donde el problema a resolver es
demasiado complejo cognitivamente hablando, o si no se conoce bien cómo
enfrentarlo.
Aplicar este tipo de patrón, sin embargo, puede tener consecuencias negativas:
• No existe garantía de que se alcanzará una solución.
• No se conoce que tiempo de cómputo es necesario para resolver el problema.
• No ofrece traza de los pasos que se ejecutaron para encontrar la solución.
Patrones de arquitectura de software

Arquitectura en pizarra
Homologando con la vida real, un patrón de arquitectura en pizarra
funcionaría como algo así:
Patrones de arquitectura de software

Arquitectura dirigida por eventos


En un software, cualquier cambio, llamada o comportamiento puede ser
considerado como un evento.
De esta forma pueden manejarse de manera especializada cada uno de
ellos.
Y también es posible mantener vigilancia sobre procesos o acciones que
deben ser detectados y gestionados de manera eficiente.
La utilización del patrón basado en evento se utiliza para generar acciones
que son desencadenadas por un cambio de comportamiento o del estado
de un objeto de in software. Un ejemplo clásico es el manejo de
notificaciones.
Patrones de arquitectura de software

Arquitectura dirigida por eventos


Si un hacker intenta atravesar la seguridad de un software y el estado de una
funcionalidad vital para el funcionamiento de un sistema era Activo, y cambia a
Desactiva, se puede generar de manera automática la generación de medidas
para reforzar la búsqueda de posibles ataques de ciber seguridad.
Esto ocurre porque existen agentes emisores que cuando ocurre el evento lo
detectan y envían, mientras que los consumidores de eventos se encuentran
escuchando constantemente si se emite algún evento.
Cuando este último encuentra un evento nuevo, tiene la misión de ejecutar un
conjunto de acciones relacionadas con el evento ocurrido.
Este patrón se relaciona a menudo con el patrón orientado a servicios, teniendo
en cuenta que un servicio se activa por eventos, a los que se le conoce con el
nombre de disparadores.

También podría gustarte