SlideShare una empresa de Scribd logo
1 de 25
Ingeniería de Software
PATRONES GRASP
Catedrática:
Dra. Elisa Urquizo Barraza
Presenta:
Fernando Alfonso Casas De la Torre
Matricula M1713019
Instituto Tecnológico de La Laguna
Maestría en Sistemas Computacionales
INTRODUCCION
PATRONES
Los PATRONES son una descripción de un problema y su solución que recibe
un nombre y que puede aplicarse en nuevos contextos. Los patrones tienen
nombres sugerentes que ayudan a identificarlos y facilitan la comunicación.
Una adecuada asignación de responsabilidades entre objetos contribuye al
desarrollo de sistemas.
«Cada patrón describe un problema que ocurre infinidad de veces
en nuestro entorno, así como la solución al mismo, de tal modo
que podemos utilizar esta solución un millón de veces más
adelante sin tener que volver a pensarla otra vez.«
Christopher Alexander
Arquitecto estadounidense (1979)
INTRODUCCION
PATRONES
Un patrón es una descripción de un problema bien conocido, o sea de un
problema cuyas características son similares a otro el cual ya ha sido
solucionado de algún modo y que suele incluir:
• Descripción
• Escenario de Uso
• Solución concreta
• La consecuencias de utilizar este patrón (ventajas y desventajas)
• Ejemplos de implementación (analogías o similitudes)
• Lista de patrones relacionados
CARACTERISTICAS
PATRONES
Un patrón de diseño resulta ser una solución a un problema de diseño. Para
que una solución sea considerada un patrón debe poseer ciertas
características.
Características de los Patrones:
•EFECTIVIDAD: Se debe haber comprobado esto resolviendo problemas
similares en ocasiones anteriores.
•REUTILIZABLE: Es aplicable a diferentes problemas de diseño en distintas
circunstancias.
OBJETIVOS
Objetivos de los Patrones
Los patrones de diseño pretenden:
•Proporcionar catálogos de elementos reusables en el diseño de sistemas
software.
•Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y
solucionados anteriormente.
•Formalizar un vocabulario común entre diseñadores.
•Estandarizar el modo en que se realiza el diseño.
•Facilitar el aprendizaje de las nuevas generaciones de diseñadores
condensando conocimiento ya existente.
Asimismo, no pretenden:
•Imponer ciertas alternativas de diseño frente a otras.
•Eliminar la creatividad inherente al proceso de diseño.
PATRON DE DISEÑO
PATRONES EN POO
En la Ingeniería de software al realizar la POO y el Diseño Orientado a Objetos
se busca desde el inicio tener un modo metódico de resolver los problemas por
lo que se buscan patrones a fin de identificar acciones a realizar en base a las
situaciones.
Los patrones de diseño son la base para la búsqueda de soluciones a
problemas comunes en el desarrollo de software y otros ámbitos referentes al
diseño de interacción o interfaces.
En resumen, los PATRONES son una descripción de un problema y su
solución que recibe un nombre y que puede aplicarse en nuevos contextos.
Los patrones tienen nombres sugerentes que ayudan a identificarlos y
facilitan la comunicación.
PATRONES GRASP
PATRONES GRASP
Por tal motivo se usan los GRASP que son Patrones Generales De Software
Para Asignación De Responsabilidades, que es el acrónimo de "GRASP
(Object-Oriented Design: General Responsibility Assignment Software
Patterns). Aunque se considera que más que patrones propiamente dichos,
son una serie de "buenas prácticas" de aplicación recomendable en el diseño
de software.
Los patrones GRASP describen los principios fundamentales de la asignación
de responsabilidades a objetos y sirven para asignar correctamente las
responsabilidades en el diseño de POO.
Los patrones GRASP son un método de enseñanza que ayuda a entender el
Diseño de POO y aplica el análisis y diseño de objetos de un modo
sistemático, racional y explicable.
PATRONES GRASP
Los patrones GRASP dependen de la información contenida para una situación
en:
•Modelo conceptual.
•Contratos de operación
•Casos de uso real(o esencial)
•Diagramas de colaboración.
Al analizar un problema se parte de su declaración y anunciamiento por lo que
se usa la siguiente NOTACION que nos ayudara a determinar que patrón usar:
Nombre del Patrón: Experto
Solución: Asignar una responsabilidad a la clase que tiene la
información necesaria.
Problema que resuelve: ¿cuál es el principio fundamental en virtud
de lo cual asignaremos las responsabilidades a los objetos ?
Nombre del Patrón: Experto
Solución: Asignar una responsabilidad a la clase que tiene la
información necesaria.
Problema que resuelve: ¿cuál es el principio fundamental en virtud
de lo cual asignaremos las responsabilidades a los objetos ?
PATRONES GRASP
Se debe asignar al diagrama de colaboración las responsabilidades de los
objetos, para ello se sabe que en el contexto donde se deben considerar estas
responsabilidades siempre es durante la creación de estos diagramas. Los
objetos y sus responsabilidades pueden dibujarse para una mejor comprensión
y análisis.
Se deben asignar o ver las responsabilidades de las partes involucradas. Por
ejemplo:
•La clase que tiene la información necesaria para satisfacer la responsabilidad.
•Cada objeto es responsable por mantener su propia información o principio de
encapsulamiento
– Conoce y puede informar el valor de sus atributos
– Puede modificar el valor de sus atributos.
PATRONES GRASP
Para hacerlo se usa el conjunto de patrones de asignación de
responsabilidades de los objetos o patrones GRASP, estos constituyen un
apoyo para la enseñanza y el entendimiento del diseño de objetos.
Las responsabilidades se relacionan con las obligaciones de un objeto
respecto a su comportamiento.
PATRONES GRASP
Los Patrones GARSP establecen principios de diseño para la elaboración de
objetos y en un sistema orientado a objetos se encuentra que se compone de
objetos que envían mensajes a otros objetos para que lleven a cabo las
operaciones requeridas. Los diagramas de interacción describen gráficamente
estas operaciones, a partir de los objetos en interacción, que se
responsabilizan de una actividad determinada.
Se clasifican en los siguientes tipos de patrones:
Experto
Creador
Alta Cohesión
Bajo Acoplamiento
Controlador
PATRON EXPERTO
PROBLEMA: ¿Cuál es el principio fundamental en virtud del cual se asignan las
responsabilidades en el diseño orientado a objetos?
SOLUCIÓN: Asignar una responsabilidad al experto en información: la clase que cuenta
con la información necesaria para cumplir la responsabilidad.
EXPLICACIÓN: Experto es un patrón que se usa más que cualquier otro al asignar
responsabilidades; es un principio básico que suele utilizarse en el diseño orientado a
objetos. Da origen a diseños donde el objeto de software realiza las operaciones que
normalmente se aplican a la cosa real que representa, por lo que ofrece una analogía
con el mundo real.
BENEFICIOS: Con la utilización de este patrón se conserva el encapsulamiento, ya que
los objetos se valen de su propia información para hacer lo que se les pide. El
Comportamiento (de los objetos) se distribuye entre las clases que cuentan con la
información requerida, alentando con ello definiciones de clases sencillas y más
cohesivas que son más fáciles de comprender y mantener.
PATRON EXPERTO
EJEMPLO:
La responsabilidad de realizar una labor es de la clase que tiene o puede tener los datos
involucrados (atributos) . Una clase, contiene toda la información necesaria para realizar
la labor que tiene encomendada.
————
Hay que tener en cuenta que esto es aplicable mientras estemos considerando los
mismos aspectos del sistema:
• Lógica de negocio
• Persistencia a la base de datos
• Interfaz de usuario
————
No tiene sentido considerar que una clase se debe escribir a si misma en base de datos
o formatearse para presentarse en una página HTML por el hecho de poseer los datos.
Estos son elementos estructuralmente distintos y deben considerarse desde una
perspectiva distinta.
PATRON CREADOR(1)
PROBLEMA: ¿Quién debería ser responsable de crear una nueva instancia de alguna
clase?
SOLUCIÓN: Asignarle a la clase B la responsabilidad de crear una instancia de la clase
A en uno de los siguientes casos:
•B agrega los objetos A.
•B contiene los objetos A.
•B registra las instancias de los objetos A.
•B utiliza específicamente los objetos A.
•B tiene los datos de inicialización que serán trasmitidos a A cuando este objeto sea
creado (así que B es un Experto respecto a la creación de A).
•B es un creador de los objetos A.
•Si existe más de una opción, prefiera la clase B que agregue o contenga la clase A.
PATRON CREADOR(2)
EXPLICACIÓN:
El patrón Creador guía la asignación de responsabilidades relacionadas con la creación
de objetos. El propósito fundamental de este patrón es encontrar un creador que se debe
conectar con el objeto producido en cualquier evento.
BENEFICIOS:
Brinda un soporte a un bajo acoplamiento –patrón que será descrito más adelante– lo
que supone menos dependencias respecto al mantenimiento y mejores oportunidades
de reutilización.
PATRON BAJO ACOPLAMIENTO(1)
PROBLEMA:
¿Cómo dar soporte a una dependencia escasa y aun aumento de la reutilización? El
acoplamiento es una medida de la fuerza con que una clase está conectada a otras
clases, con que las conoce y con que recurre a ellas. Una clase con bajo (o débil)
acoplamiento no depende de muchas otras clases. Una clase con alto (o fuerte)
acoplamiento recurre a muchas otras. Este tipo de clases no es conveniente, ya que
presentan los siguientes problemas:
•Los cambios de las clases afines ocasionan cambios locales
•Son más difíciles de entender cuando están aisladas.
•Son más difíciles de reutilizar porque se requiere la presencia de otras clases de las que
dependen.
SOLUCIÓN:
Asignar una responsabilidad para mantener bajo acoplamiento.
PATRON BAJO ACOPLAMIENTO(2)
EXPLICACIÓN:
El bajo acoplamiento es un principio que se debe tener siempre en cuenta durante las
decisiones de diseño. Es un patrón evaluativo que el diseñador aplica al juzgar sus
decisiones de diseño. Este patrón estimula asignar una responsabilidad de modo que su
colocación no incremente el acoplamiento tanto que produzca los resultados negativos
propios de un alto acoplamiento. Soporta el diseño de clases más independientes, que
reducen el impacto de los cambios, y también más reutilizables, que acrecienten la
oportunidad de una mayor productividad. No puede considerarse en forma independiente
de otros patrones como Experto o Alta cohesión, sino que más bien ha de incluirse como
uno de los principios del diseño que influyen en la decisión de asignar responsabilidades.
BENEFICIOS:
Con el uso de este patrón los componentes no se afectan por cambios de otros
componentes, son fáciles de entender por separado y fáciles de reutilizar.
PATRON BAJO ACOPLAMIENTO(3)
EJEMPLOS:
Debe haber pocas dependencias entre las clases. Si todas las clases dependen de todas
¿cuanto software podemos extraer de un modo independiente y reutilizarlo en otro
proyecto?. Para determinar el nivel de acoplamiento de clases, son muy buenos los
diagramas de colaboración de UML.
————–
Uno de los principales síntomas de un mal diseño y alto acoplamiento es una herencia
muy profunda. Siempre hay que considerar las ventajas de la delegación respecto de la
herencia.
————–
Como ejemplo (de mal diseño), en muchos diseños Web se puede ver como se crea un
servlet base con capacidades de paginación y se hereda de él para construir los demás.
La paginación es un servicio que se podría usar en aplicaciones no Web, por lo que es
más adecuado mantener estas capacidades en clases externas.
————–
Otro ejemplo clásico se produce cuando se pasan los objetos relacionados con la capa
de presentación a la capa de negocio (HttpRequest, HttpResponse)
PATRON ALTA COHESION(1)
PROBLEMA:
¿Cómo mantener la complejidad dentro de límites manejables? En la perspectiva del
diseño orientado a objetos, la cohesión es una medida de cuan relacionadas y
enfocadas están las responsabilidades de una clase. Una alta cohesión caracteriza a las
clases con responsabilidades estrechamente relacionadas que no realicen un trabajo
enorme. Una clase con baja cohesión hace muchas cosas no afines o un trabajo
excesivo. No conviene este tipo de clases pues presentan los siguientes problemas:
•Son difíciles de comprender.
•Son difíciles de reutilizar.
•Son difíciles de conservar.
•Son delicadas: las afectan constantemente los cambios.
Las clases con baja cohesión a menudo representan un alto grado de abstracción o han
asumido responsabilidades que deberían haber delegado a otros objetos.
SOLUCIÓN:
Asignar una responsabilidad de modo que la cohesión siga siendo alta.
PATRON ALTA COHESION(2)
EXPLICACIÓN:
El patrón Alta Cohesión es la meta principal que ha de tenerse en cuenta en cada
momento en todas las decisiones de diseño. Es un patrón evaluativo que el desarrollador
aplica al valorar sus decisiones de diseño. Una clase de alta cohesión posee un número
relativamente pequeño, con una importante funcionalidad relacionada y poco trabajo que
hacer. Colabora con otros objetos para compartir el esfuerzo si la tarea es grande.
BENEFICIOS:
Con el uso de este patrón mejoran la claridad y la facilidad con que se entiende el
diseño. Se simplifican el mantenimiento y las mejoras en funcionalidad. A menudo se
genera un bajo acoplamiento. La ventaja de una gran funcionalidad soporta una mayor
capacidad de reutilización, porque una clase muy cohesiva puede destinarse a un
propósito muy específico.
PATRON ALTA COHESION(3)
EJEMPLOS:
Ejemplos de una baja cohesión son clases que hacen demasiadas cosas.
—————-
En todas las metodologías se considera la refactorización. Uno de los elemento a
refactorizar son las clases saturadas de métodos.
—————-
Ejemplos de buen diseño se producen cuando se crean los denominados “paquetes de
servicio” o clases agrupadas por funcionalidades que son fácilmente reutilizables (bien
por uso directo o por herencia).
—————-
En java, pensar en interfaces nos fuerza a que nuestros sistemas sigan los principios de
alta cohesión. P.ej. una aplicación con menos de 8 interfaces no utiliza correctamente los
conceptos de orientación a objetos.
PATRON CONTROLADOR (1)
PROBLEMA:
¿Quién debería encargarse de atender un evento del sistema? Un evento del sistema es
un evento de alto nivel generado por un actor externo; es un evento de entrada externa.
Se asocia a operaciones del sistema: las que emite en respuesta a los eventos del
sistema. Un CONTROLADOR es un objeto de interfaz no destinada al usuario que se
encarga de manejar un evento del sistema. Define además el método de su operación.
SOLUCIÓN:
Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a
una clase que represente una de las siguientes opciones:
• El “sistema” global (controlador de fachada).
• La empresa u organización global (controlador de fachada).
• Algo en el mundo real que es activo (por ejemplo, el papel de una persona) y
que pueda participar en la tarea (controlador de tareas).
• Un manejador artificial de todos los eventos del sistema de un caso de uso
(controlador de casos de uso).
NOTA: Utilice la misma clase de controlador con todos los eventos del sistema en el
mismo caso de uso.
PATRON CONTROLADOR(2)
EXPLICACIÓN:
La mayor parte de los Sistemas reciben eventos de entrada externa, los cuales
generalmente incluyen una interfaz gráfica para el usuario operado por una persona.
Otros medios de entrada son los mensajes externos o las señales procedentes de
sensores como sucede en los sistemas de control de procesos. En todos los casos, si se
recurre a un diseño orientado a objetos, hay que elegir los controladores que manejen
esos eventos de entrada. Este patrón ofrece una guía para tomar decisiones apropiadas
que generalmente se aceptan. La misma clase controlador debería utilizarse con todos
los eventos sistémicos de un caso de uso, de modo que se pueda conservar la
información referente al estado del caso.
BENEFICIOS:
Garantiza que la empresa o los procesos de dominio sean manejados por la capa de los
objetos del dominio y no por la de la interfaz. Al delegar a un controlador la
responsabilidad de la operación de un sistema entre las clases del dominio favorece la
reutilización de la lógica para manejar los procesos afines del negocio en aplicaciones
futuras.
REFERENCIAS
• UML y Patrones 2da edición. Craig Larman
• Análisis De Diseño y Patrones De Diseño. Varios autores (Claros Loayza Melicia,
Loayza Villarroel Luz, Mamani Santos Nadir, Pocoata Condori Maura)
• WIKIPEDIA
https://es.wikipedia.org/wiki/GRASP
https://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o
• Patrones de Asignacion de Responsabilidades
https://www.ecured.cu/Patrones_de_Asignaci%C3%B3n_de_Responsabilidades
• Patrones en UML. Blog «Adictos al trabajo»
https://www.adictosaltrabajo.com/tutoriales/grasp/
GRACIAS POR SU ATENCION
Presento:
Fernando Alfonso Casas De la Torre
Matricula M1713019
fernando_casas69@hotmail.com
fernando.casas@imss.gob.mx

