jueves, 31 de diciembre de 2009

Robots lego

La robótica es una ciencia que se encarga de estudiar el diseño y construcción de las máquinas que hoy día ayudan al ser humano en su labor productiva con tareas difíciles, riesgosas ó repetitivas, esto hablando en el campo industrial, ya que en el campo social la robótica ayuda al hombre a hacer su vida más sencilla y menos complicada. Con base en lo anterior, se puede decir que la robótica surge por necesidad y, además, porque el hombre siempre ha tenido curiosidad de saber cómo crear o imitar la vida artificial desde tiempos inmemoriales. Para mencionar toda la tecnología que se desprende de este campo, y además, con el fin de explorar la trascendencia de los autómatas dentro de la historia habría que remontarse a la antigua Grecia, ya que se creía que Prometeo había creado al hombre y a la mujer con barro y los había animado con el fuego de los cielos, igualmente en la religión cristiana Dios creó al hombre a su imagen, los programó y les dio las instrucciones a seguir. De cierta manera el hombre siempre ha justificado la existencia de vida artificial y se ha obsesionado con construir un humanoide igual a él para lograr comprender como funciona el ser humano.

Los componentes electrónicos que controlan a los robots no serían eficientes sin la ayuda de los procesos multimedia, los cuales hacen parte de los robots, ya que sin estos sería imposible lograr que los robots funcionaran adecuadamente. La palabra multimedia hace referencia a la cantidad de dispositivos electrónicos que actúan como intermediarios entre la fuente de datos y su destino final, así, tanto el sonido como el video, texto y animaciones viajan desde un proveedor de datos hasta el destino final asegurando que estos datos den la impresión de estar integrados. Para que estos datos puedan dar la impresión de estar integrados se utilizan herramientas que soportan estos formatos y los integran en una sola muestra. Se han desarrollado varios patrones para el desarrollo de este tipo de herramientas como son el hipertexto, la hipermedia y la multimedia. En los comienzos del desarrollo de lo que se conoce hoy como internet la manera de mostrar los contenidos de los datos actuaba de manera poco eficiente, ya que los datos viajaban a través de un canal de transmisión de manera ineficiente y con el hipertexto se lograba organizar dicha información proveniente del canal, en tanto que la información se trasmitía de manera desordenada el hipertexto lo organizaba mediante referencias cruzadas.

La robótica pedagógica se entiende como la disciplina que se encarga de concebir y desarrollar Robots educativos para que los estudiantes se inicien en el estudio de las ciencias y la tecnología. El desarrollo de escenarios de aprendizaje en la robótica pedagógica requiere, que los objetivos sean claros y concisos con los que el docente desea aplicar o enseñar al estudiante, que el material sea facilitado para ser manejado y observado por el estudiante, se proporcione un punto claro sobre el proceso de construcción y adquisición de conceptos, y es a través del ejercicio y la exploración que el estudiante dirige y centra sus conocimientos y observaciones; cuando este manejo es efectuado por el docente, éste debe, según Gagné, dirigir y centrar la atención del estudiante. La robótica pedagógica privilegia el aprendizaje inductivo, mediante el descubrimiento guiado lo cual asegura el diseño y experimentación, de un conjunto de situaciones didácticas que permiten a los estudiantes construir su propio conocimiento y satisfacer su propia sed de discernimiento, así como profundizar en situaciones reales y llegar a soluciones óptimas.

Para hablar de los diferentes desarrollos realizados a nivel de la robótica pedagógica es importante nombrar al iniciador del grupo, Seymour Papert, era un matemático interesado desde la década de los años 1960 por la relación entre la ciencia y su funcionamiento a través de la adquisición del conocimiento y el funcionamiento del intelecto infantil, aporto ideas donde hace énfasis en el futuro de las computadoras como promotoras del aprendizaje del ser humano. Papert, uno de los creadores de lenguaje de programación Logo, largamente empleado como herramienta para enseñar programación, es partidario del construccionismo, como cuando afirma que: “los niños crean su conocimiento de forma activa y que la educación debe de facilitarle herramientas para realizar actividades que impulsen esta actividad”. Esta afirmación logro la unión entre el “Instituto Tecnológico de Massachusetts” y “Lego”, la empresa que se dedica a la elaboración de juguetes que se enfocan en el desarrollo del potencial creativo mediante conductismo y constructivismo.

Con la evolución del Ladrillo Programable y el lanzamiento de MicroScout, que fue un micro bloque programable proyectado en el año 1999, el cual incorporaba avances tecnológicos que consistían en la capacidad de transmisión de instrucciones mediante un enlace de luz visible, que contaba con un sensor de luz incorporado y una bocina integrada. Sin embargo, el avance más significativo se vio reflejado en el CyberMaster que fue uno de los primeros desarrollos de Lego con un bloque de circuitos integrados con capacidades de programación. Su lanzamiento fue en el año 2000 en los mercados de Alemania, Australia e Inglaterra. Este conjunto venía acompañado con un control remoto, programable, encargado del envío de instrucciones al bloque, el cual producía los movimientos. Este bloque fue uno de los primeros en ser distribuidos con capacidades de comunicaciones de infrarrojo, dando origen al bloque RCX.

Poco después fue lanzado, la Scalable Processing Box la cual es una plataforma de procesamiento para aplicaciones que implican la necesidad de interfaces de software estándar, cumpliendo requisitos tanto para la docencia en robótica, como investigaciones más avanzadas mediante la implementación de módulos estructurados los cuales han podido integrar proyectos de distintos niveles y objetivos. A continuación se lanzo KiKS donde Khepera es un robot comercial miniatura del ámbito industrial con sed de experimentación en muchas áreas de robótica. KiKS, que partió como una tesis de maestría para desarrollar un software que modele y simule el comportamiento de los robots Khepera. Hoy se encuentra disponible bajo licencia Open Source, donde su autor explica brevemente que si se hacen modificaciones al código fuente se sugiere enviarle los detalles.

En su versión comercial Lego libero el sistema “Lego Mindstorms”, que consiste en un juego de robótica para niños fabricado por la empresa Lego, el cual posee elementos básicos de las teorías robóticas, como la unión de piezas y la programación de acciones, en forma interactiva. Este robot fue comercializado por primera vez en septiembre de 1998. Comercialmente se publicita como Sistema de Invención Robotizado. También se vende como herramienta educacional, como se había mencionado, que originalmente se pensó en una sociedad entre Lego y el Instituto Tecnológico de Massachusetts. La versión educativa se llama “Lego Mindstorms para Escuelas” y viene con un software de programación basado en la interfaz gráfica de usuario de Robolab. Lego Mindstorms puede ser usado para construir un modelo de sistema integrado con partes electromecánicas controladas por computadora. Prácticamente todo puede ser representado con las piezas tal como en la vida real, como un elevador o robots industriales. Lego Mindstorms fue uno de los resultados de la fructífera colaboración entre empresa y universidad. Esta asociación se emplea como ejemplo de relación entre la industria y la investigación académica que resulta muy beneficiosa para ambos socios.

El paso de programar una computadora que se conectaba a una construcción Lego, a manera de un bloque de esa construcción, era una idea natural que se estudió durante largo tiempo. Desde principios de los años 1990 se empezó a investigar esta posibilidad. Sin embargo el proyecto tuvo que esperar a que el mercado fuera propicio. Por una parte, el costo de la tecnología era demasiado alto en un principio. Por otra, el bloque se programaría desde una computadora, y por esas fechas las computadoras no estaban tan extendidas como lo estaban ocho años más tarde, lo que afectaría negativamente a la demanda. Hubo que esperar un lustro hasta que las condiciones fueran las apropiadas y decidieran empezar seriamente el desarrollo de lo que acabaría siendo el bloque RCX, un bloque de Lego que contaba con un microcontrolador, y que constituye el corazón del producto Mindstorms. De esta forma las construcciones Lego pasaban de ser estructuras estáticas a máquinas dinámicas que interactúan con el mundo. Por otra parte, mientras que en muchos casos los productos Lego proporcionaban las piezas necesarias para construir algo con un objetivo fijo, como un tren o un puente, lo que permite al estudiante “aprender haciendo”, en el desarrollo del nuevo bloque se siguió en cambio la filosofía de Papert y Resnick de fomentar el “aprender diseñando”, y tratar de dejar más abiertas las posibilidades.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Octubre 19 de 2009

jueves, 24 de diciembre de 2009

Biometría de red vascular de la mano

La biometría es el estudio de métodos automáticos para el reconocimiento único de seres humanos, basados en uno o más rasgos conductuales o físicos intrínsecos. El término se deriva de las palabras griegas “bios” de vida y “metron” de medida. En las tecnologías de la información, la autentificación biométrica se refiere a las tecnologías para medir y analizar las características físicas y del comportamiento humano con el propósito de autentificación. Las huellas dactilares, las retinas y el iris del ojo, los patrones faciales y las medidas de la mano representan ejemplos de características físicas, mientras que entre los ejemplos de características del comportamiento se incluyen la firma, el paso y el tecleo. La voz se considera una mezcla de características físicas y del comportamiento, pero todos los rasgos biométricos comparten aspectos físicos y del comportamiento.

A pesar de la publicidad acerca del registro biométrico para las próximas elecciones, la palabra “biometría” aún sigue siendo una desconocida para la gente en general. Si se saliera a la calle y se preguntase acerca de su significado, lo más seguro es que una gran mayoría no contestaría de manera adecuada y otros definitivamente se quedarían sin verter opiniones. Sin embargo si les hablara a esas mismas personas de aparatos futuristas con los cuales se pueden reconocer las huellas dactilares, el iris del ojo o incluso los rasgos faciales por medio de rayos infrarrojos para la identificación con la consiguiente aprobación o denegación del acceso a cualquier área restringida, a muchos de ellos les vendrían a la mente diversas películas de ciencia ficción donde posiblemente han visto estos inventos “futuristas”. Pues bien, la ciencia ficción, hace mucho que dejó de ser ficción y pasó a ser simplemente ciencia, porque la tecnología biométrica ha avanzado bastante y se ha generalizado mucho más de lo que pudiera pensarse.

