Base de conocimientos

84
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN INGENIERÍA EN COMPUTACIÓN MATERIA: ADMINISTRACIÓN DE TECNOLOGÍAS DE LA INFORMACIÓN PROFESOR: TERÁN PÉREZ DAVID MOISÉS ALUMNO: OSCAR EDUARDO RUIZ MEJÍA GRUPO: 1908

description

El objetivo de una base de conocimientos es el de modelar y almacenar bajo forma digital un conjunto de conocimiento, ideas, conceptos o datos que permitan ser consultados o utilizados. Existen varios métodos y programas para crear bases de conocimientos:

Transcript of Base de conocimientos

Page 1: Base de conocimientos

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN

INGENIERÍA EN COMPUTACIÓN

MATERIA: ADMINISTRACIÓN DE TECNOLOGÍAS DE LA INFORMACIÓN

PROFESOR: TERÁN PÉREZ DAVID MOISÉS

ALUMNO: OSCAR EDUARDO RUIZ MEJÍA

GRUPO: 1908

TRABAJO FINAL: ESTABLECER UNA BASE CONOCIMIENTOS

Page 2: Base de conocimientos

FECHA: 19 DE NOVIEMBRE DEL 2014

CREACIÓN DE UNA BASE DE CONOCIMIENTOS

Introducción

El objetivo de una base de conocimientos es el de modelar y almacenar bajo forma digital un conjunto de conocimiento, ideas, conceptos o datos que permitan ser consultados o utilizados. Existen varios métodos y programas para crear bases de conocimientos:

Wiki. Los wiki son ideales para enlazar entre ellos gran cantidad de pequeños contenidos de información poco estructurados (por lo general de un párrafo a una página). Un elemento primordial en los wikis son los hipervínculos. El hecho que los usuarios participen en la creación y edición del contenido permite que estos evolucionen rápidamente. Otra ventaja de estos es que es posible añadir rápidamente contenido y vincular a otro contenido después. Entre los wikis más conocidos, se encuentran MediaWiki (el wiki de Wikipedia). En la siguiente dirección puede hallarse una larga lista de wikis: http://c2.com/cgi/wiki?WikiEngines Para elegir una wiki, este sitio puede ser de utilidad: http://www.wikimatrix.org/ Ejemplo de utilización: una enciclopedia (Wikipedia) Una página de Wikipedia en proceso de edición:

Page 3: Base de conocimientos

CMS. El CMS está más orientado a la publicación de documentos, por lo que es menos flexible. Pero permite que haya una validación de los documentos antes de la publicación por lo tanto existe más control. Los CMS por lo general están destinados a la publicación de documentos de gran tamaño (varias páginas). Por lo general es posible otorgar permisos a los usuarios (permisos de acceso solo a ciertos documentos, permisos de edición, etc.) Por lo general, los enlaces entre documentos no es fácil de hacer. En la siguiente dirección podrán encontrarse numerosos CMS: http://php.opensourcecms.com/ e incluso pueden probarse en línea. Una base de conocimientos hecha con el programa eGroupWare

Mindmap y Concept map. Los Mindmaps y los concept maps son muy similares. Aquí no se ingresan frases largas, sino por lo general solo algunas palabras o expresiones (conceptos, verbos, elementos, etc.). Luego se crean conexiones entre todos los elementos ingresados, lo que permite que aparezcan visualmente las relaciones, jerarquías y agrupamientos. Esto permite una organización rápida de la información, y poder memorizarla fácilmente. La NASA utiliza masivamente los concept maps para centralizar los resultados de todas las reflexiones acerca de la exploración a Marte: http://cmex.ihmc.us/cmex/Map%20of%20Maps.html (Atención: no funciona en Firefox, funciona en IE y Opera). FreeMind es un

Page 4: Base de conocimientos

programa de mapa mental gratuito. A continuación se muestran un par de ejemplos de concept map y de mind map.

Page 5: Base de conocimientos

Sistema experto. El sistema experto permite modelar un conjunto de conocimientos con el propósito de que un usuario pueda explotarlos sin tener que ser un experto: éste se limita a ingresar la información que dispone y el sistema experto le da una respuesta. Ejemplo de uso: Diagnostico de problemas. (En Internet encontramos ejemplos de sistemas expertos de la forma ”Yo adivino el objeto en que estás pensando”) El juego 20Q intenta de adivinar el objeto en el que estás pensando haciéndote preguntas. Si al final el sistema no adivina el objeto, él conservará el objeto y lo pondrá en una categoría de acuerdo a las respuestas que diste.

El

formato “foro”. El formato “foro” es más típico: En este hay una lista de temas y haciendo clic en el título de un tema se puede leer el artículo. Normalmente los artículos son clasificados en categorías. Dependiendo del foro, es más o menos fácil hacer enlaces de un artículo a otro o incluir imágenes. La adición de comentarios depende del programa. La base de conocimientos de kioskea, con sus artículos clasificados en categorías. Este documento intitulado « Organización - Crear una base de conocimientos » de Kioskea (es.kioskea.net) está puesto a disposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.

Page 6: Base de conocimientos

SISTEMAS EXPERTOS

Concepto

El Sistema Experto (SE) es una rama de la inteligencia artificial, y se podría definir como un programa informático que incorpora una significativa cantidad de conocimientos expertos, acerca de un dominio (entendido como una parcela del conocimiento) bien delimitado y restringido, y que puede usar técnicas de razonamiento simbólico para resolver problemas en dicho dominio. Más formalmente el Comité de Sistemas Expertos de la British Computer Society da la siguiente definición: "Se considera que un sistema experto es la incorporación en un ordenador de un componente basado en el conocimiento, que se obtiene a partir de la habilidad de un experto, de forma que el sistema pueda dar consejos inteligentes o tomar decisiones inteligentes. Una característica adicional deseable, y que para muchos es fundamental, es que el sistema sea capaz, bajo demanda, de justificar su propia línea de razonamiento de una forma inmediatamente inteligible para el que lo usa".

Elementos de un SE

Esencialmente son tres los elementos que componen un SE, por un lado la de datos en la cual se refleja el saber a escala elemental, por otro, la interfaz, auténtico programa al uso utilizado por el sistema con un doble propósito, para comunicarse con el usuario a la vez que manejar y trabajar con la base de datos. El tercer elemento de un SE es un ente abstracto llamado Base de Conocimiento, que surge de la interacción de la base de datos con la interfaz, de manera que convierte el conocimiento elemental en procedimental, para poder ser utilizado por el sistema, es por decirlo de alguna forma un conocimiento operativo.

Para generar el SE es necesaria la participación de

Page 7: Base de conocimientos

una serie de personas, como es natural lo esencial es un Experto, en la materia que se va a desarrollar el SE. Y fundamental es el concurso de un Ingeniero del Conocimiento, de cuyo papel dependerá el resultado del sistema, esta persona habitualmente un informático debe transferir el conocimiento al ordenador, en función a como lo aporte el Experto humano. Esta etapa de transferencia al ordenador llamada Adquisición del Conocimiento es esencial pues la mayoría de los proyectos fracasan por no ser óptima este paso.

Objetivos de los sistemas expertos

El objetivo es el mismo de todas las aplicaciones informáticas: Relevar al hombre de tareas mecánicas y proporcionarle instrumentos amplificadores de sus capacidades mentales.

Repaso histórico

El desarrollo de los SE comienza en la década de los sesenta con una etapa de invención en la que destaca DENDRAL (2), para deducir estructuras químicas a partir de su fórmula y datos espectrográficos. En 1976 se crea MYCIN (3), para enfermedades infecciosas, en una segunda fase llamada de prototipos y puede ser considerado como el más serio sistema aplicado a la medicina y referencia obligada en sistemas futuros. A principios de los ochenta aparecen otros sistemas experimentales como (4), para Oftalmología, aparecen igualmente los sistemas esenciales, también llamados sistemas vacíos o concha, resultado de eliminar de un SE la base de conocimiento y conservar el resto de módulos, de forma que con estructuras prefijadas, se podría aplicar a otras áreas.

A partir de entonces se observa una etapa de industrialización en la que importantes compañías sobre todo japonesas y de EEUU se dedican al desarrollo de SE en distintos ámbitos de la ciencia. Prueba de ello es el conocido proyecto nipón de la "quinta generación".

Tipos de sistemas expertos

Se distinguen los siguientes tipos, de menor a mayor complejidad:

Interpretación. Describen una situación a partir de unos datos

proporcionados (ej.: mapa isobaras).

Predicción. Deducen consecuencias futuras probables a partir de

situaciones dadas (ej.: predecir tiempo a partir del mapa de

isobaras)

Diagnóstico. A partir de unos datos (normalmente incompletos)

averiguar la causa (ej.: diagnóstico médico).

Page 8: Base de conocimientos

Diseño. Construyen objetos a partir de restricciones dadas (ej.:

CAD).

Planificación. Diseñan acciones, establecen cursos de acción (ej.:

robots).

Monitorización. Parecido a la interpretación, pero además se

detecta si la situación es normal o no (ej.: UVI).

Corrección de errores. Establece los fallos del problema y da

soluciones para resolverlos.

Reparación. Corrige los errores detectados para que vuelva a ser

correcta la situación.

Control. Hacen monitorización, corrección de errores y reparación

de forma continua en el tiempo.

Construcción de sistemas expertos

Por una parte se construye una base de conocimientos o base de hechos. Por otra se desarrollan procedimientos para manipular esa base para obtener una respuesta con datos concretos (motor de inferencia). En la primera se representa el propio conocimiento del experto, pudiendo ser uno solo o un grupo de expertos dentro de la misma área, inclusive pueden ser libros especializados en el tema de interés, mientas que en la segunda se representa el procedimiento lógico que sigue un experto en determinada área del conocimiento

Los problemas que surgen en relación con los dos apartados anteriores han dado lugar a un área de trabajo denominado INGENIERÍA DEL CONOCIMIENTO.

Metodología de construcción

Al igual que para desarrollar un sistema de información convencional existen varias metodologías para desarrollar un sistema experto. Como ya sabemos el área de sistemas expertos es relativamente joven por lo cual dispone de una única metodología sino que cada autor propone una de acuerdo a su forma de desarrollo. Sin embargo existen algunas que han tenido éxito más que otras lo cual ha llevado a su mayor difusión. En este documentos sólo se mencionaran algunas de las más conocidas.

Metodología de Buchanan

Este método puede esquematizarse en seis etapas:

Etapa 1: Familiarizarse con el Problema y el Dominio. Abarca desde la lectura de libros o artículos, las entrevistas o charlas con las personas familiarizadas con el tema y la búsqueda de un experto que esté dispuesto a colaborar en la

Page 9: Base de conocimientos

construcción del sistema; como así también la definición de cuáles son las funciones o tareas más idóneas para ser realizadas por el sistema experto. Estas tareas son importantes para determinan que lenguaje y que sistema se usará.

Etapa 2: Delimitar el Sistema. Se realizan entrevistas con el experto, con el objetivo de identificar y caracterizar el problema informalmente. El experto de campo y el ingeniero de conocimiento definen el alcance del sistema experto, es decir, que problemas va a resolver concretamente el sistema experto.

Etapa 3: Obtener la Estructura de Inferencia del Sistema Experto. Con el problema adecuadamente definido el ingeniero de conocimiento empieza a determinar los principales conceptos del dominio que se requieren para realizar cada una de las tareas que va a resolver el sistema, tratando de entender que conceptos son relevantes e importantes solicitándole al experto que explique y justifique los razonamientos que utiliza para resolver los problemas. Esto es importante para la tarea de definición del sistema experto y para mantener una adecuada documentación del mismo, ya que es útil para la tarea de diseño, construcción y para posteriores modificaciones del sistema.

La estructura del conocimiento indica que tareas y términos está usando y la estrategia indica cómo y cuándo el sistema experto debe establecerlas.

Etapa 4: Definir el Sistema Experto Prototipo. El ingeniero de conocimiento debe formalizar el conocimiento obtenido del experto. Esta tarea implica definir que arquitectura permitirá una mejor organización del conocimiento. Es necesario elegir la organización, lenguaje y medio ambiente de programación adecuados para la aplicación particular.

Se definen los conceptos primitivos, con la forma de representación elegida. Este es el primer paso hacia la implementación del prototipo.

Etapa 5: Depurar el Sistema Prototipo. Se refina el sistema prototipo, depurado la base de conocimientos, refinando reglas, rediseñando la estructura del conocimiento, o reformulando conceptos básicos, con el objetivo de capturar información adicional que haya proporcionado el experto. También se consultan en esta etapa otros expertos para corroborar, controlar, ampliar y refinar el prototipo.

Etapa 6: Optimizar el Sistema Experto Prototipo. Cuando el sistema prototipo ha crecido tanto que resulta difícil de manejar el ingeniero de conocimiento rediseña un sistema más eficiente. Este nuevo sistema deberá refinarse y extenderse a fin de completar así el desarrollo del sistema experto.

Metodología de Grover

El Método de Grover es uno de los más importantes para el diseño de una Base de conocimiento. Este método además de definir una serie de etapas, propone

Page 10: Base de conocimientos

con énfasis una documentación de los procesos: los cuales reemplazan parcialmente al experto y sirven de medio de comunicación y referencia entre los usuarios y los diseñadores. El desarrollo de un S.E. a través de este método está dividido por etapas:

Etapa 1: Definición del Dominio. El objetivo de esta etapa consiste en realizar una cuidadosa interpretación del problema y documentarla, elaborando un Manual de Definiciones del Dominio, el cual debe contener:

Una descripción general del problema La bibliografía de referencia Un glosario de términos y símbolos La identificación del o los Expertos

Etapa 2: Formulación del Conocimiento Fundamental: Esta etapa tiene como objetivo examinar los escenarios ejemplo a partir de criterios de evaluación y reclasificarlos según:

Los más importantes y los más insignificantes Los más esperados Los más arquetípicos (característicos, representativos) Los más comprensibles

Para obtener el Conocimiento Fundamental, una técnica conveniente es la simulación del proceso y la reclasificación. La simulación consiste en sugerirle al experto que resuelva un problema como lo haría habitualmente y que vaya construyendo verbalmente las reglas de razonamiento que utiliza.

La reclasificación consiste en analizar las reglas obtenidas y reclasificarlas según diferentes niveles para alcanzar el objetivo propuesto. El estudio final consiste en la definición computacional de las reglas, lo cual incluye:

Una descripción ontológica de las entidades del dominio, de los objetos relacionados y de las relaciones entre los objetos.

Una definición de las entradas y de los formatos Una descripción del estado Inicial que incluya el conocimiento de base Un conjunto de reglas de razonamiento Una lista de metarreglas, estrategias humanas, que serán consideradas por

los diseñadores como posibles reglas de control.

Durante esta etapa de Formulación del Conocimiento Fundamental, se pueden considerar distintos enfoques de entrevistas al experto, estas pueden ser:

