lunes, 15 de noviembre de 2010

Sistemas Expertos publicado por CristhianAcurio, David Chaguay

INTRODUCCIÓN
En la actualidad existe un campo dentro de la inteligencia artificial al que se le atribuye esa facultad: el de los sistemas expertos (SE). Estos sistemas también son conocidos como Sistemas Basados en Conocimiento, los cuales permiten la creación de máquinas que razonan como el hombre, restringiéndose a un espacio de conocimientos limitado. En teoría pueden razonar siguiendo los pasos que seguiría un EH (experto humano) (médico, analista, empresario, etc.) para resolver un problema especifico. Este tipo de modelos de conocimiento por ordenador ofrece un extenso campo de posibilidades en resolución de problemas y en aprendizaje. Su uso se extenderá ampliamente en el futuro, debido a su importante impacto sobre los negocios y la industria.
Una Aplicación  que emula  el comportamiento de un experto humano en la solución de un dilema. Pueden acumular  conocimientos de expertos mediante su BC para un campo determinado y solucionar un problema mediante deducción lógica de conclusiones.
Son SE aquellos programas que se realizan haciendo explicito el conocimiento  en ellos, que tienen información específica de un dominio concreto y que realizan una tarea relativa a este dominio.  
Programas que manipulan conocimiento codificado para resolver problemas en un dominio especializado en un dominio que generalmente requiere de experiencia humana.
Programas que contienen tanto conocimiento declarativo (hechos a cerca de objetos, eventos y/o situaciones) como conocimiento de control (información a cerca de los cursos de una acción), para emular el proceso de razonamiento de los expertos humanos en un dominio en particular y/o área de experiencia.  
Base de conocimientos. La base de datos o base de hechos es una parte de la memoria del ordenador que se utiliza para almacenar los datos recibidos inicialmente para la resolución de un problema.
Contiene conocimiento sobre el caso concreto en que se trabaja. También se registrarán en ella las conclusiones intermedias y los datos generados en el proceso de inferencia. Al memorizar todos los resultados intermedios, conserva el vestigio de los razonamientos efectuados; por lo tanto, se puede utilizar explicar las deducciones y el comportamiento del sistema [SAMP].
Todos estos datos no son suficientes, si no se tiene un sistema encargado de procesar y manipular toda la información para generar los resultados deseados, este sistema es conocido como Motor de inferencia.
Base de hechos.- El motor de inferencia es el "supervisor", un programaque está entre el usuario y la base de conocimientos, y que extrae conclusiones a partir de los datos simbólicos que están almacenados en las bases de hechos y de conocimiento. Dependen en gran medida de la representación elegida; por su importancia analizaremos los motores de inferencia basados en reglas [CANC].
Existen varios algoritmos de búsqueda a lo largo de las reglas para inferir conclusiones a partir de los hechos y las reglas. Todos los algoritmos son del tipo "pattern-matching", van disparando reglas a medida que se cumplen las condiciones. Se pueden diferenciar dos mecanismos de inferencia: Encadenamiento hacia delante y encadenamiento hacia atrás.
La llamada "técnica de encadenamiento hacia adelante" consiste en aplicar al conocimiento-base (organizado en forma de reglas de producción), junto con otro conocimiento disponible, el esquema inferencial modus ponens. Esta estrategia se denomina "encadenamiento hacia adelante" o "razonamiento de datos dirigidos", porque comienza con los datos conocidos y aplica el modus ponens sucesivamente hasta obtener los resultados que se siguen. Las reglas se aplican "en paralelo", o sea, en cualquier iteración una regla toma los datos cuales eran al principio del ciclo, por lo tanto el conocimiento-base y el sistema no dependen del orden en el que las reglas son establecidas, almacenadas o procesadas. Esta técnica suele utilizarse cuando la cantidad de datos es potencialmente muy grande, y resulta de interés algún conocimiento específico tomado en consideración (caso típico en los problemas de diagnóstico; MYCIN, por ejemplo).
La técnica del "encadenamiento hacia atrás" consiste en tratar de probar un dato (o conocimiento) engarzándolo en las reglas-base con el esquema de inferencia modus ponens, o sea, tomando al dato como un consecuente y buscando en el conocimiento-base el correspondiente antecedente, a través de los pasos correspondientes.
Estas dos formas de inferencia se corresponden con los dos métodos lógicos clásicos conocidos por varios nombres: método resolutivo / método compositivo; análisis / síntesis. La distinción se basa en la relación direccional entre objetivos y datos. Y ambas formas pueden combinarse en el razonamiento. Cabe partir de un supuesto inicial, inferir una conclusión mediante un razonamiento hacia adelante y luego establecer un encadenamiento hacia atrás hasta encontrar los datos que confirman esa conclusión [VELA].
Es importante destacar que la base de conocimientos y el motor de inferencia son sistemas independientes, por lo que se han desarrollado herramientas que únicamente necesitan la implementación del conocimiento, llevando incorporado el motor de inferencia [CANC].
La forma en que se obtiene o se presenta la información debe ser tal, que facilite la comprensión de los datos y la forma como se ingresa la información, por lo cuál es necesario la interfase Hombre-Máquina.