La identificación personal se ha basado en sistemas tradicionales como las tarjetas inteligentes y números de identificación personal, sin embargo estos métodos ofrecen seguridad limitada y son poco fiables dada la facilidad para ser copiados, en el caso de los documentos, y violados, en el caso de las claves y números de identificación. La identificación biométrica permite minimizar estas desventajas ya que explota el hecho de que ciertas características biológicas son singulares e inalterables, haciéndola más confiable y segura que las palabras clave. Además, es más fácil de usar ya que el usuario no tiene nada que recordar, que cambiar o que perder. Los sistemas biométricos de referencia inmediata han basado su proceso de identificación en el reconocimiento de huellas dactilares, el iris del ojo y la firma, pero ante la necesidad creciente de mejorar los controles de acceso y seguridad, estas soluciones han empezado a ser desplazadas por una nueva gama de sistemas de mayor desempeño que basan su proceso de autentificación en el reconocimiento de nuevos rasgos fisiológicos.

Hasta ahora el reconocimiento biométrico analizaba rasgos físicos superficiales únicos, entendiéndose por superficiales los que se encuentran en la superficie, es decir, que son distintos en cada ser humano. El más popular de ellos, como es de conocimiento público, es la huella dactilar, única y casi diferente en cada uno de nosotros. Pero como la ciencia avanza tan rápido, a veces incluso más que las propias mentalidades, lo más moderno e innovador en biometría es el reconocimiento que va más allá de lo que se puede ver y tocar: el reconocimiento de la red vascular o de las venas de las manos. Aunque a primera vista pudiera pensarse que quizás el análisis de las venas no es tan eficaz como el de las huellas digitales, el iris, o los rasgos faciales, es necesario mencionar que criterios científicos bien probados demuestran que las venas de las manos son únicas e intransferibles.

Los sistemas de autenticación basados en imágenes de la mano usan los patrones de la red vascular, de la palma o de la cara dorsal, como dato de identificación personal. Este rasgo fisiológico es útil como indicador biométrico ya que satisface las propiedades de: universalidad, puesto que todas la personas poseen el rasgo; unicidad, debido que estos patrones son únicos en cada persona, incluso diferentes entre gemelos, y son distintos en la mano derecha y la izquierda; permanencia, pues no cambian con el crecimiento, simplemente se amplían manteniendo el mismo patrón; y cuantificación, ya que se pueden describir, representar y clasificar usando técnicas de adquisición y procesamiento de imágenes infrarrojas.

El reconocimiento a través de las venas de la mano es un nuevo miembro de la familia biométrica. Esta técnica apareció el año 1990 y no atrajo mucha atención en la década, sólo a partir del año 2001 aparece con mayor frecuencia en diversas publicaciones. Las venas del dorso de la mano tienen múltiples características que las hacen únicas y, dado que se requiere que la sangre esté fluyendo para registrar la imagen o patrón, es casi imposible la violación de identidad con el uso de artefactos de suplantación. Además, las investigaciones de los Laboratorios Fujitsu, demuestran que el patrón de las venas es único en cada individuo, incluso en el caso de gemelos idénticos; así mismo, son diferentes las venas en la mano derecha y en la mano izquierda. También hay que tener en cuenta que el patrón de las venas no cambia con el crecimiento, simplemente se amplía manteniendo el mismo patrón. El reconocimiento por medio de las venas de las manos funciona de la siguiente manera, se acerca la palma de la mano a un sensor, que, en cuestión de segundos, por medio de rayos infrarrojos captura el patrón de las venas. Esto sucede porque la hemoglobina absorbe la luz y hace que las venas se muestren negras dibujando una especie de mapa, y dicho mapa se traduce en una representación matemática. Para que todo ello funcione, es imprescindible que la sangre esté fluyendo. Además, al estar las venas unos milímetros por debajo de la piel, su copia e intento de “falsificación” se hace casi imposible, y se dice casi porque la ciencia nunca dejará de avanzar y sorprender al más incrédulo.

Las técnicas biométricas habitualmente no consiguen captar más allá de la superficie. La geometría de la huella digital, del iris, de la cara y de la mano, son las cuatro biometrías más comunes, detectan las características físicas superficiales. Pero una de las nuevas tecnologías biométricas atraviesa la superficie y detecta el patrón de las venas de un individuo para autentificar una identidad. Diversos productos observan diferentes patrones de venas, algunos utilizan los patrones en un dedo, mano o la parte posterior de la mano. Hay por lo menos cuatro fabricantes de estos dispositivos que proporcionan el patrón biométrico de la vena, situados todos en Asia. Se incluye a los gigantes de la electrónica asiática Fujitsu e Hitachi, así como firmas más pequeñas Identica y Techsphere.

El patrón de las venas demuestra algunas ventajas sobre otras tecnologías biométricas. Por ejemplo, se percibe a menudo como menos invasor que otros sistemas biométricos. Pero la carencia de pruebas a gran escala y de estándares, constituyen serios obstáculos a superar. El costo puede también ser otro factor, pues los dispositivos son más caros que los productos biométricos actuales para el control de acceso. Todas las tecnologías de reconocimiento de venas trabajan de la misma manera. Se captura el patrón de la vena del individuo usando la luz del infrarrojo próximo. La hemoglobina desoxidizada, un componente de la sangre, absorbe la luz y hace a las venas aparecer como patrones negros. Ese patrón entonces se traduce a una representación matemática, o a una plantilla. Fujitsu indica que las mayores ventajas de la biometría de las venas de la palma son el “antihacking”, así como el hecho de que el usuario no tiene que tocar el dispositivo para utilizarlo.

Actualmente esta tecnología se está aplicando en diferentes sectores, aunque el bancario es el que más provecho parece estar sacándole. Cajeros automáticos, control de accesos a áreas de gran seguridad o acceso al uso de determinadas computadoras son algunas de estas aplicaciones. Pero también se están llevando a cabo estudios para facilitar la vida a personas discapacitadas, quienes podrían sustituir, por ejemplo, la difícil tarea en algunos casos, de abrir puertas, por la sencilla exposición de las palmas de sus manos a un sensor que originaría la apertura automática tras la autentificación de los individuos.

Como cualquier tecnología ofrece muchas ventajas, aunque también inconvenientes. Es fácil de utilizar para los usuarios, es más higiénico ya que no precisa de contacto, ofrece una altísima seguridad con un margen de error de 0,0008%, funciona en un amplio rango de temperaturas y es prácticamente imposible de falsificar, aunque también hay que señalar que es un sistema caro y hay quien opina que se podría vulnerar la privacidad de los usuarios, además, su relativa “juventud” genera cierto rechazo al considerar que la tecnología no está suficientemente madura.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Octubre 12 de 2009

viernes, 18 de diciembre de 2009

Algoritmo genético distribuido

En los últimos años, la comunidad científica ha mostrado un creciente interés en una nueva técnica de búsqueda basada en la teoría de la evolución y que se conoce como “algoritmo genético”. Esta técnica se basa en los mecanismos de selección que utiliza la naturaleza, de acuerdo a los cuales los individuos más aptos de una población son los que sobreviven, al adaptarse de forma más fácil a los cambios que se producen en su entorno. Hoy en día se sabe que estos cambios se efectúan en los genes de un individuo, los cuales constituyen la unidad básica de codificación de cada uno de los atributos de un ser vivo, y que los atributos más deseables, es decir aquellos que le permiten a un individuo adaptarse mejor a su entorno, se transmiten a sus descendientes cuando éste se reproduce sexualmente. Un investigador de la Universidad de Michigan llamado John Holland estaba consciente de la importancia de la selección natural, y a fines de los años 1960 desarrolló una técnica que permitió incorporarlos en un programa de computadora. Su objetivo era lograr que las computadoras aprendieran por sí mismas. A la técnica que inventó Holland se le llamó originalmente “planes reproductivos”, pero se hizo popular hacia el año 1975 con el nombre de “algoritmos genéticos”.

Una definición bastante completa de un algoritmo genético es la siguiente: “Un algoritmo genético es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales, con respecto al tiempo, usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas, entre las que destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una cadena de caracteres, letras o números, de longitud fija que se ajusta al modelo de las cadenas asociado a los cromosomas biológicos, y se les asocia además una cierta función matemática que refleja su grado de adaptabilidad.

Por su parte, un sistema distribuido se define como una colección de computadoras autónomas conectadas por una red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una única entidad capaz de proporcionar facilidades de computación. El desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a principios de los años 1970. Más recientemente, la disponibilidad de computadoras personales de altas prestaciones, estaciones de trabajo y servidores ha resultado en un mayor desplazamiento hacia los sistemas distribuidos en detrimento de las computadoras centralizadas multiusuario. Esta tendencia se ha acelerado por el desarrollo de software para sistemas distribuidos, diseñado para soportar el desarrollo de aplicaciones distribuidas. Este software permite a las computadoras coordinar sus actividades y compartir los recursos del sistema: hardware, software y datos. Los sistemas distribuidos se implementan en diversas plataformas hardware, desde unas pocas estaciones de trabajo conectadas por una red de área local, hasta Internet, una colección de redes de área local y de área extensa interconectados, que en lazan millones de computadoras.

De retorno a la idea central de la presente propuesta, el proceso de evolución, similarmente a lo que sucede en los seres vivos, toma lugar en el código fundamental de los individuos o estructuras. En la implementación tradicional de los algoritmos genéticos las variables de diseño del problema a ser optimizado son codificadas en un alfabeto en particular, inicialmente códigos binarios, más recientemente números reales, y concatenadas para generar cromosomas artificiales. Posteriormente, el proceso de selección natural toma lugar y los cromosomas con códigos más saludables tienen mayor probabilidad de reproducirse que aquellos más débiles. Una vez seleccionados para reproducción y basados en la fortaleza de sus representaciones, los cromosomas se combinan mediante la aplicación de diferentes operadores de apareamiento, el material genético es intercambiando con el fin de producir diferente descendencia. Por otro lado, en el proceso de mutación ocurre un cambio repentino en una posición particular del cromosoma lo cual altera su estructura y lo hace diferente del cromosoma de sus padres.

