Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mayo 2006
Introduccin
l
El problema:
l
l l
Tenemos que transformar especificaciones e ideas en software. Para ello usamos metodologas de desarrollo. Todas implican pensar primero en el problema para comprenderlo (Analizarlo).
Hasta ahora
l
Pero una vez dividido hay que construir, idear, inventar, crear la solucin.
Para crear una solucin en el mejor de los casos se proponen tcnicas tradicionales para la creacin:
l l
l l l
Brainstorming (Tormenta de ideas). Lateral thinking. (Frase radicales para cambiar el enfoque del problema) Mtodo delphi (Varios expertos) Ensayo y error (sic) Imaginacin (sic sic)
Developed by Ignacio Gonzlez Mayo 2006 4
Podemos tener un mtodo de creacin estandarizado y sistemtico? Volver creativo a cualquier ingeniero?
Buscando, buscando
l
Anlisis de la innovacin como mecanismo psicolgico (problema de la inercia psicolgica). Anlisis Axiomtico (heursticos) (no es una teora emprica) Systematic approach of Pahl and Beitz(tampoco es emprica) TRIZ (Theory of Inventive problem solving)
Developed by Ignacio Gonzlez Mayo 2006 6
TRIZ
l
Presencia de una teora emprica que cataloga los avances en las patentes mediante cuarenta principios. Propone luego un mtodo, un proceso, con su algoritmo, para la creacin e invencin de nuevas soluciones en productos que necesitan una mejora.
TRIZ explicado
l
l l l l l
Se basa en analizar ms de un milln de patentes. Extrae 39 parmetros de ingeniera. Extrae 40 Principios inventivos. El concepto de contradiccin. Matriz de Contradicciones El algoritmo de la innovacin Cmo aplicarlo
Developed by Ignacio Gonzlez Mayo 2006 8
Explicando TRIZ
l
http://www.mazur.net/triz
TRIZ en el Software
l
Hasta ahora [1][2][3][4] TRIZ ha sido utilizado para realizar algunos exmenes de avances realizados dentro de la ingeniera del software. Sin embargo, todava no ha sido propuesta una generalizacin de su uso en la Ingeniera de software, y tampoco en la ingeniera Web. El problema radica en buscar la escala correcta para aplicarlo: Hasta ahora enfoques demasiado generales (problema goto-less[5], o cmo conseguir aplicaciones ms rpidas[6])
Developed by Ignacio Gonzlez Mayo 2006 10
Dentro de los sistemas de software y no sobre sistemas de software. Para ello debemos establecer relaciones entre las matrices de TRIZ y los patrones que han sido encontrados.
11
Y en el software, cmo?
l
l l
Los 40 principios son patrones para disear inventando. Nosotros tenemos patrones de software. Podramos crear una matriz parecida para la invencin del software? Si lo logramos tenemos:
UN MTODO SISTEMTICO PARA REALIZAR EL CLCULO INVENTIVO O CREATIVO DEL ANLISIS Y DISEO DE SOFTWARE
Developed by Ignacio Gonzlez Mayo 2006 12
En el fondo una vez identificados los requisitos, la creacin de un programa es resolver la contradiccin de esos requisitos contra la tecnologa existente. Escoger lenguaje, algoritmos, y patrones para la solucin del problema. POR TANTO: Podramos especializar el algoritmo de invencin para generar la parte inventiva anlisis y diseo de software.
Developed by Ignacio Gonzlez Mayo 2006 13
ARIZ
l
l l l
l l
Algoritmo para la solucin de problemas de tipo inventivo: 1. Formula el problema. 2. Transforma el problema en un modelo. 3. Analiza el modelo (desde la perspectiva de TRIZ). 4. Resuelve las contradicciones fsicas. 5. Formula una solucin ideal.
Developed by Ignacio Gonzlez Mayo 2006 14
Su-Field Analysis Anticipatory Failure Determination (AFD) Directed Product Evolution (DPE) Quality Function Deployment (QFD),
15
El algoritmo especializado para el SW es el mismo, salvo que los 40 principios, son sustituidos all donde es posible por los patrones de software de la tabla anexa. Importante tanto los patrones como los principios, se han detectado empricamente lo cual extrae un valor que otras tcnicas de diseo no van a tener.
Developed by Ignacio Gonzlez Mayo 2006 16
Identificar el problema
l
Debemos ver cuales son las cosas que queremos que el sistema haga. Debemos identificar que ocurrir para hacerlas con la tecnologa que hayamos escogido. (el software) Ej.: Aumentar el nmero de usuarios concurrentes para una aplicacin. NOTA: Este
ejemplo es simple, y no representa todava el caso de revisar el software desde dentro sin embargo lo usamos porque tiene mayor valor pedaggico.
17
Ej.: Si tenemos ms usuarios concurrentes, implica sistemas ms complejos. Pero queremos programarlos ms rpido, luego deberan ser ms simples: HAY UNA CONTRADICCIN.
18
19
Miramos en la matriz de contradicciones con el parmetro 36 en el eje de las x(efecto indeseado) y el 32 en el de las Ys (caracterstica a mejorar). Extraemos los siguientes principios para resolver el problema:
l
20
26, 27, 1.
l
26 Copying (Use simpler and inexpensive copies) 27 Dispose (Use multiple inexpensive objects) 1 Segmentation (Dividing an object into independent parts, Make an object modular, Increase the degree of fragmentation)
21
Proof-concept
l l
Las recomendaciones dirigen claramente hacia donde investigar. En realidad, la programacin estructurada, la orientacin a objetos, los aspectos, son todas mejoras que buscan lograr estos objetivos. Podemos predecir, que aquellas otras mejoras que trabajen en esta direccin sern igualmente exitosas (coincide con la evolucin de los sistemas que se desprende del anlisis de los avances tecnolgicos)
Developed by Ignacio Gonzlez Mayo 2006 22
Los sistemas pueden verse como cajas blancas, y entonces TRIZ puede realizar mejoras en los subsistemas (no hay restriccin a la hora de aplicarlo) Por tanto deberamos poder usarlo dentro de los diagramas de anlisis y diseo de aplicaciones. Tambin de las aplicaciones Web.
Developed by Ignacio Gonzlez Mayo 2006 23
Si existen patrones de diseo de productos, y existen patrones de diseo de software: podemos establecer una transformacin de categoras y por tanto obtener nuevos patrones de software desde los patrones de productos? Y si esto es as, tendramos una nueva matriz de TRIZ especializada para el software?
Developed by Ignacio Gonzlez Mayo 2006 24
Existe algn patrn de diseo de producto que sea ya patrn de software o viceversa? S, el principio 7 nesting y el patrn wrapper son un ejemplo. Pero hemos desarrollado otros 28 ejemplos ms (ver ms adelante) Estamos en el camino correcto?
Developed by Ignacio Gonzlez Mayo 2006 25
Primeros resultados:
l
Los siguientes principios pueden transformarse en los siguientes patrones de software (ver siguiente)
26
Lista de conversiones
40 principios.xls
27
Pero lo ms importante, donde no hemos encontrado patrones, hay un hueco que podra cubrir un nuevo patrn. El estudio emprico de sistemas fsicos permite avanzar en la investigacin de patrones (tiene sentido en trminos de Teora de Categoras).
28
Pre-load pattern (ejemplo: Precarga de las matrices de anlisis sintctico) Auto pattern ( ejemplo: actualizacin automtica del propio software, antivirus, firefox, etc) Reestructurator pattern (cambiar su propia configuracin) SON EN GENERAL REFLECTIVOS, DONDE LA INVESTIGACIN NO EST MUY DIFUNDIDA.
29
Ahora la tabla de 40 principios, se amplia mediante patrones. Podramos entonces buscar los principios a aplicar a nuestro software e intentar aplicar el patrn. Un heurstico para aplicar patrones? Respondemos a la pregunta: dnde aplicar un patrn de manera sistemtica?
30
Se propone usarlo en las fases de Anlisis y diseo del Proceso unificado de desarrollo de UML (que es el ms estndar).
l
Si bien, otras metodologas en espiral, giles, extremas, etc debera beneficiarse en cierta medida tambin del mismo mtodo (es suficientemente general)
Pero tambin en Refactoring (de hecho en refactoring debera tener MUCHO sentido) Para Optimizar aplicaciones (en el fondo es refactorizar) Repitindonos: En general all donde necesitemos una solucin novedosa
32
El enfoque ahora nos debera permitir una vez encontremos una contradiccin en una aplicacin Web, resolverla mediante TRIZ. Tampoco nada impide realizar todo el anlisis mediante TRIZ. Surge la pregunta: Sucesivas iteraciones sobre los requisitos llegarn a una anlisis correcto? Esto quedar para estudios posteriores.
Developed by Ignacio Gonzlez Mayo 2006 33
Sin embargo, seguramente un diseo tradicional, en el que TRIZ resuelva las partes que necesiten creatividad sea la opcin ms razonable. As resolveramos el anlisis y diseo de maneras bien conocidas, y centraramos la computacin triz en los problemas no resueltos todava (o resueltos de forma no tan ptima)
Developed by Ignacio Gonzlez Mayo 2006 34
Si queremos mejorar una aplicacin web para ventas, en concreto: queremos mejorar su usabilidad.
35
Identificar la contradiccin
l
Si queremos hacer algo ms usable invertimos ms tiempo en fabricarlo al principio, tenemos una productividad menor. Por tanto tenemos una contradiccin. Se tratara de conseguir que sea ms usable pero no ms complejo de fabricar.
36
37
Buscando en la matriz no nos devuelve ningn principio. Luego parece que no es posible mejorar la usabilidad sin que se vuelva ms complejo de fabricar.
38
Si queremos mejorar una aplicacin web para ventas, en concreto: queremos mejorar su rendimiento (velocidad de ejecucin).
39
Identificar la contradiccin
l
Si queremos hacer algo ms rpido, en general en la informtica implica que consume ms recursos. Por tanto tenemos una contradiccin. Se tratara de conseguir que sea ms rpido pero que no consuma ms recursos.
40
41
8 Counterweigth
l
15 Dinamics
l
42
35 Transformation properties
l
43
Equivalencias:
l
l l l
8 Counterweigth No identificamos patrn de software a aplicar 15 Dinamics Decorator, Extensibility 35 Transformation properties Strategy pattern 38 Accelerated oxidation Cache managment pattern
44
Aplicar los patrones implica refactorizar el cdigo (pero esta tarea de aplicar patrones sabemos que es posible). Aunque queda fuera del alcance del documento.
45
El resultado
l l
Un sistema con los patrones Decorator, Extensibility, cache managment y Strategy es ms rpido? Normalmente los patrones strategy y cache managment suelen aplicarse para mejorar el rendimiento de una aplicacin con lo que parece que estamos en el buen camino. El patrn Decorator y el Extensibility aaden caractersticas una vez la aplicacin est funcionando. En el fondo es una carga dinmica de datos. Y si hubisemos aplicado patrones al azar? En principio no parece que cualquier patrn mejore la velocidad (Ej.: Wrapper pattern)
46
El resultado
l
Es de resaltar que podramos aplicar la conversin no slo mediante patrones, sino tambin mediante principios de anlisis y diseo. Tal vez un diseo con carga dinmica de datos sea mejor recomendacin que el patrn extensibility. Esto requiere ms investigacin.
Developed by Ignacio Gonzlez Mayo 2006 47
Por ltimo se trata de mejorar una aplicacin Web para ventas, en concreto: queremos mejorar su mantenibilidad. El anlisis no nos servir de prueba del concepto pues cuando se aplican patrones en general siempre se consigue que el software sea ms mantenible (no aportar informacin, aunque no da un resultado contrario a lo que defendemos aqu).
Developed by Ignacio Gonzlez Mayo 2006 48
En compaias estadounidenses En compaas espaolas Donde se podra usar ahora que estamos en los dominios del software?
49
Allied Signal Aerospace Sector Chrysler Corp. Emerson Electric Ford Motor Co. General Motors Corp. Johnson & Johnson Rockwell International UNISYS Xerox Corporation
Developed by Ignacio Gonzlez Mayo 2006 50
52
Notas
l
53
Bibliografa
l l l l l l l l l
Altshuller, Henry. 1994. The Art of Inventing (And Suddenly the Inventor Appeared). Translated by Lev Shulyak. Worcester, MA: Technical Innovation Center. ISBN 0-96407401-X Ideation International. "The Process for Systematic Innovation." Ideation International, Inc. Santa Monica, CA. Theory of Inventive Problem Solving (TRIZ) http://www.mazur.net/triz/ Anlisis Axiomtico. Lateral Thinking (wikipedia.org) UML OMG Jackobson, Ivan et altres El proceso unificado de desarrollo de software. Ed AddissonWesnley. Xtreme Programming Agile Methodologies
54
Problema a resolver: encontrar una transformacin entre las categoras[1] patrones de productos y patrones de software. Esto permitira razonar en productos para obtener software y viceversa. Este problema requiere trabajo futuro, y queda fuera del alcance del documento.
55
Ejemplo el fractal, la bsqueda por seleccin natural, etc Son ejemplos de patrones que encontramos en la naturaleza y que ya usamos en el software Existen ms?
56