Está en la página 1de 42

Arquitectura de Software

Ingeniera de Sistemas
ITM
Unidad 1. Introduccin

Introduccin
La arquitectura del software
Es un conjunto de patrones que
proporcionan un marco de referencia
necesario para guiar la construccin de
un software.

Arquitectura de Software

Introduccin
La arquitectura del software
Permite a los programadores, analistas y todo
el conjunto de desarrolladores del software
compartir una misma lnea de trabajo y cubrir
todos los objetivos y restricciones de la
aplicacin.

Arquitectura de Software

Introduccin
La arquitectura del software
Es considerada el nivel ms alto en el diseo
de la arquitectura de un sistema. Puesto que
establecen la estructura, funcionamiento e
interaccin entre las partes del software.

Arquitectura de Software

Introduccin
Patrones en el proceso de diseo del software

Los patrones de diseo de software


nacen de sus homlogos patrones en la
ingeniera civil o arquitectura de
edificaciones.
Basado en este mbito presentare un
ejemplo, del que luego se desprender
con
facilidad
el
concepto
que
representa un patrn.
Arquitectura de Software

Introduccin
Ejemplo de Patrn
Si tenemos que construir una casa en
un lugar en el cual nieva durante todo
el ao, una construccin tradicional
tendra el problema de que el peso de la
nieve acumulada en el techo horizontal
y paralelo al piso, sera tan grande que
la derrumbara.

Arquitectura de Software

Introduccin
Ejemplo de Patrn (continuacin)
Existen varias soluciones al problema
pero la ms optima y en la que
seguramente estarn pensando en este
momento es construir el techo de la
casa con una gran pendiente para que
la nieve cada se deslice por la misma y
termine en el piso de forma que nunca
se acumule sobre nuestro techo.
Arquitectura de Software

Introduccin
Ejemplo de Patrn (continuacin)

Esa solucin en la que muchos de ustedes


pensaron casi de forma automtica es un
patrn.

Arquitectura de Software

Introduccin
Ejemplo de Patrn (continuacin)
Observemos adems que la solucin o
patrn se repite infinidad de veces si
observamos un pueblo donde nieva, lo que
nos dice que la solucin es reusable y
comprobada.

Arquitectura de Software

Introduccin
Qu es un patrn de diseo del software?

Un patrn de diseo de software es una


solucin reusable y comprobada a un
problema comn en el desarrollo de
software.

Arquitectura de Software

Introduccin
Patrones de diseo en el desarrollo SW
En el desarrollo Software el patrn de
diseo describe las clases y objetos que se
comunicarn entre s de manera que
puedan resolver un problema general de
diseo en un contexto particular.

Arquitectura de Software

Introduccin
Patrones de diseo en el desarrollo SW
En un contexto informtico un patrn de
diseo es similar a conceptos como
biblioteca de clases, frameworks, tcnicas y
herramientas
de
refactorizacin
o
programacin extrema.

Arquitectura de Software

Introduccin
Patrones de diseo en el desarrollo SW
La clasificacin de los patrones de diseo en
este contexto atiende a dos caractersticas
como son:

Atendiendo a su propsito
Creacionales: Resuelven problemas relativos a la
creacin de objetos
Estructurales: Resuelven problemas relativos a
la composicin de objetos
De Comportamiento: Resuelven problemas
relativos a la interaccin entre objetos
Arquitectura de Software

Introduccin
Patrones de diseo en el desarrollo SW
La clasificacin de los patrones de
diseo en este contexto atiende a dos
caractersticas como son:
Atendiendo

a su mbito

Clases: Relaciones estticas entre clases


Objetos:
Relaciones
dinmicas
entre
objetos

Arquitectura de Software

Introduccin
Un patrn tiene cuatro elementos esenciales
1.

El nombre del patrn permite describir,


en una o dos palabras, un problema de
diseo junto con sus soluciones y
consecuencias.

Al dar nombre a un patrn inmediatamente


estamos incrementando nuestro vocabulario
de diseo, lo que nos permite disear con
mayor abstraccin.
Arquitectura de Software

Introduccin
Un patrn tiene cuatro elementos esenciales
2.

El problema describe cundo aplicar el patrn.


Explica el problema y su contexto. Puede
describir problemas concretos de diseo (por
ejemplo, cmo representar algoritmos como
objetos), as como las estructuras de clases u
objetos que son sintomticas de un diseo
inflexible.

A veces el problema incluye una serie de


condiciones que deben darse para que tenga
sentido aplicar el patrn.
Arquitectura de Software