Simulación por escenarios Descomposición de Objetivos Simulación de Procedimientos Reclasificación Pura

Page 11: Base de conocimientos

Metodología KADS

Es una metodología para la construcción de sistemas basados en el conocimiento, desarrollada en la Universidad de Ámsterdam.

A lo largo del proceso de desarrollo de un Sistema Basado en el Conocimiento utilizando metodología KADS, se producen fases alternativas de análisis y síntesis. La salida de una fase es la entrada de la siguiente. Este proceso es similar al de un sistema de bloques en un sistema continuo. El proceso a seguir es el siguiente:

ANÁLISIS DE LA APLICACIÓN A NIVEL GLOBAL: como resultado, se descompone el problema en 3 módulos:

1. Módulo basado en el conocimiento2. Interfaz3. Resto de la aplicación

ADQUISICIÓN DEL CONOCIMIENTO DEL EXPERTO: se construye un modelo en 4 capas:

1. Aspectos estratégicos del conocimiento2. Modelación de inferencia (relación con 1)3. Conocimiento estático dependiente del dominio (redes, marcos, guiones,

etc.)

ANÁLISIS DE RESTRICCIONES: se obtiene un modelo de restricciones.

Estos tres pasos son de análisis en el dominio del observador.

Ingeniería del Conocimiento de Jhon Durkin

El desarrollo de un sistema experto basándose en esta metodología se lleva a cabo a través de varias fases, a continuación veremos la descripción de cada una de estas fases:

FASE 1: EVALUACIÓN

1.1 Motivación para el Esfuerzo.

1.2 Identificar problemas candidatos.

1.3 Estudio de viabilidad.

1.4 Análisis de Costo/Beneficio.

1.5 Seleccionar el mejor proyecto.

1.6 Escribir el proyecto propuesto.

FASE 2: ADQUISICIÓN DEL CONOCIMIENTO

Page 12: Base de conocimientos

2.1 Recolección del conocimiento.

2.2 Interpretación.

2.3 Análisis.

Diseño de métodos para recolectar conocimiento adicional.

FASE 3: DISEÑO

3.1 Seleccionar Técnica de Representación del Conocimiento.

3.2 Seleccionar Técnica de Control.

3.3 Seleccionar Software de Desarrollo de Sistema Experto.

3.4 Desarrollo de Prototipo.

3.5 Desarrollo de Interfase.

3.6 Desarrollo del Producto.

FASE 4: PRUEBAS

4.1Validación del Sistema.

4.2 Evaluación de la Prueba/Evaluación.

FASE 5: DOCUMENTACIÓN

5.1 Relación de temas que deben ser documentados.

5.2 Organización de la documentación.

5.3 Documentación Impresa.

5.4 Documentación en hipertexto.

5.5 Reporte Final

FASE 6: MANTENIMIENTO

6.1 Modificaciones probables del sistema.

6.2 Responsables de mantenimiento.

6.3 Interfaces de documentación del mantenimiento

Ventajas e Inconvenientes de los SE

Las ventajas se podrían resumir en los siguientes puntos: tiempo de respuesta menor que los humanos, aumento de la calidad al reducir la tasa de error, reducen el tiempo de avería, solventan la escasez de expertos, poseen mayor flexibilidad, pues ofrecen el servicio requerido por cada cliente, son capaces de realizar operaciones con equipos con adiestramiento de personas para tareas complejas,

Page 13: Base de conocimientos

son más baratos, pueden realizar operaciones en entornos peligrosos, ofrecen mayor fiabilidad que el hombre, y, por último, son capaces de trabajar con información incompleta o incierta.

Por otro lado La construcción de SE genera una serie de problemas: el primero es el de la incorporación del conocimiento al sistema, es decir, ¿cómo podemos enseñar a la máquina?, ¿se debe utilizar metodología propia de los seres humanos, o especiales para estructuras lógicas? Y, una vez definido el conocimiento e implementado (incorporado) al sistema, ¿cómo puede manejar los hechos y datos imprecisos?, esto es, ¿cómo una estructura lógica puede trabajar con datos no exactos? Esta es la llamada incertidumbre y constituye otro obstáculo en el desarrollo de los SE.

Ejemplos de sistemas expertos

MYCIN (diagnóstico y tratamiento de enfermedades infecciosas de la sangre)

PROSPECTOR (determina la probabilidad de la existencia de yacimientos minerales a partir de las pruebas realizadas sobre el terreno).

INTELIGENCIA ARTIFICIAL

Básicamente, la inteligencia artificial es aquella que trata de explicar el funcionamiento mental basándose en el desarrollo de algoritmos para controlar diferentes cosas. La inteligencia artificial combina varios campos, como la robótica, los sistemas expertos y otros, los cuales tienen un mismo objetivo, que es tratar de crear máquinas que puedan pensar por sí solas, lo que origina que hasta la fecha existan varios estudios y aplicaciones, dentro de las que se encuentran las redes neuronales, el control de procesos o los algoritmos genéticos.

La idea de construir una máquina que pueda pensar es que realice cosas que nosotros realizamos y hacemos. Pero para que las computadoras se ganen el nombre de inteligentes, primero tienen que ser capaces de mantener, por ejemplo, un diálogo con un ser humano, ya que las computadoras únicamente pueden realizar o hacer lo que se les indique, pero nunca sabrán lo que están realizando pues no están conscientes de lo que hacen. John McCarthy acuñó la expresión «inteligencia artificial» en 1956, y la definió así: “Es la ciencia e ingenio de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes”.

Búsqueda del estado requerido en el conjunto de los estados producidos por las acciones posibles.

Page 14: Base de conocimientos

Algoritmos genéticos (análogo al proceso de evolución de las cadenas de ADN).

Redes neuronales artificiales (análogo al funcionamiento físico del cerebro de animales y humanos).

Razonamiento mediante una lógica formal análogo al pensamiento abstracto humano.

También existen distintos tipos de percepciones y acciones, que pueden ser obtenidas y producidas, respectivamente, por sensores físicos y sensores mecánicos en máquinas, pulsos eléctricos u ópticos en computadoras, tanto como por entradas y salidas de bits de un software y su entorno software.

Varios ejemplos se encuentran en el área de control de sistemas, planificación automática, la habilidad de responder a diagnósticos y a consultas de los consumidores, reconocimiento de escritura, reconocimiento del habla y reconocimiento de patrones. Los sistemas de IA actualmente son parte de la rutina en campos como economía, medicina, ingeniería y la milicia, y se ha usado en gran variedad de aplicaciones de software, juegos de estrategia, como ajedrez de computador, y otros videojuegos.

Un poco de historia

Se cree que los comienzos de la inteligencia artificial (IA en lo sucesivo) ocurrieron al definirse la neurona, en 1943, como un dispositivo binario con varias entradas y salidas. En el año de 1956 se volvió a tocar este tema y se establecieron las bases de la IA como un campo independiente dentro de la informática.En los años sesenta, la AI no tuvo mucho éxito, pues requería mucho capital y la mayoría de las tecnologías eran propias de los grandes centros de investigación. No fue sino hasta las décadas siguientes que se lograron algunos avances significativos en una de sus ramas, la llamada Sistemas expertos.Se dice que la AI es un campo que por sus investigaciones trata de ser independiente de la informática, y se define como la técnica de software que los programas utilizan para dar solución a algún tipo de problema, pero tratando de asemejar el comportamiento inteligente que se observa en la naturaleza; es decir, trata de resolver problemas y tomar decisiones similares a las que toman los seres humanos al afrontar la vida diaria, realizando programas de computadora que aumenten la capacidad o “inteligencia“ de las mismas; el objetivo de las investigaciones de la IA es, aumentar la utilidad de las máquinas y sus procesos.Así pues, una de las pretensiones de la IA es construir réplicas de la compleja red neuronal del cerebro humano e intentar imitar el comportamiento del cerebro humano con una computadora.

Características

Una de sus características es que incluye varios campos de desarrollo, como la robótica, la comprensión y traducción de lenguajes, el reconocimiento y aprendizaje de palabras de máquinas o los variados sistemas computacionales

Page 15: Base de conocimientos

expertos, que son los encargados de reproducir el comportamiento humano en una sección del conocimiento.Tales tareas reducen costos y riesgos en la manipulación humana en áreas peligrosas, mejoran el desempeño del personal inexperto y el control de calidad en el área comercial.

Categorías de la inteligencia artificial

Stuart Russell y Peter Norvig diferencian estos tipos de la inteligencia artificial:

Sistemas que piensan como humanos. Estos sistemas tratan de emular el pensamiento humano; por ejemplo las redes neuronales artificiales. La automatización de actividades que vinculamos con procesos de pensamiento humano, actividades como la Toma de decisiones, Resolución de problemas y aprendizaje.

Sistemas que actúan como humanos. Estos sistemas tratan de actuar como humanos; es decir, imitan el comportamiento humano; por ejemplo la robótica. El estudio de cómo lograr que los computadores realicen tareas que, por el momento, los humanos hacen mejor.

Sistemas que piensan racionalmente. Es decir, con lógica (idealmente), tratan de imitar o emular el pensamiento lógico racional del ser humano; por ejemplo lossistemas expertos. El estudio de los cálculos que hacen posible percibir, razonar y actuar.

Sistemas que actúan racionalmente (idealmente). Tratan de emular de forma racional el comportamiento humano; por ejemplo los agentes inteligentes.Está relacionado con conductas inteligentes en artefactos.

Áreas de aplicación de la IA

Pero también hay áreas de aplicación. En efecto, estos procesos de la AI se aplican en los sistemas reales en una gran variedad de ramas y problemas:

Redes neuronales dentro de la AI. Las redes neuronales son programas de la AI capaces de simular algunas de las funciones de aprendizaje del ser humano. Una red neuronal obtiene experiencia analizando automática y sistemáticamente los datos para determinar reglas de comportamiento; con base en ellas, puede realizar predicciones sobre nuevos casos.Estas técnicas se aplican a problemas de clasificación y series de tiempo e identifican conexiones con cosas que otras técnicas no pueden, porque utilizan relaciones lineales y no lineales.

Neuronas y conexiones sinápticas. Cada neurona puede tener infinitas entradas llamadas dendritas que condicionan el estado de su única salida existente, el axón; éste se puede conectar a una dendrita de otra neurona mediante la sinapsis correspondiente. En este modelo se considera una neurona que puede ser representada por una unidad binaria; a cada instante su estado puede ser activo o inactivo. La interacción entre las neuronas se lleva a cabo a través de la sinapsis, la cual define el estado de la neurona.

Page 16: Base de conocimientos

La AI en la robótica. Los robots son dispositivos compuestos de censores que reciben datos de entrada que manda una computadora, la cual ordena al robot que efectúe una determinada acción.Hoy en día, una de las finalidades de la construcción de robots es su intervención con rapidez, calidad y precisión en los procesos de fabricación encargados de realizar trabajos repetitivos en la fabricación.

Gestión y control. Análisis inteligente, fijación de objetivos. Fabricación. Diseño, planificación, programación, monitorización, control,

gestión de proyectos, robótica simplificada y visión computarizada. Educación. Adiestramiento práctico, exámenes y diagnóstico. Ingeniería. Diseño, control y análisis. Equipamiento. Diseño, diagnóstico, adiestramiento, mantenimiento,

configuración, monitorización y ventas. Cartografía. Interpretación de fotografías, diseño, resolución de problemas

cartográficos. Profesiones. Abogacía, medicina, contabilidad, geología, química. Software. Enseñanza, especificación, diseño, verificación, mantenimiento. Métodos de aprendizaje automático. Que extienden las técnicas

estadísticas con el fin de posibilitar la identificación de un amplio rango de tendencias generales a partir de un conjunto de datos de entrenamiento.

El campo de la planificación. Enfrenta el desarrollo de algoritmos que construyen y ejecutan automáticamente secuencias de comandos primitivos con el fin de alcanzar ciertas metas de alto nivel.

Los trabajos en el área de razonamiento posible. Los que hacen uso de principios estadísticos para desarrollar codificaciones de información incierta.

El estudio de las arquitecturas de agentes. Busca la integración de otras áreas de la I A con el objeto de crear agentes inteligentes, entidades robustas capaces de comportamiento autónomo y en tiempo real.

La coordinación y colaboración multiagentes. Los cuales han permitido el desarrollo de técnicas para la representación de las capacidades de otros agentes y la especificación del conocimiento necesario para la colaboración entre ellos.

El desarrollo de ontologías. Persigue la creación de catálogos de conocimiento explícito, formal y multipropósito, que puedan ser utilizados por sistemas inteligentes.

Los campos de procesamiento de voz y lenguaje. Son aquellos que buscan la creación de sistemas que se comunican con la gente en su lenguaje.

La síntesis y comprensión de imágenes. Que conduce a la producción de algoritmos para el análisis de fotografías, diagramas y videos, así como también de técnicas para el despliegue visual de información cuantitativa y estructurada.

Page 17: Base de conocimientos

Sistemas de armamento. Guerra electrónica, identificación de objetivos, control adaptativo, proceso de imágenes, proceso de señales.

Proceso de datos. Educación, interface en lenguaje natural, acceso inteligente a datos y gestores de bases de datos, análisis inteligente de datos.

Finanzas, planificación, análisis, consultoría. Aplicaciones comerciales de la inteligencia artificialPero también la AI tiene numerosas aplicaciones comerciales en el mundo de hoy.

Configuración. Selección de distribución de los componentes de un sistema de computación.

Diagnosis. Hardware informático, redes de ordenadores, equipos mecánicos, problemas médicos, averías telefónicas, instrumentación electrónica, circuitos electrónicos, averías automovilísticas.

Interpretación y análisis. Datos geológicos para prospección petrolífera, compuestos químicos, análisis de señales, problemas matemáticos complejos, evaluación de amenazas militares, análisis de circuitos electrónicos, datos biológicos (coronarios, cerebrales y respiratorios), información de radar, sonar e infrarrojos.

Monitorización. Equipos, monitorización de procesos, fabricación y gestión de procesos científicos, amenazas militares, funciones vitales de pacientes hospitalizados, datos financieros en tiras de papel perforado por teleimpresora, informes industriales y gubernamentales.

Planificación. Gestión de activo y pasivo, gestión de cartera, análisis de créditos y préstamos, contratos, programación de trabajos de taller, gestión de proyectos, planificación de experimentos, producción de tarjetas de circuito impreso.

Interfaces inteligentes. Hardware (fiscal) de instrumentación, programas de computadora, bases de datos múltiples, paneles de control.

Sistemas de lenguaje natural. Interfaces con bases de datos en lenguaje natural, gestión de impuestos (ayudas para contabilidad), consultoría en temas legales, planificación de fincas, consultoría de sistemas bancarios.

Sistemas de diseño. Integración de microcircuitos en muy alta escala, síntesis de circuitos electrónicos, plantas químicas, edificios, puentes y presas, sistemas de transporte.