Los procesos de evolución artificial dependen de los mecanismos de los diferentes operadores y parámetros involucrados en su construcción. La selección inapropiada de ellos hace que se presente un modo severo de falla en el algoritmo genético denominado convergencia prematura. El mismo es originado por la carencia de diversidad en la población, lo cual afecta el balance del algoritmo entre explotar lo que ya conoce y explorar nuevas posibilidades que podrían funcionar mejor. Entre los factores que pueden hacer que se pierda este delicado balance, se encuentran los siguientes: la pérdida de material importante dentro del cromosoma debido a la presión de selección, la distorsión o ruido en la probabilidad de selección, la destrucción de esquemas o cadenas de estructuras con información importante, debido al operador de apareamiento y una inadecuada escogencia de los valores de los parámetros probabilísticos que guían los diferentes operadores genéticos. Cuando el algoritmo cae en este modo de falla el mismo queda a la deriva y es conducido hacia una región del espacio de diseño donde seguramente no se encuentra el óptimo global.

El proceso de selección es la manera como los individuos son escogidos para ser apareados. La correcta elección del modelo usado para realizar esta operación es un factor importante que ayuda a evitar la selección inadecuada de padres, por el hecho que si los cromosomas que portan valiosa información nunca son seleccionados para la reproducción, el material genético contenidos en ellos puede considerarse perdido si no hay una vía para pasar esta información a otros individuos. Otra fuente de pérdida de material genético importante es la destrucción de las cadenas de información o esquemas, situación que puede presentarse cuando el punto de apareamiento separa material genético que pertenece a un hiperplano que contiene una solución óptima. En la literatura especializada se pueden conseguir numerosas técnicas que reducen la probabilidad de alterar estas cadenas o bloques de construcción y mejorar el proceso de selección.

La correcta elección de parámetros tales como tamaño de población, tasa de mutación y probabilidad de apareamiento, entre otros, es uno de los tópicos más estudiados debido a que al variar sus valores repercuten directamente en el balance entre la exploración y explotación del espacio de diseño, representando la vía como los algoritmos genéticos encuentran soluciones en los diferentes hiperplanos del espacio de búsqueda. A fin de preservar la diversidad en la población se desarrollaron algoritmos de tipo distribuido y celular basándose en la teoría de “separación espacial”. En esta teoría la población total es dividida en pequeñas subpoblaciones, cada una de las cuales evoluciona independiente y simultáneamente de acuerdo a un algoritmo genético especifico. Periódicamente un mecanismo de migración intercambia individuos entre las subpoblaciones, permitiendo inyectar nueva diversidad dentro de las subpoblaciones convergentes.

Los algoritmos genéticos distribuidos se construyen combinando diferentes tipos de operadores genéticos, los cuales exhiben diferentes grados de exploración o explotación, en las diferentes subpoblaciones que componen la topología distribuida de subpoblaciones. Por ejemplo, en el trabajo de Herrera y Lozano escrito el año 2000, se aplican diferentes operadores de apareamiento de tipo real a cada subpoblación, los cuales presentan diferencias en sus propiedades de exploración-explotación y en el grado en que son aplicadas, para proponer un algoritmo genético distribuido gradual y codificado en punto flotante. Así mismo, en la literatura se encuentran también algoritmos genéticos distribuidos pero codificados en binario como el propuesto por Potts y sus colegas el año 1994, donde se propone el uso de diferentes grados y niveles del operador de mutación para modificar el carácter de explotación o exploración de las diferentes subpoblaciones.

Una metodología de optimización propuesta se encuentra dividida en dos niveles. En un nivel macro, un conjunto de subpoblaciones aisladas son construidas sobre los vértices de un cubo formando una topología hipercúbica basándose en un algoritmo genético distribuido. Por otro lado a nivel micro, en el interior de cada subpoblación, se ejecuta un algoritmo genético más simple con el fin de generar los individuos que en posteriores etapas migraran a las subpoblaciones vecinas. Las estrategias de migración empleadas se basan en la emigración del mejor individuo de cada subpoblación cada cierto número de subgeneraciones internas.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Octubre 5 de 2009

jueves, 17 de diciembre de 2009

Red neuronal polinomial

El procesamiento de información de carácter redundante, imprecisa y distorsionada posee un papel primordial para la resolución de problemas reales de clasificación o de predicción en muchas áreas científicas. Una de las metodologías con un mayor auge en la última década son los modelos de redes neuronales, que en esencia son estructuras formales de carácter matemático y estadístico con la propiedad de aprendizaje, es decir, la adquisición de conocimientos que en la mayoría de los casos es a partir de ejemplos. Este aprendizaje se produce mediante un estilo de computación denominado en paralelo que intenta simular algunas de las capacidades que posee el cerebro humano. Por esta razón se las definen como redes neuronales artificiales para distinguirlas de los modelos biológicos.

Dichas redes neuronales artificiales constituyen un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso, no solo del ser humano sino también de los animales. Se trata de un sistema de interconexión de neuronas en una red que colabora para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales. Las redes neuronales consisten en una simulación de las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales, como un circuito integrado, una computadora o un conjunto de válvulas. El objetivo es conseguir que las máquinas proporcionen respuestas similares a las que es capaz de dar el cerebro que se caracteriza por su gran capacidad de generalización y robustez.

Una red neuronal se compone de varias unidades llamadas neuronas. Cada neurona recibe una serie de entradas a través de interconexiones y emite una salida. Esta salida viene dada por tres funciones: (1) Una función de propagación, también conocida como función de activación, que por lo general consiste en la sumatoria de cada entrada multiplicada por el peso de su interconexión. Si el peso es positivo, la conexión se denomina activadora; si es negativo, se denomina inhibitoria. Una función de activación, que modifica a la anterior. Puede no existir, siendo en este caso la salida la misma función de propagación. Una función de transferencia, que se aplica al valor devuelto por la función de activación, se utiliza para acotar la salida de la neurona y generalmente viene dada por la interpretación que se quiera darle a dichas salidas. Algunas de las más utilizadas son la función sigmoidea, para obtener valores en el intervalo cero-uno y la tangente hiperbólica, para obtener valores en el intervalo menos uno-uno.

Muchas aplicaciones requieren que las redes neuronales diseñadas respondan a secuencias en el tiempo de patrones, es decir, series temporales. Si se utiliza el algoritmo de aprendizaje de retropropagación, se puede convertir una red perceptron multicapa en una red neuronal con tiempo de retardo simplemente utilizando entradas con retardos. Adicionalmente existen otros tipos de redes hacia adelante, agrupadas bajo el nombre de redes polinomiales. Ejemplos de ellas son: las redes de vínculos-funcionales, que son redes con una sola capa oculta en la que las entradas se procesan con un conjunto de funciones elegidas en función del problema; las redes neuronales arbóreas, que utilizan pequeñas redes perceptron multicapa en cada nodo de partición para una clasificación binaria que permita extraer las características no lineales; las redes neuronales Wavelet, constituyen una alternativa a las redes neuronales hacia delante para aproximarse de forma arbitraria a funciones no lineales. Y por último, las redes con “método de grupo para el manejo de datos” que son tratadas de forma individual en posteriores párrafos.

La red neuronal artificial polinomial es una red neuronal que ha demostrado ser una poderosa herramienta para la predicción de series de tiempo. Esto se consigue debido a que la red neuronal artificial polinomial codifica la información sobre la naturaleza de una serie de tiempo en su arquitectura; sin embargo, el problema con este tipo de red es que los términos que necesitan ser analizados crecen exponencialmente dependiendo del grado seleccionado para la aproximación polinómica.

Las redes neuronales polinómicas utilizan el algoritmo “método de grupo para el manejo de datos”. Las primeras investigaciones estuvieron a cargo de R. Shankar el año 1972, el cual presentó el algoritmo “método de grupo para el manejo de datos” como un procedimiento que permitía describir de forma sucesiva un sistema complejo de relaciones a partir de simples operaciones matemáticas. Este tipo de redes, constituye un buen método para solucionar problemas del estilo, identificación, predicción a corto y a largo plazo de procesos aleatorios, reconocimiento de patrones en entornos complejos, etc. La teoría matemática fue desarrollada de forma conjunta por muchos investigadores, siendo su máximo exponente A.G. Ivakhnenko, hacia el año 1960. El contenido del algoritmo se desarrolló como vehículo para identificar relaciones no lineales entre entradas y salidas, generando una estructura óptima a partir de un proceso sucesivo de varias generaciones de descripciones parciales de los datos, mediante la incorporación de nuevas capas. En cada capa se inicia con un número máximo de neuronas, definido por combinatoria, de forma que, mediante un proceso de selección se determina el número de neuronas más idóneo en cada capa y así el proceso se diferencia claramente del algoritmo de retropropagación donde todas las capas participan de manera simultánea en el proceso de aprendizaje.

Los aspectos más importantes del proceso histórico, de las redes neuronales polinómicas, son los siguientes: (1) El periodo de los años 1968-1971, se caracterizó por aplicaciones orientadas a establecer criterios de regularidad para solucionar problemas de identificación, predicción a corto plazo, reconocimiento de patrones, pero no se investigó la robustez frente al ruido de los datos. (2) En el periodo de los años 1972-1975, se solucionó el problema de la modelización con datos incompletos o con ruido. (3) El periodo de los años 1976-1979, fue investigado el grado de convergencia del algoritmo “método de grupo para el manejo de datos”. (4) En el periodo 1980-1988 se obtuvieron importantes resultados teóricos, proponiendo modelos no físicos para predicciones a largo plazo, modelos en dos niveles, etc. (5) En el periodo 1988 hasta los años 2000 se produce la aparición de nuevos algoritmos para el modelado no paramétrico, como por ejemplo las “redes neuronales multicapa dobles”.

Respecto a las aplicaciones, estas son cada vez más numerosas y relacionadas con diversos campos científicos, algunas de las mismas son: (1) Sistemas económicos con la identificación de procesos inflacionistas, la evaluación de los principales factores de una economía y la predicción bursátil. (2) El análisis de sistemas ecológicos, la predicción de yacimientos de petróleo, la predicción de flujos fluviales, la gestión de sistemas predictivos de la actividad solar, la predicción de la contaminación de la atmósfera. (3) Diagnóstico médico, diagnóstico de cáncer de pacientes, clasificación de las fases del sueño, clasificación del estado del cerebro humano. (5) Modelado meteorológico, predicciones climáticas, influencia de los cambios climáticos a largo plazo en los embalses. (6) Modelado econométrico, modelado de marketing, modelado de las relaciones costo-beneficio. (7) Producción optimización y predicción de la producción de procesos, predicción de la calidad del cemento, modelado de procesos de fermentación. (8) Procesamiento de señales para sistemas de seguridad. (9) Sismología y discriminación de sismos, detección de bolsas de agua y petróleo. (10) Sistemas militares, clasificación de patrones de imágenes de radar, clasificación de ultrasonidos.

