Professional Documents
Culture Documents
Eva M Castro
Motivacio n
El diseno orientado a objetos es un arte ma s que una ciencia.
Habilidad, talento. Experiencia. Creatividad, imaginaci o n.
Arquitectura
Christopher Alexander:
El mismo enfoque de leyes determina la estructura de una ciudad, un edificio o de una habitaci o n.
Patro n
A solution to a problem in a context'
Solucio n a un problema en un contexto particular. Recurrente. Ensena, permite adaptarlo a una variante particular del problema. Tiene un nombre.
Reutilizacio n de disenos y arquitecturas que han tenido e xito. Establece un nivel m a s alto de programaci o n.
Elementos de un Patro n
Nombre: vocabulario de diseno. Problema: cuando aplicar un patro n. Solucio n: descripcio n abstracta del diseno. Consecuencias: costes y beneficios.
Granularidad del los objetos. Definicio n de interfaces (operaciones que realiza un objeto).
INTERFAZ != IMPLEMENTACIO N (Dynamic binding)
Implementacio n de un objeto.
Creador Instancia
rectangulo
Disenando
Aplicacio n
Encapsular y aislar partes:
Reutilizacio n de co digo. Mantenimiento.
Toolkit
Conjunto de clases de prop o sito general que permiten la reutilizacio n (librer a nivel de abstracci o n menor) Evitan recodificacio n: listas, diccionarios...etc
Framework
Conjunto de clases que permiten realizar dise nos con un propo sito espec fico. Establecen una forma de trabajo, la arquitectura.
TIPOS DE PATRONES:
Segun propo sito:
De creacio n (inicializacio n y configuracio n de objetos) Estructurales (desacoplan interfaz e implementacio n) De comportamiento (algoritmos, responsabilidades) Segun a mbito: De clases (herencia: relaciones est a ticas entre clases) De objetos (delegar en otro objeto: relaciones din a micas
entre objetos)
De Clase
De Creacio n
Factory method
De Objeto
Abstract factory, builder, prototype, singleton Adapter, bridge, composite, decorator, facade, flyweight, proxy Chain of responsability, command, iterator, interpreter, memento, observer, mediator, state, estrategy, visitor
Estructural
Design Patterns: Elements of Reusable Object-Oriented Software The Gand of Four (GoF)
De creacio n
Abstract factory
Factor a para construir familias de objetos.
Builder
Separar construccio n de representacio n.
Factory method
Las subclases determinan la clase a instanciar.
Prototype
Clonar ejemplares copiando de un prototipo.
Singleton
So lo hay un objeto de esa clase.
Abstract factory
Builder
Singleton
class class singleton_t singleton_t {{ public: public: static static singleton_t singleton_t *instance(void); *instance(void); void doSomething(int); void doSomething(int); protected: protected: singleton_t(); singleton_t(); private: private: static static singleton_t singleton_t *sInstance; *sInstance;
}; };
Adapter Bridge
Estructural
Convierte una interfaz en otra deseada (Wrapper). Desacoplar una abstracci o n de su implementaci o n.
Composite
Igual tratamiento a objetos individuales y a grupos.
Decorator
Extensio n de un objeto, transparentemente.
Facade
Simplifica la interfaz para un subsistema.
Flyweight
Compartir objetos de granularidad fina eficientemente.
Proxy
Un objeto aproxima a otro.
De comportamiento
Chain of responsability
Permitir que m a s de un objeto sea capaz de atender una petici o n.
Command
Encapsula una peticio n como un objeto.
Interpreter
Inte rprete de lenguaje para una gram a tica sencilla.
Iterator
Acceso secuencial a elementos de una agregaci o n.
Mediator
Coordina las relaciones entre sus asociados.
Memento
Captura el estado de un objeto y lo restaura posteriormente.
De comportamiento
Observer
Notificaciones de cambios de estado en un objeto.
State
Objeto cuyo comportamiento depende de un estado.
Strategy
Seleccio n de un algoritmo.
Template method
Algoritmo con varios pasos suministrados por una clase derivada.
Visitor
Operaciones aplicadas a elementos de una estructura de objetos heterog e nea.
Antipatro n
Antipatro n <-> Refactored solution
Antipatro n: mala solucio n pero atractiva para un problema. Refactored solution: invierte los efectos del antipatro n.
Clasificacio n de antipatrones:
De desarrollo software (programadores). De arquitectura software (estructura del sistema). De gestio n de proyectos software (gente de
todos los roles del software).
1. Antipatrones de desarrollo
The Blob:
Una clase que lo hace todo, el resto de las clases s o lo contienen datos. Las responsabilidades deber an distribuirse uniformemente.
HojaDeDibujo NuevoDibujo EditaFigura ImprimeDibujo GiraFigura GuardaDibujo CopiaFigura CambiaCoordsFig MueveFigura ... TamanoDibujo ColorDeFondo ...
Figura TipoFigura Figura Tipo Coordenadas Tipo Coordenadas Relleno Coordenadas Relleno Relleno Borde Borde ......Borde
...
1. Antipatrones de desarrollo
The Blob:
Una clase que lo hace todo, el resto de las clases s o lo contienen datos. Las responsabilidades deber an distribuirse uniformemente.
HojaDeDibujo NuevoDibujo EditaFigura ImprimeDibujo GiraFigura GuardaDibujo CopiaFigura CambiaCoordsFig MueveFigura ... TamanoDibujo ColorDeFondo ...
Figura TipoFigura Figura Tipo Coordenadas Tipo Coordenadas Relleno Coordenadas Relleno Borde Relleno Borde ......Borde
...
10
1. Antipatrones de desarrollo
Lava Flow:
Co digo muerto y escasa informaci o n de dise no no permiten realizar cambios. Alguien escribi o esa parte del c o digo pero se fue el mes pasado y no dej o documentacio n. Cuando hab a que cambiar algo, siempre lo hac a e l
Functional Descomposition:
Co digo no OOD implementado en un OOPL. Necesaria reingenier a.
Poltergeists:
Clases y asociaciones que no hacen nada, s o lo anaden sobrecarga y complejidad innecesaria. Afecta al rendimiento del sistema.
1. Antipatrones de desarrollo
Golden hammer
El mismo concepto se aplica de forma obsesiva para cualquier
problema. Es necesario proporcionar formaci o n para aplicar nuevas soluciones, tiene riesgos.
Spagheti code:
Software muy a medida (ad-hoc) es dif cil de extender y optimizar. Resultado de la inexperiencia y de los desarrollos r a pidos.
11
1. Mini-Antipatrones de desarrollo
Ambiguos Viewpoint Boat Anchor
Se compra tecnolog a muy costosa, no se usa.
Continuous Obsolescence
La tecnolog a cambia muy ra pidamente, versiones incompatibles, los programadores no pueden estar al d a. Interfaces estables.
Dead End
Actualizar un componente reusable aunque nadie lo utilice puede ser complicado.
2. Antipatrones de arquitectura
Stovepipe enterprise:
aislamiento en la empresa, no se conocen los desarrollo paralelos.
Stovepipe system:
aislamiento entre sistemas, no pueden operar.
Vendor Lock-In:
Arquitectura dependiente de un fabricante, los productos de diferentes fabricantes no suelen ser compatibles. Capa para aislar esa dependencia.
Architecture by implication:
No existe documentacio n de la arquitectura del sistema.
12
2. Antipatrones de arquitectura
Design by committee:
Complejo, mucha documentaci o n, proceso de dise no lento... Un camello es un caballo dise nado por un comite .
2. Mini-Antipatrones de arquitectura
Auto-Generated Stovepipe:
Migrar a un sistema distribuido.
Intellectual Violence
Intimidacio n por referencias oscuras.
Jumble
Interfaces dif ciles de usar (horizontal-vertical)
Wolf Ticket
13
3. Antipatrones de gestio n
Analysis paralysis:
Ana lisis tan completo que nunca termina, el proyecto muere en la fase de an a lisis. El proceso de desarrollo deber a ser incremental e iterativo.
Death by planning:
Excesiva preplanificaci o n. Los procesos de planificaci o n deber an ser incrementales e iterativos.
3. Antipatrones de gestio n
Corncob:
Personas dif ciles obstruyen y desv an en proceso de desarrollo.
Irrational management:
La falta de decisi o n puede generar decisiones de facto y desarrollos de emergencia.
Project mismanagement.
So lo apagando fuegos, no se cuida el dise no, so lo implementaci o n
14
3. Mini-Antipatrones de gestio n
Blowhard Jamboree Email is Dangerous
Email es un medio de comunicaci o n vola til.
Fear of Success
Miedo al fin del proyecto. Fijar el fin es dif cil.
Viewgraph Engineering
Somos capaces de venderlo pero y de hacerlo?
Warm Bodies
http://sern.ucalgary.ca/ ~cmcphee/SENG693/Antipatterns.html
15