Sistemas de visión computarizada. Selección de piezas y componentes, ensamblado, control de calidad.

Desarrollo de software: Programación automática.Desafíos técnicos del futuroLos tres desafíos más importantes en el desarrollo dentro de la A I son su facilidad de uso, la flexibilidad de la infraestructura computacional y la disponibilidad de herramientas de desarrollo cada vez más poderosas.El empleo de una interfaz inteligente ayudará a las personas a encontrar lo que ellas deseen, hará lo que éstas deseen cuando lo deseen, en forma natural y sin requerir el conocimiento de detalles irrelevantes.

Page 18: Base de conocimientos

Todo parece indicar que las computadoras programadas con la A I son el campo de la solución de problemas del futuro; sin embargo, el intelecto humano parece ser irremplazable en relación con la solución de problemas de sentido común. Se sugiere entonces, dado lo complicado de la mente humana, que hombre y máquina interactúen juntos ya que necesitan uno delotro para solucionar eficazmente los problemas.

MINERÍA DE DATOS

¿Qué es la minería de datos?

El datamining (minería de datos), es el conjunto de técnicas y tecnologías que permiten explorar grandes bases de datos, de manera automática o semiautomática, con el objetivo de encontrar patrones repetitivos, tendencias o reglas que expliquen el comportamiento de los datos en un determinado contexto.

Básicamente, el datamining surge para intentar ayudar a comprender el contenido de un repositorio de datos. Con este fin, hace uso de prácticas estadísticas y, en algunos casos, de algoritmos de búsqueda próximos a la Inteligencia Artificial y a las redes neuronales.

De forma general, los datos son la materia prima bruta. En el momento que el usuario les atribuye algún significado especial pasan a convertirse en información. Cuando los especialistas elaboran o encuentran un modelo, haciendo que la interpretación que surge entre la información y ese modelo represente un valor

agregado, entonces nos referimos al conocimiento.

Aunque en datamining cada caso concreto puede ser radicalmente distinto al anterior, el proceso común a todos ellos se suele componer de cuatro etapas principales:

Determinación de los objetivos. Trata de la delimitación de los objetivos que el cliente desea bajo la orientación del especialista en data mining.

Page 19: Base de conocimientos

Preprocesamiento de los datos. Se refiere a la selección, la limpieza, el enriquecimiento, la reducción y la transformación de las bases de datos. Esta etapa consume generalmente alrededor del setenta por ciento del tiempo total de un proyecto de data mining.

Determinación del modelo. Se comienza realizando unos análisis estadísticos de los datos, y después se lleva a cabo una visualización gráfica de los mismos para tener una primera aproximación. Según los objetivos planteados y la tarea que debe llevarse a cabo, pueden utilizarse algoritmos desarrollados en diferentes áreas de la Inteligencia Artificial.

Análisis de los resultados. Verifica si los resultados obtenidos son coherentes y los coteja con los obtenidos por los análisis estadísticos y de visualización gráfica. El cliente determina si son novedosos y si le aportan un nuevo conocimiento que le permita considerar sus decisiones.

Aplicaciones de la minería de datos

La minería de datos se aplica a todo tipo de datos imaginable: desde datos numéricos a imágenes de satélite, mamografías, música, archivos de ordenador, imágenes, etc. Podemos decir que “cualquier cosa” constituye un dato. Por tanto la minería de datos tiene infinitas aplicaciones: comerciales, marketing, industria, internet, agricultura, etc.

Con miles de datos, necesitamos limpiarlos (eliminar fragmentos inútiles, repetidos, etc.) y organizarlos, y una vez realizado este proceso decimos que tenemos “Información”. La información hay que tratarla con un modelo para obtener resultados o conclusiones a los que llamamos “Conocimiento”. Es decir, el conocimiento es información analizada. Para este análisis hay diferentes modelos de minería de datos. Digamos que un modelo es una forma de aplicar un

Page 20: Base de conocimientos

tratamiento a una cantidad masiva de datos para extraer información de ellos. Podemos citar por ejemplo dos de ellos:

1) Modelo de red neuronal: en una red neuronal tendríamos múltiples nodos que constituyen puntos de entrada de los datos. Esos datos son agrupados y sometidos a un tratamiento mediante un algoritmo que da lugar a que se obtengan unos resultados.

De las redes neuronales suele decirse que son cajas negras, porque el proceso de tratamiento de los datos hasta obtener el resultado no siempre sigue unas pautas lógicas o comprensibles por el ser humano. Sin embargo, su interés radicaría en que son herramientas útiles para realizar predicciones, por lo que son usadas en numerosas aplicaciones.

2) Modelo de árbol de decisión: se trata de la aplicación del conocido procedimiento del “divide y vencerás”. Sobre los datos, se van realizando sucesivas bifurcaciones hasta llegar a un resultado. Sigue unas pautas lógicas, por lo que se dice que es una “caja blanca”, o proceso comprensible por el ser humano. A modo de anécdota, podemos citar un juego web denominado “Akinator el genio adivino”. El juego consiste en que pensamos en un personaje y el sistema nos va haciendo una serie de preguntas: por ejemplo, si es hombre o mujer. Con esta pregunta, se descartan aproximadamente el 50 % de los items en la base de datos. A continuación nos puede preguntar si es un personaje vivo, con lo cual descarta otro porcentaje significativo. En base a bifurcaciones, se llega finalmente al personaje en la base de datos que corresponde con el que habíamos pensado y se produce la “adivinación”.

Las bases de datos y la minería de datos

Las bases de datos han sido sin duda una herramienta fundamental que ha permitido la evolución de la ciencia de la minería de datos. De hecho, a veces se usa el término “KDD (Knowledge Discovery in Databases o Descubrimiento de Conocimiento en Bases de Datos) como sinónimo de minería de datos.

Las bases de datos puede decirse que son una de las tres patas en que se apoya la minería de datos, las cuales son:

1. Bases de datos2. Estadística3. Algoritmia.

Big brother y la minería de datos

La evolución de la informática y de las bases de datos permiten el almacenamiento masivo de datos de una manera que hace unos años hubiera sido inimaginable. Esto ha hecho posible el desarrollo de la telefonía móvil (¿Has

Page 21: Base de conocimientos

pensado cuántos datos maneja una compañía de telefonía móvil que a cada usuario envía una carta con sus datos personales y los datos de las llamadas realizadas incluyendo número llamado, duración de la llamada, tarifa, etc.?) o de los buscadores de internet (al fin y al cabo google nació y basa buena parte de su negocio en la minería de datos).

Las grandes tecnológicas como Oracle o Microsoft (con SQLServer) tienen herramientas para hacer minería de datos. También hay herramientas para la minería de datos en el ámbito del software libre. Ahora bien, esta extraordinaria capacidad tiene obviamente un peligro, porque es como el Gran Hermano descrito por George Orwell en su novela “1984”. Una forma de tener “intervenidas” las comunicaciones y pensamientos de las personas. Digamos que la minería de datos permite saberlo todo (o casi todo): ¿Qué música se escucha? ¿De qué se habla? ¿Qué prefiere la gente? ¿Qué preocupa a la gente? Si esto te parece exagerado, piensa en la cantidad de datos que almacena Facebook. Las redes sociales tienen una componente peligrosa porque permiten saber todo lo que hace, le gusta o no le gusta a la gente.

Y aún más, pueden utilizarse para tratar de ir contra supuestos enemigos como “terroristas”. A través de minería de datos, podría tratar de establecerse si un usuario de Facebook es un potencial terrorista evaluando si responde al patrón de terrorista.

En resumen, el datamining se presenta como una tecnología emergente, con varias ventajas: por un lado, resulta un buen punto de encuentro entre los investigadores y las personas de negocios; por otro, ahorra grandes cantidades de dinero a una empresa y abre nuevas oportunidades de negocios. Además, no hay duda de que trabajar con esta tecnología implica cuidar un sinnúmero de detalles debido a que el producto final involucra "toma de decisiones".

En el artículo Data Mining: Torturando a los datos hasta que confiesen, Luis Carlos Molina proporciona una visión muy clarificadora sobre la minería de datos, incluyendo interesantes ejemplos de aplicaciones de la misma.

HEURÍSTICA

Una heurística es un algoritmo que abandona uno o ambos objetivos fundamentales de la computación que son encontrar algoritmos con buenos tiempos de ejecución y que sean óptimos. Ya hablando de antivirus, la heurística son los métodos que se emplean para reconocer códigos maliciosos (virus, gusanos, troyanos, etc.) que no se encuentran en la base de datos. En el caso de los virus, su heurística vendrían siendo los métodos que usan para evitar ser detectados por los antivirus; su importancia radica en el hecho de poder evadir la única defensa automática posible del antivirus frente a la aparición de nuevos

Page 22: Base de conocimientos

códigos maliciosos de los que no se posean firmas en la base de datos del antivirus.

La heurística, en la terminología de las tecnologías de la información, tiene dos objetivos importantes que son: el uso de algoritmos en buen tiempo de ejecución y que sea óptimo para el trabajo. En el caso del virus, su objetivo es penetrar al sistema con éxito sin ser detectado por algún sistema de protección, con la finalidad de infectar la computadora, archivos, entre otras cosas. Usando estos métodos en los virus, aumenta la probabilidad de que el sistema sea afectado por este programa y puede realizar su ejecución con facilidad. Con esto nos damos cuenta que la heurística de los virus también va de la mano con la heurística de los antivirus, que en el caso de los antivirus funcionan escaneando continuamente el sistema en busca de algún virus que contenga la base de datos. Los antivirus también están conformados de la instrucción de configuración donde se almacenan los patrones de comportamiento que sirven para identificar a este código malicioso. La vacuna que contiene este antivirus vendría siendo el método heurístico que en términos de informática es la detección de firmas genéricas, reconocimiento del código compilado, desensamblado, des empaquetamiento entre otros, más adelante hablaremos de estos temas.

Generalmente, la programación heurística es considerada como una de las aplicaciones de inteligencia artificial y también como herramientas para la solución de problemas. La programación heurística es utilizada en sistemas expertos, se construye bajo ciertas reglas extraídas de la experiencia y respuestas que fueron generadas por tal sistema, donde va adquiriendo la medicina que “aprende” mediante la experiencia y aumento en su base de conocimiento.

La programación heurística posee un doble rol en el desarrollo antivirus: velocidad y detección, por tal motivo de ahí surgió el término heurística.

Para que el virus no sea detectado y que pueda sobrevivir, más los hackers, o personas malintencionadas, utilizan estos métodos para que los antivirus no los puedan detectar, tanto la base de datos del mismo programa, hasta el código malicioso con el que se generó. Los métodos de infección de los virus pueden ser de dos maneras:

1) Los antivirus pueden reconocer la firma de un virus, mientras más instrucciones específicas contengan el virus o el código malicioso que estas definen como comportarse y actuar. Por eso la firma digital es como la huella digital de los hackers o de las personas malintencionadas es única y distinta.

2) Es el comportamiento que contenga el virus, esto depende de cómo se realizó este virus porque pueden variar de infectar a varios archivos hasta corromper carpetas u otros archivos del sistema.

Page 23: Base de conocimientos

Después de ver cómo actúan los virus, veremos qué métodos o que tipos de infección realizan de diferentes maneras que se explicarán a continuación:

Infección Directa: Se enfoca a atacar primordialmente en infectar el disco o los discos duras que tenga la computadora; ataca a uno o más archivos del sistema. Esto se realiza mediante un programa o un archivo infectado que nos pasaron o descargamos por Internet; la infección se propaga tanto en una computadora o servidor; varía si es que están en la misma red o los archivos compartidos del sistema, este tipo de infección es el más común que es muy fácil de detectar por un antivirus.

Infección Rápida: este tipo de infección es un poco peligrosa porque puede infectar cualquier archivo e incluso el mismo antivirus.

Infección Lenta: método tiene el fin de ocultarse o enmascararse dentro del sistema, haciendo difíciles de detectar por el antivirus.

Infección Minimalista: puede que a veces los infecte o a veces no lo hará, hace que la infección sea lenta y aumenta la probabilidad de no ser detectado por el sistema.

Infección RAM Residente: puede infectar los programas de arranque del sistema. Estos virus no se propagan por la red o por el Internet, solo insertando físicamente un disquete, USB u otro medio de almacenamiento; puede infectar a los demás equipos que estén en la misma red.

Análisis Heurístico

Utiliza un acercamiento basándose en reglas para diagnosticar un archivo potencialmente ofensivo o malicioso. Debido a que el motor de análisis trabaja a través de su base de reglas, chequeando el archivo mediante criterios que indican que podría ser un archivo sospechoso, cuando hay archivos semejantes de posible malware, realiza un puntaje igual o superior o semejante a él. Si el puntaje es igual o superior al umbral estimado, ese archivo es señalado como sospechoso (malicioso o spam) y será procesado de acuerdo a los criterios e instrucciones del sistema o antivirus.

Lo opuesto a la Heurística

Lo que en realidad es lo opuesto a la heurística o lo opuesto al análisis heurístico en los antivirus no es la exploración por firmas sino la exploración algorítmica, en la exploración por firmas es un caso especial de la misma. La exploración algorítmica es la decodificación algorítmica, que está basada en procedimientos matemáticos. Lo que es referido en la industria como la exploración algorítmica, normalmente es entendido como algo que se basa en un algoritmo (buscar una cadena estática o una secuencia estructurada de bytes) que es especificada de acuerdo al virus que se intenta detectar.

Método heurístico en los antivirus

Page 24: Base de conocimientos

Como se había mencionado antes, los antivirus, utilizando este método, sirven para detectar los patrones o comportamientos de los virus. Tiene como finalidad detectar este virus mediante el uso de firmas digitales o genéricas, el reconociendo del código malicioso, etc. No es un método exacto, pero se aproxima mucho a la realidad; como los virus cambian día con día sus patrones, es más difícil detectar por dicha razón este método; se aproxima, y cuando ya está seguro dependiendo de qué haya analizado, lo detectará como virus o no.

Métodos de detección heurística en los antivirus

Los antivirus utilizan diferentes técnicas para detectar los virus, malware, entre otras cosas. Cada método es para analizar las características y el comportamiento para determinar si es un virus o un archivo sospechoso. Ahora mencionaremos algunas de estas técnicas:

Emulación del archivo: También conocido como la caja de arenas de prueba (exploración dinámica) donde se realiza la emulación de archivos en un ambiente virtual controlado (caja de arena) para ver qué es lo que realiza. Tiene como fin ver si este archivo se comporta como virus, si es el caso, se trata como virus.

Análisis del archivo: El antivirus analizará el archivo sospechoso con la finalidad de checar cuál es su intención, destino y propósito; pero si tienen funciones que pongan en riesgo al sistema, como eliminación de archivos del sistema, se reconocerá automáticamente que es un virus.