El primer modelo neuronal diseñado fue el “Polinomio de Ivakhnenko” o el “Polinomio de Kolmogorov-Gabor”, con una topología formada por dos entradas y una salida. Los modelos neuronales polinomiales poseen una diferencia importante respecto a los modelos donde las neuronas están previamente definidas y es que, sus unidades de procesamiento poseen un papel activo, debido a que los algoritmos de “método de grupo para el manejo de datos” se ejecutan dentro de las propias unidades, representando una nueva variable, que es generada mediante la selección independiente de las entradas relevantes necesarias para encontrar la estructura óptima. Los algoritmos en las redes neuronales polinomiales se implementan mediante los procedimientos descritos para los modelos de regresión y se combinan con los algoritmos genéticos, estos últimos aseguran que la combinación de regresores óptimos describe adecuadamente el modelo.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Septiembre 28 de 2009

viernes, 11 de diciembre de 2009

Lógica computacional

El gran filósofo y matemático Gottfried Wilhelm Leibniz fue el primero en afirmar la posible existencia de algo equivalente a una lógica formal completa para describir el razonamiento. Leibniz no estaba satisfecho con la lógica aristotélica y desarrolló sus propias ideas para mejorarla. Estaba convencido de que podría desarrollar un lenguaje para, y un cálculo de, los razonamientos que sería tan importante como el cálculo desarrollado por él mismo y Newton para las derivadas y las integrales. Llamó “lingua characteristica” a este nuevo lenguaje y “calculus ratiocinator” al esperado calculo, con el cual, la mente sería liberada de tener que pensar en las cosas en sí mismas, y aún así todo funcionaría perfectamente.

Leibniz esperaba que estas nuevas ideas expandieran la capacidad de razonamiento mediante la reducción a un cálculo simbólico de mucha de la labor necesaria para descubrir cómo obtener determinada conclusión a partir de unas premisas dadas, y cómo comprobar la corrección de una deducción. Dicho de otro modo, esperaba la existencia de un cálculo análogo al cálculo infinitesimal, pero un cálculo de razonamientos para tratar las deducciones con proposiciones. Pese al sueño de Leibniz, la lógica matemática se iba gestando más lentamente; el desarrollo de las ideas, notación y formalismos adecuados para la obtención de conceptos similares al cálculo diferencial, en cuanto a potencia, para la lógica necesitó varios siglos más. Se puede hacer un símil con la división habitual de periodos históricos, aunque es preciso notar que no coinciden temporalmente con los periodos homónimos de la Historia Universal, y así dividir el desarrollo de la lógica en una Edad Antigua, que se corresponde con la Lógica Tradicional (500 a.C–1847); una Edad Media, con el desarrollo de la Lógica Simbólica (1847–1880); una Edad Moderna, en la que se introduce la Lógica Matemática de manera formal (1880–1960); y una Edad Contemporánea, en la que surge la Lógica Computacional (desde 1960 a la actualidad).

Con el surgimiento cada vez más acelerado de nuevas tendencias y tecnologías informáticas, tales como la programación orientada a objetos, sistemas en paralelo y distribuidos, lenguajes de cuarta generación, bases de datos, multimedia, etc., y por la necesidad impuesta por “la moda” de estar constantemente actualizados, se ha descuidado notablemente, por buena parte de las personas que manejan la actualidad informática, el aspecto teórico y formal de la misma. La Importancia de una teoría formal está sustentada en la capacidad para establecer criterios de veracidad científica, sobre los resultados arrojados por la teoría, basados en la construcción axiomática de la misma, para otorgarle a la teoría el carácter de ser consistente. Este poder de la formalización se proyecta directamente a los objetos y fenómenos que se estudian a la luz de la teoría. El estudio de cualquier fenómeno mediante la formalización, requiere bases teóricas sólidas que soporten las descripciones y comportamientos del objeto de estudio, siendo la formalización una nueva alternativa para el estudio de diferentes fenómenos. De esta forma este curso contribuirá a acercar al estudiante a saber de dónde salen las cosas que él, inclusive, ya está trabajando.

La lógica computacional es una disciplina que estudia la aplicación de la lógica clásica formal para la representación computacional de argumentos, las técnicas de deducción automática y asistida por computadora; sus fundamentos relacionados con validez y completes de sistemas de proposiciones; y las aplicaciones de esas técnicas a las diferentes áreas de las ciencias computacionales en todas las etapas de desarrollo de software, es decir, en la especificación, diseño, construcción y verificación formal de programas. En este objetivo concurre junto con la teoría de la computación y el análisis de algoritmos.

La lógica matemática es un subcampo de la lógica y las matemáticas. Consiste en el estudio matemático de la lógica y en la aplicación de este estudio a otras áreas de las matemáticas. La lógica matemática guarda estrechas conexiones con las ciencias de la computación y la lógica filosófica. La lógica matemática estudia los sistemas formales en relación con el modo en el que codifican conceptos intuitivos de objetos matemáticos como conjuntos, números, demostraciones y computación. Esta lógica suele dividirse en cuatro subcampos: teoría de modelos, teoría de la demostración, teoría de conjuntos y teoría de la recursión. La investigación en lógica matemática ha jugado un papel fundamental en el estudio de los fundamentos de las matemáticas. La lógica matemática fue también llamada lógica simbólica. El primer término todavía se utiliza como sinónimo suyo, pero el segundo se refiere ahora a ciertos aspectos de la teoría de la demostración. La lógica matemática no es la “lógica de las matemáticas” sino la “matemática de la lógica”, incluye aquellas partes de la lógica que pueden ser modeladas y estudiadas matemáticamente.

El nivel menos abstracto dentro de una computadora está constituido por circuitos electrónicos que responden a diferentes señales eléctricas, siguiendo los patrones de la lógica booleana; esto es, compuertas lógicas que devuelven un valor dependiendo de las entradas que se le dan al sistema. Existen ocho compuertas lógicas básicas con las cuales se pueden formar sistemas muy complejos. Todas ellas son representadas mediante un símbolo y una tabla de valores de verdad, que es simplemente un cuadro donde se ubican todas las posibles entradas y los valores que devolvería la compuerta dados dichos valores. Todo sistema computacional, por muy complejo que sea, no está compuesto por más que circuitos electrónicos que únicamente entienden un lenguaje binario. La lógica computacional se encarga de modelar y optimizar tales sistemas a este nivel.

A lo largo de muchos años las computadoras han ido adquiriendo una gran importancia en la vida de los seres humanos, y han surgido nuevos y más complejos lenguajes de programación. Un algoritmo se define como una serie de pasos que deben realizarse, dadas ciertas entradas, para producir un resultado. Los lenguajes de programación pueden ser tan básicos o tan complejos como el “lenguaje ensamblador” en que se le indican las instrucciones a la computadora casi en el lenguaje máquina, que entre otras cosas es el único lenguaje que entiende la computadora, es decir en código binario. De hecho, cualquier programa en lenguaje ensamblador puede ser fácilmente transformado a código binario, siguiendo una serie de reglas.

Pero cuando se habla de la programación de alto nivel, la complejidad se torna en otro sentido. Lo complicado entonces, es estructurar los algoritmos de manera tal, que se puedan lograr cosas bastante complejas y de gran utilidad en la computación. La lógica aquí es muy importante, ya que determina la manera en que se aplicaran los pasos del algoritmo para resolver el problema. Sin la lógica matemática los programas simplemente serían instrucciones aleatorias, donde la computadora podría elegir cuál realizar primero. Lo que es más, instrucciones como las de decisión, en las que se sigue un sub-algoritmo si se cumple dicha instrucción y otro si no se cumple, no tendrían ningún sentido y no podrían ser resueltas sin la ayuda de la lógica. La lógica, entonces, es importante a este nivel de abstracción, ya que sin ella no es posible estructurar un programa o algoritmo que resuelva lo que se espera obtener. De todas formas, es muy importante tener un claro conocimiento de lógica matemática para llegar a crear programas interesantes. Sin este conocimiento, la programación se vuelve una herramienta sumamente complicada, tanto que sería imposible crear las maravillas que existen en el dominio de las computadoras.

Algunos tópicos de interés de la lógica computacional son: (1) Creación de nuevas lógicas y métodos formales. Conforme la Informática ha ido evolucionando, en paralelo ha ido creciendo la necesidad de considerar lógicas no clásicas que permitan modelar distintos aspectos del razonamiento humano o distintas aplicaciones; por ejemplo, el control de procesos involucra modalidades como tiempo, conocimiento y creencia, es hoy una de las líneas de mayor interés y que reclama mayores esfuerzos de investigación. (2) Lenguajes lógicos de programación. En este punto se incluye el estudio de las relaciones entre la lógica y los lenguajes de programación, incluyendo los fundamentos lógico- matemáticos de los lenguajes de programación, como el uso de la lógica como base para definir un lenguaje de programación, o para proporcionar la semántica de los programas, y la lógica como herramienta matemática para expresar características de los programas, como en el paradigma de programación lógica con restricciones. (3) Lógica para el procesamiento de información. En esta área se pueden destacar varias ramas en las que interviene la lógica, por ejemplo el desarrollo de sistemas de conocimiento y bases de datos, los sistemas multiagente, y el procesamiento del lenguaje natural.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Septiembre 21 de 2009

jueves, 10 de diciembre de 2009

Agentes ¿Tontos o inteligentes?