Más contenido relacionado

La actualidad más candente

Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptxCAMILORUALES1
 
Diagrama componentes
Diagrama componentesDiagrama componentes
Diagrama componentesmarianela0393
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)marianela0393
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesjmachado614
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitosKleo Jorgee
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesCarlos Macallums
 
Lectura 3 Modelo De Analisis
Lectura 3   Modelo De AnalisisLectura 3   Modelo De Analisis
Lectura 3 Modelo De Analisisguest0a6e49
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemaUniversidad Tecnológica
 
Modelo del dominio
Modelo del dominioModelo del dominio
Modelo del dominioSCMU AQP
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionJosé Antonio Sandoval Acosta
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estadosstill01
 

La actualidad más candente (20)

Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptx
 
Diagrama de Colaboración
Diagrama de ColaboraciónDiagrama de Colaboración
Diagrama de Colaboración
 
Diagrama componentes
Diagrama componentesDiagrama componentes
Diagrama componentes
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)Diagrama de interaccion(secuencia y colaboracion)
Diagrama de interaccion(secuencia y colaboracion)
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Diagramas De Caso De Uso
Diagramas De Caso De UsoDiagramas De Caso De Uso
Diagramas De Caso De Uso
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
Patrones GRASP de tipo de bajo acoplamiento
Patrones GRASP de  tipo de bajo acoplamientoPatrones GRASP de  tipo de bajo acoplamiento
Patrones GRASP de tipo de bajo acoplamiento
 
