patrones de diseÑo proceso de construcciÓn de software 2 grupo 2: los patrones
TRANSCRIPT
![Page 1: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/1.jpg)
PATRONES DE DISEÑO
PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2
GRUPO 2: LOS PATRONES
![Page 2: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/2.jpg)
PARTE 1: CONCEPTOS INICIALES
• Antecedentes
• Contexto Actual
• Patrones de diseño
• Aportes de los patrones
• Tipos de Patrones
• Antipatrones
![Page 3: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/3.jpg)
ANTECEDENTES
• Particularidades de la ingeniería.
• Costumbres y “supersticiones”.
• Conocimiento intuitivo.
• El “maestro de obra” vs. El “ingeniero”.
• “Using Pattern Languages for OO Programs” (1987)
• The Gang of Four.
![Page 4: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/4.jpg)
CONTEXTO ACTUAL: INFORMÁTICA
• Disciplina joven.
• Casos de fracaso.
• Estadísticas negativas.
• Mejoras en los últimos años.
![Page 5: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/5.jpg)
PATRONES DE DISEÑO
• “Una solución probada que se puede aplicar con éxito a determinado tipo de problemas que aparecen repetidamente en un algún campo”.
• Una abstracción.
• Un planteamiento.
![Page 6: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/6.jpg)
APORTES DE LOS PATRONES
• Da un conjunto de elementos reusables.
• Catálogo de soluciones a problemas enfrentados exitosamente.
• Brinda un lenguaje común.
• Aporta una base de conocimiento.
![Page 7: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/7.jpg)
TIPOS DE PATRONES
Patrones creacionales
Patrones estructurales
Patrones de comportamiento
![Page 8: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/8.jpg)
ANTIPATRONES
Código “Spaguetti”
The Blob
Cortar y pegar
![Page 9: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/9.jpg)
Teoría => Aplicación
![Page 10: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/10.jpg)
PARTE 2: PATRONES EN TECNOLOGÍAS DE
DESARROLLO
![Page 11: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/11.jpg)
TECNOLOGÍA JAVA
• Planteamiento de soluciones optimas.
• Reutilización de soluciones anteriores satisfactorias.
• Abstraer las soluciones para ampliar su aplicación.
• Los patrones abarcan todas las etapas de desarrollo de Software.
![Page 12: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/12.jpg)
TECNOLOGÍA JAVA
• J2EE es una plataforma de programación para desarrollar y ejecutar aplicaciones hechas en Java.[JAVA1]
• J2EE presenta una arquitectura de N niveles distribuida, basándose en componentes de software modulares ejecutándose sobre un servidor de aplicaciones.[JAVA1]
![Page 13: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/13.jpg)
TECNOLOGÍA JAVA
• Cinco capas:
http://www.javaworld.com/columns/jw-java-design-patterns-index.html
![Page 14: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/14.jpg)
TECNOLOGÍA JAVA
Capa de Presentacion• Decorating Filter / Intercepting Filter.• Front Controller/ Front Component.• View Helper.• Composite view.• Service To Worker.• Dispatcher View.
![Page 15: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/15.jpg)
TECNOLOGÍA JAVA
Decorating Filter• Maneja varios tipos de peticiones que requieren
un procesamiento determinado.• Aplicado a procesos de validación de Session.• Elimina las comprobaciones mediante filtros
concatenados.
![Page 16: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/16.jpg)
TECNOLOGÍA JAVA
• A continuación se muestra el esquema de funcionamiento del patrón Decorating Filter.
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
![Page 17: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/17.jpg)
TECNOLOGÍA JAVA
Capa de Lógica del Negocio• Business Delegate • Value Object Assembler.• Value List Handler/ Page-by-Page Iterator/
Paged List.• Service Locator.
![Page 18: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/18.jpg)
TECNOLOGÍA JAVA
Business Delegate• Un objeto de la capa de presentacion llama a
métodos remotos de los objetos de la capa del negocio.
• Búsqueda de elementos del negocio ( Lookup)• Llamada al servicio requerido.
![Page 19: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/19.jpg)
TECNOLOGÍA JAVA
• A continuación se muestra el esquema de funcionamiento del patrón Business Delegate.
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
![Page 20: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/20.jpg)
TECNOLOGÍA JAVA
Capa de Integración• Data Access Object.• Service Activator.
![Page 21: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/21.jpg)
TECNOLOGÍA JAVA
Data Access Object• Consiste en utilizar un objeto como media de
acceso a un Data Source (base de datos, sistema de archivos, etc.)
• Abstrae y encapsula las operaciones relacionadas con el tratamiento de la base de datos.
![Page 22: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/22.jpg)
TECNOLOGÍA JAVA
• A continuación se muestra el esquema de funcionamiento del patrón Data Access Object:
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
![Page 23: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/23.jpg)
TECNOLOGÍA PHP
• PHP5 2004 es la primera versión que soporta la POO.
• Debemos considerar que muchos patrones de negocio trabajan muy bien con lenguajes cuya aplicación se procesa en tiempo de ejecución.
• PHP no trabaja de esta manera. Por cada solicitud, o interacción con el usuario, un nuevo script es solicitado, por lo tanto, algunos patrones deben ser tratados con más cuidado.
![Page 24: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/24.jpg)
TECNOLOGÍA PHP[A pattern] is a solution to a problem in a context.
-The Gang of Four, Design Patterns: Elements of Reusable Object-Oriented Software
Patrones de diseño
•Patrón Singleton: clase especial que genera un y sólo un instancia del objeto.
•Patrón Abstract Factory: agrupa la creación de productos (objetos) con funcionalidades relacionadas.
![Page 25: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/25.jpg)
TECNOLOGÍA PHPIn the world of software, a pattern is a tangible manifestation of an organization’s tribal.
-Grady Brooch in Core J2EE Patterns
Patrón Singleton
Preferencias
-instancia
-_constructor()+getInstancia()+setProperty(clave: String, valor: String)+getProperty(clave: String)
<<creates>>
if(vacio(self::$instancia)){ self::$instancia = new Preferencias();}return self::$instancia;
![Page 26: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/26.jpg)
TECNOLOGÍA PHPIn the world of software, a pattern is a tangible manifestation of an organization’s tribal.
-Grady Brooch in Core J2EE Patterns
Patrón Singleton
Class Preferencias {private $props = array();private static $instancia;
private function _constructor() { }
public static function getInstacia(){if (vacio(self::$instancia)){
self::$instacia = new Preferencias();
}return self::$instancia;
}
public function setProperty($clave, $valor) {$this->props[$key] = $valor;
}
public function getProperty($key){return $this->props{$key];
}}
![Page 27: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/27.jpg)
TECNOLOGÍA PHP
Patrón Abstract Factory Mar
MarteMar TierraMar
Plano
Bosque
MartePlano TierraPlano
MarteBosque TierraBosque
TerrenoFactory
+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque
TierraTerrenoFactory
+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque
MarteTerrenoFactory
+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque
![Page 28: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/28.jpg)
TECNOLOGÍA .NET
• 3 categorías
- Patrones Creacionales.
- Patrones Estructurales.
- Patrones de Comportamiento.
![Page 29: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/29.jpg)
TECNOLOGÍA .NET
Patrones Creacionales• Abstract factory.• Builder.• Singleton.
Patrones Estructurales• Facade.• Composite.
![Page 30: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/30.jpg)
TECNOLOGÍA .NET
Patrones de Comportamiento• Observer.• Iterator.• Proxy.
![Page 31: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/31.jpg)
TECNOLOGÍA .NET
Patrón facadeconsiste en simplificar el acceso a un conjunto de clases proporcionando una única clase que todos utilizaran para interactuar con ellas.[NET1]
http://corengine.files.wordpress.com/2009/04/facade1.gif
![Page 32: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/32.jpg)
TECNOLOGÍA .NET
Ejemplostatic void Main() { // Facade Mortgage mortgage = new Mortgage(); // Evaluate mortgage eligibility for customer Customer customer = new Customer("Ann McKinsey"); bool eligible = mortgage.IsEligible(customer, 125000); Console.WriteLine("\n" + customer.Name + " has been " + (eligible ? "Approved" : "Rejected")); Console.ReadKey(); } }
![Page 33: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/33.jpg)
TECNOLOGÍA .NET// Subsistema de Clase Aclass Bank { public bool HasSufficientSavings(Customer c, int amount) { Console.WriteLine("Check bank for " + c.Name); return true; } } // Subsistema de Clase B class Credit { public bool HasGoodCredit(Customer c) { Console.WriteLine("Check credit for " + c.Name); return true; } }
![Page 34: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/34.jpg)
TECNOLOGÍA .NET// Subsistema de Clase C class Loan { public bool HasNoBadLoans(Customer c) { Console.WriteLine("Check loans for " + c.Name); return true; } } // Cliente class Customer { private string _name; …….. }
![Page 35: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/35.jpg)
TECNOLOGÍA .NET class Mortgage { private Bank _bank = new Bank(); private Loan _loan = new Loan(); private Credit _credit = new Credit(); public bool IsEligible(Customer cust, int amount) { Console.WriteLine("{0} applies for {1:C} loan\n",cust.Name, amount); bool eligible = true; if (!_bank.HasSufficientSavings(cust, amount)) { eligible = false; } else if (!_loan.HasNoBadLoans(cust)) { eligible = false; } else if (!_credit.HasGoodCredit(cust)) { eligible = false; } return eligible; } }}
![Page 36: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/36.jpg)
CONCLUSIONES
• Interoperabilidad de los patrones.• Mejor aprovechamiento de las características la
POO.• Necesidad de revisión continua de la aplicación
de patrones de diseño.
![Page 37: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES](https://reader035.vdocumento.com/reader035/viewer/2022062520/5665b47c1a28abb57c91e426/html5/thumbnails/37.jpg)
Referencias
• [JAVA1] http://www.java.com/es/ - Sitio Web Oficial de Sun Microsystems en ingles (visitado el 13/09/2010)
• [NET1]http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf - Patron Facade (visitado el 15-09-10)