Se leía en Internet la siguiente frase: “El verdadero hombre inteligente es aquel al que no le molesta parecer tonto delante de un tonto que aparenta ser inteligente', los indicios de la autoría de esta frase apuntan a un autor desconocido. De manera sistemática también se revisaron varios archivos que viajan constantemente en la Web guiados por agentes móviles o algo parecido, en ese dominio no se tarda mucho en comprender, a través de una búsqueda sintáctica, que existen más datos tontos que aquellos que pueden ser de utilidad directa al publico usuario, este pequeño antecedente fue el inicio de buscar estudios acerca del origen de los agentes inteligentes a partir de los denominados agentes tontos; en términos genéricos quizá sea la búsqueda de la inteligencia a partir de lo tonto. La verdad es que, aparte de flatulentas predicciones de algunos utópicos digitales, no hay evidencias de verdaderos “agentes inteligentes” en el horizonte. Los datos en Internet son más datos tontos que inteligentes. Internet está lleno de contenido, en algunos casos de malísima calidad, generado por usuarios comunes, motores con gusto cutre e incluso, motores de búsqueda de mala calidad, incluso Google con sus cada vez mayores tentáculos monopolizantes del universo digital. Así pues se considera que el futuro de Internet se encuentra junto a la autoridad tradicional de la experiencia humana. El futuro está con lo genuino, con los seres humanos no virtuales que, como en mensajes virales y utilizando las herramientas revolucionarias de publicación en línea vía Internet, transmiten sus deseos entre ellos. El futuro de Internet, no tiene que ver con el milagro de los datos inteligentes, sino por el contrario, el futuro de Internet tiene que ver con los datos tontos usados inteligentemente por los seres humanos.

Hay numerosas definiciones de lo que es un agente, y ninguna ha sido aceptada plenamente por la comunidad científica pero probablemente la más simple es aquella que menciona: “un agente es todo aquello que puede considerarse que percibe su ambiente mediante sensores y que responde o actúa en tal ambiente por medio de efectores.” Los agentes humanos tienen ojos, oídos y otros órganos que les sirven de sensores, así como manos, piernas, boca y otras partes de su cuerpo que les sirven de efectores. En el caso de los agentes robóticos, los sensores son sustituidos por cámaras y telémetros infrarrojos y los efectores son reemplazados mediante motores. En el caso de un agente de software, sus percepciones y acciones vienen a ser las cadenas de bits codificados. Lo que interesa en este campo es el diseño de agentes que logren un buen desempeño en su ambiente.

Aunque la variedad de agentes es bastante grande, sin embargo es posible definir los siguientes tipos de agentes según la utilidad que le prestan al usuario: (1) En primer lugar se encuentran los agentes incansables. Su misión consiste básicamente en ejercer las funciones de un buen secretario. Esto incluye entre otras cosas la gestión de agenda y de citas. (2) Otro tipo importante es el de los agentes guía. Se trata de una categoría de agentes de software creados para facilitar la navegación en Internet. Su misión habitual consiste en localizar aplicaciones Web cuyo contenido coincide con una serie de palabras clave que se le asignan. Es lo que se conoce como búsqueda por tópicos. Sólo señala las páginas, pero no bucea en el interior de las mismas de manera exhaustiva. (3) Los desmemoriados también tienen un agente que les echa una mano. Se trata de los agentes recordatorio. Algunos de ellos son llamados también agentes “post-it” por las famosas etiquetas. Este tipo particular de agente se encarga de recordar fechas y citas. Su utilidad no acaba ahí. Algunos agentes recordatorio van más allá. Si el usuario está redactando un documento sobre un determinado tema, el agente le recuerda si tiene ya redactados o en su poder documentación sobre ese tema, así como su localización. Todo un detalle. (4) Quizá el tipo de agente más conocido y extendido es el de filtro. Sobre todo sirven para filtrar noticias e incluso charlas. Algunos de ellos se dedican a gestionar el correo electrónico y a clasificarlo en diversas bandejas según unos parámetros prefijados por el usuario. (5) También es posible encontrarse con un tipo muy peculiar de agente. Se trata de los agentes “emparejadores”. Una vez programados se dedican a buscar en la red gente con el mismo perfil o las mismas aficiones. (6) Luego están los agentes del software con el que casi todos los internautas se han encontrado alguna vez, para comprar o vender. Son programas que recorren la red buscando gangas, o comparando precios. Esta búsqueda la pueden realizar de oficio, o a requerimiento del usuario. (7) En los últimos tiempos se está poniendo en marcha un tipo especial de agente, el denominado agente de entretenimiento. Actúa como un buen amigo que avisa de los últimos estrenos, o los últimos lanzamientos editoriales. Todo relacionado con el mundo del ocio. Conciertos e incluso vacaciones están al alcance de este tipo de agentes. Valga esta clasificación para conocer en qué tareas pueden ayudar los agentes en la actualidad. Es de suponer que en un futuro cercano se disfrutara de una auténtica invasión de agentes del software en todos los campos de la actividad cotidiana. Con la progresiva integración de las redes domésticas no resultaría extraño que fuese un agente quien comprobase el contenido de la nevera familiar e incluso la adecuación de la dieta de las personas.

Como complemento a lo presentado, investigadores de la Universidad de Indiana forman parten de una comunidad creciente que cree que el enfoque basado en agentes tontos permitirá a los investigadores en inteligencia artificial construir sistemas más inteligentes y a los científicos cognitivos estudiar la inteligencia con más amplitud. Estos investigadores están alejándose del enfoque tradicional de la inteligencia artificial que modela el comportamiento inteligente diseñando e implementando un agente complejo. La aproximación con un único agente ha tenido éxito en dominios racionales especializados como juegos, razonamiento y planificación de trayectorias. Sin embargo, parece importante reconocer todos los éxitos de la naturaleza, debido fundamentalmente a que la naturaleza parece estar repleta de agentes inteligentes. En algunos proyectos de agentes tontos, los agentes están aislados intentando optimizar su rendimiento. En otros dominios, los agentes no están aislados y pueden interactuar. El comportamiento de los agentes puede involucrar su coordinación con otros agentes. El dominio de los problemas actualmente investigados en dicha Universidad incluye el control sensorial y motriz, el estudio del comportamiento social, el modelado de modos cognitivos interactivos como el lenguaje e, incluso, la resolución de problemas complejos integrando a dichos agentes.

Varios proyectos de investigación en la Universidad de Indiana han intentado emplear el conocimiento adquirido de la observación de la naturaleza para resolver problemas reales, estudiar los comportamientos sociales y estudiar acciones. El enfoque de los agentes tontos supone la generación de una población de agentes inicialmente tontos o simples. Dicha población suele ser grande, quizás cincuenta, cien o mil agentes. Los agentes pueden ser todos idénticos o pueden existir diferencias mínimas. Suelen construirse de manera aleatoria con la expectativa de que parte de la variación natural en la población contenga la semilla para resolver la tarea deseada. La población entera de agentes se evalúa entonces de acuerdo a su adaptación a la resolución de la tarea de interés. Los mejores agentes se suelen seleccionar para continuar su modificación. Mediante un ciclo continuo de selección y modificación surgen los agentes más adecuados para la tarea. En algunos casos, los agentes trabajan solos, cada uno de ellos intentado superar a los otros en la resolución de la tarea concreta. En otros casos, los agentes trabajan conjuntamente para resolverla.

Los agentes tontos en este caso son simplemente agentes reactivos. Son máquinas de respuesta a estímulos, controladas por un conjunto de reglas simples “antecedente-consecuente”. Están parcialmente inspiradas por los intrigantes vehículos de Braitenberg. Los vehículos de Braitenberg consisten en una combinación de sensores, efectores y las correspondientes interconexiones, las que siendo simples en diseño pueden producir conductas interesantes similares a la agresión, al amor y aún al optimismo, estos vehículos son considerados frecuentemente como robots análogos. La condición del “antecedente” se basa en el entorno actual del agente y la cláusula “consecuente” define la acción específica a realizar. Los agentes no tienen memoria, ni son capaces de aprender modificando reglas durante su vida. Para permitir la cooperación son capaces de emitir y recibir señales. Para decidir qué conjunto de reglas antecedente-consecuente deben utilizar estos agentes se emplean algoritmos genéticos. Poblaciones de agentes idénticos se colocan en el mundo y su esperanza de vida media representa la adecuación de dichas reglas.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Septiembre 14 de 2009

viernes, 4 de diciembre de 2009

Agentes ontológicos

A pesar de que el surgimiento de la Web ha supuesto un cambio radical en cuanto a la facilidad de acceso y difusión de la información electrónica, el gigantesco número de hiperdocumentos y su crecimiento exponencial, sumados a su falta de estructuración lógica, está dando lugar a graves problemas en la recuperación de información en la Web. Los actuales buscadores, basados en indización humana en el caso de los índices de búsqueda, e indización automática en el caso de los motores de búsqueda, son incapaces de ofrecer tasas de exhaustividad y precisión realmente aceptables en sus resultados. El problema de la precisión en la recuperación de información puede ser visto como consecuencia de la falta de significado o semántica que para las computadoras tienen los documentos Web. Como cualquier usuario de Internet habrá advertido por su propia experiencia personal diaria, la Web actual está construida con una cantidad ingente de recursos poco estructurados y pobremente definidos. El precio que se paga por ello es la emergencia de una cantidad desproporcionada de información irrelevante. Una de las causas formales infraestructurales que explican esta situación es que la Web actual se basa en el lenguaje de marcado de hipertexto. La insatisfacción creciente con respecto a este lenguaje de programación de usuario, que permite codificar de manera hipertextual textos, imágenes, sonidos y multimedia, podría sintetizarse en la opinión generalizada entre los especialistas de que dicho lenguaje es, simplemente, un lenguaje estructural de maquetación.

El año 1999, Tim Berners-Lee, el creador de la World Wide Web, escribió por primera vez acerca de los requisitos hipotéticos que debería de cumplir una futura Web semántica que facilitase “la implementación del significado, de la inteligencia en la red”. En el discurso académico generado recientemente en torno a Internet, se retoma este planteamiento y empieza a detectarse un cierto consenso en torno a la idea de que el futuro de la Web se está gestando en la investigación en formas de intelección artificiales cualitativas similares a la humana. El primer paso importante hacia esa Web de naturaleza semántica se basa en la adopción generalizada del lenguaje de marcado extendido, incluido desde hace varios años ya en los programas de usuario de creación de aplicaciones Web, y que añade a las propiedades acreditadas del lenguaje de marcado clásico la posibilidad de inclusión en el nivel de código de una infraestructura de metadatos que aporte una descripción ontológica explícita de la información contenida en el recurso.