Ejemplo rup
Ejemplo rupEjemplo rup
Ejemplo rup
 
Requerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No FuncionalesRequerimientos Funcionales y No Funcionales
Requerimientos Funcionales y No Funcionales
 
Lectura 3 Modelo De Analisis
Lectura 3   Modelo De AnalisisLectura 3   Modelo De Analisis
Lectura 3 Modelo De Analisis
 
diagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistemadiagrama de casos de uso del negocio y del sistema
diagrama de casos de uso del negocio y del sistema
 
Modelo de requerimientos
Modelo de requerimientosModelo de requerimientos
Modelo de requerimientos
 
Modelo del dominio
Modelo del dominioModelo del dominio
Modelo del dominio
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
 
Diagramas de estados
Diagramas de estadosDiagramas de estados
Diagramas de estados
 

Similar a Patrones GRASP

Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Ozzy Bull
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptxGonzaloMartinezSilve
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ikaolong
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptxGonzaloMartinezSilve
 
Patrones de Diseño en e-learning
Patrones de Diseño en e-learningPatrones de Diseño en e-learning
Patrones de Diseño en e-learningJosé Miguel Ruiz
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseñolandeta_p
 
El patrón Estrategia de diseño de software
El patrón Estrategia de diseño de softwareEl patrón Estrategia de diseño de software
El patrón Estrategia de diseño de softwaretorrubia
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Diagramas de interaccion - Cun Monteria
Diagramas de interaccion - Cun MonteriaDiagramas de interaccion - Cun Monteria
Diagramas de interaccion - Cun MonteriaAndres Macea Tirado
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POOgueritamala
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañanaale abad aguilar
 