Introduccin
Un patrn tiene cuatro elementos esenciales
3.

La solucin describe los elementos que constituyen


el diseo, sus relaciones, responsabilidades y
colaboraciones. La solucin no describe un diseo o
una implementacin en concreto, sino que un
patrn es ms bien como una plantilla que puede
aplicarse en muchas situaciones diferentes.

El patrn proporciona una descripcin abstracta de un


problema de diseo y cmo lo resuelve una disposicin
general de elementos (en nuestro caso, clases y
objetos).

Arquitectura de Software

Introduccin
Un patrn tiene cuatro elementos esenciales
4.

Las consecuencias son los resultados as como


las ventajas e inconvenientes de aplicar el
patrn. Aunque cuando se describen decisiones
de diseo muchas veces no reflejan sus
consecuencias, stas son fundamentales para
evaluar las alternativas de diseo y comprender
los costes y beneficios de aplicar el patrn.

Las consecuencias en el Software suelen referirse al


equilibrio entre espacio y tiempo. Tambin pueden
tratar cuestiones de lenguaje e implementacin.
Arquitectura de Software

Introduccin
Ejemplo de lo que podra construir un patrn de diseo

Nombre: Retroalimentacin visual de


navegacin directa.
Problema: El usuario tiene dificultades
para acceder directamente a las ventanas
del sistema informtico y desconoce cual
de entre ellas es la ventana actual de
trabajo.
Principio de usabilidad: Guiar al usuario
y dar el control de la interaccin al usuario.
Arquitectura de Software

Introduccin
Ejemplo de lo que podra construir un patrn de diseo

Contexto: Dada una gran cantidad de


informacin facilitar al usuario los medios para
navegar directamente entre las ventanas del
sistema informtico.
Fuerza: El sistema debe siempre mostrar la
lista de ventanas navegables.
Solucin: Permitir al usuario seleccionar
directamente la ventana de la interfaz y
mostrar continuamente la ventana activa y
desactivas.
Arquitectura de Software

Introduccin
Ejemplo de lo que podra construir un patrn de diseo

Consecuencias: El acceso directo a las


ventanas del sistema no solo beneficia la
manipulacin directa de ellas sino tambin
la manipulacin de los objetos que retienen
ya que cada ventana es definida en trminos
de sus objetos de interaccin (ejemplo:
iconos, tems de men, radio botones) los
cuales permiten la adquisicin y la
restitucin de informacin que requiere el
usuario.
Arquitectura de Software

Introduccin
Ejemplo de lo que podra construir un patrn de diseo

La indicacin del focus de una ventana es


una tcnica frecuentemente utilizada en la
retroalimentacin de navegacin directa.

Arquitectura de Software

Introduccin
Ejemplo de un patrn de diseo del software

De esta pequea introduccin veamos


un ejemplo real en el mbito del diseo
de software el patrn constructor o
builder pattern.

Arquitectura de Software

Introduccin
Patrn Builder Pattern
Problema que resuelve: Como hacer
para que un nico proceso de
construccin sea capas de crear
diferentes productos para que dicho
proceso nos abstraiga u oculte los
detalles constructivos particulares de
cada producto.

Arquitectura de Software

Introduccin
Patrn Builder Pattern

Dado que las definiciones abstractas


son ms difciles de comprender,
llevaremos la definicin anterior a un
ejemplo concreto del mundo real para
lograr una mayor claridad.

Arquitectura de Software

Introduccin
Patrn Builder Pattern
Como hacer para que un nico proceso
de construccin, la secuencia de
instrucciones (BuildTope(); BuildMedio();
BuildBase();), sea capas de crear
diferentes productos como ser un
cuadro, un triangulo o un rectngulo,
para que dicho proceso nos abstraiga u
oculte
los
detalles
constructivos
particulares de cada figura geomtrica
Arquitectura de Software
(producto).

Introduccin
Patrn Builder Pattern
Solucin: La solucin la ofrece el
patrn constructor o en ingles (builder
pattern), el mismo esta conformado por
una clase directora (DibujanteDirector)
que es el responsable del proceso de
construccin, es en ella donde se
encuentra la secuencia de comandos
BuildTope(); BuildMedio(); BuildBase().
Arquitectura de Software

Introduccin
Patrn Builder Pattern
Esta clase directora (DibujanteDirector)
opera utilizando una clase abstracta
(GraphicBuilder),
en
la
cual
se
encuentran definidos los prototipos o
firmas de los mtodos BuildTope();
BuildMedio(); BuildBase(); pero no su
implementacin, dicha implementacin
es responsabilidad de cada constructor
o builder concreto.
Arquitectura de Software