Las ontologías han sido tradicionalmente utilizadas como modelos de representación del conocimiento en la inteligencia artificial. Según la definición ofrecida por Tom Gruber el año 1993, una ontología es “una especificación explícita y formal de una conceptualización”. De manera más concreta, una ontología estará formada por una taxonomía relacional de conceptos y por un conjunto de axiomas o reglas de inferencia mediante las cuales se podrá inferir nuevo conocimiento. El servicio que ofrece Internet a través de la Web, sin embargo, es mucho más extenso y dinámico que una base de conocimiento, por lo que la implementación de un lenguaje de definición de ontologías estándar y la posterior consistencia de dichas ontologías, se presentan como un reto complicado, principalmente por la naturaleza descentralizada de la Web semántica. Con un esquema de armazones se pueden describir jerarquías de clases, tales como las ontologías simples, sobre las que es posible realizar consultas y razonamiento automático. Aún así, este esquema no es lo suficientemente expresivo para representar ontologías de la complejidad que necesita la Web semántica, ya que el agente inteligente sólo podría realizar inferencias sobre la herencia de propiedades, pues el esquema no permite declarar axiomas. A esto habría que añadir que algunas características del esquema como la reificación, que consiste en la posibilidad de tratar una aserción como parte de otra, permitiendo de esta forma declarar aserciones sobre otras aserciones, las que dificultan el razonamiento realizado con una máquina de inferencias.

De manera concreta, las ontologías tienen los siguientes componentes que se utilizan para representar el conocimiento de algún dominio: (1) Conceptos. Constituyen las ideas básicas que se intentan formalizar. Los conceptos pueden ser clases de objetos, métodos, planes, estrategias, procesos de razonamiento, etc. (2) Relaciones. Estas representan la interacción y enlace entre los conceptos del dominio. Suelen formar la taxonomía del dominio. Por ejemplo: subclase-de, parte-de, parte-exhaustiva-de, conectado-a, etc. (3) Funciones. Representan un tipo concreto de relación donde se identifica un elemento mediante el cálculo de una función que considera varios elementos de la ontología. Por ejemplo, pueden aparecer funciones como categorizar-clase, asignar-fecha, etc. (4) Instancias. Se utilizan para representar objetos determinados de un concepto. (5) Axiomas. Constituyen teoremas que se declaran sobre relaciones que deben cumplir los elementos de la ontología. Por ejemplo, “Si A es de la clase B y B es de la clase C, entonces A es de la clase C”. Estos últimos componentes, los axiomas, permiten junto con la herencia de conceptos, inferir conocimiento que no esté indicado explícitamente en la taxonomía de conceptos.

Un agente es una entidad software que recoge, filtra y procesa información contenida en la Web, realiza inferencias sobre dicha información e interactúa con el entorno sin necesidad de supervisión o control constante por parte del usuario. Estas tareas son realizadas en representación del usuario o de otro agente. Para el investigador James Hendler las cualidades que debe tener un agente inteligente son: (1) Comunicativo. El agente debe entender las necesidades, objetivos y preferencias del usuario, ya que de dicha comunicación o interacción usuario-agente depende que el agente pueda llevar a cabo su función de manera eficiente. Así mismo debe comunicarse con el entorno mediante representaciones compartidas de conocimiento, en el caso del agente ontológico mediante ontologías. (2) Autónomo. El agente, además de comunicarse, debe interactuar con el entorno, tomando decisiones y actuando por sí solo, limitando sus acciones según el nivel de autonomía permitida por el usuario. (3) Adaptable. El agente debe ser capaz de aprender del entorno, es decir las preferencias de los usuarios, las fuentes de información y conocimiento de otros agentes.

El papel del agente inteligente en el proceso de recuperación “semántica” de información no debe confundirse con el de un buscador inteligente. Un buscador inteligente se aprovecha del enriquecimiento semántico de los recursos Web para mejorar principalmente en la precisión que debe existir en la recuperación de información, aunque su funcionamiento se basa, como los actuales buscadores, en la previa indización de todos aquellos recursos susceptibles de ser recuperados. En cambio, un agente inteligente recorrerá la Web a través de los vínculos entre recursos, en busca de aquella información que le sea solicitada, pudiendo además interactuar con el entorno para el cumplimiento de las tareas encomendadas. Por ejemplo, un agente inteligente, ante una consulta dada, podría consultar autónomamente un buscador, y a partir de sus resultados, explorar la Web hasta encontrar la información solicitada, pudiendo finalmente llevar a cabo una acción sobre dicho recurso, como podría ser la reserva de una habitación en un hotel. El investigador Hendler, el año 1999, enuncia así el optimismo de los especialistas al respecto: “En pocas palabras, si en estos momentos no está usted utilizando tecnología basada en agentes inteligentes, no se preocupe, porque muy pronto lo hará”.

El primer punto de referencia que puede ser considerado para la concepción de un administrador ontológico es la especificación funcional del agente ontológico definida por la “Fundación para Agentes Físicos Inteligentes” que expresa el propósito de un administrador ontológico consiste en “Habilitar a los agentes a manejar explícitamente las ontologías representadas, mediante un servicio que ofrezca un componente dedicado denominado agente ontológico, cuyo papel en la comunidad es proporcionar algunos de los siguientes servicios”: (1) descubrir y acceder a las ontologías públicas, (2) mantener un conjunto de ontologías públicas, (3) traducir expresiones entre diferentes ontologías y distintos lenguajes de contenido, (4) responder a consultas de relaciones entre términos o entre ontologías y, (5) facilitar la identificación de una ontología compartida para comunicación entre agentes. La “Fundación para Agentes Físicos Inteligentes” define un escenario de administración de servicios ontológicos dedicados a la gestión de ontologías mediante el modelo de comunicación, en el que aparece un par de componentes que interactúan por medio de mensajes editados en el “lenguaje de comunicación de agentes” basado en una ontología de comunicación. En complemento a los mensajes existe una ontología del dominio del conocimiento de la aplicación, la cual es manejada por medio de un administrador ontológico el cual proporciona servicios de consulta, traducción y equivalencia de conceptos.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Septiembre 7 de 2009

jueves, 3 de diciembre de 2009

Gestión del conocimiento

Es posible comprender el significado del conocimiento organizacional a partir del carácter social de la actividad humana. Precisamente este carácter social determina la formación de grupos y organizaciones para el cumplimiento de la división del trabajo en la sociedad como un todo. El contexto de la experiencia histórica y social en una época y lugar determinados integra el entorno de la organización. Todo el desarrollo de las ideas y de las realidades de carácter económico, financiero, social, político, jurídico, comercial, científico y tecnológico constituye un conocimiento o conciencia social dentro de la cual se forma la organización en condiciones concretas. Mediante el lenguaje, los soportes materiales de la información, y la comunicación social, la organización interactúa con su entorno y refracta el sistema de conocimientos a través de sus propias características. Aquello que tiene un significado social, presumiblemente universal y, salvo excepciones, nacional y territorial, transita, en la forma explicada, a un nivel de significado propio, a un sentido de la organización, que coexiste con la conciencia del conocimiento social. Aún más, tal como el hombre no podría sobrevivir sin la comunicación con otras personas, las organizaciones, para subsistir, deben dominar el conocimiento social para orientar sus acciones hacia ese entorno, así como considerar, identificar y propiciar la exteriorización del conocimiento individual y de los diferentes grupos dentro de la organización, con el objetivo de concentrar y compartir el producto de numerosas fuentes de conocimiento internas y externas.

El proceso de establecimiento de un lenguaje común en la comunicación a lo largo y ancho de la organización es la forma adecuada para articular concepciones comunes, tanto cognoscitivas como afectivas, conectar las disposiciones y crear una estructura que permita generar, utilizar y comunicar el conocimiento organizacional entre individuos y grupos. La fuente de nuevo conocimiento en la organización o comunidad es siempre un proceso de aprendizaje continuo. Debe observarse la relación implícita que existe entre el conocimiento organizacional, la comunicación corporativa y el aprendizaje organizacional. El conocimiento organizacional se forma a partir de las unidades estructurales y funcionales de las organizaciones, a saber: el individuo, el grupo, la organización y la red de organizaciones interactuantes. El aprendizaje de los individuos ocurre en la forma que se ha explicado, mediante la comunicación dentro grupos pequeños, que poseen frecuentemente un lenguaje propio, un sentido grupal. La transferencia de conocimiento entre distintos grupos puede ocurrir entre los que realizan funciones similares, o diferentes. En el primer caso, los lenguajes son más compatibles y se facilita la comunicación, pero se genera un número menor de ideas diferentes. Cuando la transferencia se produce entre grupos de funciones diferentes, la comunicación es más compleja debido a las diferencias entre los sentidos grupales específicos, los diferentes puntos de vista sobre los mismos significados; sin embargo, estos procesos de comunicación suelen generar con mayor facilidad el nuevo conocimiento.

De manera informal los conceptos dato, información y conocimiento, suelen utilizarse en forma indistinta y ello puede llevar a una interpretación libre del concepto de conocimiento. Adicionalmente, es importante efectuar esta distinción a efectos de evitar conclusiones confusas sobre las distintas clases de información que pueden desviar el objetivo de captar materiales intelectuales. Se considera que las personas generan datos que luego transforman en información, posteriormente a través del análisis y el uso productivo de la misma, la transforman en conocimiento.

La inteligencia se convierte en un capital cuando se crea un orden útil a partir de la capacidad intelectual boyante, es decir cuando se le da una forma coherente”, “cuando se lo aprehende de manera tal que se lo pueda describir, difundir y explotar, y cuando se lo puede emplear para hacer algo que no se podría realizar ni siquiera desparramado como monedas en una alcantarilla. El capital intelectual es conocimiento envasado bastante útil.” El capital intelectual se presenta en las organizaciones, básicamente, de dos maneras: Por un lado, como un conjunto de conocimientos que se crea a partir de las personas, del desarrollo de una actividad y de las organizaciones. El mismo incluye entre otras cuestiones: las comunicaciones, las aptitudes, saber qué buscan los clientes cuando acuden a la empresa, la familiaridad de los métodos, valores y cultura de la organización. Por otro lado, la segunda clase de bienes intelectuales son las herramientas que aumentan los conocimientos incorporando datos e información por medio de la transmisión de habilidades y aptitudes a quienes las necesiten, en el momento justo que las necesiten y con el objetivo de potenciar los conocimientos.