Detección de Firma Genérica (Firma Digital): Esta técnica es especial, debido a que es muy común para detectar los virus. Cuando se crea un virus o se da a conocer por su nombre; la mayoría de la gente cree que es un nuevo virus que amenaza el sistema, pero es todo lo contrario debido a que provienen de la misma familia o clasificación. La ventaja que tienen los antivirus en esto es que utilizan las mismas definiciones que utilizaron anteriormente para localizar a estos nuevos virus o “primos” similares e incluso si utilizan otro nombre diferente o que contenga otro tipo de función.

Ya hablamos de los tipos de infección y cómo la heurística aplicada en los virus y antivirus; a continuación, veremos los tipos de heurística que aplican en el análisis para la detección, estos temas son impartidos por el antivirus ESET NOD 32 que utiliza estos temas para la detección proactiva de malware.

Tipos de heurística

Los antivirus utilizan tres tipos de variantes más comunes para el análisis, que son normalmente utilizados para la detección heurística. Son los siguientes:

Heurística Genérica: Realiza un análisis de la similitud del objeto a otro, ya sea código malicioso. Si al analizar un archivo es similar a un código

Page 25: Base de conocimientos

malicioso, este será detectado y será considerado como amenaza al sistema.

Heurística Pasiva: Se analiza el archivo tratando de determinar qué es lo que realiza el programa. Si realiza actividades sospechosas, será considerado como malicioso.

Heurística activa: Como objetivo crear un entorno seguro y ejecutar el código de tal forma que se pueda reconocer cuál es el comportamiento del código. Esta técnica es conocida por los siguientes nombres: “Caja de Arena (Sandbox)”, “Virtualización” o “Emulación”.

Las ventajas y desventajas de la heurística en los antivirus

Utilizando la heurística es una manera eficaz para identificar las amenazar desconocidas para la protección de nuestro sistema actualizada día a día en tiempo real, pero tiene sus desventajas. Este tipo de análisis y exploración puede llevar tiempo debido a que hace un chequeo a todos los archivos para verificar si existe una amenaza, por lo tanto afecta el rendimiento de nuestro sistema haciéndolo lento.

La preocupación principal con la detección heurística es que a menudo aumentan los falsos positivos. Los falsos positivos son que el antivirus determina un archivo es malicioso (lo pone en cuarentena o elimina la misma), cuando en perfectas condiciones. Esto se debe a que algunos archivos pueden parecerse a los virus, pero en realidad no lo son, son restringidos o que dejaron de trabajar en el sistema.

Además de la heurística en virus, también podemos señalar otros tipos de heurística en la informática, algunos de los cuales son:

Heurísticas para encontrar el camino más corto

Para problemas de búsqueda del camino más corto el término tiene un significado más específico. En este caso una heurística es una función matemática, h(n) definida en los nodos de un árbol de búsqueda, que sirve como una estimación del coste del camino más económico de un nodo dado hasta el nodo objetivo. Las heurísticas se usan en los algoritmos de búsqueda informada como la búsqueda egoísta. La búsqueda egoísta escogerá el nodo que tiene el valor más bajo en la función heurística. A* expandirá los nodos que tienen el valor más bajo para g(n)+h(n), donde g(n) es el coste (exacto) del camino desde el estado inicial al nodo actual. Cuando h(n) es admisible, esto es si h(n) nunca sobrestima los costes de encontrar el objetivo; A* es probablemente óptimo.

Un problema clásico que usa heurísticas es el puzzle-n. Contar el número de casillas mal colocadas y encontrar la suma de la distancia Manhattan entre cada bloque y su posición al objetivo son heurísticas usadas a menudo para este problema. Se realiza a partir de la categoría gramatical.

Page 26: Base de conocimientos

Efecto de las heurísticas en el rendimiento computacional

En cualquier problema de búsqueda donde hay b opciones en cada nodo y una profundidad d al nodo objetivo, un algoritmo de búsqueda ingenuo deberá buscar potencialmente entre bd nodos antes de encontrar la solución. Las heurísticas mejoran la eficiencia de los algoritmos de búsqueda reduciendo el factor de ramificación de b a (idealmente) una constante b∗.

Aunque cualquier heurística admisible devolverá una respuesta óptima, una heurística que devuelve un factor de ramificación más bajo es computacionalmente más eficiente para el problema en particular. Puede demostrarse que una heurística h2(n) es mejor que otra h1(n), si h2(n) domina h1(n), esto quiere decir que h1(n)>h2(n) para todo n.

Heurísticas en la inteligencia artificial

Muchos algoritmos en la inteligencia artificial son heurísticos por naturaleza, o usan reglas heurísticas. Un ejemplo reciente es SpamAssassin que usa una amplia variedad de reglas heurísticas para determinar cuándo un correo electrónico es spam. Cualquiera de las reglas usadas de forma independiente pueden llevar a errores de clasificación, pero cuando se unen múltiples reglas heurísticas, la solución es más robusta y creíble. Esto se llama alta credibilidad en el reconocimiento de patrones (extraído de las estadísticas en las que se basa). Cuando se usa la palabra heurística en el procesamiento del lenguaje basado en reglas, el reconocimiento de patrones o el procesamiento de imágenes, es usada para referirse a las reglas.

LENGUAJES DE PROGRAMACION 4GL

¿Qué son los lenguajes de programación 4GL?

Los lenguajes de cuarta generación o bien 4GL son herramientas encargadas de optimizar el desarrollo de software automatizando la creación de este. Se han utilizado principalmente en la generación de código para GUI y además en la implementación de programas que facilitan las tareas de los desarrolladores y clientes.

La base de los 4GL es que el usuario no dice como se harán las cosas, solo brinda parámetros y el programa se encargara de generar lo solicitado por el usuario, sea esto desde generación de reportes de bases de datos a solucionar un problema matemático.

Contexto

En el mundo actual donde la tecnología tiene cada vez un papel más importante junto con la computación, es importante conocer un poco de los lenguajes y herramientas que utilizamos constantemente los que nos vemos envueltos en este

Page 27: Base de conocimientos

mundo. Es de suma importancia conocer sus características y las ventajas que tienen sobre otros tal vez más viejos, esto para saber hacer una elección correcta de una lenguaje para una aplicación que deseamos crear, la cual se encargara de facilitar o bien automatizar las necesidades de un cliente.

Cuando pensamos en automatizar, en lo que pensamos es en un programa implementado por algún desarrollador de software para ayudar en las tareas de un cliente. Los 4GL son la herramienta destinada a automatizar el proceso de desarrollo de software para crear otro software. En resumen una herramienta que aumenta el rendimiento y velocidad del desarrollo del software.

Como presentaremos más adelante la evolución que han sufrido los lenguajes de programación ha sido grandiosa y cada vez existen más herramientas que proporcionan mayor facilidad a la hora de realizar una aplicación.

Historia

La evolución de los lenguajes de programación ha sido constante dentro del siglo XX pasando por varias etapas bien definidas llamadas generaciones.

La primera etapa de los lenguajes de programaron consiste en el uso de código binario y tarjetas perforadas que funcionaban con gran rapidez pero eran difíciles de entender y de poca portabilidad a otros sistemas diferentes al original.

La segunda generación contempla el lenguaje ensamblador y uso de etiquetas, estos lenguajes a pesar de agregar el uso de abstracción en su minina capacidad y de ser muy eficientes, dependían en gran medida de la arquitectura sobre la que se desarrollaban. La tercera etapa de los lenguajes de programación viene a ampliar más el uso del término abstracción, eran de programación estructurada y todavía basada en el cómo hacer las cosas, agregan mayor funcionalidad pero bajan el rendimiento.

El término “Lenguajes de Cuarta Generación” (4GL) fue primeramente usado para describir a los lenguajes de especificación, que son lenguajes de alto nivel no procedurales (el usuario define qué se debe hacer, no cómo debe hacerse [1]), la denotación 4GL fue utilizada por primera vez por James Martín en 1982[2]. Los lenguajes RPG de IBM e Informatics de IBM y MARK-IV respectivamente pueden ser considerados los primeros lenguajes de este tipo.

Ventajas

Page 28: Base de conocimientos

Estandarización Flexibilidad Actualizaciones Continuas Nuevas Aplicaciones Volumen de código Conversión de código Rendimiento de ejecución Mayor productividad

Características

Los lenguajes de cuarta generación contemplan un gran grado de abstracción que viene a crear una verdadera caja negra pues el programador no dice como se realizaran las aplicaciones que se desee crear, nada más dará una serie de parámetros que aunque dependen del programa que se quiera crear siempre van a estar muy alejados de la máquina o hardware, esta ha sido la tendencia a seguir con cada generación de los lenguajes de programación.

Para mostrar lo anterior basta contemplar que para un mismo programa mientras hay cientos de líneas de código en un lenguaje de tercera generación, en un 4GL la cantidad de código necesario pasa a ser de unas pocas líneas nada más. Esto porque los 4GL vienen acompañados de poderosas herramientas y se acercan en gran medida al lenguaje humano, siendo más concretos y fáciles de entender.

Hay que recordar que la potencia de los 4GL se basa en la posibilidad de generar código automáticamente y que sin embargo la funcionalidad adquirida hasta hoy ha sido bastante reducida.

Los primeros 4GL han basado toda su potencia de generación automática de código en el prototipaje de GUI, dejando un déficit en la generación de código orientado al manejo de datos y los procesos funcionales.

Se debe considerar que los 4GL han cambiado mucho desde los primeros lenguajes incluidos dentro de este término, la evolución se ha visto marcada por varios aspectos, uno de ellos es las restricciones del sistema operativo y del mismo hardware, que han marcado en gran medida la pauta a seguir. Uno de los cambios sustanciales que han tenido los lenguajes de cuarta generación ha sido su relación con las base de datos cambiando el uso de técnicas y recursos en comparación con los 4GL más viejos. Además del mayor manejo de interfaces para el usuario.

También los lenguajes de cuarta generación se han visto influenciados por las tendencias de cambio que ha sufrido la computación con el pasar de los años,

Page 29: Base de conocimientos

como la tendencia a programar con orientación a objetos, la incorporación de la arquitectura cliente /servidor, la naciente ingeniería de software y la tendencia a trabajar en equipo.

La programación orientada a objetos y la disposición de los desarrolladores están logrando poner en el mercado librerías de objetos que complementan el funcionamiento de los 4GL. Entre las librerías más comunes se encuentran objetos para el acceso a múltiples bases de datos relacionales, objetos para el acceso a sistemas de mensajería electrónica, objetos para el acceso a sistemas de Workgroup, objetos para el acceso a bases de datos jerárquicas, objetos para el uso avanzado de GUIs, entre otras.

Sin embargo, aún se necesita mejorar mucho los modelos que incluyen los 4GL, existen pocos procesos modelizados y la dificultad radica en encontrar aquellos procesos que el usuario más necesita. Más adelante discutiremos algunos de los tipos de 4GL que hay, al igual que ejemplificaremos el tema con casos concretos de productos 4GL.

Tipos de lenguajes de cuarta generación

Existen diferentes tipos de lenguajes de cuarta generación, cada uno con una función en particular. Entre ellos están los generadores de reportes, los generadores de “forms”, ambientes de cuarta generación, administradores de datos y los generadores de aplicaciones.

Los generadores de reportes (Report Generators) toman una descripción del formato y el reporte a generar, y de ahí pueden generar el reporte de forma directa, o bien un programa que genere el reporte. Existen unos generadores de reportes utilizados para genera informes a partir de una base de datos. Se parece a un lenguaje de consultas en que permite al usuario hacer preguntas sobre la base de datos y obtener información de ella para un informe. Sin embargo, en el generador de informes se tiene un mayor control sobre el aspecto de la salida. Se puede dejar que el generador determine automáticamente el aspecto de la salida o se puede diseñar ésta para que tenga el aspecto que desee el usuario.

Los generadores de “Forms” (Forms Generators), en algunos casos manejan iteraciones online con los usuarios de la aplicación o bien crean un programa para que manejen esta iteración Permiten que el usuario defina el aspecto de la pantalla, qué información se debe visualizar y en qué lugar de la pantalla debe visualizarse. Algunos generadores de formularios permiten la creación de atributos derivados utilizando operadores aritméticos y

Page 30: Base de conocimientos

también permiten especificar controles para la validación de los datos de entrada.

Los Ambientes de Cuarta Generación (Fourth Generation Environments) se encargan de generar todo un sistema a partir de las salidas de herramientas CASE, pantallas, reportes y además posiblemente de la especificaron de algún proceso lógico adicional.

Los Administradores de Datos (Data Management) proveen comandos para la manipulación de datos, selecciones de casos y documentación de datos en la preparación de la información para análisis estadísticos y reportes. Entre ellos se encuentran SAS, SPSS y Stat.

Los generadores de aplicaciones son una herramienta para crear programas que hagan de interfase entre el usuario y la base de datos. El uso de un generador de aplicaciones puede reducir el tiempo que se necesita para diseñar un programa de aplicación. Los generadores de aplicaciones constan de procedimientos que realizan las funciones fundamentales que se utilizan en la mayoría de los programas. Estos procedimientos están escritos en un lenguaje de programación de alto nivel y forman una librería de funciones entre las que escoger. El usuario especifica qué debe hacer el programa y el generador de aplicaciones es quien determina cómo realizar la tarea.

Lenguajes de cuarta generación

Existen muchos lenguajes de cuarta generación hoy en día, unos más usados que otros, ya sea por su portabilidad, facilidad de uso o eficiencia. Algunos de ellos son:

SheerPower4GL PowerBuilder WinDev Focus Natural Progress4GL SQL Oracle Reports PostScript Matemática MatLab Ramis

A continuación se presentarán algunos lenguajes de cuarta generación y se describirán las características de algunos de ellos.

Page 31: Base de conocimientos

Progress 4GL o Progress OpenEdge como se han llamado sus últimas versiones, es un lenguaje muy utilizado pues es potable y muy confiable. Es una plataforma diseñada para ayudar a los desarrolladores en la construcción de aplicaciones empresariales de forma rápida, esto ayuda a recuperar la inversión de manera más rápida. Tiene la facilidad de fácilmente conectarse e integrarse con clientes, con otras aplicaciones y con distintas bases de datos. Esta plataforma es muy potente. “Gracias a ella los desarrolladores pueden olvidarse de las complejidades de los entornos informáticos de hoy en día, permitiéndoles concentrarse en lo que realmente importa, crear la lógica de negocio de sus aplicaciones. Los sistemas que componen la plataforma OpenEdge son compatibles, fiables y escalables, sin embargo requieren menos recursos administrativos que otras plataformas.”

OpenEdge es una plataforma abierta y flexible. “Un desarrollador de OpenEdge puede crear APIs para clientes de .NET, clientes de Java™, mensajes de Java, hasta el esquema de de base de datos en formatos XML, eso, sin nunca dejar la eficiencia de Progress 4GL y de las herramientas de OpenEdge.” Traducido de Progress incluye herramientas de programación y de bases de datos, y recursos de servidores todo en su ambiente, permitiendo fácil acceso a todos los recursos para crear aplicaciones.