Introduccin
Patrn Builder Pattern

Para nuestro ejemplo, cada constructor


o builder concreto, son las clases
CuadradoBuilder, TrianguloBuilder y
RectanguloBuilder,
estas
clases
encapsulan
los
detalles
de
implementacin particulares de cada
producto.
Arquitectura de Software

Introduccin
Patrn Builder Pattern
El producto que queda construido
despus de la ejecucin del nico
proceso de construccin es un objeto de
la clase Grafico, podemos observar una
relacin de agregacin que une las
clases GraphicBuilder y la clase Grafico,
esto se debe a que la clase
GraphicBuilder esta compuesta por un
objeto del tipo Grafico.
Arquitectura de Software

Introduccin
Patrn Builder Pattern

Pero como la destruccin del objeto del


tipo
GraphicBuilder
no
implica
destruccin del objeto Grafico se trata
de una relacin de agregacin y no de
composicin, esto se simboliza con un
diamante blanco del lado de la clase
agregada.
Arquitectura de Software

Introduccin
Patrn Builder Pattern

Diagrama de Clases UML-

Arquitectura de Software

Introduccin
Documentacin de los patrones
Se han desarrollado diferentes formatos
segn las necesidades de cada dominio de
diseo, pero manteniendo su estructura
original.
En
la
literatura
podemos
encontrar
diferentes formatos para describir un patrn
segn el nivel de detalle con el que se quiera
hacer la descripcin.
Arquitectura de Software

Introduccin
Documentacin de los patrones

La siguiente plantilla da una estructura


uniforme a la informacin, haciendo que los
patrones de diseo sean ms fciles de
aprender, comparar y usar.

Arquitectura de Software

Introduccin
Documentacin de los patrones
Nombre del patrn y clasificacin
El nombre del patrn transmite sucintamente
su esencia. Un buen nombre es vital, porque
pasar a formar parte de nuestro vocabulario
de diseo. La clasificacin del patrn refleja el
esquema que veremos en la siguiente unidad
Los patrones de diseo en el desarrollo de
software.

Arquitectura de Software

Introduccin
Documentacin de los patrones
Propsito
Una frase breve que responde a las siguientes
cuestiones:
Qu hace este patrn de diseo?
En qu se basa?
Cul es el problema concreto de diseo que
resuelve?

Arquitectura de Software

Introduccin
Documentacin de los patrones
Tambin conocido como
Otros nombres, si existen, por los que se
conoce al patrn.

Motivacin
Un escenario que ilustra un problema de
diseo y cmo las estructuras de clases y
objetos del patrn resuelven el problema. El
escenario ayudar a entender la descripcin
que sigue.
Arquitectura de Software

Introduccin
Documentacin de los patrones
Aplicabilidad
En qu situaciones se puede aplicar el patrn de
diseo? Qu ejemplos hay de malos diseos que el
patrn puede resolver? Cmo se puede reconocer
dichas situaciones?

Estructura
Una representacin grfica de las clases del patrn
usando una notacin basada en la Tcnica de
Modelado de Objetos. Se hace uso de diagramas de
interaccin para mostrar secuencias de peticiones y
colaboraciones entre objetos.
Arquitectura de Software

Introduccin
Documentacin de los patrones
Participantes
Las clases y objetos participantes en el patrn
de diseo, junto con sus responsabilidades.

Colaboraciones
Cmo colaboran los participantes para llevar a
cabo sus responsabilidades.

Arquitectura de Software

Introduccin
Documentacin de los patrones
Consecuencias
Cmo consigue el patrn sus objetivos?
Cules son las ventajas e inconvenientes y
los resultados de usar el patrn? Qu
aspectos de la estructura del sistema se
pueden modificar de forma independiente?

Arquitectura de Software

Introduccin
Documentacin de los patrones
Implementacin
Cules son las dificultades, trucos o tcnicas
que deberamos tener en cuenta a la hora de
aplicar el patrn? Hay cuestiones especficas
del lenguaje?

Cdigo de ejemplo
Fragmentos de cdigo que muestran cmo se
puede implementar el patrn.
Arquitectura de Software

Introduccin
Documentacin de los patrones
Usos conocidos
Ejemplos del patrn en sistemas reales. Se
incluyen al menos dos ejemplos de diferentes
dominios.

Patrones relacionados
Qu patrones de diseo estn estrechamente
relacionados con ste? Cules son las
principales diferencias? Con qu otros
patrones debera usarse?
Arquitectura de Software

También podría gustarte