Motor de inferencia. La interface establece una comunicación sencilla entre el usuario y el sistema. El usuario puede consultar con el sistema a través de menús, gráficos, o algún otro tipo de intefases, y éste le responde con resultados. También es interesante mostrar la forma en que extrae las conclusiones a partir de los hechos. En sistemas productivos se cuida la forma de presentar al operador las órdenes obtenidas del sistema experto, debido a que información excesiva o confusa dificulta la actuación en tiempo real [CANC].
Aunque no se maneja dentro de la estructura de un Sistema Experto en general, existe un componente adicional, el componente de explicación, el cuál se tratará a continuación.
Subsistema de explicación. Una característica de los sistemas expertos es su habilidad para explicar su razonamiento. Usando el módulo del subsistema de explicación, un sistema experto puede proporcionar una explicación al usuario de por qué está haciendo una pregunta y cómo ha llegado a una conclusión. Este módulo proporciona beneficios tanto al diseñador del sistema como al usuario. El diseñador puede usarlo para detectar errores y el usuario se beneficia de la transparencia del sistema.
Interfaz de usuario. La interacción entre un sistema experto y un usuario se realiza en lenguaje natural. También es altamente interactiva y sigue el patrón de la conversación entre seres humanos. Para conducir este proceso de manera aceptable para el usuario es especialmente importante el diseñodel interfaz de usuario. Un requerimiento básico del interfaz es la habilidad de hacer preguntas. Para obtener información fiable del usuario hay que poner especial cuidado en el diseño de las cuestiones. Esto puede requerir diseñar el interfaz usando menús o gráficos.
El Motor de Inferencias (MI) es un programa de control cuya función es seleccionar las reglas posibles a satisfacer el problema, para ello se vale de ciertas estrategias de control sistemáticas o de estrategias heurísticas.

Estrategias de control sistemático:
Encadenamiento hacia adelante o hacia atrás.
Búsqueda en profundidad o a lo ancho.
Régimen de control irrevocable o por tentativa.

Estas estrategias son de forma sistemática las cuales deben llevar a la solución del problema. Podemos decir que el control sistemático es un programa de control hecho de forma "algorítmica" que aplican una heurística de propósito general cuya función es una exploración exhaustiva y metódica de la base de conocimientos.

Estos mecanismos de control son muy generales y a veces resultan ineficientes ya que siguen una secuencia de búsqueda demasiado rígida, para resolver esto se idearon las estrategias de control heurísticas.

Las estrategias de control heurísticas son programas de control que utilizan una heurística más específica y su función es una selección más restringida orientada por las necesidades del problema. Estas estrategias actúan sobre el control sistemático y en ciertos casos toma el control y dirige la búsqueda hacia ciertos criterios rompiendo así el control sistemático, una vez logrado su objetivo le devuelve el control nuevamente al sistemático.

Estrategias de control heurísticas:

Orden de las reglas.
Mayor credibilidad en las reglas.
Menor número de cláusulas no instanciadas.
Mayor número de conclusiones en las reglas.