Progress garantiza a los usuarios disponibilidad y accesibilidad en sus bases de datos, ya que el tamaño de las tablas puede ser excesivamente grande sin problema alguno. “Además, las pruebas realizadas han mostrado que la plataforma OpenEdge tiene una escalabilidad aproximada de más de 30,000 usuarios simultáneos.”. Esta garantía de calidad que da Progress, hace de este un programa muy usado en el momento, con una gran funcionalidad. Además es un programa muy simple de utilizar en comparación a otros como SQL, donde se tardaría mucho más tiempo creando una base de datos.

SQL (lenguaje de consultas estructurado) es un lenguaje de acceso a bases de datos relacionales con el cual se pueden crear y manipular las mismas. SQL “es un conjunto de objetos eficientemente almacenados”[12]. La información de las bases de datos se guarda en tablas. Una sentencia SQL es una frase con la que decimos lo que queremos obtener y de que tablas deseamos obtenerla. Una sentencia tiene un formato de cómo realizarse y empieza con una palabra reservada que indica la acción que se quiere realizar, luego siguen lo que uno quiere hacer respecto a la acción definida. SQL permite realizar consultas mediante sentencias SQL con el fin de poder desplegar información importante que se quiera de alguna o varias tablas. SQL posee muchos servicios, entre ellos: servicio de duplicación, servicio de notificación, servicio de integración, etc. El servicio de duplicación es para mantener varias copias de la base de datos o de

Page 32: Base de conocimientos

alguno de sus objetos. EL servicio de notificación es para enviar distintas notificaciones a uno o más dispositivos. El servicio de integración sirve para la creación de paquetes con diferentes tipos de datos.“Cabe destacar que la mayoría de los servicios se han creado teniendo presente la estrategia de Business Intelligence de Microsoft. Así que el nuevo SQL Server, más que un servidor de bases de datos, debería considerarse una plataforma completa de Windows Intelligence.”

WinDev es una herramienta de desarrollo desarrollada por la empresa francesa PC SOFT. Tiene la facilidad para desarrollar aplicaciones en Windows, .Net, Internet y Java. Permite el desarrollo de interfaz gráfica. Se pueden realizar muchos tipos de aplicaciones, entre ellas: “Gestión, industriales, médicas, de terreno, de ERP, CRM, EDI, enseñanza asistida por ordenador, integración de aplicaciones empresariales, Back y Font Office, .NET, Web Services, catálogos. No hay límites.”. En WinDev la calidad de las aplicaciones dependen menos del equipo de desarrollo que con otras herramientas, esto debido a que trae un conjunto de funciones avanzadas sin la necesidad de que alguien las programe, por ejemplo, puede ser que el entorno detecte que mejoras para aumentar el rendimiento y la velocidad del sistema y este mismo las sugiere y las realiza automáticamente, además, posee una herramienta generadora de reportes automática. WinDev tiene muchas herramientas para usarse en su IDE, entre ellas están: editor de reportes, editor de componentes, editor de pruebas, editor de ayuda en línea, editor de ventanas, editor de consultas, editor de código, etc. Su IDE es muy completo. WinDev además de permitir el desarrollo de código y programas en distintos lenguajes, permite leer y escribir en todas las bases de datos. Es un programa muy completo porque permite desarrollar cualquier aplicación. Su crecimiento debe a su gran portabilidad y su facilidad de uso para los usuarios.

PowerBuilder es una herramienta de desarrollo desarrollada por la empresa Sybase. Es un entorno gráfico de programación orientado a objetos para el desarrollo de aplicaciones cliente/servidor, distribuidas y web. Incluye herramientas para generar reportes, acceder bases de datos y para crear interfaz gráfica. El lenguaje de escritura es PowerScript. Una escritura consiste en realizar las declaraciones que realizan el proceso en respuesta a un evento.

Informix 4GL es el líder para manejar aplicaciones cliente que acceden a las bases de datos de Informix en el ambiente de Unix. Es una estructura basada en ventanas y caracteres orientados que permite a desarrolladores preparar o directamente incrustar en un código fuente de un lenguaje de

Page 33: Base de conocimientos

cuarta generación determinado la estructura estándar de consultas SQL. Desde el código fuente del 4GL el pre-procesador del Informix genera pseudo código (p-código) de máquina o código C dependiendo de cuál haya sido el 4GL elegido en tiempote compilación. Para producir las aplicaciones se utilizan tres diferentes productos: el Compilador, el Sistema Rápido de Desarrollo y el Depurador Interactivo. El compilador genera código C y código ESQL/C que puede ser compilado en el código objeto, el sistema rápido de desarrollo reduce en gran manera el tiempo de compilación creando el pseudo código y el depurador ayuda a la detección y rápida corrección de errores dentro de la aplicación. La gran utilidad del Informix lo han colocado como líder dentro del mercado para el desarrollo de aplicaciones para bases de datos, pero debido a que su lanzamiento fue en 1986 muchas aplicaciones creadas utilizándolo tal vez ya son muy viejas y necesitan adaptarse a las nuevas necesidades como la compatibilidad y uso de interfaces gráficas para el usuario. Por lo anterior es que se ha desarrollado una nueva versión de Informix denominado Informix Dynamic 4GL que permite migrar hacia las nuevas necesidades del mercado con un simple recompilación del programa lo que facilita en gran medida el proceso de adaptación a las nuevas tecnologías. Lo anterior permite que los costos se reduzcan y retiran la necesidad de un rediseño o reestructuración de un programa, ya que es tan fácil como presionar un botón y así migrar a diversas plataformas. La nueva versión de Informix también combina otras ventajas como, un consumo menor de almacenamiento reduciendo el costo en hardware, también contempla una gran flexibilidad, una reducción en los requerimientos de memoria (en tipo de ejecución se cargan solo los módulos de p-código que se están usando actualmente) [5] y una portabilidad muy grande ya que puede montarse sobre muchas plataformas.

Mathematica es un ambiente general de computación que vino empaquetar en un solo producto una serie aplicaciones de tareas de computación técnica que aunque ya habían sido implementadas nunca se habían contemplado para formar un gran paquete de computación.En Mathematica se contemplan muchos de los aspectos técnicos de la computación como el manejo numérico, la conversión de datos, la visualización y la creación de interfaces para el usuario. El avance intelectual que hizo posible el desarrollo de un paquete tan completo fue la invención de un lenguaje que fuera capaz de manipular la gran cantidad de objetos que alberga la computaron técnica. Por su completitud es un paquete que a pesar de inicialmente ser usado por técnicos ha pasado a ser un ambiente manejado por gran cantidad de personas que han aprendido desplegar todas las utilidades que el programa ofrece como por ejemplo los estudiantes a los que les permite aprender de manera interactiva. El crecimiento de esta herramienta se debe también a que permite diseñar y analizar diferentes

Page 34: Base de conocimientos

comportamientos que pueden tener ciertos procedimientos, ya que con su interfaz hace muy fácil la contemplación de detalles que tal vez no serían tan claros de ora manera. Su crecimiento se debe también a su gran portabilidad y nivel para interactuar con otros programas como Excel, Matlab y los más importantes lenguajes de programación. Su funcionalidad es muy grande debido al manejo tan exacto de los conjuntos numéricos y su capacidad de generar gráficos que hacen el análisis.

BASES DE DATOS Y BASES DE CONOCIMIENTO

Los investigadores y estudiosos de este campo han fijado diferencias concretas en cuanto a metodologías, técnicas de implementación, usos, contenidos y objetivos entre ambos sistemas. De hecho, la distinción entre base de datos y base de conocimiento, así como la distinción paralela entre modelo de datos y esquema de representación ha sido objeto de debate durante mucho tiempo entre estas comunidades de científicos. Un modelo de datos se asocia con una base de datos, mientras que su correspondiente en una base de conocimiento es el denominado esquema de representación. Existen otras distinciones importantes que mencionamos a continuación.

Las bases de datos son anteriores en el tiempo a las bases de conocimiento. Nacieron a mediados de la década de los 50 y desde entonces han sido una de las principales herramientas que los ordenadores ofrecen. A principios de los 60 se desarrollaron las primeras bases de datos estructuradas jerárquicamente y poco tiempo después, las bases de datos de red. A finales de los 60, Ted Codd, investigador de IBM, desarrolló un lenguaje de programación de propósito general que denominó programación relacional, basado en la teoría de conjuntos y la lógica, y que contenía el germen de lo que había de ser el más extendido de los sistemas de bases de datos hasta la fecha, las bases de datos relacionales.

El objetivo primero de una base de datos es, como su nombre indica, almacenar grandes cantidades de datos organizados siguiendo un determinado esquema o modelo de datos que facilite su almacenamiento, recuperación y modificación.

Por su parte, las bases de conocimiento (KB: Knowledge Base) pertenecen a una etapa muy posterior. Surgieron a partir de la investigación en IA como respuesta a las necesidades que las aplicaciones de esta disciplina planteaban. Las bases de conocimiento son la evolución lógica de los sistemas de bases de datos tradicionales, en un intento de plasmar no ya cantidades ingentes de datos, sino elementos de conocimiento (normalmente en forma de hechos y reglas) así como la manera en que estos elementos han de ser utilizados. También se les trata de dotar de conocimiento sobre sí mismas, es decir, una KB ha de "saber lo que sabe". Por ejemplo, ante una consulta determinada, una base de datos accederá a los datos almacenados en ella y dará una respuesta afirmativa o negativa, independientemente de que tenga o no la información relevante; en cambio, una

Page 35: Base de conocimientos

KB respondería "sí", "no" o "no lo sé", en el caso de carecer de todos los datos pertinentes a la consulta.

Se dice que una base de datos almacena únicamente hechos, que son un reflejo de universo, llamado Universo de Discurso (UoD) determinado. Las funciones que el gestor de base de datos se limita a facilitar son, fundamentalmente, las de edición y consulta de los datos. Una base de conocimiento, por otra parte, puede almacenar, además de hechos, un conjunto de reglas que se sirven de esos hechos para obtener información que no se encuentra almacenada de forma explícita. El tipo de base de conocimiento al que se dota de una considerable capacidad de deducción a partir de la información que contiene se denomina sistema experto.

Ambos sistemas de información cuentan con sus correspondientes gestores para simplificar al administrador las tareas comunes de mantenimiento: el sistema gestor de bases de datos (DBMS: Database Management System) y el sistema gestor de bases de conocimiento (KBMS: Knowledge Base Management System). También encontramos diferencias sustanciales en este aspecto. Básicamente los DBMSs actuales se encuentran perfectamente estandarizados, ofreciendo un número de características y metodologías comunes que posibilitan la comunicación entre diversos tipos y productos comerciales. La comercialización de los KBMSs es prácticamente anecdótica, y los esfuerzos en cuanto a su estandarización se están produciendo en estos momentos, en lo que se ha dado en denominar KIF (Knowledge Interchange Format) (Genesereth & Fikes 1992).

La diferencia más importante entre ambos tipos de sistemas de información es sin duda el modelo de datos en el que se basan (Brodie & Mylopoulos 1986). Los modelos de datos aportan la base conceptual para diseñar aplicaciones que hacen un uso intensivo de datos, así como la base formal para las herramientas y técnicas empleadas en el desarrollo y uso de sistemas de información.

Con respecto al diseño de bases de datos, el modelado de datos puede ser descrito así (Brodie 1984:20): dados los requerimientos de información y proceso de una aplicación de uso intensivo de datos (por ejemplo, un sistema de información), construir una representación de la aplicación que capture las propiedades estáticas y dinámicas requeridas para dar soporte a los procesos deseados (por ejemplo, transacciones y consultas). Además de capturar las necesidades dadas en el momento de la etapa de diseño, la representación debe ser capaz de dar cabida a eventuales futuros requerimientos. Un modelo de datos 83 es por tanto una colección de conceptos bien definidos matemáticamente que ayudan a expresar las propiedades estáticas (entidades, propiedades y relaciones) y dinámicas (operaciones con las entidades, propiedades o relaciones) de una aplicación con un uso de datos intensivo.

En lo que respecta a las bases de conocimiento, la necesidad de una notación precisa para representar el conocimiento se hizo evidente en el ámbito de la IA

Page 36: Base de conocimientos

casi desde el principio, sin duda debido a la experiencia acumulada en el terreno de las bases de datos. Esta notación recibe el nombre de esquema de representación en el entorno de las bases de conocimiento. Ahora entran en juego los términos que incluíamos en nuestra definición de concepto, que trataremos de explicar y clarificar, porque son cruciales para entender el enfoque que proponemos a la gestión terminológica.

En este sentido, resulta práctico considerar una base de conocimiento como un modelo de un mundo/empresa/sección de la realidad (Mylopoulos & Levesque 1984). Hemos de considerar el mundo/universo como una colección de individuos o entidades y una colección de relaciones que existen entre esos individuos. La colección de individuos que conforman el universo a representar y las relaciones que éstos mantienen constituye un estado, y puede haber transformaciones de estado que causan la creación o modificación de individuos o de las relaciones entre ellos. Podemos clasificar los esquemas de representación dependiendo de cuál sea el punto de partida:

Asignación de valores veritativos sobre estados: esquemas de representación lógicos.

Individuos/relaciones: esquema de representación de redes semánticas; Transformaciones de estados: esquemas de representación

procedimentales (sistemas productivos). La utilidad de un determinado esquema de representación se centra en dos

aspectos (Obermeier 1989:23): Su capacidad o adecuación expresiva, es decir, lo que el sistema puede

"entender" o "decir"; Su eficacia notacional.

Los esquemas de representación procedimentales apenas han tenido repercusión en lo que respecta a la representación de información léxica, por lo que no serán tratados en este trabajo. Los esquemas de representación lógicos durante mucho tiempo fueron considerados como la respuesta a todas las necesidades de los sistemas artificiales de comprensión del lenguaje natural, debido principalmente a la enorme repercusión del trabajo del gran lógico y matemático Richard Montague. En la actualidad, sin embargo, son pocos los enfoques que pretenden utilizar la lógica como único recurso, aunque ésta se encuentra embebida en la mayoría de los sistemas de representación y proceso de NLP.

El tipo de esquema de representación del conocimiento que ha disfrutado de mayor aceptación, tanto a nivel teórico como de implementación, son sin duda las redes semánticas, sobre todo porque tienen una adecuación psicológica importante. De este modo, investigadores de muy diversos ámbitos han hecho uso de las mismas, ya sea con implementaciones reales o sólo a nivel teórico para explotar y exponer hipótesis filosóficas, psicológicas, lingüísticas, etc.

Page 37: Base de conocimientos