Slideshare 2do corte, luismortell
Slideshare 2do corte, luismortellSlideshare 2do corte, luismortell
Slideshare 2do corte, luismortellforwer1223
 

Similar a Patrones GRASP (20)

Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4Uso de-patrones-de-arquitectura-capitulo-4
Uso de-patrones-de-arquitectura-capitulo-4
 
2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx2.4 DISEÑO BASADO EN PATRONES.pptx
2.4 DISEÑO BASADO EN PATRONES.pptx
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx12-150203140754-conversion-gate02.pptx
12-150203140754-conversion-gate02.pptx
 
Patrones de Diseño en e-learning
Patrones de Diseño en e-learningPatrones de Diseño en e-learning
Patrones de Diseño en e-learning
 
Introducción Patrones de Diseño
Introducción Patrones de DiseñoIntroducción Patrones de Diseño
Introducción Patrones de Diseño
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
El patrón Estrategia de diseño de software
El patrón Estrategia de diseño de softwareEl patrón Estrategia de diseño de software
El patrón Estrategia de diseño de software
 
Clase ii patrones de diseño
Clase ii patrones de diseñoClase ii patrones de diseño
Clase ii patrones de diseño
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
chuy
chuy chuy
chuy
 
Diagramas de interaccion - Cun Monteria
Diagramas de interaccion - Cun MonteriaDiagramas de interaccion - Cun Monteria
Diagramas de interaccion - Cun Monteria
 