Podemos decir que un sistema experto, es un sistema informático que utiliza técnicas apropiadas para la representación de conocimientos y la manipulación de este, de forma tal que exhiba el comportamiento de un avezado especialista en un determinado dominio del saber.
Historia de la representación del conocimiento
En informática, particularmente inteligencia artificial, un número de representaciones se han ideado para estructurar la información.
El KR es el más de uso general referir a las representaciones previstas para procesar por moderno computadoras, y particularmente, para las representaciones que consisten en los objetos explícitos (la clase de todos los elefantes, o Clyde cierto individuo), y de aserciones o de demandas sobre ellas (“Clyde es un elefante”, o “todos los elefantes son grises”). La representación de conocimiento en tal forma explícita permite a las computadoras dibujar conclusiones del conocimiento almacenado ya (“Clyde es gris”).
Muchos métodos del KR fueron intentados en los años 70 y los años 80 tempranos, por ejemplo heurístico question-answering, redes de los nervios, el probar del teorema, y sistemas expertos, con éxito que varía. Diagnosis médica (e.g., Mycin) era un área de aplicación importante, al igual que juegos por ejemplo ajedrez.
En la representación formal del conocimiento de la computadora de los años 80 las idiomas y los sistemas se presentaron. Los proyectos importantes procuraron codificar cuerpos anchos del conocimiento general; por ejemplo “Cycel “proyecto pasó a través de una enciclopedia grande, codificando no la información sí mismo, pero la información que un lector necesitaría para entender la enciclopedia: física ingenua; nociones del tiempo, causalidad, motivación; objetos corrientes y clases de objetos. El proyecto de Cyc se maneja cerca Cycorp, Inc.; mucho pero no todos los datos está libremente disponibles ahora.
A través de tal trabajo, la dificultad del KR vino ser apreciada mejor. En lingüística de cómputo, mientras tanto, bases de datos mucho más grandes de la información de la lengua eran construidas, y éstas, junto con grandes aumentos en velocidad y capacidad de la computadora, hicieron un KR más profundo más factible.
Varios lenguajes de programación se han convertido que se orienta al KR. Prólogo convertido en 1972 (véase http://www.aaai.org/AITopics/bbhist.html#mod), pero popularizado mucho más adelante, representa asuntos y lógica básica, y puede derivar conclusiones de premisas sabidas. KL-ONE (los años 80) es la representación más específicamente dirigida sí mismo del conocimiento.
En el mundo electrónico del documento, las idiomas eran desarrolladas para representar la estructura de documentos más explícitamente, por ejemplo SGML y más adelante XML. Éstos facilitados recuperación de datos y explotación minera de los datos esfuerzos, que estos últimos años han comenzado a relacionarse con el KR. La comunidad del Web ahora está interesada especialmente en Web semántico, en tales como que XML-basó idiomas del KR RDF, Mapas del asunto, Inglés de Gellish y otros se pueden utilizar para poner la información del KR a disposición los sistemas del Web.
MÉTODOS PARA LA ADQUISICIÓN DEL CONOCIMIENTO
Es necesario distinguir el aprendizaje empírico del sistemático y racional. El primero tiene un carácter espontáneo, cotidiano, particular, relativo y se supone como fuente el uso de los sentidos; el segundo se basa en un procedimiento cuya elaboración es más profunda, incluye a la investigación e incorpora implementación el equipo técnico y especializado.
Es posible considerar alm ét o d o como una serie de pasos a seguir para lograr el fin, a esto lo podemos remitir a una especie de construcción metodológica en la cual se incluyen procedimientos, técnicas, modelos y teorías que se aplican sistemáticamente durante el desarrollo de una investigación.
Algunos de los métodos más comunes son: el método de educativo, el método inductivo, el método analógico, el método analítico y el método sintético.
Método deductivo
Es definido como el método que procede de lo universal a lo particular. Por ejemplo, la Lógica y la Matemática donde a través de la abstracción sistemática racional y la aplicación de leyes establecidas se llega a la construcción de postulados generales que se consideran científicamente válidos a priori, es decir, independientemente de la experiencia, de su aplicación concreta, empírica e inmediata.
Es preciso informar que el uso incorrecto de la deducción puede conducir a que se incurra en conclusiones falsas, aún
cuando el razonamiento sea el adecuado.
El siguiente es un ejemplo del sistema educativo correcto y del sistema de educativo incorrecto, nótese que el incorrecto está basado en una teoría mal fundamentada.
Método analógico
Según Walter Brugger dice " para caracterizar más exactamente el concepto de análogo, deben considerarse los dos tipos
Fundamentales de analogía, de atribución y proporcionalidad”
En la analogía de atribución se cuenta con un concepto fundamental y otro secundario, uno es considerado como necesario y el otro como contingente, donde el segundo es análogo al primero.
En la analogía de proporcionalidad se conciben igualmente dos conceptos, con cierta discrepancia uno del otro; ambos conceptos difieren de la naturaleza o significado.
Si se considera a la analogía como sinónimo de comparación, el método analógico o comparativo permitirá establecer cierta relación entre dos objetos de aprendizaje o dos conceptos, de modo que partir del conocimiento del primero se infiera el segundo, ya sea por su atribución o por su proporción
Para López Ruiz, el método analítico " consiste en la operación entre elementos similares muy diferentes, para después sacar una conclusión lógica"
Razonamiento deductivo y correcto
Todo hombre es mortal
 Sócrates es hombre
 Por lo tanto: Sócrates es mortal
Razonamiento deductivo e incorrecto
     4. Todos los gastos son pagos (falso)
     5.
Tulús es un gato
     6.
Por lo tanto: Tulús es pardo
El método analítico
Del término análisis significa "separación del todo en sus partes ". Cada parte merece un estudio por separado para la  comprensión del todo (objeto o concepto)
Este tipo de análisis se puede ver al momento le identifica por separado los componentes de un libro:
Análisis interno. Personajes primarios, secundarios y ambientales, trama, clímax, desenlace y moraleja.
Análisis externo. Autor, título, editorial, lugar y año de publicación.
Método sintético
Este método es contrario a de análisis, sin embargo puede considerarse como complementario.
Síntesis significa la reunión de las partes de un todo una vez que éstas han sido analizadas y ordenadas.
Un ejemplo de síntesis se ven la Química al utilizar dos elementos distintos para formular una molécula única tal es el ejemplo del H2O (agua) y el CO2 (bióxido de carbono)
Modelos de Administración del Conocimiento
Existen muchos modelos de cómo se puede administrar el conocimiento. Los sistemas basados en compartir el conocimiento no refleja la naturaleza compleja del aprendizaje dentro de una organización.
Según Dixon la transferencia del conocimiento común comienza, con la creación del conocimiento y se añaden los siguientes pasos:
- Encontrar un método para transferir el conocimiento hasta o un grupo o individuo que pueda reutilizarlo.
- Transformar lo que se ha aprendido en una configuración que otros puedan emplear.
- El equipo o la persona que recibe la información debe adaptar el conocimiento para utilizarlo en un contexto peculiar.
- El proceso se repite cuando el equipo que recibe el conocimiento empieza a realizar una nueva tarea.
El manejo del conocimiento llegará a ser una parte integral de cada negocio. El manejo del conocimiento en los procesos relacionados contribuye a la competitividad de una organización.
El conocimiento no representa ningún valor a la organización mientras no sea aplicado. La arquitectura del conocimiento puede ser dividida en 2 componentes: el acceso del conocimiento (web site, portales y bases de datos) todos soportados por un manejador de información y el intercambio de conocimiento que efectúa un rol más interactivo. Estos 2 componentes de la arquitectura del conocimiento están unidos uno a uno por medio de las personas que aplican los valores de cada uno. (Ver figura 2.3)
Fortalecimiento del conocimiento común
Las propuestas de la gestión del conocimiento representan un modelo de gestión que se basa en gran parte en gestionar adecuadamente la información. Es por lo tanto el paso previo, que cualquier organización debería dar antes de tratar de implantar un sistema de administración del conocimiento.
MODELO DE ADMINISTRACION DEL CONOCIMIENTO
La gestión de la información se puede definir como el conjunto de actividades realizadas con el fin de controlar, almacenar y, posteriormente, recuperar adecuadamente la información producida, recibida o retenida por cualquier organización en el desarrollo de sus actividades. En el centro de la gestión de la información se encuentra la gestión de la documentación (la información que queda plasmada en documentos) y que pude ser de tres tipos:
Interna: hace referencia a aquella documentación generada o recibida por la organización en el ejercicio de sus funciones, es decir, son documentos que surgen de la actividad diaria de esa institución. En este grupo, encontramos tanto la documentación típicamente administrativa: contabilidad, correspondencia; como la documentación de gestión: informes, actas de reuniones, procedimientos de trabajo, y la documentación técnica que refleja la propia actividad de la organización.
Externa: además de la documentación producida por la propia organización, ésta y las personas que trabajan en ella necesitan, a menudo, consultar y manejar fuentes de información externas: libros, revistas, Bases de Datos, Internet.
Pública: es aquella documentación que la organización produce de cara al público, para comunicarles hechos, actividades, acontecimientos; por ejemplo, las memorias, los catálogos de productos y servicios, páginas Web.
Los principios del manejo del conocimiento habilitan la creación, consolidación, manejo, conservación y continua actualización del conocimiento a través de sistemas de información.
MODELO ANDERSEN (ARTHUR ANDERSEN, 1999)
Andersen (1999) reconoce la necesidad de acelerar el flujo de la información que tiene valor, desde los individuos a la organización y de vuelta a los individuos, de modo que ellos puedan usarla para crear valor para los clientes.
Desde la perspectiva individual, la responsabilidad personal de compartir y hacer explícito el conocimiento para la organización.
Desde la perspectiva organizacional, la responsabilidad de crear la infraestructura de soporte para que la perspectiva individual sea efectiva, creando los procesos, la cultura, la tecnología y los sistemas que permitan capturar, analizar, sintetizar, aplicar, valorar y distribuir el conocimiento.
PROCESO DE CREACIÓN DEL CONOCIMIENTO (NONAKA, TAKEUCHI, 1995)
El proceso de creación del conocimiento para Nonaka y Takeuchi (1995) es a través de un modelo de generación de conocimiento mediante dos espirales de contenido epistemológico y ontológico.
Es un proceso de interacción entre conocimiento tácito y explícito que tiene naturaleza dinámica y continua. Se constituye en una espiral permanente de transformación ontológica interna de conocimiento, desarrollada siguiendo 4 fases que podemos ver de forma gráfica en la figura 2.6:
Proceso de conversión del conocimiento en la organización (Nonaka y Takeuchi, 1995)
• La Socialización, es el proceso de adquirir conocimiento tácito a través de compartir experiencias por medio de exposiciones orales, documentos, manuales y tradiciones y que añade el conocimiento novedoso a la base colectiva que posee la organización;
• La Exteriorización, es el proceso de convertir conocimiento tácito en conceptos explícitos que supone hacer tangible mediante el uso de metáforas conocimiento de por sí difícil de comunicar, integrándolo en la cultura de la organización; es la actividad esencial en la creación del conocimiento;
• La combinación, es el proceso de crear conocimiento explícito al reunir conocimiento explícito proveniente de cierto número de fuentes, mediante el intercambio de conversaciones telefónicas, reuniones, correos, etc., y se puede categorizar, confrontar y clasificar para formas bases de datos para producir conocimiento explícito.
• La Interiorización, es un proceso de incorporación de conocimiento explícito en conocimiento tácito, que analiza las experiencias adquiridas en la puesta en práctica de los nuevos conocimientos y que se incorpora en las bases de conocimiento tácito de los miembros de la organización en la forma de modelos mentales compartidos o prácticas de trabajo
Nonaka y Takeuchi, mencionan que lo expresado por Peter Drucker de la esencia de la dirección es, cómo se puede aplicar de la mejor forma un conocimiento existente para poder crear otro conocimiento nuevo o reciclado, es justificado ya que sus estudios en compañías japonesas respaldan el proceso de creación del conocimiento que ambos Japoneses han sostenido.
KNOWLEDGE MANAGEMENT ASSESSMENT TOOL (KMAT)
El KMAT es un instrumento de evaluación y diagnóstico construido sobre la base del Modelo de Administración del Conocimiento Organizacional desarrollado conjuntamente por Arthur Andersen y APQC.
El modelo propone cuatro facilitadores (liderazgo, cultura, tecnología y medición) que favorecen el proceso de administrar el conocimiento organizacional.
Modelo Knowledge Management Assessment Tool
Liderazgo.- Comprende la estrategia y cómo la organización define su negocio y el uso del conocimiento para reforzar sus competencias críticas.
Cultura.- Refleja cómo la organización enfoca y favorece el aprendizaje y la innovación incluyendo todas aquellas acciones que refuerzan el comportamiento abierto al cambio y al nuevo conocimiento.
Tecnología.- Se analiza cómo la organización equipa a sus miembros para que se puedan comunicar fácilmente y con mayor rapidez.
Medición.- Incluye la medición del capital intelectual y la forma en que se distribuyen los recursos para potenciar el conocimiento que alimenta el crecimiento.
Procesos.- Incluyen los pasos mediante los cuales la empresa identifica las brechas de conocimiento y ayuda a capturar, adoptar y transferir el conocimiento necesario para agregar valor al cliente y potenciar los resultados.
VERIFICACION DE LA BASE DE CONOCIMIENTO
La verificación del conocimiento en un sistema experto involucra 2 componentes:
1. Verificar que la base de conocimientos sea correcta.
2. Verificar que el sistema pueda interpretar y aplicar este conocimiento en forma correcta.
Al igual que para desarrollar un sistema de información convencional existen varias metodologías de desarrollo como la Ingeniería de la Información, tendencias estructuradas y orientadas a objetos, así existen varias metodologías para desarrollar un sistema experto. Como ya sabemos el área de sistemas expertos es relativamente joven por lo cual no se 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 mas que otras lo cual ha llevado a su mayor difusión.
            Aquí solo mencionaremos algunas y mostraremos un esquema general de la metodología con la cual trabajaremos nosotros.
Metodología de Buchanan
Metodología de Grover
Metodología de Brule
Metodología de Blanque y García Martínez
Metodología KADS
Ingeniería del Software,….. etc.
Estas son solo algunas encontradas en la bibliografía revisada. Para nuestro caso nosotros trabajaremos con la Metodología de Ingeniería del Conocimiento de Jhon Durkin, de la cual se muestra una breve descripción a continuación:

CONCLUSIONES
Actualmente el duro, difícil y cambiante mercado competitivo se vuelve más complejo por la gran diversidad de información que se ven obligados a almacenar y analizar, razón por la cual las empresas se ven en la necesidad de recurrir a poderosas y/o robustas herramientas o sistemas que les sirvan de soporte a la hora de tomar decisiones. De esta forma estos inteligentes, precisos y eficientes sistemas son adoptados por más organizaciones, en las cuales se convierten y/o transforman en una importante estrategia de negocio.

Por otra parte es importante mencionar que estos seguirán siendo usados en los todos y cada una de las áreas y/o campos donde los expertos humanos sean escasos. Por consecuencia de lo anterior estos sistemas son utilizados por personas no especializadas, por lo cual el uso frecuente de los (//SE//) les produce y/o genera conocimiento a los usuarios.
VENTAJAS DE LOSSISTEMAS EXPERTOS 
Los conocimientos de un sistema experto pueden ser copiados y almacenados fácilmente, siendo muy dificil la pérdida de éstos.
Otra ventaja de los sistemas expertos sobre los humanos es que el experto computarizado siempre está a pleno rendimiento. Cuando un humano se cansa, la exactitud de sus consejos puede decaer. Sin embargo, el experto computerizado siempre proporcionará las mejores opiniones posibles dentro de las limitaciones de sus conocimientos.
Otra ventaja menos importante de un sistema experto radica en su !falta de personalidad! Como probablemente sabrá, las personalidades no son siempre compatibles. Si no se lleva bien con el humano experto, puede que se encuentre reticente a recabar sus conocimientos.
Una última ventaja de un sistema experto está en que después de que un experto computerizado exista, usted puede crear un nuevo experto simplemente copiando el programa de una máquina a otra. Un humano necesita mucho tiempo para convertirse en un especialista en ciertos campos, lo que hace difícil que puedan aparecer nuevos especialistas humanos
Las desventajas en general de los Sistema Expertos.
Creatividad: los humanos pueden responder creativamente a situaciones inusuales, los sistemas expertos no pueden.
Experiencia Sensorial: los humanos tienen un amplio rango de diponibilidad de experiancia sensorial. Y los sistemas expertos actualmente dependen de una entrada simbolica.
Degradación: los sistemas expertos no son bueno para reconocer cuando no existen respuestas o cuando los problemas estan fuera de su area.
Limitaciones de los Sistema Expertos.
Programación: Difícil de elaborar y precisan mantenimiento complejo
El elevado costo: En tiempo y dinero para extraer el conocimiento de los especialistas humanos.
Poca flexibilidad a cambios: Hay que reprogramar el sistema
Dificultad para manipular información no estructurada: Especialmente la información incompleta, inconsistente o errónea.
Desacuerdo entre los especialistas humanos:En la elaboración del sistema experto, los especialistas humanos pueden estar en desacuerdo entre ellos mismos a la hora de tomar las mejores decisiones para la solución de los problemas particulares.
BIBLIOGRAFIA
http://www.cs.cinvestav.mx/PaginaAntigua/SC/publica/chapa/intro_lm/node45.html

viernes, 20 de agosto de 2010

Programación Web

Programación en Redes I

ASP .NET 2.0

Client-Side Event Procedures

Se puede definir como eventos que son administrados en la PC que peticiona el Web Form (el cliente). Al generar un evento, la información no es enviada al servidor. En su lugar, el explorador del cliente interpreta el código y realiza la acción. nunca se tienen acceso a los recursos del servidor. Por ejemplo, no se puede utilizar un client-side script para acceder a una base de datos SQL. Muy útil para eventos que quiera que ocurran inmediatamente, porque no requiere enviar información al servidor Web y esperar una respuesta. Por ejemplo, validar un text box sin acceder a un servidor. podemos usar client-side script para validar rápida y efectivamente antes de enviar información al Web Server.

Para especificar que el evento ocurra del lado del cliente puede utilizar el siguiente código:

<SCRIPT language=“javascript”>

 
Server-Side Event Procedures

A diferencia del anterior, Server-side event procedures requiere enviar información al Web Server para ser procesada. Existe una ligera perdida de tiempo usando Server-side event procedures, pero son más poderosos que Client-side event procedures. consiste de código compilado en el Servidor, administra eventos desde controles Web y HTML. tienen acceso a recursos de servidor que no disponibles para Client-side event procedures. Se puede utilizar Server-side event procedures especificando el atributo runat=“server” en el script tag.

<SCRIPT language=“vb” runat=“server”>

limitado controles de eventos que son soportados.

 
Entendiendo el ciclo de vida de una pagina

Al momento de que una pagina ASP.NET es pedida, se generan una serie de eventos siempre en el mismo orden:

1. Page_Init: este evento de pagina inicializa la pagina creando e inicializando los Web Server controls sobre la pagina.

2. Page_Load: este evento de pagina ocurre cada vez que la pagina es peticionada

3. Control events: este evento de pagina incluye los eventos change (por ejemplo, TextBox1_Changed) y los eventos action (por ejemplo: Button1_Click)

4. Page_unload: este evento de pagina ocurre cuando la pagina es cerrada o cuando el control es pasado a otra pagina.

El final del ciclo de vida de la pagina incluye la descarga de la pagina de memoria.

Algunos eventos no ocurren hasta que el Web Form realiza un postback(devolución de datos) al servidor. Por ejemplo, el evento Change es administrado después que el formulario es posteado(enviado). Por lo contrario, los eventos Click pueden causar el envió inmediato al servidor.

 
El proceso Postback, definicion

Se llama así al proceso que efectúa un formulario para enviar información al servidor. Ocurren con ciertas acciones de los usuarios, solo el evento clic de un botón hace que el formulario realice un postback al servidor. O si se configura la propiedad AutoPostBack de un control a True, el postback es forzado para eventos del control.

 
ASP.NET Web Application

La creación de aplicaciones Web con ASP.NET incluyen las siguientes partes:

• Web forms o paginas aspx: los Web forms o paginas aspx proveen la UI para la aplicación Web.

• Paginas Code-behind: son paginas asociadas con Web Forms y contienen el código Server-side para el Web form.

• Archivos de configuración: son archivos XML que contienen la configuración por defecto para la aplicación Web y el servidor Web. Cada aplicación Web tiene un archivo de configuración llamado Web.config. Además cada servidor Web un archivo llamado machine.config

• Archivo Global.asax: dicho archivo contiene el código que necesita para responder a los eventos de aplicación que son levantados por ASP.NET

• Vínculos XML Web Service: estos vínculos permiten a la aplicación Web enviar y recibir datos desde un XML Web service.

• oectividad de base de datos: permite a la aplicación Web transferir datos desde y hacia la base de datos

• Caching: permite a las aplicaciones retornar Web forms y datos mas rápidamente luego de la primer petición.

 
ASP.NET Execution Model

Cuando un cliente peticiona por primera vez una pagina Web, ocurren los siguientes eventos:

1. El cliente desde su explorador emite una petición GET HTTP al servidor

2. El parser de ASP.NET interpreta el código

3. Si el código no está compilado dentro de una librería (DLL), ASP.NET invoca al compilador

4. El runtime carga y ejecuta el código intermedio (MSIL – Microsoft intermediate language)

Cuando el cliente peticiona por segunda vez la misma pagina Web, lo siguiente ocurre:

1. El cliente emite una petición GET HTTP al servidor

2. Runtime carga e inmediatamente ejecuta el código MSIL que ya fu compilado durante la primer petición.

 
Las aplicaciones Web ASP.NET componentes

• Formularios Web o páginas .ASPX: Proveen de la interfase visual. No tienen código ejecutable.

• Páginas de Código por detrás: Están asociadas con cada formulario y son las que proveen del código ejecutable.

• Archivos de Configuración: Son archivos que permiten configurar la aplicación, por ejemplo el archivo Web.config y el servidor por ejemplo el archivo machine.config.

• Global.asax: Es un archivo que contiene código. Este código responde a eventos que se disparan en la aplicación Web.

 
Proyecto Web

• Formulario Web ASP.NET (.aspx): Es la interfase visual de la aplicación Web. Puede tener código por detrás., cuyo nombre es Formulario.aspx.vb o Formulario.aspx.cs

• Clases y código por detrás (.cs y .vb): Son las clases que utiliza el proyecto y el código de soporte de los formularios y los servicios.

• Clase Global (.asax): Es un archivo que contiene código de eventos a nivel de aplicación.

• Web.config: Es un archivo XML con información de configuración.

• Archivos ensamblados del proyecto (.dll): Todas las paginas de código por detrás de una aplicación son compilados en un solo DLL que se guarda en el directorio /bin con el nombre de NombreDeProyecto.dll

• VsProj o CsProj: Vs Proj es la extensión de un proyecto si usted escribió la aplicación en Visual.NET. CsProj es la extensión si utilizo c#
 
Que es un Web Form?

Son páginas Web programables que sirven como interfaz de usuario de las aplicaciones Web. Presenta la información al usuario en cachocirualquier explorador o dispositivo cliente e implementa lógica de aplicación mediante el código de la parte servidor. compatible con HTTP, incluidos HTML, XML, WML y ECMAScript (JScript, JavaScript).

características:

Se basan en la tecnología Microsoft ASP.NET, Para obtener información detallada sobre ASP.NET, vea Información básica sobre tecnología ASP.NET.

Compatible con cualquier explorador o dispositivo móvil. Las páginas de formularios Web Forms presentan automáticamente el código HTML adecuado al explorador para funciones tales como estilos, diseño, etc. Como alternativa, se pueden diseñar las páginas de formularios Web Forms para ejecutarse en un explorador determinado, como Microsoft Internet Explorer 5 y aprovechar así todas las funciones de un cliente de explorador de nivel superior.

Admiten cualquier lenguaje compatible con Common Language Runtime de .NET, incluidos Microsoft Visual Basic, Microsoft Visual C# y Microsoft JScript.NET.

Se crean en el entorno Microsoft .NET Framework. Esto proporciona todos los beneficios del marco de trabajo, incluidos un entorno administrado, seguridad de tipos y herencia.

Respaldadas en Visual Studio por eficaces herramientas de desarrollo rápido de aplicaciones (RAD, Rapid Application Development) destinadas al diseño y la programación de los formularios.

Componentes de los formularios Web Forms

En las páginas de formularios Web Forms, la programación de la interfaz de usuario se divide en dos partes independientes: el componente visual y el lógico. Si ha trabajado con herramientas como Visual Basic y Visual C++ anteriormente, reconocerá esta división entre la parte visible de un formulario y el código que se oculta detrás y que interactúa con él.

El elemento visual se conoce como la página de formularios Web Forms, y se compone de un archivo que contiene código HTML estático, o controles de servidor ASP.NET o ambos de forma simultánea.

La página de formularios Web Forms funciona como un contenedor del texto y los controles estáticos que se desea mostrar. Si se usa el Diseñador de Web Forms de Visual Studio junto con controles de servidor ASP.NET, se pueden diseñar los formularios igual que se haría en cualquier aplicación de Visual Studio. Para obtener más información, vea Controles que se pueden usar en páginas de formularios Web Forms.

Ventajas que aportan las páginas de formularios Web Forms

• Implementar una interfaz de usuario Web enriquecida. Una interfaz de usuario con un diseño complejo, una gran cantidad de contenido dinámico y llena de objetos interactivos.

• Separación entre cliente y servidor. En las aplicaciones Web, el cliente (explorador) y el servidor son programas distintos que a menudo se ejecutan en equipos distintos e, incluso, en sistemas operativos diferentes.

• Ejecución independiente. Cuando un servidor Web recibe una petición de una página, la busca, la procesa y la envía al explorador y, a continuación, desecha toda la información sobre dicha página. Si el usuario solicita la página de nuevo, el servidor repite la secuencia completa, volviendo a procesar la página desde el principio. 

• Posibilidades desconocidas del cliente. En muchos casos, las aplicaciones Web resultan accesibles a usuarios que poseen exploradores de distintos fabricantes y que, por tanto, ofrecen distinta funcionalidad, lo que hace muy difícil crear una aplicación que se ejecute con la misma calidad en todos ellos.

• Complicaciones con el acceso a los datos. La lectura de los datos de un origen de datos y la escritura en el mismo puede resultar complicada con las aplicaciones Web tradicionales y hacer un gran uso de los recursos.

• Complicaciones con la escalabilidad. En muchos casos las aplicaciones Web diseñadas con los métodos existentes no pueden cumplir los objetivos de escalabilidad debido a la falta de compatibilidad entre sus distintos componentes.

• Atajar estos retos de las aplicaciones Web puede requerir un tiempo y esfuerzo importantes. Las páginas de formularios Web Forms y el marco de trabajo de páginas ASP.NET tratan de solucionar estos temas de los modos siguientes:
  
Flexibles gracias a la posibilidad de incorporar a ellas controles creados por los usuarios y de otros fabricantes.

 
El web.config

sirve para configurar la aplicación ASP.NET o parte de ella, Puede existir un web.config en cada carpeta de la aplicación y configurará opciones para todas las subcarpetas de la misma. En el web.config de definen los roles de acceso, membresías, conexión a base de datos y las variables propias de la aplicación entre otras configuraciones.

Para crear nuevos Web forms en aplicaciones ASP.NET nuevas, es muy sencillo:

1. En la pagina de inicio de Visual Studio .NET, clic en nuevo proyecto

2. En la caja de diálogos del proyecto nuevo, ingrese el nombre del nuevo proyecto y luego clic en OK

3. Visual Studio crea una nueva aplicación Web y un Web Form llamado WebForm1.aspx

Creación de nuevos Web Forms a un proyecto existe:

1. En el Explorador de Soluciones, clic derecho en el nombre del proyecto

2. Luego clic en Agregar Web Form, ingresar el nombre del nuevo Web form y clic en OK

Actualizar paginas HTML existentes:

• En el explorador de soluciones, clic derecho sobre el proyecto, posicionarse en Agregar, y luego en Agregar Elemento existente

• En la caja de diálogos de Nuevo Elemento Existente, posicionarse en donde se encuentra el archivo HTML, y clic en abrir.

• Renombrar el archivo nombre.htm a nombre.aspx y clic en SI, cuando aparezca la advertencia de cambio de extensión.

• Cuando se le pregunta por la creación de un archivo de clases, se debe aprobar.

 
Modelo de código de pagina web

ASP.NET provee dos modelos para administrar los elementos visuales y el código –

• En el modelo single-file, el HTML y el código de programación se almacena en el mismo .aspx.

• En el modelo code-behind, el HTML esta en un archivo .aspx y el código de programación en otro archivo .aspx.

 
El modelo code-behind

El archivo code-behind es mas simple. Este incluye solo el código escrito por usted mismo. Usted puede incluir controles de usuarios sin tener que crear variables instanciadas explícitamente para el code-behind class. La pagina code-behind no puede ser sincronizado con los controles declarado en el

Mejor separación de código y contenido

El nuevo modelo de code-behind hace mas fácil la separación del código y del HTML. En el modelo anterior de code-behind, no era practico agregar controles en el HTML sin tener que acceder al code-behind para agregar una variable instanciada al mismo tiempo. En el nuevo modelo usted puede crear paginas en capas sin necesitar tener que acceder a la pagina de code-behind

 
Que es el view state

Los controles de servidor de ASP.NET heredan de Control una propiedad denominada ViewState que les permite participar fácilmente en el mantenimiento del estado. El tipo de ViewState es System.Web.UI.StateBag, que es un diccionario en el que se almacenan pares de nombre y valor. Si en lugar de un campo privado un control utiliza ViewState para datos de propiedad, la propiedad se conservará automáticamente entre los trayectos de ida y vuelta hacia el cliente.

Solución de Problemas de rendimiento en View State

Enviar gran cantidad de datos a través de Internet puede generar grandes problemas en los tiempos y en el ancho de banda.

Deshabilitar propiedad EnableViewState de cada control.

Deshabilitar el View State para la pagina entera

Guardar el View State en el servidor en lugar de ocultarlo en campo de formularios.

 
Que es el control State

En un alto nivel de abstracción, control state y view state son similares. Este reemplaza el private view del view state.

El private use del view state ocurre cuando un control almacena el contenido de propiedades no publicas en el view state. La aplicación no puede acceder a dichas propiedades por el nivel de protección y no puede restaurar los valores almacenados.


Session State

Un session state es definido como un periodo de tiempo en el cual un usuario interactúa con la aplicación Web puede definir almacenes de datos personalizados para el session state. Ofrece dos opciones: modificación de pequeños mecanismos del ASP.NET session state y el reemplazo del anterior modulo de session state HTTP por uno nuevo.

Usted puede personalizar y adaptar cuatro aspectos en el modulo del session state: data store, session state ítem, data dictionary, y session ID. Por este propósito, ASP.NET 2.0, introduce nuevos atributos y elementos en la sesión <sessionstate> del archivo web.config.


Cache

Es un contenedor, el cual esta unido a otros dos contenedores clásicos de ASP: application y session. Cache es una tabla hash usada para almacenar los datos accedidos frecuentemente.

La clase CacheDependency encapsula mecanismo de dependencia. La mayor diferencia entre la dependencia de la cache entre la versión ASP.NET 1.x y ASP.NET 2.0 es el soporte para dependencia de cache personalizable que posee ASP.NET 2.0. Para el manejo de dependencias personalizables.


Controles de usuarios


Los controles proveen una gran cantidad de funcionalidades, pero estos no cubren todas las situaciones.

• Web User Controls. Usted puede convertir una pagina Web Form en un Web user control con pocas modificaciones.

• User controls son identificados por la extensión de archivo .ascx.

• Custom controls: Incluyen todas las características de los controles de servidores ASP.NET, incluyendo un completo soporte para las nuevas características de Visual Studio como las propiedades de ventanas, barra de herramientas, etc.

Cuando cree páginas de formularios Web Forms, puede utilizar estos tipos de controles:

• Controles de servidor HTML. Los controles de servidor HTML exponen un modelo de objeto que se relacionan muy estrechamente con los elementos HTML que procesan.

• Controles de servidor Web.- Los controles de servidor Web incluyen no sólo controles de tipo formulario como botones y cuadros de texto, sino también controles con fines especiales como un calendario.

• Controles de servidor HTML Los controles de servidor HTML son elementos HTML que contienen atributos que los hacen visibles (y programables) en un servidor. De forma predeterminada, el servidor no tiene acceso a los elementos HTML de una página de formularios Web Forms: La capacidad de controlar eventos en una secuencia de comandos de cliente, Mantenimiento automático del estado del control. Interacción con controles de validación que permiten comprobar con gran facilidad si el usuario ha escrito la información adecuada en un control. Enlace de datos a una o varias de las propiedades del control.

• Los controles de servidor Web. Se definen como controles abstractos, en los que el HTML real procesado por el control puede ser muy diferente al modelo con respecto al que se han programado. Los controles de servidor Web incluyen controles de formulario tradicionales como botones y cuadros de texto, además de controles complejos, como, por ejemplo, las tablas. También incluyen controles que proporcionan funcionalidad de formulario de uso frecuente, como la presentación datos en cuadrícula, la elección de fechas, etc.Un modelo de objetos enriquecido que proporciona capacidades de programación de tipo seguro.
 
Custom Control

Los controles Web personalizados son componentes compilados que se ejecutan en el servidor, y que encapsulan la interfaz de usuario y el resto de la funcionalidad relacionada en paquetes reutilizables. Hay varias formas de crear controles Web personalizados:

• Se puede compilar un control que combine la funcionalidad de dos o más controles existentes.

• Si un control de servidor existente casi reúne los requisitos pero le faltan algunas funciones, se puede personalizar creando un derivado suyo y sobrescribiendo sus propiedades, métodos y eventos.

• Si ninguno de los controles de servidor Web existente (ni sus combinaciones) cumplen los requisitos necesarios, se puede crear un control personalizado derivado de una de las clases de controles básicas.


Callbacks en Clientes.

XML-HTTP callbacks, o client callbacks, son mas eficientes que postback por dos razones. Una, la pagina no es renderizada (la pagina procesa un stop antes del evento PreRender). Segundo, los formularios no son aprobados, lo cual significa que ni la información ingresada en el formulario ni el estado de la vista actual son transmitidas al servidor como un full-blown postback. Mientras que el Internet Explorer soporta callbacks sincrónicos y asincrónicos, ASP.NET 2.0’s client callbacks manager siempre trabaja con callbacks asincrónicos


Como trabajan los Callbacks en Clientes.

El primer paso en la mejora del rendimiento de un client callback es la llamada al método GetCallBackEventReference para obtener el nombre de la función del lado del cliente que puede ser llamada para inicializar un callback. Entonces usted llama a la función del lado del cliente (utilizando un script de lado cliente), el cual se conecta con ASP.NET’s callback manager, el cual esta implementado en el lado del cliente, para conectarse con XML-HTTP callback al servidor.

ASP.NET notifica a la pagina que un callback a llegado por medio del método ICallbackEventHandler.RaiseCallbackEvent. RaiseCallbackEvent procesa el callback y lo retorna.