La gestión del conocimiento por otro lado se refiere más bien a los aspectos tácticos y operacionales. Es también más detallada y se centra en facilitar y gestionar las actividades relacionadas con el conocimiento tales como su creación, captura, transformación y uso. Su función consiste en planificar, poner en marcha, operar y controlar todas las actividades y programas relacionados con el conocimiento, que requiere una gestión eficaz del capital intelectual. Tanto la gestión del capital intelectual como la gestión del conocimiento son de hecho la piedra angular del paradigma de empresa excelente o empresa triunfadora del siglo veintiuno. La gestión del conocimiento es un proceso tanto cultural como tecnológico que busca captar y transformar el conocimiento individual para sistematizarlo y convertirlo en información valiosa de acceso colectivo. Consecuentemente, la cultura que no incentive y reconozca el intercambio de conocimientos no puede pretender que la tecnología resuelva desafíos cognoscitivos. Considera que el aprendizaje organizacional permite aumentar las capacidades de una organización para que pueda resolver problemas cada vez más complejos utilizando las experiencias obtenidas en su pasado transformándolas en normas que orientan su conducta. La gestión del conocimiento es, en definitiva, la gestión de los activos intangibles que generan valor para la organización. La mayoría de estos intangibles tienen que ver con procesos relacionados de una u otra forma con la captación, estructuración y transmisión de conocimiento.

La gestión del conocimiento corresponde al conjunto de procesos y sistemas que permiten que el capital intelectual de una organización aumente de forma significativa, mediante a la gestión de sus capacidades de resolución de problemas de forma eficiente, de manera de generar ventajas competitivas a través del tiempo. Si se consideran los mercados antiguos, el principal fuerte estaba sustentado en el manejo de tierras, en otras palabras, la persona que más tierra poseía, era la que podía generar mejores productos, recuérdese la edad media, los feudos y los señores feudales. En la actualidad el ser humano se encuentra en una sociedad donde los cambios transcurren a un ritmo sorprendente. Lo que hoy día es una ventaja competitiva, mañana se transformará en un requisito del mercado. Considere como ejemplo significativo las computadoras, hace 15 años atrás para muchas personas era impensable el acceso a una computadora, en la actualidad, el promedio de computadoras per cápita es altísimo.

En la época actual, en la que mantener una ventaja es casi imposible, es donde las organizaciones deben recurrir a métodos que permitan aumentar estas ventajas. Una de estas ventajas es el conocimiento. La gestión del conocimiento tiene por objetivo administrar este conocimiento, logrando que este sea una ventaja competitiva con respecto a sus similares. La gestión del conocimiento analiza desde una perspectiva dinámica el conocimiento existente en la empresa. Esta perspectiva se complementa con las aportaciones de la literatura de capital intelectual, que aborda el análisis del conocimiento desde un enfoque dinámico.

La gestión del conocimiento es un macroproceso clave en las organizaciones y fuente de ventajas competitivas. Varios autores, Wiig, Nonaka y Takeuchi, Van der Speck, y Probst, han elaborado diversas propuestas para dividir en fases, pasos o procesos, la gestión del conocimiento. Dichas divisiones aunque presentan sus particularidades, en esencia, son semejantes. En este sentido, las diferencias radican fundamentalmente en la cantidad y no en el contenido. En general, aluden a: la generación o adquisición, codificación o transformación, organización o estructuración, almacenamiento o retención, distribución o diseminación y finalmente, al uso o aplicación del conocimiento. Es importante señalar que la propuesta de Probst se distingue de las demás por la inclusión explicita de la medición, la retroalimentación y la relación de cada uno de los procesos que permiten realizar mejoras y correcciones en cada uno de ellos. Esto, a su vez, contribuye a que la gestión del conocimiento sea más efectiva en su totalidad y se cumpla su finalidad.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Agosto 31 de 2009

viernes, 27 de noviembre de 2009

Web semántica

La World Wide Web o simplemente Web como servicio creado para Internet, es un espacio preparado para el intercambio de información diseñada para el consumo humano. Las aplicaciones Web son creadas por personas para ser entendidas por personas. No existe un formato común para mostrar la información, por lo cual, los diseñadores y desarrolladores de aplicaciones Web crean sus páginas dependiendo de los potenciales usuarios que van a visitarlas. Los actuales buscadores residentes en la Web realizan la búsqueda de información, con más o menos fortuna, mediante palabras clave que aparecerán en el código de lenguaje de marcado de hipertexto de las aplicaciones Web dispersas en Internet. En los últimos años, algunas empresas están realizando anotaciones de datos introducidas dentro de este código lenguaje de marcado de hipertexto, siguiendo algún esquema de anotación común, normalmente basado en el lenguaje de marcado extendido.

Otra carencia de la situación actual es que, con los estándares Web del momento, no se puede diferenciar entre información personal, académica, comercial, etc. Es decir, cuando un buscador Web realiza una consulta con algunas palabras clave, normalmente aparece información que no es útil porque no corresponde a lo que se está buscando. Además no todas las páginas proporcionan igual cantidad de información, debido precisamente a que no existe un formato o convenio que establezca el contenido que debe añadirse a los sitios Web. Por otro lado, los agentes de búsqueda actuales no se diseñan para “comprender” la información que reside en la Web, precisamente porque es prácticamente imposible conocer la representación de los datos ubicados en las diferentes aplicaciones residentes en la Web.

Con lo mencionado y de forma similar a como la presentó Tim Berners-Lee el año 1998 y adaptando los ejemplos a la ingeniería de ontologías, se puede decir que la Web, basada en documentos y enlaces de hipertexto, fue diseñada para la lectura humana y no para que la información que contiene pudiera procesarse de forma automática. Si se hace una búsqueda de documentos, por ejemplo, por el término "ingeniería de ontologías", la Web no distingue entre los distintos significados o contextos en los que aparece este término: programas para diseñar ontologías, información docente, empresas que anuncian su Web, etc. La Web actual tampoco permite automatizar procesos, como por ejemplo, buscar un seminario sobre ingeniería de ontologías, hacer la reserva de la plaza, consultar los medios de transporte disponibles hasta la ciudad donde se celebra el evento, reservar el pasaje y conseguir un plano de dicha ciudad. Aún utilizando el más potente de los buscadores, se pierde muchas horas navegando por los resultados obtenidos tras la consulta, para solamente acceder a la información de forma manual, cuando esto lo podría hacer fácilmente un programa informático o un agente inteligente.

La Web semántica viene a ser una extensión de la Web actual dotada de significado, esto es, un espacio donde la información tiene un significado bien definido, de manera que pudiera ser interpretada tanto por agentes humanos como por agentes computarizados La Web semántica se encuentra dotada de mayor significado en la que cualquier usuario en Internet puede encontrar respuestas a sus preguntas de forma más rápida y sencilla gracias a una información definida de mejor manera. Se pueden obtener soluciones a problemas habituales en la búsqueda de información gracias a la utilización de una infraestructura común, mediante la cual, es posible compartir, procesar y transferir información de forma sencilla. La Web semántica tiene como objetivo crear un medio universal para el intercambio de información basado en representaciones del significado de los recursos de la Web, de una manera inteligible para las máquinas. Con ello se pretende ampliar la interoperabilidad entre los sistemas informáticos y reducir la mediación de operadores humanos en los procesos inteligentes de flujo de información. La web semántica rescata la noción de ontología del campo de la inteligencia artificial como vehículo para cumplir este objetivo. Una ontología contiene definiciones que proporcionan un vocabulario para referirse a un determinado área de conocimiento, a un conjunto de conceptos que se especifican en lenguaje natural con el objetivo de crear un idioma común para intercambiar información. Ese vocabulario se define mediante un conjunto de términos básicos y relaciones entre dichos términos, así como las reglas que combinan los términos y las relaciones que permiten ampliar las definiciones dadas en el vocabulario. Por tanto, una ontología es una forma de ver el mundo, ya que determina los términos a utilizar para describir y representar un determinado área de conocimiento, haciendo énfasis en la compartición del conocimiento y el consenso en la representación de éste.

Una de las primeras preguntas que se debe responder es cómo encaja la Web semántica con la actual, es decir, cómo accederá el usuario a la Web semántica, y sobre todo, cómo hacer la transición de la Web actual a la Web semántica. Para que la Web semántica pueda realizarse es importante que guarde, al menos al principio, una compatibilidad con la tecnología actual. Es deseable que se mantenga el lenguaje de marcado de hipertexto u otros lenguajes compatibles con los navegadores actuales, como vehículo de comunicación con el usuario. La asociación entre las instancias de la web semántica y el código del lenguaje de marcado de hipertexto se puede establecer mediante distintos mecanismos. Una de las formas posibles consiste en conservar los documentos actuales, y crear las instancias asociadas anotando su correspondencia con los documentos. Esta posibilidad es la más viable cuando se parte de un gran volumen de material antiguo. Otra forma consiste en generar dinámicamente aplicaciones Web a partir de ontologías y sus instancias. Esta última opción puede resultar factible cuando los documentos antiguos ya se estaban generando automáticamente a partir de una base de datos.

