Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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)
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?
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
Arquitectura de Software
Introduccin
Un patrn tiene cuatro elementos esenciales
1.
Introduccin
Un patrn tiene cuatro elementos esenciales
2.
Introduccin
Un patrn tiene cuatro elementos esenciales
3.
Arquitectura de Software
Introduccin
Un patrn tiene cuatro elementos esenciales
4.
Introduccin
Ejemplo de lo que podra construir un patrn de diseo
Introduccin
Ejemplo de lo que podra construir un patrn de diseo
Introduccin
Ejemplo de lo que podra construir un patrn de diseo
Introduccin
Ejemplo de lo que podra construir un patrn de diseo
Arquitectura de Software
Introduccin
Ejemplo de un patrn de diseo del software
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
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
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
Introduccin
Patrn Builder Pattern
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
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