La idea que defendemos es que deberíamos aprovechar esta experiencia acumulada para emplearla en la creación de representaciones conceptuales que, además de servir de base a la gestión terminológica, a la que tienen mucho que aportar, garanticen la integración de las bases terminológicas con sistemas más amplios de gestión del conocimiento, de modo que los recursos (terminológicos) creados para una empresa concreta puedan ser reutilizados en empresas de mayor envergadura que requieran de conocimiento especializado sobre un campo de especialidad concreto.

Para que esto pueda hacerse realidad, sin embargo, debemos comprender mínimamente lo que es un sistema basado en el conocimiento y las opciones que se plantean a la hora de elegir uno. Los sistemas de conocimiento modernos se basan en su mayoría en los sistemas de redes semánticas tradicionales de la IA. A continuación hacemos una breve exposición de las características fundamentales de éstos, con el objeto de comprender las premisas y conceptos con los que habremos de trabajar, así como lo que supone adoptar un enfoque terminológico basado en el conocimiento real.

BIG DATA

La proliferación de dispositivos móviles, sensores inalámbricos o cámaras y la información cada vez más amplia y variada que las empresas y las instituciones guardan sobre consumidores, clientes o pacientes han multiplicado el volumen de datos que se almacenan o se transmiten por las redes de comunicación. Dicha multiplicación es también el resultado de la explosión de áreas como el multimedia, las redes sociales o el Internet de las cosas. Pero no se trata sólo de grandes volúmenes de datos, sino también de la variedad de tipos y fuentes: parámetros meteorológicos proporcionados por sensores, posts en redes sociales, fotos y vídeos digitales, transacciones de compras, ubicaciones GPS de teléfonos móviles, etc.

Todos estos datos, que a nivel individual tienen poco sentido, analizados, agrupados y procesados pueden generar un gran valor añadido. Son el auténtico oro negro del siglo XXI y su minería se convierte en una de las más destacadas oportunidades empresariales y de desarrollo en la Sociedad de la Información y el Conocimiento.

Esa minería recibe el nombre de big e incluye las tecnologías, sistemas y metodologías que permiten el tratamiento y análisis de grandes conjuntos de datos, que no pueden ser gestionados con los sistemas y herramientas tradicionales. Ello se debe a su gran volumen (por ejemplo análisis de tweets para detectar opiniones sobre productos o de medidas de sensores para predecir el consumo de energía), a la velocidad de proceso necesaria (como en los casos de detección de fraude en compras o transacciones económicas o de ciberseguridad), a la variedad de tipos de datos (textos, información de sensores,

Page 38: Base de conocimientos

audio, vídeo, clicks, datos de acceso, llamadas telefónicas, imágenes médicas, etc.) que en ocasiones deben analizarse de forma conjunta, y a la necesidad de garantizar la fiabilidad de los resultados.

Big Data se define como el conjunto de herramientas informáticas destinadas a la manipulación, gestión y análisis de grandes volúmenes de datos de todo tipo los cuales no pueden ser gestionados por las herramientas informáticas tradicionales. Big data es un término de origen inglés cuya traducción equivale a "Datos masivos", la tecnología big data tiene por objetivo analizar datos e información de manera inteligente que ayuden a una correcta toma de decisión.

El objetivo fundamental del big data es dotar de una infraestructura tecnológica a las empresas y organizaciones con la finalidad de poder almacenar, tratar y analizar de manera económica, rápida y flexible la gran cantidad de datos que se generan diariamente, para ello es necesario el desarrollo y la implantación tanto de hardware como de software específicos que gestionen esta explosión de datos con el objetivo de extraer valor para obtener información útil para nuestros objetivos o negocios.

Es una realidad que la cantidad de información digital que se genera diariamente en nuestro planeta crece exponencialmente, gigantes y potentes bases de datos en donde se almacenan por ejemplo todos los movimientos de dinero que se producen en una entidad bancaria, la información que registran los puntos de ventas de los grandes centros comerciales o toda la información que se genera en las redes sociales, blogs y páginas webs que se actualizan diariamente, son ejemplos entre otros de fuentes generadoras de información y datos. En este aspecto hay estudios que afirman que cada día se genera tanta información digital como el equivalente a toda la información escrita a lo largo de toda la historia de la humanidad, sin duda vivimos en la era de la información digital.

Ante esta nueva realidad de la cantidad ingente de datos que se generan diariamente, muchas empresas y organización desean utilizar esta información con el objetivo de mejorar las prestaciones de sus servicios o negocios, para ello la tecnología big data ha sido desarrollada con la finalidad de capturar, almacenar y analizar toda estos datos con la finalidad de obtener información útil para nuestro negocio.

Podemos definir la tecnología Big Data mediante sus 4 dimensiones coloquialmente conocidas como las 4v:

Volumen de datos: Como su propio nombre indica la tecnología big data (datos masivos) ha de ser capaz de gestionar un gran volumen de datos que se generan diariamente por las empresas y organizaciones de todo el mundo, por ejemplo la cadena de supermercados americana Wallmart almacena más de 1 millón de transacciones comerciales cada hora identificando los productos que compran sus clientes, más de 100.000 Gb

Page 39: Base de conocimientos

de información almacena la red social Facebook diariamente así como 72 millones de descargas se realizan en la tienda online Appstore.

Variedad de datos: Big data ha de tener la capacidad de combinar una gran variedad de información digital en los diferentes formatos en las que se puedan presentar ya sean en formato video, audio o texto. Diferentes fuentes de información como las nuevas tecnologías wearables que monitorizaran nuestra actividad física, el internet de las cosas que conectará los dispositivos y máquinas entre sí, millones de mensajes escritos en redes sociales como Facebook o Twitter, millones de videos subidos a Youtube por día... son ejemplos entre otros de fuentes generadoras de diferentes tipos de información.

Velocidad: La tecnología Big data ha de ser capaz de almacenar y trabajar en tiempo real con las fuentes generadoras de información como sensores, cámaras de videos, redes sociales, blogs, páginas webs... fuentes que generan millones y millones de datos al segundo, por otro lado la capacidad de análisis de dichos datos han de ser rápidos reduciendo los largos tiempos de procesamiento que presentaban las herramientas tradicionales de análisis.

Veracidad: Por último el Big Data ha de ser capaz de tratar y analizar inteligentemente este vasto volumen de datos con la finalidad de obtener una información verídica y útil que nos permita mejorar nuestra toma de decisiones.

Con todo ello podemos definir al big data como el conjunto de herramientas informáticas que nos permite captar, almacenar y gestionar un gran volumen de información variada a una alta tasa de velocidad permitiendo obtener unos datos veraces y útiles para la toma de decisión.

Componentes de una plataforma big data

Las organizaciones han atacado esta problemática desde diferentes ángulos. Todas esas montañas de información han generado un costo potencial al no descubrir el gran valor asociado. Desde luego, el ángulo correcto que actualmente tiene el liderazgo en términos de popularidad para analizar enormes cantidades de información es la plataforma de código abierto Hadoop.

Hadoop está inspirado en el proyecto de Google File System(GFS) y en el paradigma de programación MapReduce, el cual consiste en dividir en dos tareas (mapper – reducer) para manipular los datos distribuidos a nodos de un clúster logrando un alto paralelismo en el procesamiento.[5] Hadoop está compuesto de tres piezas: Hadoop Distributed File System (HDFS), Hadoop MapReduce y Hadoop Common.

Hadoop Distributed File System(HDFS)

Los datos en el clúster de Hadoop son divididos en pequeñas piezas llamadas bloques y distribuidas a través del clúster; de esta manera, las funciones map y

Page 40: Base de conocimientos

reduce pueden ser ejecutadas en pequeños subconjuntos y esto provee de la escalabilidad necesaria para el procesamiento de grandes volúmenes.

La siguiente figura ejemplifica como los bloques de datos son escritos hacia HDFS. Observe que cada bloque es almacenado tres veces y al menos un bloque se almacena en un diferente rack para lograr redundancia.

Hadoop MapReduce

MapReduce es el núcleo de Hadoop. El término MapReduce en realidad se refiere a dos procesos separados que Hadoop ejecuta. El primer proceso map, el cual toma un conjunto de datos y lo convierte en otro conjunto, donde los elementos individuales son separados en tuplas (pares de llave/valor). El proceso reduce obtiene la salida de map como datos de entrada y combina las tuplas en un conjunto más pequeño de las mismas. Una fase intermedia es la denominada Shuffle la cual obtiene las tuplas del proceso map y determina que nodo procesará estos datos dirigiendo la salida a una tarea reduce en específico.

La siguiente figura ejemplifica un flujo de datos en un proceso sencillo de MapReduce.

Page 41: Base de conocimientos

Big Data y el campo de investigación

Los científicos e investigadores han analizado datos desde ya hace mucho tiempo, lo que ahora representa el gran reto es la escala en la que estos son generados.

Esta explosión de "grandes datos" está transformando la manera en que se conduce una investigación adquiriendo habilidades en el uso de Big Data para resolver problemas complejos relacionados con el descubrimiento científico, investigación ambiental y biomédica, educación, salud, seguridad nacional, entre otros.

De entre los proyectos que se pueden mencionar donde se ha llevado a cabo el uso de una solución de Big Data se encuentran:

El Language, Interaction and Computation Laboratory (CLIC) en conjunto con la Universidad de Trento en Italia, son un grupo de investigadores cuyo interés es el estudio de la comunicación verbal y no verbal tanto con métodos computacionales como cognitivos.

Lineberger Comprehensive Cancer Center - Bioinformatics Group utiliza Hadoop y HBase para analizar datos producidos por los investigadores de The Cancer Genome Atlas (TCGA) para soportar las investigaciones relacionadas con el cáncer.

El PSG College of Technology, India, analiza múltiples secuencias de proteínas para determinar los enlaces evolutivos y predecir estructuras moleculares. La naturaleza del algoritmo y el paralelismo computacional de Hadoop mejora la velocidad y exactitud de estas secuencias.

La Universidad Distrital Francisco Jose de Caldas utiliza Hadoop para apoyar su proyecto de investigación relacionado con el sistema de inteligencia territorial de la ciudad de Bogotá.

La Universidad de Maryland es una de las seis universidades que colaboran en la iniciativa académica de cómputo en la nube de IBM/Google. Sus investigaciones incluyen proyectos en la lingüistica computacional (machine translation), modelado del lenguaje, bioinformática, análisis de correo electrónico y procesamiento de imágenes.

Aplicaciones del big data

Page 42: Base de conocimientos

¿Para qué puede servir el big data? Para muchas cosas. Una de ellas es hacer más útil y aprovechable conocimiento que siempre había estado ahí y a cuya existencia no se concedía importancia. Otra tiene que ver con mejorar resultados de actividades, procesos, personas o máquinas. Y una tercera es permitir cosas que antes o no existían o se consideraban imposibles.

Numerosas empresas y organizaciones de todo el mundo necesitan almacenar y gestionar correctamente este aluvión de datos e información que se genera diariamente, la tecnología big data se aplica indistintamente en numerosos campos y sectores, dentro del ámbito de la empresa privada, en organizaciones y centros científicos incluso gobiernos que gestionan ciudades y países enteros han encontrado en esta tecnología su mejor baza que les permite optimizar sus tomas de decisiones y sus resultados. Algunas de las aplicaciones son:

Las empresas pueden tener más y mejores datos de su funcionamiento, afinar más en su toma de decisiones, personalizar al máximo sus productos y servicios para cada usuario o grupo de usuarios, y desarrollar nuevas generaciones de productos innovadores con inteligencia y sensores para generar información sobre su estado y necesidades. En relación con los clientes, el big data hace posible obtener una visión completa de ellos. Al conocimiento clásico del cliente se pueden añadir ahora fuentes internas y externas, que facilitan conocer su forma de ser, porqué compran, cómo prefieren comprar, porqué cambian, qué es lo próximo que van a comprar o que factores les llevan a recomendar un producto a terceros.

En el sector público, puede generar importantes ahorros en eficiencia, a la vez que reducir los fraudes y los errores y estimular la recaudación de impuestos. En el campo de la movilidad, las nuevas técnicas de datos permiten aplicaciones basadas en la geolocalización y que generan negocios y consumos distintos a los tradicionales. En el campo de la investigación las posibilidades son enormes en áreas como la meteorología, la genómica, los procesos biológicos o el medio ambiente.

En sanidad, el volumen de datos crece de forma rápida así como la necesidad de enviarlos a través de las redes. Esos datos son de naturaleza muy variada (ficheros electrónicos de pacientes, imágenes médicas, resultados de los laboratorios, notas de los médicos, correos electrónicos, reclamaciones, citas y atención del paciente, cifras económicas, etc.) y muchos de ellos es relevante desde el punto de vista clínico, permitiendo tener una visión mucho más completa del paciente y de su estado. Y hace realidad cosas que parecen sacadas de novelas de ciencia ficción, como las autopsias virtuales. A nivel cotidiano, el manejo adecuado de los datos permite la mejora de la atención, de la eficiencia y de la calidad del sistema de salud. Salva vidas y a la vez produce importantes reducciones del gasto,

Page 43: Base de conocimientos

que convierten al sistema sanitario en sostenible e incrementan las posibilidades de acceso a más colectivos, como en el caso de los pacientes crónicos.

Aparte de las aplicaciones en los ámbitos empresarial, comercial, de investigación o sanitario, el análisis de grandes cantidades de datos también se aplica, por ejemplo, al deporte. El big data ayuda en la Fórmula 1, analizando los bits proporcionados por sensores que están en el coche (motor, aceite, gasolina, neumáticos, caja de cambios, etc.) o que lleva encima el piloto y que se añaden a información sobre el circuito o sobre la meteorología. Todos estos parámetros se utilizan durante la carrera y después de ella para mejorar el coche y ver donde se puede ganar tiempo y evitar problemas. En otras ocasiones son los deportistas los que usan estas técnicas para analizar la información de sensores en sus zapatillas, imágenes de televisión o sensores en su cuerpo para buscar el máximo rendimiento. Estos usos se pueden complementar con una vigilancia médica mediante herramientas de monitorización y técnicas de datos para evitar esfuerzos límite y daños en la salud de los deportistas.

En numerosas ocasiones la información captada por empresas privada es tratada y analizada con el objetivo de aumentar sus ventas y ganancias, por ejemplo empresas como Google, Amazon o Apple presentan anuncios personalizados a los gustos y necesidades del usuario tras un análisis de las búsquedas o compras realizadas, por otro lado dicha información les permite a las empresas predecir futuras demandas de un producto o mejorar las prestaciones que ofrecen a sus usuarios.

En el ámbito científico big data se utiliza en numerosas aplicaciones como por ejemplo la predicción meteorológica, el estudio del genoma o el análisis de la composición de la materia. La organización Europea de investigación CERN es un organismo referente y pionero en el uso de Big Data, resulta curioso como el estudio de las interacciones y partículas fundamentales que componen la materia genera un gigantesco volumen de información, para ello el acelerador de partículas LHC provoca un choque de 2 protones a una velocidad cercana a la luz, mientas cerca de 150 millones de sensores captan información sobre la colisión ocurriendo 14 millones de choques por cada segundo, la cantidad de datos generada por segundo es realmente enorme.