Fundamentos de POO
Fundamentos de POOFundamentos de POO
Fundamentos de POO
 
Patrones de-diseño-mañana
Patrones de-diseño-mañanaPatrones de-diseño-mañana
Patrones de-diseño-mañana
 
Capacitacion de analista en sistema
Capacitacion de analista en sistemaCapacitacion de analista en sistema
Capacitacion de analista en sistema
 
0 todo
0 todo0 todo
0 todo
 
Slideshare 2do corte, luismortell
Slideshare 2do corte, luismortellSlideshare 2do corte, luismortell
Slideshare 2do corte, luismortell
 
Metodologia
MetodologiaMetodologia
Metodologia
 

Más de Fernando Alfonso Casas De la Torre

Congreso Internacional de Investigacion Universidad Cortazar 2018
Congreso Internacional de Investigacion Universidad Cortazar 2018Congreso Internacional de Investigacion Universidad Cortazar 2018
Congreso Internacional de Investigacion Universidad Cortazar 2018Fernando Alfonso Casas De la Torre
 
Relación universidad-gobierno: caso de remodelación de una dependencia federal
Relación universidad-gobierno:  caso de remodelación  de una dependencia federalRelación universidad-gobierno:  caso de remodelación  de una dependencia federal
Relación universidad-gobierno: caso de remodelación de una dependencia federalFernando Alfonso Casas De la Torre
 

Más de Fernando Alfonso Casas De la Torre (20)

Mi Cascarita Proyecto Colibri.ppt
Mi Cascarita Proyecto Colibri.pptMi Cascarita Proyecto Colibri.ppt
Mi Cascarita Proyecto Colibri.ppt
 
Proyecto enlace WiFi Comunidades rurales
Proyecto enlace WiFi Comunidades ruralesProyecto enlace WiFi Comunidades rurales
Proyecto enlace WiFi Comunidades rurales
 
Congreso Academy Journal Tepic 2019
Congreso Academy Journal Tepic 2019Congreso Academy Journal Tepic 2019
Congreso Academy Journal Tepic 2019
 
Academy Journal Morelia 2018
Academy Journal Morelia 2018Academy Journal Morelia 2018
Academy Journal Morelia 2018
 
Congreso Internacional de Investigacion Universidad Cortazar 2018
Congreso Internacional de Investigacion Universidad Cortazar 2018Congreso Internacional de Investigacion Universidad Cortazar 2018
Congreso Internacional de Investigacion Universidad Cortazar 2018
 
Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017Congreso Academy Journal Celaya 2017
Congreso Academy Journal Celaya 2017
 
IMSS Informatica Actividades 2014 enfriamiento de site
IMSS Informatica Actividades 2014 enfriamiento de siteIMSS Informatica Actividades 2014 enfriamiento de site
IMSS Informatica Actividades 2014 enfriamiento de site
 
Historia de las Videoconsolas
Historia de las VideoconsolasHistoria de las Videoconsolas
Historia de las Videoconsolas
 
Relación universidad-gobierno: caso de remodelación de una dependencia federal
Relación universidad-gobierno:  caso de remodelación  de una dependencia federalRelación universidad-gobierno:  caso de remodelación  de una dependencia federal
Relación universidad-gobierno: caso de remodelación de una dependencia federal
 
Teorema de Naives Bayes
Teorema de Naives BayesTeorema de Naives Bayes
Teorema de Naives Bayes
 
Analisis de incendios forestales mediante WEKA
Analisis de incendios forestales mediante WEKAAnalisis de incendios forestales mediante WEKA
Analisis de incendios forestales mediante WEKA
 
Introduccion a mineria de datos
Introduccion a mineria de datosIntroduccion a mineria de datos
Introduccion a mineria de datos
 
Patron observador
Patron observadorPatron observador
Patron observador
 
Replicación de Bases de Datos con SQL Server 2008
Replicación de Bases de Datos con SQL Server 2008Replicación de Bases de Datos con SQL Server 2008
Replicación de Bases de Datos con SQL Server 2008
 
Patron Singleton
Patron SingletonPatron Singleton
Patron Singleton
 
Incorporacion a la Seguridad Social
Incorporacion a la Seguridad SocialIncorporacion a la Seguridad Social
Incorporacion a la Seguridad Social
 
Plan de Contingencia Informatico
Plan de Contingencia InformaticoPlan de Contingencia Informatico
Plan de Contingencia Informatico
 
Contingencia Informatica
Contingencia InformaticaContingencia Informatica
Contingencia Informatica
 
Las 10 leyes de la Seguridad Informatica
Las 10 leyes de la Seguridad InformaticaLas 10 leyes de la Seguridad Informatica
Las 10 leyes de la Seguridad Informatica
 
Comercializacion de un producto
Comercializacion de un productoComercializacion de un producto
Comercializacion de un producto
 