La transición de la Web actual a la Web semántica puede implicar un costo altísimo si se tiene en cuenta el volumen de contenidos que ya forman parte de la Web. Crear y poblar las ontologías supone un esfuerzo extra que puede resultar tedioso cuando se agregan nuevos contenidos, pero directamente prohibitivo en lo que respecta a integrar los miles de gigabytes de contenidos antiguos. Las estrategias más viables combinan una pequeña parte de trabajo manual con la automatización del resto del proceso. Las técnicas para la automatización incluyen, entre otras, la correspondencia de la estructura de las bases de datos a ontologías, el aprovechamiento, previa conversión, de los metadatos y estándares de clasificación presentes en la Web y fuera de ella, además de la extracción automática de los metadatos a partir de texto y recursos multimedia. Otra dificultad importante a la hora de realizar la web semántica en la práctica, es la de consensuar ontologías en una comunidad, por poco amplia que sea. Converger a una representación común es una labor más compleja de lo que puede parecer, ya que cada parte del sistema conlleva, típicamente, ciertas peculiaridades necesarias, y un punto de vista propio que a menudo necesita incidir en la propia ontología. La representación del mundo no es neutra respecto al uso que se le va a dar: tanto un dietista como un biólogo tienen el conocimiento suficiente sobre las plantas, pero la representación que pueden hacer de esa materia es muy distinta, y probablemente no será adecuada imponer la misma representación para ambas perspectivas. Las vías para salvar esta dificultad consisten en compartir ontologías para las áreas comunes en que puede tener lugar una interacción o intercambio de información entre las partes, y establecer formas de compatibilidad con las ontologías locales, mediante extensión y especialización de las ontologías genéricas, o por correspondencia y exportación entre ontologías.

La forma en la que se procesará esta información no sólo será en términos de entrada y salida de parámetros sino en términos de su significado. La Web Semántica como infraestructura basada en metadatos aporta un camino para razonar en la Web, extendiendo así sus capacidades. No se trata de una inteligencia artificial mágica que permite a las máquinas entender las palabras de los usuarios, es sólo la habilidad de una máquina para resolver problemas bien definidos, a través de operaciones bien definidas que se llevan a cabo sobre datos existentes bien definidos. Para obtener esa adecuada definición de los datos, la Web Semántica utiliza los estándares RDF y OWL, estos ayudan a convertir la Web en una infraestructura global en la que es posible compartir, y reutilizar datos y documentos entre diferentes tipos de usuarios. RDF proporciona información descriptiva simple sobre los recursos que se encuentran en la Web y que se utiliza, por ejemplo, en catálogos de libros, directorios, colecciones personales de música, fotos, eventos, etc. OWL es un mecanismo para desarrollar temas o vocabularios específicos en los que asociar esos recursos.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Agosto 24 de 2009

viernes, 20 de noviembre de 2009

Ingeniería de diseño del software

La ingeniería del diseño hace referencia al arte de aplicar los conocimientos científicos en la ordenación de los elementos básicos, tangibles e intangibles, de un objeto o estructura con el fin de aumentar su belleza o utilidad. El término diseño admite varias significados. Así, el “diseño” puede ser una actividad, la “actividad de diseñar”, puede ser un producto, el “resultado de la actividad de diseñar”, o puede ser un calificativo, y en este sentido es muy común referirse a un objeto como “de diseño”, cuando aporta una geometría, una forma o unas cualidades diferenciadoras que implican un aire de calidad y distinción. El término “diseño” se deriva de “diseñar”, que a su vez tiene su origen en el latín, designare, que en origen significa en trazar y también dibujar, marcar o designar. De hecho, la primera acepción del término diseño, en español, es “traza o delineación de una figura o un edificio”. Pero el término admite también un significado amplio: “ordenación de los elementos básicos, tangibles e intangibles, de un objeto o estructura con el fin de aumentar su belleza o utilidad”.

Se debe notar que, de acuerdo con esta significación, el diseño aborda los “elementos básicos”, esto es, los más relevantes o fundamentales. La ordenación de los detalles correspondería a una parte del “diseño”, que sería el “diseño detallado”. También se debe apuntar que el diseño no conlleva necesariamente unas tareas de “cálculo” o de “dimensionamiento preciso”, tareas que sí formarían parte de un diseño detallado o de las propias de una ingeniería. Para completar la idea, el término “ingeniería” proviene del latín ingenium y se define como: “el arte de aplicar los conocimientos científicos a la invención, utilización o perfeccionamiento de la técnica en todas sus determinaciones”. Por consiguiente se puede decir que la ingeniería del diseño es la representación o modelo del software, que proporciona datos sobre la estructura de los datos, la arquitectura, las interfaces, los procedimientos, etc., normalmente este tipo de ingeniería es utilizada por los ingenieros del software. Esta fase es importante ya que de aquí se extraen o establece la calidad del software y se pueden hacer las mejoras pertinentes, si es necesario, sin invocar a pruebas o al cliente.

El diseño de software se define como el proceso de aplicar ciertas técnicas y principios con el propósito de definir un dispositivo, un proceso o un sistema, con suficientes detalles que permitan su interpretación y realización física. El diseño del software desde un punto de vista operativo incluye cuatro etapas: (1) El diseño de los datos. Trasforma el modelo de dominio de la información, creado durante el análisis, en las estructuras de datos necesarios para implementar el Software. (2) El diseño arquitectónico. Define la relación entre cada uno de los elementos estructurales del programa. (3) El diseño de la interfaz. Describe como se comunica el software consigo mismo, con los sistemas que operan junto con él y con los operadores y usuarios que lo emplean. (4) El diseño de procedimientos. Transforma elementos estructurales de la arquitectura del programa. La importancia del diseño del software se puede definir en una sola palabra “calidad”, dentro del diseño es donde se fomenta la calidad del proyecto. El diseño es la única manera de materializar con precisión los requerimientos del cliente, siendo un proceso y un modelado a la vez. El proceso de diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del sistema a construir.

A lo largo del diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas: (1) El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acumular todos los requisitos implícitos que desea el cliente. (2) Debe ser una guía que puedan leer y entender los que construyan el código y los que prueban y mantienen el software. (3) El diseño debe proporcionar una completa idea de lo que es el software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación.

Para evaluar la calidad de una presentación del diseño, se deben establecer criterios técnicos para un buen diseño como son: (1) Un diseño debe presentar una organización jerárquica que haga un uso inteligente del control entre los componentes del software. (2) El diseño debe ser modular, es decir, se debe hacer una partición lógica del Software en elementos que realicen funciones y sub-funciones especificas. (3) Un diseño debe contener abstracciones de datos y procedimientos. (4) Debe producir módulos que presenten características de funcionamiento independiente. (5) Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los módulos y el entorno exterior. (6) Debe producir un diseño usando un método que pudiera repetirse según la información obtenida durante el análisis de requisitos de Software. Estos criterios no se consiguen por casualidad. El proceso de diseño del software exige buena calidad a través de la aplicación de principios fundamentales de diseño, metodología sistemática y una revisión exhaustiva.

Cuando se diseña un sistema computacional se debe tener presente que el proceso de un diseño incluye, concebir y planear algo en la mente, así como hacer un dibujo o modelo o croquis. Para el diseño del producto software debe realizarse los siguientes diseños: (1) Diseño de la salida. En este caso la salida se refiere a los resultados e información generada por el sistema. Para la mayoría de los usuarios la salida es la única razón para el desarrollo de un sistema y la base de evaluación de su utilidad. (2) Diseño de archivos. En este punto se incluye decisiones con respecto a la naturaleza y contenido del propio archivo, como si se fuera a emplear para guardar detalles de las transacciones, datos históricos, o información de referencia. (3) Diseño de interacciones con la base de datos. La mayoría de los sistemas de información ya sean implantado en sistemas de cómputos grandes o pequeños, utilizan una base de datos que puede abarcar varias aplicaciones, por esta razón estos sistemas utilizan un administrador de base de datos, en este caso el diseñador no construye la base de datos sino que consulta a su administrador para ponerse de acuerdo en el uso de esta en el sistema.

Por otra parte, existen cuatro indicios principales que indican que el software cuenta con un mal diseño, los mismos no son independientes y están relacionados unos con otros, estos indicios son: (1) Rigidez. Es la tendencia del software a ser difícil de cambiar, incluso en las cosas más sencillas. Cada cambio produce una cascada de cambios en módulos dependientes. Lo que parecía un cambio de dos días en un módulo resulta ser varias semanas de cambios de módulos a través de la aplicación. El miedo del gestor puede llegar a ser tan agudo que se niegue a realizar modificaciones en la aplicación. (2) Fragilidad. La fragilidad es la tendencia que tiene el software a romperse por muchos sitios cada vez que se cambia algo. Muchas de las roturas ocurren en sitios que no están relacionados conceptualmente con el área que se está cambiando. Cada vez que los gestores autorizan un cambio tienen miedo de que el programa se rompa por algún lugar inesperado. (3) Inmovilidad. La inmovilidad es la resistencia del software a ser reutilizado en otros proyectos o parte de otros proyectos. Pasa muchas veces que un programador descubre que necesita un módulo que es muy parecido a otro que ha desarrollado otro programador. Sin embargo, también pasa muchas veces que el módulo en cuestión depende demasiado de la aplicación en la que está integrado. Después de mucho trabajo los desarrolladores descubren que el trabajo necesario para separar las partes reutilizables de las partes no reutilizables es demasiado alto. Y entonces el software simplemente se reescribe en vez de ser reutilizado. (4) Viscosidad. La viscosidad del diseño es la dificultad de mantener la filosofía del diseño original. Cuando se afronta un cambio los programadores encuentran normalmente más de una manera de realizarlo. Algunas de estas formas preservan la filosofía del diseño y otras no. Estos cuatro síntomas son reveladores de un diseño de arquitectura pobre. Cualquier aplicación que muestra estos síntomas adolece de un diseño pobre.

Finalmente las causas principales para que el diseño se deteriore son las siguientes: (1) Requisitos cambiantes. La causa de la degradación del diseño es muy conocida. Los requisitos han ido cambiando de manera que no estaba previsto en el diseño inicial. A menudo los cambios necesitan hacerse rápidamente y hechos por programadores que no están familiarizados con el diseño original. Entonces, aunque los cambios funcionan, violan el diseño original. Poco a poco los cambios continúan y las violaciones se acumulan hasta que el diseño se rompe. (2) Control de dependencias. Los cambios que introducen nuevas e imprevistas dependencias hacen que un diseño se deteriore. Para anticiparse a la degradación de las dependencias del diseño de la arquitectura, deben ser controladas las dependencias entre módulos de una aplicación. Este control consiste en la creación de "cortafuegos" de dependencias. A través de estos cortafuegos las dependencias no se propagan. El diseño orientado a objetos está repleto de principios y técnicas que permiten construir estos cortafuegos y controlar estas dependencias.

Guillermo Choque Aspiazu
http://www.eldiario.net/
Agosto 17 de 2009