Los gobiernos utilizan esta tecnología para mejorar los servicios que prestan a sus ciudadanos, unas de las aplicaciones en donde se ha aplicado la tecnología big data ha sido en la ciudad francesa de Lyon, gracias a esta tecnología junto con la captura de datos mediante sensores repartidos por toda la ciudad se ha podido analizar las congestiones de tráfico con el objetivo de predecir en cualquier momento cuando se va a producir un atasco de tal manera que cambian automáticamente las señales de tráfico con el objetivo de mejorar el flujo circulatorio.

Page 44: Base de conocimientos

Incluso los partidos políticos utilizan estas nuevas tecnologías para alcanzar un mayor número de votos, conocido fue el caso de la campaña de Barack Obama en el año 2012 en el que utilizó Big data para acercarse y conocer los gustos y necesidades de sus ciudadanos permitiéndole realizar discursos y programas políticos adecuados a las necesidades de sus ciudadanos.

Google ha aplicado big data en aplicaciones como su traductor de idiomas automático, mediante las herramientas big data google volcó toda la información rastreada en Internet comparando documentos oficiales traducidos de un idioma a otro así páginas webs personales, esta gigantesca base de datos ha permitido a Google desarrollar el mejor traductor de idiomas presente actualmente.

Big data puede aplicarse tanto en empresas multinacionales como Google, Facebook o Coca-cola así como en pequeñas empresas, por ejemplo el caso de una pequeña empresa que tras aplicar big data a un perfil determinado de usuarios de una red social obtiene información util para generar un nuevo servicio que satisfaga las necesidades de dichos usuarios consiguiendo nuevos clientes.

El sector industrial ha encontrado en el big data la tecnología perfecta que mejora sus procesos, por ejemplo el uso de sensores que registran datos sobre el estado de los componentes de una máquina con su posterior tratamiento mediante big data nos permitirá predecir el mantenimiento de una manera más efectiva ahorrando tiempo y costes innecesarios.

Aplicaciones para analizar la climatología, los valores de las acciones o el estado del tráfico en tiempo real, otras aplicaciones que nos permiten predecir tendencias de comercio, crimen hasta incluso cuando se producirá un brote vírico o epidemia en una población, aunque parezca una visión futurista hoy en día es real gracias a la tecnología big data.

COMPUTACIÓN EN LA NUBE

Hoy en día, la Internet con su creciente importancia se ha transformado en una de las principales palancas del mundo moderno, convirtiéndose en poco tiempo en la red comunicacional más trascendental en toda la historia si la comparamos con los medios tradicionales ya conocidos por todos. Se ha convertido en el dinamismo del planeta entero al compás de las (re)evoluciones tecnológicas, estimándose más de 100 millones las personas que en el mundo ya se han hecho parte de este gigante comunicacional estimándose que en siete años se contará con mil millones de usuarios.

Page 45: Base de conocimientos

Pero sin marearse con tanta estadística y mejor vamos a lo concreto: reconocer que nuevamente la Internet nos trae sorpresas. Con los avances de infraestructura en estas tecnologías, los nuevos modos de programación y los nuevos modelos en su uso, han llegado también nuevas formas de denominar a este gran protagonista, y es aquí precisamente en donde comenzamos a entablar la denominación del “Cloud Computing” o Nube Computacional (o Computación en la Nube si queremos una traducción más purista), la cual representa un nuevo punto de inflexión para el valor de las redes computacionales, prometiendo un gran cambio no solo en la industria informática sino también en la manera en que opera la gente en sus trabajos y compañías por la gran cantidad y variedad de servicios que están apareciendo día a día. Complementando lo anterior, podemos fácilmente reconocer que cada época tiene sus palabras de moda, y la industria informática no es indiferente a este fenómeno. En los ochenta, la palabra de moda fue "multimedia"; en los noventa, "interactivo"; y en los últimos años, “Web 2.0”. Y justo cuando todos empiezan a sentirse cómodos con el último término de moda, aparece otro la ya nombrada Nube Computacional, y tal como las nubes mismas, parece ser un concepto nebuloso. Acerquémonos un poco y veamos que no es tan nebuloso el tema, aclarando algunas ideas y confusiones que de seguro a más de alguno le han dado un dolor de cabeza.

Origen del cloud computing

Debido a las necesidades de cómputo descritas, se ha venido realizando un importante esfuerzo en la investigación de capacidades para la ejecución de procesos en múltiples computadores. Esta tendencia fue impulsada originalmente por la utilización de sistemas abiertos, interoperables y protocolos de comunicación estándar que permitían la comunicación eficiente entre sistemas y tecnologías heterogéneos.

El primer paso de esta evolución fue en gran medida propiciado por los sistemas operativos tipo Unix que permitieron la configuración de clúster, es decir, agrupaciones de ordenadores con componentes de hardware comunes que se comportan como un único computador.

Tras varias décadas de investigaciones y desarrollos en estas tecnologías, la irrupción del sistema operativo Linux y sus estándares abiertos permitió implementar clúster basados en la arquitectura estándar de los PC, consiguiendo instalaciones de cálculo de alto rendimiento a bajos precios y popularizando esta solución durante la década de 19901.

Estos clúster sufrieron un proceso de especialización para proporcionar servicios de cálculo y almacenamiento, fundamentalmente en centros de investigación y universidades. Estos centros comenzaron a ofrecer sus servicios a terceros a través de protocolos estándar, constituyendo la denominada arquitectura de computación grid, orientada al procesamiento en paralelo o al almacenamiento de gran cantidad de información.

Page 46: Base de conocimientos

Estas arquitecturas fueron acogidas en instituciones investigadoras durante la primera mitad de la década de 2000, pero la complejidad para utilizar la infraestructura, las dificultades para utilizar diferentes grids, y los problemas de portabilidad entre ellas, hicieron que nunca se popularizara fuera del ámbito de la investigación y académico.

Durante esta misma época comenzaron a popularizarse las tecnologías de virtualización que hacían posible implementar máquinas virtuales que "desacoplan" el hardware del software y permiten replicar el entorno del usuario sin tener que instalar y configurar todo el software que requiere cada aplicación. Esto tiene ventajas en la distribución y mantenimiento de sistemas de software complejos y permite integrar bajo un mismo entorno un conjunto de sistemas heterogéneos.

Esta nueva arquitectura permitía distribuir carga de trabajo de forma sencilla, lo cual elimina los problemas que presentaba la arquitectura grid, abriendo una nueva puerta al cálculo distribuido, llamado cloud computing. Este nuevo modelo emerge como un nuevo paradigma capaz de proporcionar recursos de cálculo y de almacenamiento que, además, resulta especialmente apto para la explotación comercial de las grandes capacidades de cómputo de proveedores de servicios en Internet.

¿Qué es la computación en la nube?

La característica básica de la computación en la nube es que los recursos y servicios informáticos, tales como infraestructura, plataforma y aplicaciones, son ofrecidos y consumidos como servicios a través de la Internet sin que los usuarios tengan que tener ningún conocimiento de lo que sucede detrás. Esto debido a que los usuarios no tienen idea alguna sobre la infraestructura que opera para ofrecer los servicios es que se llama Computación en las Nubes.

Características del cloud computing

Page 47: Base de conocimientos

Para poder entender de una manera rápida y sencilla cuales son las claves del concepto del cloud computing, se recurre a una serie de características principales que lo diferencian de los sistemas tradicionales de explotación de las TIC. Entre las características asociadas al cloud computing se encuentran las siguientes:

Arquitectura de la capa de servicios

Podemos dividir la Computación de las Nubes en las siguientes capas:

Software como Servicio (SaaS). Ésta en la capa más alta y consiste en la entrega de una aplicación completa como un servicio. El proveedor SaaS dispone de una aplicación estándar desarrollada en algunos casos por él mismo que se encarga de operar y mantener y con la que da servicio a multitud de clientes a través de la red, sin que estos tengan que instalar ningún software adicional. La distribución de la aplicación tiene el modelo de uno a muchos, es decir, se realiza un producto y el mismo lo usan varios clientes. Los proveedores de SaaS son responsables de la disponibilidad y funcionalidad de sus servicios no dejando de lado las necesidades de los clientes que son, al fin y al cabo, los que usaran el software. Un ejemplo claro es la aplicación para el manejo del correo electrónico (como Gmail, Hotmail, Yahoo, etc) por medio de un web-browser.

Plataforma como Servicio (PaaS). PaaS es la siguiente capa. La idea básica es proporcionar un servicio de plataforma que permita desarrollar software a través de la red. El proveedor es el encargado de escalar los recursos en caso de que la aplicación lo requiera, del rendimiento óptimo de la plataforma, seguridad de acceso, etc. Para desarrollar software se

Page 48: Base de conocimientos

necesitan, BBDD, servidores, redes, y herramientas de desarrollo. Con PaaS uno se olvida del personal para su uso y te centras en innovar y desarrollar ya que el hardware necesario para el desarrollo de software es ofrecido a través de Internet, lo que permite aumentar la productividad de los equipos de desarrollo. Un ejemplo es Google Aps Engine que permite desarrollar, compartir y alojar aplicaciones Web de terceros en su vasta infraestructura.

Infraestructura como Servicio (IaaS). IasS corresponde a la capa más baja. La idea básica es la de externalización de servidores para espacio en disco, base de datos, routers, swtiches y/o tiempo de computación en lugar de tener un servidor local y toda la infraestructura necesaria para la conectividad y mantenimiento dentro de una organizaron. Con una IaaS lo que se tiene es una solución en la que se paga por consumo de recursos solamente usados: espacio en disco utilizado, tiempo de CPU, espacio en base de datos, transferencia de datos. Las IaaS permiten desplazar una serie de problemas al proveedor relacionado con la gestión de las máquinas como el ahorro de costos al pagar sólo por lo consumido y olvidarse de tratar con máquinas y su mantenimiento. Por otro lado IaaS puede permitir una escalabilidad automática o semiautomática, de forma que podamos contratar más recursos según los vayamos necesitando. Ejemplos de sitios son muchos está el caso de Dropbox y SkyDrive. Estos sitios permiten alojar datos en servidores y accesar a ellos a través de cualquier parte del mundo con Internet.

Proceso de negocios como Servicio (BPaaS). BPaaS Corresponde a la capa más alta de la nube. Al igual que entendemos que el modelo de servicio IaaS ofrece infraestructura TI básica como servicio (computación, elementos de red o almacenamiento, sistemas operativos o gestores de bases de datos), o que PaaS ofrece plataformas completas gestionadas como servicio (con herramientas para el desarrollo de aplicaciones, componentes reutilizables ya disponibles, facilidades para el despliegue de aplicaciones y entornos de ejecución) o que al hablar de SaaS pensamos en que lo que se ofrece como servicio gestionado al consumidor final son aplicaciones completas sobre la nube, podríamos considerar que BPaaS es un modelo de servicio donde las aplicaciones que se ofrecen en cloud son del tipo procesos de negocio o workflows. En este sentido BPaaS podría considerarse como el nivel superior de las distintas capas que se distinguen en la nube, o bien, como representa la siguiente figura, un subconjunto o particularización de la capa SaaS.

Page 49: Base de conocimientos

Clasificación según las principales formas de implementación

Cloud Público (Externo)

Forma de implementación caracterizada por la oferta de servicios de computación virtualizados (bases de datos, sistemas operativos, plataformas de desarrollo, aplicaciones, etc.) por parte de los proveedores para múltiples clientes, accediendo éstos a dichos servicios a través de Internet o redes privadas virtuales (VPNs).

Como características inherentes a esta forma de implementación podemos citar las que siguen:

Reducido plazo de tiempo para la disponibilidad del servicio. No se requiere llevar a cabo inversión monetaria para su implementación. Permite la externalización a un proveedor de servicios cloud de todas las

funciones básicas de la empresa.

Posibilita el aprovechamiento de la infraestructura de los proveedores de servicios, permitiendo adicionalmente una alta escalabilidad y flexibilidad en la modificación del dimensionamiento del servicio.

Favorece la utilización de conjuntos de software estándar.

Page 50: Base de conocimientos

Lleva asociadas unas cuotas iniciales de pago más bajas que el resto de implementaciones. Adicionalmente los costes del cloud público son variables, cumpliendo el principio de pago por uso.

La información corporativa se encuentra alojada en la nube pública junto a la del resto de clientes del proveedor, lo que implica, además de no poder tener localizada físicamente dicha información, imponer al proveedor una serie de requisitos de alta exigencia en temas de seguridad y protección de datos.

Cloud Privado (Interno)

Forma de implementación caracterizada por el suministro por parte del proveedor, de entornos virtualizados que pueden ser implementados, usados y controlados por la misma empresa contratante del servicio. Esto indica no solo que la solución cloud puede ser administrada por la organización contratante, por el proveedor o por un tercer actor; sino que puede existir en las instalaciones propias del cliente o fuera de las mismas.

Como características propias de esta forma de implementación se enumeran las siguientes:

Reducido plazo de tiempo para la puesta en servicio y una alta flexibilidad en la asignación de recursos.

Al contrario que el cloud público, requiere de inversión económica para la implementación de la solución contratada.

Lleva asociados sistemas y bases de datos locales. Ofrece la posibilidad de aprovechar el personal existente y las inversiones

en sistemas de información realizadas con anterioridad. Implica más especificidad en la solución adquirida, ya que está diseñada

para ajustarse a las necesidades propias de la empresa contratante. Permite disponer de un control total de la infraestructura, de los sistemas y

de la información corporativa tratada por éstos. Facilita el control y la supervisión de los requisitos de seguridad y

protección de la información almacenada.

Cloud de Comunidad

Se trata de clouds utilizados por distintas organizaciones cuyas funciones y servicios sean comunes, permitiendo con ello la colaboración entre grupos de interés.

Ejemplos de esta forma de implementación son los clouds de comunidades de servicios de salud (en inglés, healthcare community cloud) para facilitar el acceso aplicaciones e información crítica de carácter sanitario, y los clouds de comunidad gubernamentales (en inglés, government community cloud) para facilitar el acceso

Page 51: Base de conocimientos

a recursos de interoperabilidad entre organismos públicos y Administraciones públicas.

Al analizar un cloud de comunidad, se debe considerar que, en principio, sus fortalezas y debilidades se sitúan entre las del privado y las del público. En general, el conjunto de recursos disponibles con un cloud de comunidad es mayor que en el privado, con las ventajas evidentes que ello conlleva en términos de elasticidad. Sin embargo, la cantidad de recursos es menor que los existentes en una solución de cloud público, limitando la elasticidad respecto a dicho cloud público. Por otra parte, el número de usuarios de este tipo de nube es menor que los de la nube pública, lo que la dota de mayores prestaciones en cuestiones de seguridad y privacidad.