Patrones GRASP

  • 1. Ingeniería de Software PATRONES GRASP Catedrática: Dra. Elisa Urquizo Barraza Presenta: Fernando Alfonso Casas De la Torre Matricula M1713019 Instituto Tecnológico de La Laguna Maestría en Sistemas Computacionales
  • 2. INTRODUCCION PATRONES Los PATRONES son una descripción de un problema y su solución que recibe un nombre y que puede aplicarse en nuevos contextos. Los patrones tienen nombres sugerentes que ayudan a identificarlos y facilitan la comunicación. Una adecuada asignación de responsabilidades entre objetos contribuye al desarrollo de sistemas. «Cada patrón describe un problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que podemos utilizar esta solución un millón de veces más adelante sin tener que volver a pensarla otra vez.« Christopher Alexander Arquitecto estadounidense (1979)
  • 3. INTRODUCCION PATRONES Un patrón es una descripción de un problema bien conocido, o sea de un problema cuyas características son similares a otro el cual ya ha sido solucionado de algún modo y que suele incluir: • Descripción • Escenario de Uso • Solución concreta • La consecuencias de utilizar este patrón (ventajas y desventajas) • Ejemplos de implementación (analogías o similitudes) • Lista de patrones relacionados
  • 4. CARACTERISTICAS PATRONES Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Características de los Patrones: •EFECTIVIDAD: Se debe haber comprobado esto resolviendo problemas similares en ocasiones anteriores. •REUTILIZABLE: Es aplicable a diferentes problemas de diseño en distintas circunstancias.
  • 5. OBJETIVOS Objetivos de los Patrones Los patrones de diseño pretenden: •Proporcionar catálogos de elementos reusables en el diseño de sistemas software. •Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. •Formalizar un vocabulario común entre diseñadores. •Estandarizar el modo en que se realiza el diseño. •Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente. Asimismo, no pretenden: •Imponer ciertas alternativas de diseño frente a otras. •Eliminar la creatividad inherente al proceso de diseño.
  • 6. PATRON DE DISEÑO PATRONES EN POO En la Ingeniería de software al realizar la POO y el Diseño Orientado a Objetos se busca desde el inicio tener un modo metódico de resolver los problemas por lo que se buscan patrones a fin de identificar acciones a realizar en base a las situaciones. Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. En resumen, los PATRONES son una descripción de un problema y su solución que recibe un nombre y que puede aplicarse en nuevos contextos. Los patrones tienen nombres sugerentes que ayudan a identificarlos y facilitan la comunicación.
  • 7. PATRONES GRASP PATRONES GRASP Por tal motivo se usan los GRASP que son Patrones Generales De Software Para Asignación De Responsabilidades, que es el acrónimo de "GRASP (Object-Oriented Design: General Responsibility Assignment Software Patterns). Aunque se considera que más que patrones propiamente dichos, son una serie de "buenas prácticas" de aplicación recomendable en el diseño de software. Los patrones GRASP describen los principios fundamentales de la asignación de responsabilidades a objetos y sirven para asignar correctamente las responsabilidades en el diseño de POO. Los patrones GRASP son un método de enseñanza que ayuda a entender el Diseño de POO y aplica el análisis y diseño de objetos de un modo sistemático, racional y explicable.
  • 8. PATRONES GRASP Los patrones GRASP dependen de la información contenida para una situación en: •Modelo conceptual. •Contratos de operación •Casos de uso real(o esencial) •Diagramas de colaboración. Al analizar un problema se parte de su declaración y anunciamiento por lo que se usa la siguiente NOTACION que nos ayudara a determinar que patrón usar: Nombre del Patrón: Experto Solución: Asignar una responsabilidad a la clase que tiene la información necesaria. Problema que resuelve: ¿cuál es el principio fundamental en virtud de lo cual asignaremos las responsabilidades a los objetos ? Nombre del Patrón: Experto Solución: Asignar una responsabilidad a la clase que tiene la información necesaria. Problema que resuelve: ¿cuál es el principio fundamental en virtud de lo cual asignaremos las responsabilidades a los objetos ?
  • 9. PATRONES GRASP Se debe asignar al diagrama de colaboración las responsabilidades de los objetos, para ello se sabe que en el contexto donde se deben considerar estas responsabilidades siempre es durante la creación de estos diagramas. Los objetos y sus responsabilidades pueden dibujarse para una mejor comprensión y análisis. Se deben asignar o ver las responsabilidades de las partes involucradas. Por ejemplo: •La clase que tiene la información necesaria para satisfacer la responsabilidad. •Cada objeto es responsable por mantener su propia información o principio de encapsulamiento – Conoce y puede informar el valor de sus atributos – Puede modificar el valor de sus atributos.
  • 10. PATRONES GRASP Para hacerlo se usa el conjunto de patrones de asignación de responsabilidades de los objetos o patrones GRASP, estos constituyen un apoyo para la enseñanza y el entendimiento del diseño de objetos. Las responsabilidades se relacionan con las obligaciones de un objeto respecto a su comportamiento.
  • 11. PATRONES GRASP Los Patrones GARSP establecen principios de diseño para la elaboración de objetos y en un sistema orientado a objetos se encuentra que se compone de objetos que envían mensajes a otros objetos para que lleven a cabo las operaciones requeridas. Los diagramas de interacción describen gráficamente estas operaciones, a partir de los objetos en interacción, que se responsabilizan de una actividad determinada. Se clasifican en los siguientes tipos de patrones: Experto Creador Alta Cohesión Bajo Acoplamiento Controlador
  • 12. PATRON EXPERTO PROBLEMA: ¿Cuál es el principio fundamental en virtud del cual se asignan las responsabilidades en el diseño orientado a objetos? SOLUCIÓN: Asignar una responsabilidad al experto en información: la clase que cuenta con la información necesaria para cumplir la responsabilidad. EXPLICACIÓN: Experto es un patrón que se usa más que cualquier otro al asignar responsabilidades; es un principio básico que suele utilizarse en el diseño orientado a objetos. Da origen a diseños donde el objeto de software realiza las operaciones que normalmente se aplican a la cosa real que representa, por lo que ofrece una analogía con el mundo real. BENEFICIOS: Con la utilización de este patrón se conserva el encapsulamiento, ya que los objetos se valen de su propia información para hacer lo que se les pide. El Comportamiento (de los objetos) se distribuye entre las clases que cuentan con la información requerida, alentando con ello definiciones de clases sencillas y más cohesivas que son más fáciles de comprender y mantener.
  • 13. PATRON EXPERTO EJEMPLO: La responsabilidad de realizar una labor es de la clase que tiene o puede tener los datos involucrados (atributos) . Una clase, contiene toda la información necesaria para realizar la labor que tiene encomendada. ———— Hay que tener en cuenta que esto es aplicable mientras estemos considerando los mismos aspectos del sistema: • Lógica de negocio • Persistencia a la base de datos • Interfaz de usuario ———— No tiene sentido considerar que una clase se debe escribir a si misma en base de datos o formatearse para presentarse en una página HTML por el hecho de poseer los datos. Estos son elementos estructuralmente distintos y deben considerarse desde una perspectiva distinta.
  • 14. PATRON CREADOR(1) PROBLEMA: ¿Quién debería ser responsable de crear una nueva instancia de alguna clase? SOLUCIÓN: Asignarle a la clase B la responsabilidad de crear una instancia de la clase A en uno de los siguientes casos: •B agrega los objetos A. •B contiene los objetos A. •B registra las instancias de los objetos A. •B utiliza específicamente los objetos A. •B tiene los datos de inicialización que serán trasmitidos a A cuando este objeto sea creado (así que B es un Experto respecto a la creación de A). •B es un creador de los objetos A. •Si existe más de una opción, prefiera la clase B que agregue o contenga la clase A.
  • 15. PATRON CREADOR(2) EXPLICACIÓN: El patrón Creador guía la asignación de responsabilidades relacionadas con la creación de objetos. El propósito fundamental de este patrón es encontrar un creador que se debe conectar con el objeto producido en cualquier evento. BENEFICIOS: Brinda un soporte a un bajo acoplamiento –patrón que será descrito más adelante– lo que supone menos dependencias respecto al mantenimiento y mejores oportunidades de reutilización.
  • 16. PATRON BAJO ACOPLAMIENTO(1) PROBLEMA: ¿Cómo dar soporte a una dependencia escasa y aun aumento de la reutilización? El acoplamiento es una medida de la fuerza con que una clase está conectada a otras clases, con que las conoce y con que recurre a ellas. Una clase con bajo (o débil) acoplamiento no depende de muchas otras clases. Una clase con alto (o fuerte) acoplamiento recurre a muchas otras. Este tipo de clases no es conveniente, ya que presentan los siguientes problemas: •Los cambios de las clases afines ocasionan cambios locales •Son más difíciles de entender cuando están aisladas. •Son más difíciles de reutilizar porque se requiere la presencia de otras clases de las que dependen. SOLUCIÓN: Asignar una responsabilidad para mantener bajo acoplamiento.
  • 17. PATRON BAJO ACOPLAMIENTO(2) EXPLICACIÓN: El bajo acoplamiento es un principio que se debe tener siempre en cuenta durante las decisiones de diseño. Es un patrón evaluativo que el diseñador aplica al juzgar sus decisiones de diseño. Este patrón estimula asignar una responsabilidad de modo que su colocación no incremente el acoplamiento tanto que produzca los resultados negativos propios de un alto acoplamiento. Soporta el diseño de clases más independientes, que reducen el impacto de los cambios, y también más reutilizables, que acrecienten la oportunidad de una mayor productividad. No puede considerarse en forma independiente de otros patrones como Experto o Alta cohesión, sino que más bien ha de incluirse como uno de los principios del diseño que influyen en la decisión de asignar responsabilidades. BENEFICIOS: Con el uso de este patrón los componentes no se afectan por cambios de otros componentes, son fáciles de entender por separado y fáciles de reutilizar.
  • 18. PATRON BAJO ACOPLAMIENTO(3) EJEMPLOS: Debe haber pocas dependencias entre las clases. Si todas las clases dependen de todas ¿cuanto software podemos extraer de un modo independiente y reutilizarlo en otro proyecto?. Para determinar el nivel de acoplamiento de clases, son muy buenos los diagramas de colaboración de UML. ————– Uno de los principales síntomas de un mal diseño y alto acoplamiento es una herencia muy profunda. Siempre hay que considerar las ventajas de la delegación respecto de la herencia. ————– Como ejemplo (de mal diseño), en muchos diseños Web se puede ver como se crea un servlet base con capacidades de paginación y se hereda de él para construir los demás. La paginación es un servicio que se podría usar en aplicaciones no Web, por lo que es más adecuado mantener estas capacidades en clases externas. ————– Otro ejemplo clásico se produce cuando se pasan los objetos relacionados con la capa de presentación a la capa de negocio (HttpRequest, HttpResponse)
  • 19. PATRON ALTA COHESION(1) PROBLEMA: ¿Cómo mantener la complejidad dentro de límites manejables? En la perspectiva del diseño orientado a objetos, la cohesión es una medida de cuan relacionadas y enfocadas están las responsabilidades de una clase. Una alta cohesión caracteriza a las clases con responsabilidades estrechamente relacionadas que no realicen un trabajo enorme. Una clase con baja cohesión hace muchas cosas no afines o un trabajo excesivo. No conviene este tipo de clases pues presentan los siguientes problemas: •Son difíciles de comprender. •Son difíciles de reutilizar. •Son difíciles de conservar. •Son delicadas: las afectan constantemente los cambios. Las clases con baja cohesión a menudo representan un alto grado de abstracción o han asumido responsabilidades que deberían haber delegado a otros objetos. SOLUCIÓN: Asignar una responsabilidad de modo que la cohesión siga siendo alta.
  • 20. PATRON ALTA COHESION(2) EXPLICACIÓN: El patrón Alta Cohesión es la meta principal que ha de tenerse en cuenta en cada momento en todas las decisiones de diseño. Es un patrón evaluativo que el desarrollador aplica al valorar sus decisiones de diseño. Una clase de alta cohesión posee un número relativamente pequeño, con una importante funcionalidad relacionada y poco trabajo que hacer. Colabora con otros objetos para compartir el esfuerzo si la tarea es grande. BENEFICIOS: Con el uso de este patrón mejoran la claridad y la facilidad con que se entiende el diseño. Se simplifican el mantenimiento y las mejoras en funcionalidad. A menudo se genera un bajo acoplamiento. La ventaja de una gran funcionalidad soporta una mayor capacidad de reutilización, porque una clase muy cohesiva puede destinarse a un propósito muy específico.
  • 21. PATRON ALTA COHESION(3) EJEMPLOS: Ejemplos de una baja cohesión son clases que hacen demasiadas cosas. —————- En todas las metodologías se considera la refactorización. Uno de los elemento a refactorizar son las clases saturadas de métodos. —————- Ejemplos de buen diseño se producen cuando se crean los denominados “paquetes de servicio” o clases agrupadas por funcionalidades que son fácilmente reutilizables (bien por uso directo o por herencia). —————- En java, pensar en interfaces nos fuerza a que nuestros sistemas sigan los principios de alta cohesión. P.ej. una aplicación con menos de 8 interfaces no utiliza correctamente los conceptos de orientación a objetos.
  • 22. PATRON CONTROLADOR (1) PROBLEMA: ¿Quién debería encargarse de atender un evento del sistema? Un evento del sistema es un evento de alto nivel generado por un actor externo; es un evento de entrada externa. Se asocia a operaciones del sistema: las que emite en respuesta a los eventos del sistema. Un CONTROLADOR es un objeto de interfaz no destinada al usuario que se encarga de manejar un evento del sistema. Define además el método de su operación. SOLUCIÓN: Asignar la responsabilidad del manejo de un mensaje de los eventos de un sistema a una clase que represente una de las siguientes opciones: • El “sistema” global (controlador de fachada). • La empresa u organización global (controlador de fachada). • Algo en el mundo real que es activo (por ejemplo, el papel de una persona) y que pueda participar en la tarea (controlador de tareas). • Un manejador artificial de todos los eventos del sistema de un caso de uso (controlador de casos de uso). NOTA: Utilice la misma clase de controlador con todos los eventos del sistema en el mismo caso de uso.
  • 23. PATRON CONTROLADOR(2) EXPLICACIÓN: La mayor parte de los Sistemas reciben eventos de entrada externa, los cuales generalmente incluyen una interfaz gráfica para el usuario operado por una persona. Otros medios de entrada son los mensajes externos o las señales procedentes de sensores como sucede en los sistemas de control de procesos. En todos los casos, si se recurre a un diseño orientado a objetos, hay que elegir los controladores que manejen esos eventos de entrada. Este patrón ofrece una guía para tomar decisiones apropiadas que generalmente se aceptan. La misma clase controlador debería utilizarse con todos los eventos sistémicos de un caso de uso, de modo que se pueda conservar la información referente al estado del caso. BENEFICIOS: Garantiza que la empresa o los procesos de dominio sean manejados por la capa de los objetos del dominio y no por la de la interfaz. Al delegar a un controlador la responsabilidad de la operación de un sistema entre las clases del dominio favorece la reutilización de la lógica para manejar los procesos afines del negocio en aplicaciones futuras.
  • 24. REFERENCIAS • UML y Patrones 2da edición. Craig Larman • Análisis De Diseño y Patrones De Diseño. Varios autores (Claros Loayza Melicia, Loayza Villarroel Luz, Mamani Santos Nadir, Pocoata Condori Maura) • WIKIPEDIA https://es.wikipedia.org/wiki/GRASP https://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o • Patrones de Asignacion de Responsabilidades https://www.ecured.cu/Patrones_de_Asignaci%C3%B3n_de_Responsabilidades • Patrones en UML. Blog «Adictos al trabajo» https://www.adictosaltrabajo.com/tutoriales/grasp/
  • 25. GRACIAS POR SU ATENCION Presento: Fernando Alfonso Casas De la Torre Matricula M1713019 fernando_casas69@hotmail.com fernando.casas@imss.gob.mx