Cloud Híbrido

Forma de implementación cuya infraestructura cloud (en la nube) se caracteriza por aunar dos o más formas de clouds (privado, comunitario o público), los cuáles continúan siendo entidades únicas interconectadas mediante tecnología estandarizada o propietaria, tecnología que permite la portabilidad de datos y aplicaciones (ej. el rebalanceo de cargas entre nubes). Una entidad que emplee esta forma de implementación se podría beneficiar de las ventajas asociadas a cada tipo de cloud, disponiendo con ello de una serie de características adicionales, tal y como se muestra a continuación:

Ofrece una mayor flexibilidad en la prestación de servicios de TI, al mismo tiempo que se mantiene un mayor control sobre los servicios de negocio y de datos.

Con una solución de cloud híbrido, al igual que en los casos detallados anteriormente, se consigue una rápida puesta en servicio.

Implica mayor complejidad en la integración de la solución cloud, como consecuencia de ser una solución que se compone de dos formas distintas de implementación de servicios en la nube.

Permite integrar las mejores características de las dos formas de implementación cloud, en cuanto al control de los datos y a la gestión de las funciones básicas de la entidad.

Posibilita la selección por parte del proveedor, de infraestructura escalable y flexible, permitiendo una alta agilidad en el redimensionamiento de la solución.

Permite el control interno de los servicios cloud desde la propia entidad.

Clasificación por agentes intervinientes en el negocio

Page 52: Base de conocimientos

Como principales agentes intervinientes en el negocio se pueden definir: el proveedor, el intermediario, el habilitador, el auditor y el suscriptor, los cuales se detallan a continuación.

Page 53: Base de conocimientos

Proveedor

El proveedor presta servicios a través de la nube a suscriptores o intermediarios, es decir, el servicio ofertado por la empresa proveedora al cliente, ya sea de forma directa o a través de un intermediario.

Intermediario

El intermediario presta servicios de intermediación entre los usuarios finales y los proveedores en un mercado dinámico de oferta y demanda como es el cloud computing. Como ejemplo se pueden mencionar los servicios frontales o las intermediaciones extremo-extremo.

Habilitador

Se trata de un agente proveedor típicamente enfocado al mercado de proveedores de cloud. Son empresas que proveen de software y hardware a proveedores de servicios cloud, para que éstos desarrollen y ofrezcan al usuario servicios en la nube.

Auditor

El auditor es el agente encargado de llevar a cabo las evaluaciones independientesde los servicios en la nube, de las operaciones asociadas a los sistemas de información, del rendimiento y de la seguridad en el uso de la solución cloud10.

Suscriptor

La figura denominada suscriptor se corresponde con el usuario contratante de los servicios cloud, por lo que se puede identificar a esta figura como el cliente de los proveedores, los intermediarios y los auditores.

Virtualización en las nubes

La virtualización es esencial en el desarrollo óptimo de la computación en las nubes, y está referida principalmente al tema de plataforma. Se puede decir que la virtualización es una abstracción de los recursos tecnológicos que permite a los servidores crear dispositivos virtuales la cuales pueden ser usados para aumentar los recursos más que como sistemas discretos. En la computación en las nubes es interesante el tema de la para virtualización que permite tratar a un servidor como muchos servidores. Otro tema interesante es el clustering , que permite tratar a muchos servidores como uno solo. Esto permite muchos mejoramientos como:

Rápida incorporación de nuevos recursos para los servidores virtualizados. Reducción de los costes de espacio y consumo. Administración global centralizada y simplificada.

Page 54: Base de conocimientos

Mayor facilidad para la creación de entornos de test que permiten poner en marcha nuevas aplicaciones sin impactar a la producción, agilizando el proceso de las pruebas.

Aislamiento: un fallo general de sistema de una máquina virtual no afecta al resto de máquinas virtuales.

No sólo aporta el beneficio directo en la reducción del hardware necesario, así como de sus costes asociados.

Los “pros” y “contras” en la nube

Riesgos:

Debemos reconocer que no todo es color de rosa en la gran nube, pues siempre habrá factores que harán tropezar la confiabilidad de los servicios ofrecidos por esta. Por un lado el crecimiento de esta noción ha fortalecido las ventas de los hoy llamados netbooks, los cuales han sido sacrificados en sus prestaciones físicas como la ausencia de unidad óptica e incluso, en la mayoría de las ocasiones, escaso disco duro pues la idea central es que el usuario no se llene de periféricos y sólo acceda a su información a través de la red. El concepto es genial, pero los fallos de los servidores en distintas ocasiones han puesto la señal de alerta en muchos usuarios que aún desconfían de un servicio como este. Es el caso del gran padre, Google, con quien en varias ocasiones tanto Gmail como su buscador insigne han sufrido fallas que han dejado a sus usuarios fuera de servicio por unas cuantas horas; las suficientes como para que millones de clientes reclamen, se estresen y queden con aquella sensación hormigueante de que hay algo que no está funcionando del todo bien.

Demos el siguiente ejemplo: ¿Qué pasaría si una empresa o institución que ha decidido dejar toda su información vital en una nube y justo el día que deseen acceder a ella está despejado? Una metáfora que sin duda refleja la inquietud, y por cierto la precaución que deben tomar tanto personas como empresas para mantener la información a buen resguardo. Eventualmente se piensa que una empresa que oferte un servicio de esta naturaleza contará con un verdadero ejército de servidores desplegados por todo el mundo para dar un buen respaldo pero lo cierto es que estos también pueden fallar pues los procesos aún no maduran del todo, exponiendo a los cibernautas al peligro de perder valiosa información basados en servicios gratuitos. Otro riesgo igual de importante en este tema es la fuga de información, un problema cada vez más común dada la gama y variedad de los datos que los proveedores en la nube almacenan, lo que implica que en cualquier fuga de información ocurriría significativo impacto. Usar los servicios en la nube representa tener una confianza sin precedentes en el proveedor, resultando inevitable que los autores de programas maliciosos y los piratas cibernéticos apunten a los servicios de computación en la nube con un afán de buscar datos que puedan robar, vender o manipular ya que la computación en nube se esta convirtiendo en una herramienta empresarial

Page 55: Base de conocimientos

esencial, tal como se han consolidado hoy en día el correo electrónico, se debieran introducir patrones y regularizaciones para sistematizar la labor de los proveedores y mitigar cualquier tipo de riesgo.

Se cree que una vez que la computación en nube alcance su masa crítica, es probable que haya pocos hackers altamente especializados que sepan cómo penetrar en sistemas en nube para robar o manipular información, y quienes lo logren podrán ganar mucho dinero. También habrá estafadores sin ningún interés en la tecnología pero que usarán trucos actuales, como e-mails 419, para hacerse con el dinero de sus víctimas. Y obviamente se situarán los ciber delincuentes que crearán y utilizarán troyanos, gusanos y otros programas maliciosos, así como compañías de seguridad que protejan a sus clientes contra estas amenazas. En general, el estado de las cosas no sufrirá un gran cambio, excepto por el hecho de que todos, usuarios, proveedores y ciber delincuentes, se encontrarán trabajando en la nube.

Beneficios:

Las bondades de utilizar este modelo de computación en aplicaciones cotidianas hasta hace poco tenía detractores que reclamaban aspectos como el ancho de banda , el cual ahora es el recurso de cómputo, por dólar, que está creciendo más rápidamente, incluso más rápido que el almacenamiento de datos, el cual está creciendo más rápido que el poder de procesamiento. Si tomamos en cuenta que el poder de procesamiento está creciendo exponencialmente desde hace más de 40 años, empezamos a ver cómo el almacenamiento barato unido al creciente ancho de banda hace que la computación en la nube sea hoy una realidad.

Un corolario importante dentro de los beneficios es el gran ahorro, tanto en licencias como en la administración del servicio y en los equipos necesarios. Como parámetro, considérese que la ciudad de Washington DC cambió el software de oficina de 38.000 usuarios por un servicio de computación en la nube. El cambio duró menos de 6 meses y produce ahorros multimillonarios. Aunque la mayoría de los proveedores en la nube actualmente se dirigen a los usuarios corporativos, es posible que los usuarios particulares sean los que hagan del concepto un éxito al usarlo de manera masiva. Primero, Ud. tiene que adquirir un ordenador, algo que suena más fácil de lo que en realidad es: ¿va a escoger un portátil o un ordenador de escritorio, más barato y a menudo más rápido? ¿Cuál satisfará mejor sus necesidades? En el mundo de la computación en nube Ud. puede tener ambos; puede comprar un económico thin client portátil que puede conectar a una pantalla y a un teclado. Entonces, todo lo que necesita es conectarse a su proveedor en la nube y disfrutar de todo el rendimiento y memoria que Ud. desee. Dos años después, cuando normalmente Ud. debería reemplazar su obsoleto ordenador portátil, aún podrá usar su thin client, porque es el proveedor el que ofrece el rendimiento y no el equipo en sí.

Page 56: Base de conocimientos

Adicionalmente, el modelo de computación en la nube es más amigable con el medio ambiente, las computadoras de escritorio actualmente gastan como 30 vatios, cada una, con la computación en la nube no se necesitan máquinas que consuman más de 2 vatios. O sea, la computación en la nube, además, ofrece un importante ahorro global de energía. La computación en nube también beneficia a la industria de contenidos. Varios métodos se usaron en el pasado para prevenir el copiado ilegal de música y películas, pero todos tienen algún problema. Ha habido casos de copias protegidas de CDs que no funcionan en ciertos reproductores de CD, y los esfuerzos de Sony para proteger sus contenidos resultaron en escándalos mediáticos y el retiro del mercado de la tecnología utilizada. Más y más tiendas MP3 se alejan de los materiales DRM protegidos y ofrecen a cambio archivos musicales sin protección. Sin embargo, la computación en nube ofrecerá a DRM un segundo usufructo vitalicio con productores de contenido que ofrecerán películas, juegos y música directamente al consumidor. Estos contenidos estarán diseñados para ejecutarse en un sistema de computación en nube y requerirá más tiempo y esfuerzo realizar copias ilegales de películas y música distribuidas por este medio. Por último, esto resultará en menos copias ilegales y mayores beneficios para los productores.

Cómo la nube beneficia a las empresas

Supongamos que en una Empresa Modelo desean implementar un sistema Web y Correo Electrónico para sus empleados, pero piensan que podrían crecer sus necesidades de TI en un futuro a mediano plazo. Esta sería la inversión mínima que tendrían que hacer para lograr un servicio de calidad competitiva estándar (sin contar el costo del software especializado):

Inversión Inicial:

Costos

Recurrentes:

Page 57: Base de conocimientos

Asumiendo que tomamos en cuenta todos los costos anuales necesitaríamos una inversión de 40,750 dólares de los cuales casi 20,000 se pagan al principio, lo cual implica un riesgo y costo muy grande para nuestra organización y acabaríamos abandonando la idea del proyecto por ser una empresa pequeña que no se puede dar ese lujo y no podríamos competir con las grandes empresas.

La mayoría de las empresas hoy en día trabajan así, lo cual les representa costos muy altos en Departamento de Tecnologías de Información y Fijos.

Aquí es donde la Nube representa la solución, obtener todos estos servicios de infraestructura y plataformas (PaaS: Platform as a service y IaaS: Infrastructure as a Service) en un Datacenter con los más altos estándares en la industria de TI y con los niveles de servicios más altos (SLA) por un costo mensual y variable mucho más reducido en el cual hace uso de la nube para sus proyectos y contrata los servicios de terceros para que se encarguen de toda la infraestructura de la empresa.

En la nube de nubes existen muchas empresas que ofrecen su infraestructura de cómputo alquilada, mediante la virtualización, donde se comparte el mismo equipo (físico) con muchos usuarios simultáneamente y cada usuario percibe el uso de los recursos como exclusivo en su propio entorno (lógico). Entre ellas está GoogleApps y Microsoft Windows Azure, siendo ésta la opción más costosa. El costo anual que representaría los servicios de infraestructura seria aproximadamente 3,500 dólares anuales.

Suponiendo que la inversión inicial de la primera alternativa permanece constante por 10 años, el CTP a 10 años ascendería a 234,250 dólares. Mientras que si hacemos el mismo análisis contratando el servicio de infraestructura y proyectando un crecimiento anual constante del 20% en uso de los recursos informáticos el costo a 10 años seria de 90,855 dólares, evidenciando un Costo-Oportunidad más atractivo usando la Nube.

En la realidad el primer costo sería más alto debido al incremento de todos los costos fijos que representa la inversión en el tiempo y los imprevistos que puedan surgir en la administración y mantenimiento del equipo, y el segundo sería más bajo, ya que se espera que disminuyan los precios conforme mejoran las tecnologías del mercado lo cual es la tendencia actual.

Page 58: Base de conocimientos

REFERENCIAS:

http://es.kioskea.net/faq/2158-organizacion-crear-una-base-de- conocimientos

http://sistexpertosmalkav.blogspot.mx/2012/04/unidad-v-construccion-de- sistemas.html

http://www.uclm.org/profesorado/raulmmartin/FundamentosMatematicosII/ SistemasExpertos.pdf

http://www.conganat.org/3congreso/cvhap/conferencias/004/texto.htm

http://www.aprenderaprogramar.com/index.php? option=com_content&id=252:mineria-de-datos-data-mining-ique-es-ipara-que-sirve-1o-parte-dv00105a&Itemid=164

http://www.aprenderaprogramar.com/index.php? option=com_attachments&task=download&id=203

http://www.sinnexus.com/business_intelligence/datamining.aspx http://eprints.uanl.mx/3856/1/La_heuristica_en_los_virus.pdf

Page 59: Base de conocimientos

http://es.wikipedia.org/wiki/Heur%C3%ADstica_(inform%C3%A1tica)

http://centrodeartigo.com/articulos-educativos/article_10406.html http://www.di-mare.com/adolfo/cursos/2007-1/pp-Intro4GL.pdf https://www.google.com.mx/webhp?sourceid=chrome-

instant&ion=1&espv=2&ie=UTF-8#q=bases+de+conocimientos&start=10

http://elies.rediris.es/elies18/522.html http://www.ibm.com/developerworks/ssa/local/im/que-es-big-data/ http://www.quees.info/que-es-big-data.html http://www.informeticplus.com/que-es-el-big-data http://www.ontsi.red.es/ontsi/sites/default/files/1-

_estudio_cloud_computing_retos_y_oportunidades_vdef.pdf http://www.tec.url.edu.gt/boletin/URL_19_SIS15_REDES.pdf http://profesores.elo.utfsm.cl/~agv/elo322/1s09/project/reports/

ComputacionEnLaNube.pdf http://www.aunclicdelastic.com/%C2%BFque-es-bpaas-%C2%BFque-

necesidades-empresariales-resuelve/