You are on page 1of 128

UNIVERSIDAD PRIVADA DE PUCALLPA PROGRAMAS Y LINEALES Alumno: Genaro Henrik Ruiz Ramirez Programa 1 ALGORITMOS Y COMBINATORIA Lneas P1.

1 Optimizacin Combinatoria La Optimizacin Combinatoria es una rama de la optimizacin. Su dominio se compone de problemas de optimizacin donde el conjunto de posibles soluciones es discreto o se puede reducir a un conjunto discreto. A la hora de tratar con problemas de optimizacin combinatoria, el objetivo consiste en encontrar la mejor solucin posible existente o solucin ptima, aquella que minimiza una funcin de coste dada. Si el problema no es complejo existen tcnicas para resolver

dichos problemas, como el Branch and Bound, Branch and Cut, etc. A medida que la complejidad del espacio de bsqueda aumenta, el coste de ejecucin de dichos algoritmos puede aumentar de forma exponencial, convirtiendo la resolucin en prcticamente inviable. Otra posibilidad para afrontar este tipo de problemas, consiste en buscar una solucin subptima, pero en un tiempo razonable. En algunos casos es posible encontrar incluso la solucin ptima al problema. Este tipo de tcnicas se pueden dividir en dos grandes grupos:

Heursticas Metaheursticas

Adems de estos grupos, est surgiendo en la actualidad une nueva tecnologa tecnologa Reasoning). Heursticas que de se puede usar para este en tipo o de problemas, (Case la Razonamiento Basado Casos CBR Based

Las tcnicas heursticas son algoritmos que encuentran soluciones de buena calidad para problemas combinatorios complejos explotando el conocimiento son del dominio de (desde un de aplicacin. y de Los algoritmos buenas a la heursticos sin de embargo, gran fciles implementar el punto encuentran vista

soluciones con esfuerzos computacionales relativamente pequeos; renuncian rara terico) encuentra encontrar la solucin ptima global de un problema. En problemas tamao vez algoritmo heurstico solucin ptima global. Metaheursticas Los algoritmos que no metaheursticos dependen del son algoritmos y que de propsito buenos

general,

problema,

ofrecen

resultados pero que normalmente no acaban ofreciendo la solucin ptima sino soluciones subptimas. Se acostumbran a utilizar para aquellos problemas en que no existe un algoritmo o heurstica especficos que los resuelva, o bien cuando no es prctico implementar dichos mtodos.

P1.2 Complejidad Computacional La teora de la complejidad computacional es la rama de la teora de la computacin que estudia, de manera terica, la complejidad inherente a la resolucin de un problema computable. Los recursos comnmente estudiados son el tiempo (mediante una aproximacin al nmero y tipo de pasos de ejecucin de un algoritmo para resolver un problema) y el espacio (mediante una aproximacin a la cantidad de memoria utilizada para resolver un problema). Se pueden estudiar igualmente otros parmetros, tales como el nmero de procesadores necesarios para resolver el problema en paralelo. La teora de la complejidad difiere de la teora de la compatibilidad en que sta se ocupa de la factibilidad de expresar problemas como algoritmos efectivos sin tomar en cuenta los recursos necesarios para ello. Los problemas que tienen una solucin con orden de complejidad lineal son los problemas que se resuelven en un tiempo que se relaciona linealmente con su tamao.

Hoy en da las computadoras resuelven problemas mediante algoritmos que tienen como mximo una complejidad o coste computacional polinmico, es decir, la relacin entre el tamao del problema y su tiempo de ejecucin es polinmica. stos son problemas agrupados en la clase P. Los problemas que no pueden ser resueltos por nuestras computadoras (las cuales son Mquinas Determinsticas), que en general poseen costes factorial o combinatorio pero que podran ser procesados por una mquina nodeterminista, estn agrupados en la clase NP. Estos problemas no tienen una solucin prctica, es decir, una mquina determinstica (como una computadora actual) no puede resolverlos en un tiempo razonable.

Complejidad Computacional P e o r c a s o construye un rbol completo en el cualcada caminoen el rbolprueba cada caracterstica.Asuman jemplos y m caractersticas.

Mximo de n ejemplos esparcidos en todoslos nodos de los m niveles

En cada nivel, i, en el rbol, se debe examinar las m i caractersticas que quedan para cada instancia enese nivel para calcular las ganancias de informacin.

En la practica un rbol es raramente completo (nmero de hojas es n) y la complejidad es lineal en m y n. rboles de Decisin Contenidos rboles de Decisin Sobreajuste Recorte (Pruning)

Sobreajuste (Overfitting)

Crear un rbol que clasifique todos los datos de entrenamiento perfectamente puede no llevarnos a un rbol con la mejor generalizacin a datos desconocidos. Puede haber error en los datos de entrenamiento que el errneamente ajustando. rbol esta

El algoritmo puede tomar malas decisiones cerca de l a s r a m a s basado en pocos datos que no reflejan tendencias confiables. Una hiptesis, se entrenamiento si es ms error que h en datos independientes dice que sobre ajusta (overfits) los datos de que existe otra hiptesis, h, la cual tiene datos de entrenamiento pero menos error en de prueba.

Ejemplo: Sobreajuste Probando la Ley de Ohm: V = IR (I = (1/R) V) Perfectamente se ajustan a los datos de entrenamiento con un polinomio de 9no grado (se pueden ajustar n puntos exactamente con un polinomio de grado n-1) Ejemplo: Sobreajuste

Se mejora la generalizacin con una funcin lineal que se ajusta a los datos de entrenamiento con menor exactitud. Sobreajuste Ruido de sobreajuste: de Ruido en o rboles de Decisin categora pueden <medium, causar blue,

caractersticas

Agregar instancia (dato) ruidosa: c i r c l e > : pos(pero realmenteneg)

Sobreajuste

de

Ruido

en

rboles de Decisin

Ruido de caractersticas o categora pueden causar sobreajuste: Agregar instancia (dato) ruidosa: <medium, blue, c i r c l e > : p o s ( p e r o realmente neg)

Ruido tambin puede causar que diferentes instancias del mismo vector de caracterstica tenga diferentes clases. Es imposible ajustar estos datos y se debe etiquetar la hoja con la clase de la mayora. <big, red, c i r c l e > : neg( b u t really pos) es que

Ejemplos conflictivos pueden surgir si l a s caractersticas son incompletas e inadecuadas.

rboles de Decisin Contenidos rboles de Decisin Sobreajuste Recorte (Pruning) Mtodos de Prevencin de S o b r e a j u s t e ( R e c o r t e o Pruning)

Dos ideas bsicas para rboles de decisin Prepruning: Parar de crecer el rbol en algn punto durante construccin top-down cuando no hay suficientes datos para toma de decisiones confiables. Postpruning: Crecer el rbol completo, entonces subrboles que no tengan suficiente evidencia. eliminar

Etiquetar hoja que resulta de un recorte con la clase dela mayora de los datos que quedan o con la distribucin de probabilidades de la clase. Mtodos para elegir subrboles a ser recortados: Validacin-cruzada: Reservar algunos datos de entrenamiento (validacin set, tuning set) para evaluar utilidad de subrboles.

Test estadstico: Usar un test estadstico en los datos de entrenamiento para determinar si alguna regularidad observada se puede eliminar por ser simplemente aleatoria. Minimum description length (MDL): Determinar si la complejidad adicional de la hiptesis es menos compleja que explcitamente recordar excepciones resultantes del recorte.

Reduced Error Pruning Un mtodo basado en post-pruningy validacin cruzada

Partition training data in grow and validation sets. Build a complete tree from the grow data. Until accuracy on validation set decreases do: For each non-leaf node, n, in the tree do: Temporarily prune the subtreebelow n and replace it with a leaf labeled with the current majority class at that node. Measure and record validation set. the accuracy of the pruned treeon the

Permanently prune the node that results in the greatest increase in accuracy onthe validation set. Problemas con Reduced Error Pruning

El problema con este mtodo es que potencialmente desperdicia datos de entrenamiento en el conjunto de validacin. Severidad de este problema estamos en la curva de aprendizaje: depende d e adonde

Validacin cruzada sin Perder Datos de Entrenamiento Se modifica el algoritmo de crecimiento para crecer al ancho primero y se para de crecer despus de llegar a cierta complejidad especifica de un rbol. Requiere varias pruebas de diferentes recortes usando divisiones aleatorias de conjuntos de crecimiento y validacin Se determina la complejidad del rbol y se calcula un promedio de complejidad C Se comienza crecer el rbol de todos los datos de entrenamiento pero se detiene cuando la complejidad llega a C. Otras ideas en rboles de Decisin Mejores criterios de divisin Ganancia de informacin muchos valores. prefiere caractersticas con

Caractersticas continuas Prediccin de funciones de valores reales (rboles de regresin)

Caractersticas con costos Costos de misclasificacin Aprendizaje incremental

ID4 ID5

Grandes bases de datos que no caben en memoria Aplicaciones hbridas (i.e. robtica, reconocimiento patrones, etc.) P1.3 Algoritmos y Estructuras de Datos. Conceptos bsicos de algoritmos

No existe una regla precisa para escribir un programa que resuelva un dado problema prctico. Al menos por ahora escribir programas es en gran medida un arte. Sin embargo con el tiempo se han desarrollado un variedad de conceptos que ayudan a desarrollar estrategias para resolver problemas y comparar a priori la eficiencia de las mismas. Por ejemplo supongamos que queremos resolver el Problema del Agente Viajero (TSP, por Traveling Salesman Problem) el cual consiste en encontrar el orden en que se debe recorrer un cierto nmero de ciudades (esto es, una serie de puntos en el plano) en forma de tener un recorrido mnimo. Este problema surge en una variedad de aplicaciones prcticas, por ejemplo encontrar caminos mnimos para recorridos de distribucin de productos o resolver el problema de la vuelta del caballo en el tablero de ajedrez, es decir, encontrar un camino para el caballo que recorra toda las casillas del tablero pasando una sola vez por cada casilla. Existe una estrategia (trivial) que consiste en evaluar todos los caminos posibles. Pero esta estrategia de bsqueda exhaustiva tiene un gran defecto, el costo computacional crece de tal manera con el nmero de ciudades que deja de ser aplicable a partir de una cantidad relativamente pequea. Otra estrategia heurstica se basa en buscar un camino que, si bien no es el ptimo (el de menor recorrido sobre todos los posibles) puede ser relativamente bueno en la mayora de los casos prcticos. Por ejemplo, empezar en una ciudad e ir a la ms cercana que no haya sido an visitada hasta recorrerlas todas. Una forma abstracta de plantear una estrategia es en la forma de un algoritmo, es decir una secuencia de instrucciones cada una de las cuales representan una tarea bien definida y puede ser llevada a cabo en una cantidad finita de tiempo y con un nmero finito de recursos computacionales. Un requerimiento fundamental

10

es que el algoritmo debe terminar en un nmero finito de pasos, de esta manera l mismo puede ser usado como una instruccin en otro algoritmo ms complejo. Entonces, comparando diferentes algoritmos para el TSP entre s, podemos plantear las siguientes preguntas Da el algoritmo la solucin ptima? Si el algoritmo es iterativo, converge? Como crece el esfuerzo computacional a medida que el nmero de ciudades crece? 1.3.1 Ejemplo: distribuido Sincronizacin de acceso a objetos en clculo

Consideremos un sistema de procesamiento con varios procesadores que acceden a un rea de memoria compartida. En memoria hay una serie de objetos O0, O1, ... On1, con n = 10 y una serie de tareas a realizar T0, T1, ... Tm1 con m = 12. Cada tarea debe modificar un cierto subconjunto de los objetos, segn la siguiente tabla T0 modifica O0, O1 y O3. T1 modifica O4 y O5. T2 modifica O4. T3 modifica O2 y O6 T4 modifica O1 y O4. T5 modifica O4 y O7. T6 modifica O0, O2, O3 y O6. T7 modifica O1, O7, O8. T8 modifica O5, O7 y O9. T9 modifica O3. T10 modifica O6, O8 y O9. T11 modifica O9. Las tareas pueden realizarse en cualquier orden, pero dos tareas no pueden ejecutarse al mismo tiempo si acceden al mismo objeto, ya que los cambios hechos por una de ellas puede interferir con

11

los cambios hechos por la otra. Debe entonces desarrollarse un sistema que sincronice entre s la ejecucin de las diferentes tareas Una forma trivial de sincronizacin es ejecutar cada una de las tareas en forma secuencial. Primero la tarea T0 luego la T1 y as siguiendo hasta la T11, de esta forma nos aseguramos que no hay conflictos en el acceso a los objetos. Sin embargo, esta solucin puede estar muy lejos de ser ptima en cuanto al tiempo de ejecucin ya que por ejemplo T0 y T1 pueden ejecutarse al mismo tiempo en diferentes procesadores ya que modifican diferentes objetos. Si asumimos, para simplificar, que todas las tareas llevan el mismo tiempo de ejecucin _ , entonces la versin trivial consume una cantidad de tiempo m_, mientras que ejecutando las tareas T0 y T1 al mismo tiempo reducimos el tiempo de ejecucin a (m 1)_ . El algoritmo a desarrollar debe particionar las tareas en una serie de p etapas E0, ... Ep. Las etapas son simplemente subconjuntos de las tareas y la particin debe satisfacer las siguientes restricciones Cada tarea debe estar en una y slo una etapa. (De lo contrario la tarea no se realizara o se realizara ms de una vez, lo cual es redundante. En el lenguaje de la teora de conjuntos, estamos diciendo que debemos particionar el conjunto de etapas en un cierto nmero de subconjuntos disjuntos.) Las tareas a ejecutarse en una dada etapa no deben acceder al mismo objeto. Una particin admisible es aquella que satisface todas estas condiciones. El objetivo es determinar aquella particin admisible que tiene el mnimo nmero de etapas. Este problema es muy comn, ya que se plantea siempre que hay un nmero de tareas a hacer y conflictos entre esas tareas, por ejemplo sincronizar una serie de tareas con maquinaria a realizar en una industria, evitando conflictos en el uso del instrumental o maquinaria, es decir no agendar dos tareas para realizar simultneamente si van a usar el microscopio electrnico. 1.3.2. Introduccin bsica a grafos El problema se puede plantear usando una estructura matemtica conocida como grafo. La base del grafo es un conjunto finito V de puntos llamados vrtices. La estructura del grafo est dada

12

por las conexiones entre los vrtices. Si dos vrtices estn conectados se dibuja una lnea que va desde un vrtice al otro. Estas conexiones se llaman aristas (edges) del grafo. Los vrtices pueden identificarse con un nmero de 0 a nv 1 donde nv es el nmero total de vrtices. Tambin es usual representarlos grficamente con un letra a; b; c; ::: encerrada en un crculo o usar cualquier etiqueta nica elativa al problema. Desde el punto de vista de la teora de conjuntos un grafo es un subconjunto del conjunto G de pares de vrtices. Un par de vrtices est en el grafo si existe una arista que los conecta. Tambin puede representarse como una matriz A simtrica de tamao nv_nv con 0s y 1s. Si hay una arista entre el vrtice i y el j entonces el elemento Aij es uno, y sino es cero. Adems, si existe una arista entre dos vrtices i y j entonces decimos que i es adyacente a j.

Figura 1.1: Representacin grfica y matricial del grafo G En la figura 1.1 vemos un grafo con 6 vrtices etiquetados de a a f, representado grficamente y como una matriz de 0s y 1s. El mismo grafo representado como pares de elementos es G = ffa; bg; fa; cg; fa; dg; fa; eg; fb; dg; fc; dg; fc; eg; fc; fg; fd; eg; fd; fg; g (1.1) Para este ejemplo usaremos grafos no orientados, es decir que si el vrtice i est conectado con el j entonces el j est conectado con el i. Tambin existen grafos orientados donde las aristas se representan por flechas. Se puede tambin agregar un peso (un nmero real) a los vrtices o aristas del grafo. Este peso puede representar, por ejemplo, un costo computacional.

13

1.3.3. Planteo del problema mediante grafos Podemos plantear el problema dibujando un grafo donde los vrtices corresponden a las tareas y dibujaremos una arista entre dos tareas si son incompatibles entre s (modifican el mismo objeto). En este caso el grafo resulta ser como muestra la figura 1.2. La buena noticia es que nuestro problema de particionar el grafo ha sido muy estudiado en la teora de grafos y se llama el problema de colorear el grafo, es decir se representan grficamente las etapas asignndole colores a los vrtices del grafo. La mala noticia es que se ha encontrado que obtener el coloreado ptimo (es decir el coloreado admisible con la menor cantidad de colores posibles) resulta ser un problema

Figura 1.2: Representacin del problema mediante un grafo. extremadamente costoso en cuanto a tiempo de clculo. (Se dice que es NP. Explicaremos esto en la seccin 1.3.12.)

14

Figura 1.3: Coloracin de mapas. El trmino colorear grafos viene de un problema que tambin se puede poner en trminos de colorear grafos y es el de colorear pases en un mapa. Consideremos un mapa como el de la figura 1.3. Debemos asignar a cada pas un color, de manera que pases limtrofes (esto es, que comparten una porcin de frontera de medida no nula) tengan diferentes colores y, por supuesto, debemos tratar de usar el mnimo nmero de colores posibles. El problema puede ponerse en trminos de grafos, poniendo vrtices en los pases (Cj , j = 1::10) y uniendo con aristas aquellos pases que son limtrofes (ver figura 1.4). 1.1.4. Algoritmo de bsqueda exhaustiva
Consideremos primero un algoritmo de bsqueda exhaustiva es decir, probar si el grafo se puede colorear con 1 solo color (esto slo es posible si no hay ninguna arista en el grafo). Si esto es posible el problema

15

Figura 1.4: Grafo correspondiente al mapa de la figura 1.3. est resuelto (no puede haber coloraciones con menos de un color). Si no es posible entonces generamos todas las coloraciones con 2 colores, para cada una de ellas verificamos si satisface las restricciones o no, es decir si es admisible. Si lo es, el problema est resuelto: encontramos una coloracin admisible con dos colores y ya verificamos que con 1 solo color no es posible. Si no encontramos ninguna coloracin admisible de 2 colores entonces probamos con las de 3 colores y as sucesivamente. Si encontramos una coloracin de nc colores entonces ser ptima, ya que previamente verificamos para cada nmero de colores entre 1 y nc 1 que no haba ninguna coloracin admisible. Ahora tratando de resolver las respuestas planteadas en la seccin 1.1, vemos que el algoritmo propuesto si da la solucin ptima. Por otra parte podemos ver fcilmente que s termina en un nmero finito de pasos ya que a lo sumo puede haber nc = nv colores, es decir la coloracin que consiste en asignar a cada vrtice un color diferente es siempre admisible. Estructuras de Datos Imaginemos que el restaurant tiene en total 10 platos(un restaurant bastante pobre), ello nos indicara que un arreglo de tamao 10 podra guardar todos los platos sin temor a que el tamao del arreglo no alcance. Suponiendo que inicialmente hay 2 platos, uno de color 1, y otro de color 2, el arreglo debera lucir algo asi: 2 1 0 0 0 0 0 0 0 0

16

Si repentinamente el que lava los platos pone un plato hasta arriba de color 2, luego de ello el arreglo debera de lucir asi: 2 1 2 0 0 0 0 0 0 0 Si luego pone hasta arriba un arreglo debera de quedar asi: 2 1 2 3 0 0 0 0 0 0 Pero si el mesero toma un plato de arriba, el arreglo estar de nuevo de esta manera: 2 1 2 0 0 0 0 0 0 0 Si el mesero vuelve a tomar un plato de arriba, el arreglo quedar de esta manera: 2 1 0 0 0 0 0 0 0 0 Para lograr esto, basta con declarar un arreglo y una variable. Tal que el arreglo diga especificamente qu platos hay en la pila, y la variable cuntos platos hay. Entonces, podemos declarar una pila manera(suponiendo que la pila es de nmeros enteros): int pila[tamao maximo]; int p=0; Cada que queramos aadir un elemento en la parte superior de la pila, es suficiente con esta lnea de cdigo: pila[p++]=objeto; Y cuando superior. queramos retirar el elemento que este en la parte de la siguiente plato de color 3, entonces el

pila[p]= 0; Por ltimo, como cultura general, en ingles a la pila se le llama stack, a la operacin de poner un elemento en la parte superior se le llama push, y la de quitar un elemento se le llama pop. Asi mismo, si la pila sobrepasa su tamao mximo, el error devuelto es stack overflow o desbordamiento de pila(ahora ya sabemos qu

17

quieren decir algunos errores comunes que saturan el monitor en pantallas azules). Problema 1. Comprueba que es suficiente utilizar pen lugar de pila[p]= 0 para retirar un elemento de la pila. Problema 2. En el lgebra, comnmente se utilizan signos de agrupacin tales como ( ), [ ] o { }, y se pueden utilizar para indicar el orden en que se realizarn las operaciones aritmticas. Ej. [a(x+y)+c]d+ (b(c+d)), sin embargo, existen ciertas formas invalidas de utilizar dichos signos de agrupacin Ej. [a+b) (a (b)) o tambien ([a+b)c]. Es decir, cada signo que abre debe tener un signo correspondiente que lo cierre, cada signo que cierra debe de tener un signo correspondiente qu cerrar, y los signos no se pueden traslapar. Escribe un programa, que dada una expresin algebrarica, determine si tiene o no error en los signos de agrupacin en tiempo lineal. Problema 3. Una manera de encriptar mensajes(no muy segura), es colocar parentesis de manera arbitraria, y todo lo que esta dentro de un parentesis, ponerlo al reves, por ejemplo Olimpiada de Informatica se puede encriptar como Olimpia(ad) de I(rofn)matica, los parentesis tambien se pueden anidar, es decir, otra forma de encriptar el mismo mensaje podra ser Olimpia(am(nfor)I ed (da))tica. Escribe un programa, que dado un mensaje encriptado, determine el mensaje original en tiempo lineal. (9 Olimpiada Mexicana de Informtica) Problema 4. Hay n faros acomodados en lnea recta, cada faro puede tener una altura arbitraria, y adems, cada faro brilla con cierta intensidad. La luz de cada faro ilumina unicamente a los primeros faros en cada direccin cuyas alturas sean estrictamente mayores a la del faro que emite la luz. La iluminacin total de un faro, es la suma de las luces que llegan al faro(sin incluir la propia). Escribe un programa, que dadas las alturas de los n faros y las intensidades de cada uno, determine cual es el faro mas iluminado en tiempo lineal.

18

(USACO 2006) Problema 5. Una cuadricula bicolorada, es aquella en la cual cada cuadro puede estar pintado de color negro o de color blanco(todos los cuadros estan pintados de alguno de estos 2 colores). Puedes asumir que cada casilla de la cuadricula tiene area 1. Escribe un programa, que dada una cuadricula bicolorada, determine el rea del mayor rectngulo (dentro de la cuadricula) pintado de un solo color. Tu programa deber funcionar en tiempo lineal (lineal en funcin del nmero de casillas de la cuadricula, NO en funcin de la base o de la altura). (Croatian Olympiad in Informatics) Problema 6. Considera el siguiente algoritmo recursivo generar ermutaciones de arreglo[ ] desde inicio hasta fin: 1 funcion permuta(arreglo[ ], inicio, fin) 2 si inicio=fin entonces 3 imprime arreglo[ ]; 4 fin_de_funcion; 5 para i=inicio hasta fin 6 intercambia(arreglo[inicio], arreglo[i]); 7 pemuta(arreglo[ ], inicio+1, fin); 8 intercambia(arreglo[inicio], arreglo[i]); 9 fin_de_funcion; Escribe una funcin no recursiva que genere todas las permutaciones de arreglo[ ] desde inicio hasta fin, con la misma complejidad que la funcin que se muestra. Colas Imagina una conversacin de chat entre 2 personas, aunque los conversantes no se den cuenta, existe algo llamado lag, es decir, el tiempo que tardan las 2 computadoras en mandarse y recibir los mensajes. Dependiendo de la conexin, el lag puede variar entre menos de un segundo o incluso mas de un minuto. para

19

Si por un momento, por falla del servidor, una de las 2 computadoras pierde la conexin, y en ese momento un usuario est intentando mandar varios mensajes, el programa de chat guardar los mensajes que el usuario est tratando de mandar, y cuando se recupere la conexin, el programa de chat mandar los mensajes en el mismo orden que el usuario los escribi. Obviamente, el programa de chat no usa una pila para eso, ya que si usara una pila, el receptor leera los mensajes en el orden inverso que el emisor los escribi. Es decir, en una pila el ultimo que entra es el primero que sale. De ah que a las pilas se les conozca como estructuras LIFO(Last In, First Out). Existen otras estructuras llamadas colas, en una cola el primero que entra es el primero que sale. Su nombre deriva de las filas que se hacen en los supermercados, cines, bancos, etc. Donde el primero que llega, es el primero en ser atendido, y el ltimo que llega es el ltimo en ser atendido(suponiendo que no haya preferencias burocrticas en dicho establecimiento). Las colas, son conocidas como estructuras FIFO(First In, First Out). Una cola es una estructura de datos, en la cual slo se pueden aplicar estas dos operaciones: colocar un elemento al final, o quitar un elemento del principio. Para representar una cola, obviamente necesitamos tambien un arreglo; supongamos que hay varios participantes en la cola para el registro de la OMI. Cada participante tiene un nombre que consiste de un nmero entero mayor o igual que 1.(Son bastante populares esos nombres en nuestros das) Y como faltan muchos estados a la OMI, solo habr 10 participantes. Entonces el arreglo podra lucir algo asi... 0 0 0 0 0 0 0 0 0 0 En ese momento llega 3 y se forma 3 0 0 0 0 0 0 0 0 0 Luego llega 5 y se forma 3 5 0 0 0 0 0 0 0 0

20

Despues llega 4 y se forma 3 4 5 0 0 0 0 0 0 0 Luego llega 9, y despues de eso llega 2 3 4 5 9 2 0 0 0 0 0 Entonces al encargado atender, y atiende a 3. del registro se le ocurre comenzar a

En la vida real, los participantes daran un paso hacia delante, pero en una computadora, para simular eso, sera necesario recorrer todo el arreglo, lo cual es muy lento; por ello, es mas practico dejar el y primer espacio de la cola en blanco. 0 4 5 9 2 0 0 0 0 0 Luego se atiende a 4 0 0 5 9 2 0 0 0 0 0 En ese momento llega 1 corriendo y se forma 0 0 5 9 2 1 0 0 0 0 etc. Ya para este momento, te debes de estar imaginando que para implementar una cola, unicamente se requiere un arreglo y dos variables, donde las variables indican donde inicia y donde termina la cola. En un problema de olimpiada, siempre podremos saber cuantos elementos se formarn en la cola. Sin embargo, suponiendo que se forma 1 e inmediatamente es atendido, se vuelve a formar y vuelve a ser atendido inmediatamente, y asi 1 000 veces, entonces, de esa manera se requerira un arreglo de tamao 1 000, cuando nunca hay mas de un elemento dentro de la cola. Para evitar eso, podemos aadir elementos al principio de la cola si ya no hay espacio al final. Por ejemplo, si luego de que se atiendi a muchos participantes, la cola est de esta forma: 0 0 0 0 0 0 0 0 7 3

21

Y para rectificar algo 5 vuelve a formarse, podemos colocar a 5 al principio 5 0 0 0 0 0 0 0 7 3 Luego si 4 vuelve a formarse 5 4 0 0 0 0 0 0 7 3 Puede parecer extrao esto, pero el programa sabr que la cola empieza donde est 7 y termina donde est 4. Asi que si el organizador atiende al siguiente, atender a 7, y la cola quedar de esta manera 5 4 0 0 0 0 0 0 0 3 Luego atender a 3 5 4 0 0 0 0 0 0 0 0 Despues atender a 5 0 4 0 0 0 0 0 0 0 0 Y asi sucesivamente... Implementar la operacin de meter un elemento a la cola es muy sencillo: cola[fin++]=elemento; if(fin>=tamao de la cola) fin=0; Y cas lo mismo es sacar un elemento de la cola inicio++; if(inicio>=tamao de la cola) inicio=0; Problema 7. Comprueba que una cola esta llena o vaca si y solo si inicio=fin Problema 8. En tu negocio tienes una secuencia de n sillas acomodas en lnea recta y numeradas de 1 a n, por cada persona que se siente en una silla con el nmero x, debers pagar $x al

22

gobierno, pero como quieres tener cmodos a los clientes, no tienes otra opcin que pedirles que tomen asiento; sin embargo, el aprecio por el cliente an no te ha quitado la codicia, por lo que puedes indicarle a cada cliente donde sentarse, pero el cliente deside cuando irse; desde el momento que un cliente llega hasta el momento que se va, el cliente pasar todo el tiempo sentado en una silla y no estar dispuesto a compartirla con nadie mas. Escribe un programa que dado el historial de qu clientes llegan y qu clientes se van en orden cronolgico, calcule que asientos asignarles a cada quien para que el dinero que debas pagar al gobierno sea el mnimo posible. Tu programa deber funcionar en tiempo lineal. Listas Enlazadas Frecuentemente necesitamos tener almacenadas unas k listas de datos en memoria, sabiendo que el nmero total de datos en memoria no sobre pasa n. Si disponemos de suficiente memoria, podemos guardar en memoria n arreglos de tamao k o una matriz de tamao nk, pero no siempre dispondremos de tanta memoria. Tambien hay veces que se requieren tener listas de nmeros y agregar nmeros a dichas listas pero no al final ni al principio, sino en medio. Para solucionar enlazadas. estos y otros problemas, existen las litas

Las listas enlazadas son estructuras de datos compuestas por una sucesin de elementos llamados nodos; en la que cada nodo contiene un dato y la direccin del proximo nodo, en caso de que haya prximo. La siguiente imagen lista enlazada. muestra una representacin grfica de una

Una forma de definir un nodo es:

23

Una estructura vaca un elemento de informacin y un elace a otro nodo. La tarea de implementar una enlazada puede hacerse eficazmente con 2 arreglos: uno para guardar los datos y otro para guardar los enlaces, adems se requiere una variable que diga el tamao de la lista de la siguiente manera... int dato[tamao maximo de la lista]; int proximo[tamao maximo de la lista]; int tam_lista=1; //Tamao de la lista Lo nico que falta definir es el elemento vaco, para ello, podemos asumir que el dato 0 es el elemento vaco, y en el momento que nos encontremos con l, sabemos que la lista ya habr terminado. Insertar un nodo con un dato x, justo despues de otro nodo k, se puede hacer facilmente en tiempo constante: 1 void insertar(int x, int k){ 2 dato[tam_lista]=x; 3 proximo[tam_lista]=proximo[k]; 4 proximo[k]=tam_lista++; 5 } Lo que hace este cdigo es colocar x en el primer espacio en blanco dentro del arreglo datos, luego colocar un enlace al sucesor de k en el primer espacio en blanco dentro del arreglo de proximo, y hacer que k apunte al nodo que se acaba de crear. De esa forma k apuntar al nuevo nodo, y el nuevo nodo apuntar al nodo que apuntaba k. El siguiente cdigo imprime todos los datos contenidos en una lista, asumiendo que 1 es el primer elemento de dicha lista. 1 for(i=1;i!=0;i=proximo[i]) 2 printf(%d, dato[i]);

24

Problema 9. Implementa una lista donde se puedan realizar las siguientes operaciones: imprimir los datos de la lista en rden, agregar un nodo a la lista y eliminar un nodo especificado de la lista. Problema 10. Si borras un nodo de la lista, simplemente borrando su enlace, no podras reutilizar ese espacio de memoria para guardar mas datos. Implementa una lista que permita insertar despues de x en orden constante, imprimir la lista en orden lineal, borrar un nodo x en orden constante, y que reutilize los espacios de memoria de los nodos borrados. (*nota: es muy facil hacer esto con memoria dinamica, pero se insiste en que no es conveniente usarla en la olimpiada, hay una solucin de este problema que no requiere memoria dinamica, aunque puede llegar a ocupar el doble de memoria que se requiere para guardar los datos en la lista; encuentrala.) Problema 11. Un verdugo es mandado a exterminar a n prisioneros de guerra. El exterminio lo ejecuta de la siguiente manera: los prinsioneros forman un crculo al rededor del verdugo, el verdugo elige a quien fusilar primero, una vez muerto el primero, el verdugo cuenta, a partir del lugar donde estaba su ultima victima, k prisioneros en orden de las manesillas del reloj, y luego fusila al ksimo prisionero despues de su ltima vctima (a los muertos no los cuenta), y repite este proceso hasta que solo quede un prisionero. El ltimo prisionero podr ser liberado. El verdugo tiene un amigo entre los n prisioneros, escribe un programa que dado, n, k y la ubicacin de su amigo, le diga a quien fusilar primero, para asegurar que su amigo sea el que quede libre.

rboles Binarios Seguramente despues de haber visto las listas enlazadas, te lleg a la mente la idea de colocar mas de un enlace en cada nodo. Pues no fuiste el primero en tener esa idea, pues los rboles binarios son estructuras de datos parecidas a las listas enlazadas, con la diferencia de que cada nodo puede tener hasta 2 enlaces(de ah el nombre de binario).

25

Por ahora nos reservaremos la definicin rigurosa de rbol binario, pues requiere de teora de grafos para comprenderla.

La siguiente figura muestra un ejemplo de rbol binario:

Antes de seguir entrando en materia, ser conveniente dar unas cuantas definiciones: El primer nodo del rbol recibe el nombre de raz, los enlaces reciben el nombre de aristas. Se dice que un nodo B es hijo de un nodo A, si existe alguna arista que va desde A hasta B. Por ejemplo, en la figura, 7 es hijo de 2, 4 es hijo de 9, 11 es hijo de 6, etc. Al mismo tiempo se dice que un nodo A es padre de un nodo B si existe una arista que va desde A hasta B. Ej. 9 es padre de 4, 6 es padre de 5 y de 11, etc. Se dice que un nodo es hoja, si no tiene hijos. Ej. 11 y 4 son hojas, pero 6, 7, y 9 no lo son. La rama izquierda de un nodo es el rbol que tiene como raz el hijo izquierdo de tal nodo, por ejemplo {7, 2, 6, 5, 11} son los nodos de la rama izquierda de 2. La rama derecha de un nodo es el rbol que tiene como raz el hijo derecho de tal nodo. Los nodos tambien pueden ser llamados vertices. Los rboles binarios tienen muchas formas de implementarse, cada una con sus ventajas y desventajas,

26

por ahora solo trataremos una. Los rboles binarios pueden ser implementados utilizando 3 arreglos: clave(los datos que guarda cada nodo), hijo izquierdo e hijo derecho. Y por supuesto otra variable entera: el nmero de nodos en el rbol. int clave[maximo de nodos]; //Dato que guarda el nodo int izq[maximo de nodos]; //Hijo izquierdo int der[maximo de nodos]; //Hijo derecho int nodos=0; En seguida se muestran los datos que podran contener los arreglos para obtener el rbol que se muestra el la figura:

Como se observa en la tabla, se est tomando el 0 como raz, y el 1 como vaco. Los rboles binarios tienen diversas frecuentes implican ordenamiento. Existen, adems, 3 formas nodos de un rbol binario: recursivas aplicaciones, de las mas los

distintas

visitar

Recorrido en Preorden. Tambien llamado Bsqueda en Profundidad en la teora de grafos, consiste en visitar primero el nodo actual, despues el hijo derecho. Puede ser implementado de la siguiente manera: 1 void preorden(int nodo){ 2 if(nodo==1) luego el hijo izquierdo y

27

3 return; 4 visita(nodo); 5 preorden(izq[nodo]); 6 preorden(der[nodo]); 7 } Recorrido en Orden. En algunos lugares inorden, consiste en visitar primero el hijo izquierdo, luego el nodo actual, derecho. El siguiente cdigo lo ilustra: 1 void orden(int nodo){ 2 if(nodo==1) 3 return;; 4 orden(izq[nodo]); 5 visita(nodo) 6 orden(der[nodo]); 7 } Recorrido en Postorden. Como visitar primero los nodos hijos y despus el nodo actual. 1 void postorden(int nodo){ 2 if(nodo==1) 3 return;; 4 postorden(izq[nodo]); 5 postorden(der[nodo]); 6 visita(nodo) 7 } ya te imaginars, consiste en se y le menciona el como hijo

finalmente

28

Quiz de momento no les encuentras recorridos, pero cada uno tiene su utilidad especfica.

mucha

aplicacin

dichos

Se puede crear un nuevo nodo facilmente con la siguiente funcin: 1 int crear_nodo(int dato){ 2 clave[nodos]=dato; 3 izq[nodos]=1; 4 der[nodos]=1; 5 return nodos++; 6 } Como se puede ver, la funcin recibe como parametro el dato que va a tener el nuevo nodo y regresa el lugar en el arreglo donde est ubicado el nuevo nodo, depende del programador saber dnde poner el enlace del nuevo nodo. Programa 2: Redes y Sistemas Distribuidos Lneas P2.1 Procedimientos Paralelos. P2.2 Sistemas Distribuidos. "Sistemas cuyos componentes hardware y software, que estn en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicacin mediante un protocolo prefijado por un esquema cliente-servidor". Caractersticas:

Concurrencia.- Esta caracterstica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultneamente por los usuarios y/o agentes que interactan en la red. Carencia de reloj global.Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realizacin de una tarea, no tienen una temporizacin general, esta ms bien distribuida a los componentes.

29

Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los dems pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.

Evolucin: Procesamiento central (Host).- Uno de los primeros modelos de ordenadores interconectados, llamados centralizados, donde todo el procesamiento de la organizacin se llevaba a cabo en una sola computadora, normalmente un Mainframe, y los usuarios empleaban sencillos ordenadores personales. Los problemas de este modelo son:

Cuando la carga de procesamiento aumentaba se tena que cambiar el hardware del Mainframe, lo cual es ms costoso que aadir ms computadores personales clientes o servidores que aumenten las capacidades.

El otro problema que surgi son las modernas interfases grficas de usuario, las cuales podan conllevar a un gran aumento de trfico en los medios de comunicacin y por consiguiente podan colapsar.

Grupo de Servidores.- Otro modelo que entr a competir con el anterior, tambin un tanto centralizado, son un grupo de ordenadores actuando como servidores, normalmente de archivos o de impresin, poco inteligentes para un nmero de Minicomputadores que hacen el procesamiento conectados a una red de rea local. Los problemas de este modelo son:

Podra generarse una saturacin de los medios de comunicacin entre los servidores poco inteligentes y los minicomputadores, por ejemplo cuando se solicitan archivos grades por varios clientes a la vez, podan disminuir en gran medida la velocidad de transmisin de informacin.

La Computacin Cliente Servidor.- Este modelo, que predomina en la actualidad, permite descentralizar el procesamiento y recursos, sobre todo, de cada uno de los servicios y de la visualizacin de la Interfaz Grfica de Usuario. Esto hace que ciertos servidores estn dedicados solo a una aplicacin determinada y por lo tanto ejecutarla en forma eficiente. Cliente-Servidor Definicin:

30

Sistema donde el cliente es una mquina que solicita un determinado servicio y se denomina servidor a la mquina que lo proporciona. Los servicios pueden ser:

Ejecucin de un determinado programa. Acceso a un determinado banco de informacin.

Acceso a un dispositivo de hardware.

Es un elemento primordial, la presencia de un medio fsico de comunicacin entre las mquinas, y depender de la naturaleza de este medio la viabilidad del sistema. Categoras de Servidores: A continuacin comunes:

se

presenta

una

lista

de

los

servidores

ms

Servidores de archivos.- Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sera una gran opcin de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los enva. Servidores de Base de Datos.- Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la informacin que se enva est ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la informacin pertinente y enva esa respuesta al cliente. Servidores de Software de Grupo.- El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrnico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo enva al resto del grupo. Servidores WEB.- Son los que guardan y proporcionan Pginas HTML. El cliente desde un browser o link hace un llamado de la pgina y el servidor recibe el mensaje y enva la pgina correspondiente. Servidores de correo.- Gestiona el envo y recepcin de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo. Servidor de objetos.- Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.

31

Servidores de impresin.- Gestionan las solicitudes de impresin de los clientes. El cliente enva la solicitud de impresin, el servidor recibe la solicitud y la ubica en la cola de impresin, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresin. Servidores de aplicacin.- Se dedica a una nica aplicacin. Es bsicamente una aplicacin a la que pueden acceder los clientes.

Componentes de Software: Se distinguen tres componentes bsicos de software:

Presentacin.- Tiene que ver con la presentacin al usuario de un conjunto de objetos visuales y llevar a cabo el procesamiento de los datos producidos por el mismo y los devueltos por el servidor. Lgica de aplicacin.- Esta capa es la responsable del procesamiento de la informacin que tiene lugar en la aplicacin. Base de datos.- Esta compuesta de los archivos que contienen los datos de la aplicacin.

Arquitecturas Cliente / Servidor A continuacin mostramos las arquitecturas cliente-servidor ms populares:

Arquitectura Cliente-Servidor de Dos Capas.- Consiste en una capa de presentacin y lgica de la aplicacin; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:

o o o o

Cuando se requiera poco procesamiento de datos en la organizacin. Cuando se tiene una base de datos centralizada en un solo servidor. Cuando la base de datos es relativamente esttica. Cuando se requiere un mantenimiento mnimo.

CLIENTE/SERVIDOR DE DOS CAPAS

Arquitectura Cliente-Servidor de Tres Capas- Consiste en una capa de la Presentacin, otra capa de la lgica de la aplicacin y otra capa de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:

32

o o o o o o

Cuando se requiera mucho procesamiento de datos en la aplicacin. En aplicaciones donde la funcionalidad este en constante cambio. Cuando los procesos no estn relativamente muy relacionados con los datos. Cuando se requiera aislar la tecnologa de la base de datos para que sea fcil de cambiar. Cuando se requiera separar el cdigo del cliente para que se facilite el mantenimiento. Esta muy adecuada para utilizarla con la tecnologa orientada a objetos. CLIENTE/SERVIDOR DE TRES CAPAS 1. Clasificacin de los sistemas cliente servidor: A continuacin mostramos la clasificacin de de los sistemas cliente/servidor de acuerdo al nivel de abstraccin del servicio que ofrecen:

2. Representacin distribuida.- La interaccin con el usuario se


realiza en el servidor, el cliente hace de pasarela entre el usuario y el servidor.

33

3. Representacin Remota.-La lgica de la aplicacin y la base


de datos se encuentran en el servidor. El cliente recibe y formatea los datos para interactuar con el usuario.

4. Lgica Distribuida.- El cliente se encarga de la interaccin


con el usuario y de algunas funciones triviales de la aplicacin. Por ejemplo controles de rango de campos, campos obligatorios, etc. Mientras que el resto de la aplicacin, junto con la base de datos, estn en el servidor.

34

5. Gestin Remota de Datos.- El cliente realiza la interaccin con el usuario y ejecuta la aplicacin y el servidor es quien maneja los datos.

6. Base de Datos Distribuidas.El cliente realiza la interaccin con el usuario, ejecuta la aplicacin, debe conocer la topologa de la red, as como la disposicin y ubicacin de los datos. Se delega parte de la gestin de la base de datos al cliente. 7. Cliente servidor a tres niveles.- El cliente se encarga de la interaccin con el usuario, el servidor de la lgica de aplicacin y la base de datos puede estar en otro servidor.

P2.3 Computacion GRIP. La computacin grid es una tecnologa innovadora que permite utilizar de forma coordinada todo tipo de recursos (entre ellos cmputo, almacenamiento y aplicaciones especficas) que no estn sujetos a un control centralizado. En este sentido es una nueva forma de computacin distribuida, en la cual los recursos pueden ser heterogneos (diferentes arquitecturas, supercomputadores, clusters...) y se encuentran conectados mediante redes de rea

35

extensa (por ejemplo Internet). Desarrollado en mbitos cientficos a principios de los aos 1990, su entrada al mercado comercial siguiendo la idea de la llamada Utility computing supone una importante revolucin. El trmino grid se refiere a una infraestructura que permite la integracin y el uso colectivo de ordenadores de alto rendimiento, redes y bases de datos que son propiedad y estn administrados por diferentes instituciones. Puesto que la colaboracin entre instituciones envuelve un intercambio de datos, o de tiempo de computacin, el propsito del grid es facilitar la integracin de recursos computacionales. Universidades, laboratorios de investigacin o empresas se asocian para formar grid para lo cual utilizan algn tipo de software que implemente este concepto.

Qu es? Llamamos grid al sistema de computacin distribuido que permite compartir recursos no centrados geogrficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser ordenadores (PC, estaciones de trabajo, supercomputadoras, PDA, porttiles, mviles, etc), software, datos e informacin, instrumentos especiales (radio, telescopios, etc.) o personas/colaboradores. La computacin grid ofrece muchas ventajas frente a otras tecnologas alternativas. La potencia que ofrecen multitud de computadores conectados en red usando grid es prcticamente ilimitada, adems de que ofrece una perfecta integracin de sistemas y dispositivos heterogneos, por lo que las conexiones entre diferentes mquinas no generarn ningn problema. Se trata de una solucin altamente escalable, potente y flexible, ya que evitarn problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la posibilidad de modificar el nmero y caractersticas de sus componentes. Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas de seguridad y polticas de gestin de carcter tanto tcnico como econmico. As pues, su objetivo ser el de compartir una serie de recursos en la red de manera

36

uniforme, segura, transparente, eficiente y fiable, ofreciendo un nico punto de acceso a un conjunto de recursos distribuidos geogrficamente en diferentes dominios de administracin. Esto nos puede llevar a pensar que la computacin Grid permite la creacin de empresas virtuales. Es importante saber que una grid es un conjunto de maquinas distribuidas que ayudan a mejorar el trabajo sobre software pesados Actualidad Existen muchos proyectos que han sido desarrollados en esta lnea, tales como Edonkey, Emule o Limewire. Se trata de programas para compartir datos a nivel mundial entre diferentes mquinas. Las grid y Peer-to-peer (P2P) tienen mucho en comn y especialmente la idea bsica de comparticin de recursos. Entre las caractersticas diferentes podemos ver la P2P como ms annima y generalizada en ordenadores de usuarios de Internet, mientras que las grids nacen de una estructura de nodos ms controlada y jerarquizada en centros cientficos. Una primera experiencia fue GriPhyN, para unir nodos en el proceso de fsicas de altas energas en Estados Unidos. Otro proyecto tambin muy importante es SETI@home. ste cuenta con miles de PC repartidos por Internet que ceden tiempo de sus procesadores, ciclos de proceso desocupados, para analizar seales buscando patrones inteligentes extraterrestres. Sin embargo, su uso destaca tambin en los centros de investigacin desde finales del 1990 en proyectos que van desde Fsica de Partculas a Astrofsica o incluso Biologa. En Europa con el apoyo de proyectos de CERN (Centro Europeo Investigacin Nuclear) y el programa marco europeo se cre el software y red EDG (grid de datos europea). El uso de la computacin grid en estos campos ha supuesto una mejora exponencial en los ltimos aos. Las empresas e instituciones que han participado en el desarrollo de estas tecnologas quieren entrar cuanto antes en una etapa de explotacin comercial. Empresas como Microsoft y Sun Microsystems se han dado cuenta de la importancia que tendr a medio plazo ofrecer grid a sus clientes. Destacamos el papel de IBM invirtiendo en grid como plataforma para ofrecer a sus clientes las ventajas como ahorro de tiempo y recursos econmicos. Existen varias soluciones comerciales en forma de empresas, por ejemplo:

La Enterprise Grid Alliance (EGA): se crea en California, en abril de 2004, por un grupo de empresas lderes en tecnologa para desarrollar soluciones comerciales-empresariales de informtica distribuida y para acelerar el despliegue de esta

37

tecnologa en las empresas. Es un consorcio abierto enfocado en el desarrollo y promocin de soluciones de mallas empresariales. Sun Microsystems: el software Grid Engine de Sun hace ms fcil agregar mquinas al grid y automticamente toma ventaja de la energa incrementada, por lo que ahorra tiempo y recursos a travs de un grid rpido, eficiente y confiable para el manejo y despliegue. Andago: con el objetivo de acercar la tecnologa grid a los entornos industriales y de negocio, Andago aadi a su oferta de soluciones su experiencia en proyectos Grid. JPPF: el software JPPF habilita las aplicaciones con altos requerimientos de procesamiento para ser ejecutadas en varias computadoras con diferentes caractersticas (hetergeneas)gracias a su arquitectura basada en Java, de manera escalable(agregando o disminuyendo computadoras participantes) de manera dinmica, distribuyendo la aplicacin en tareas(jobs).

Existen diversos middleware con capacidades y funcionalidades muy variadas que, en funcin de la complejidad, servicios ofrecidos y dimensin de la red grid a implantar, se seleccionar la opcin idnea. Las soluciones middleware, todas ellas de cdigo abierto, utilizadas (por ejemplo por Andago) son: EGEE para grandes proyectos, Globus Solutions para proyectos medios, Grid Engine para pequeas implantaciones. Caractersticas

Capacidad de balanceo de sistemas: no habra necesidad de calcular la capacidad de los sistemas en funcin de los picos de trabajo, ya que la capacidad se puede reasignar desde la granja de recursos a donde se necesite; Alta disponibilidad. con la nueva funcionalidad, si un servidor falla, se reasignan los servicios en los servidores restantes; Reduccin de costes: con esta arquitectura los servicios son gestionados por "granjas de recursos". Ya no es necesario disponer de "grandes servidores" y podremos hacer uso de componentes de bajo coste. Cada sistema puede ser configurado siguiendo el mismo patrn;

Se relaciona el concepto de grid con la nueva generacin del protocolo IP. El nuevo protocolo de Internet IPv6 permitir trabajar con una Internet ms rpida y accesible. Una de las ideas clave en la superacin de las limitaciones actuales de Internet IPv4 es la aparicin de nuevos niveles de servicio que harn uso de la nueva capacidad de la red para intercomunicar los ordenadores.

38

Este avance en la comunicacin permitir el avance de las ideas de grid computing al utilizar como soporte la altsima conectividad de Internet. Es por ello que uno de los campos de mayor innovacin en el uso del grid computing, fuera de los conceptos de supercomputacin, es el desarrollo de un estndar para definir los Grid Services frente a los actuales Web Services. Desventajas No obstante, la computacin grid presenta algunos inconvenientes que deben solucionarse. Estos problemas son:

Recursos heterogneos: la computacin grid debe ser capaz de poder manejar cualquier tipo de recurso que maneje el sistema, si no resultar totalmente intil. Descubrimiento, seleccin, reserva, asignacin, gestin y monitorizacin de recursos son procesos que deben controlarse externamente y que influyen en el funcionamiento del grid. Necesidad de desarrollo de aplicaciones para manejar el grid, as como desarrollo de modelos eficientes de uso. Comunicacin lenta y no uniforme. Organizativos: dominios de administracin, modelo de explotacin y costes, poltica de seguridad... Econmicos: precio de los recursos, oferta/demanda...

Ventajas y requisitos En definitiva, grid supone un avance respecto a la World Wide Web: El World Wide Web proporciona un acceso transparente a informacin que est almacenada en millones de ordenadores repartidos por todo el mundo. Frente a ello, el grid es una infraestructura nueva que proporciona acceso transparente a potencia de clculo y capacidad de almacenamiento distribuida por una organizacin o por todo el mundo. Los requisitos que debe cumplir cualquier grid son: Los datos deben compartirse entre miles de usuarios con intereses distintos. Se deben enlazar los centros principales de supercomputacin, no slo los PC. Se debe asegurar que los datos sean accesibles en cualquier lugar y en cualquier momento. Debe armonizar las distintas polticas de gestin de muchos centros diferentes. Debe proporcionar seguridad. Y los beneficios que se obtienen:

Proporciona un mecanismo de colaboracin transparente entre grupos dispersos, tanto cientficos como comerciales.

39

Posibilita el funcionamiento de aplicaciones a gran escala. Facilita el acceso a recursos distribuidos desde nuestros PC. Todos estos objetivos y beneficios se engloban en la idea de "e-Ciencia".

Estos beneficios tendrn repercusin en muchos campos:


Medicina (imgenes, diagnosis y tratamiento). Bioinformtica (estudios en genmica y protemica). Nanotecnologa (diseo de nuevos materiales a escala molecular). Ingeniera (diseo, simulacin, anlisis de fallos y acceso remoto a instrumentos de control). Recursos naturales y medio ambiente (previsin meteorolgica, observacin del planeta, modelos y prediccin de sistemas complejos).

La tecnologa derivada del grid abre un enorme abanico de posibilidades para el desarrollo de aplicaciones en muchos sectores. Por ejemplo: desarrollo cientfico y tecnolgico, educacin, sanidad, y administracin pblica. Programa 3 Base de Datos Lneas P 3.1 Minera De Datos La minera de datos (DM, Data Mining) consiste en la extraccin no trivial de informacin que reside de manera implcita en los datos. Dicha informacin era previamente desconocida y podr resultar til para algn proceso. En otras palabras, la minera de datos prepara, sondea y explora los datos para sacar la informacin oculta en ellos. Bajo el nombre de minera de datos se engloba todo un conjunto de tcnicas encaminadas a la extraccin de conocimiento procesable, implcito en las bases de datos. Est fuertemente ligado con la supervisin de procesos industriales ya que resulta muy til para aprovechar los datos almacenados en las bases de datos. Las bases de la minera de datos se encuentran en la inteligencia artificial y en el anlisis estadstico. Mediante los modelos extrados utilizando tcnicas de minera de datos se aborda la solucin a problemas de prediccin, clasificacin y segmentacin. Proceso Un proceso tpico de minera de datos consta de los siguientes pasos generales:

40

1. Seleccin del conjunto de datos, tanto en lo que se refiere a las variables objetivo (aquellas que se quiere predecir, calcular o inferir), como a las variables independientes (las que sirven para hacer el clculo o proceso), como posiblemente al muestreo de los registros disponibles. 2. Anlisis de las propiedades de los datos, en especial los histogramas, diagramas de dispersin, presencia de valores atpicos y ausencia de datos (valores nulos). 3. Transformacin del conjunto de datos de entrada, se realizar de diversas formas en funcin del anlisis previo, con el objetivo de prepararlo para aplicar la tcnica de minera de datos que mejor se adapte a los datos y al problema, a este paso tambin se le conoce como preprocesamiento de los datos. 4. Seleccionar y aplicar la tcnica de minera de datos, se construye el modelo predictivo, de clasificacin o segmentacin. 5. Extraccin de conocimiento, mediante una tcnica de minera de datos, se obtiene un modelo de conocimiento, que representa patrones de comportamiento observados en los valores de las variables del problema o relaciones de asociacin entre dichas variables. Tambin pueden usarse varias tcnicas a la vez para generar distintos modelos, aunque generalmente cada tcnica obliga a un preprocesado diferente de los datos. 6. Interpretacin y evaluacin de datos, una vez obtenido el modelo, se debe proceder a su validacin comprobando que las conclusiones que arroja son vlidas y suficientemente satisfactorias. En el caso de haber obtenido varios modelos mediante el uso de distintas tcnicas, se deben comparar los modelos en busca de aquel que se ajuste mejor al problema. Si ninguno de los modelos alcanza los resultados esperados, debe alterarse alguno de los pasos anteriores para generar nuevos modelos. Si el modelo final no superara esta evaluacin el proceso se podra repetir desde el principio o, si el experto lo considera oportuno, a partir de cualquiera de los pasos anteriores. Esta retroalimentacin se podr repetir cuantas veces se considere necesario hasta obtener un modelo vlido. Una vez validado el modelo, si resulta ser aceptable (proporciona salidas adecuadas y/o con mrgenes de error admisibles) ste ya est listo para su explotacin. Los modelos obtenidos por tcnicas de minera de datos se aplican incorporndolos en los sistemas de anlisis de informacin de las organizaciones, e incluso, en los sistemas transaccionales. En este sentido cabe destacar los esfuerzos del Data Mining Group, que est estandarizando el lenguaje PMML (Predictive Model Markup Language), de manera que los modelos de minera de datos sean interoperables en distintas plataformas, con independencia del sistema con el que han sido construidos. Los principales fabricantes de sistemas de bases de

41

datos y programas de anlisis de la informacin hacen uso de este estndar. Tradicionalmente, las tcnicas de minera de datos se aplicaban sobre informacin contenida en almacenes de datos. De hecho, muchas grandes empresas e instituciones han creado y alimentan bases de datos especialmente diseadas para proyectos de minera de datos en las que centralizan informacin potencialmente til de todas sus reas de negocio. No obstante, actualmente est cobrando una importancia cada vez mayor la minera de datos desestructurados como informacin contenida en ficheros de texto, en Internet, etc. Protocolo de un proyecto de minera de datos Un proyecto de minera de datos tiene varias fases necesarias que son, esencialmente:

Comprensin del negocio y del problema que se quiere resolver. Determinacin, obtencin y limpieza de los datos necesarios. Creacin de modelos matemticos. Validacin, comunicacin, etc. de los resultados obtenidos. Integracin, si procede, de los resultados en un sistema transaccional o similar.

La relacin entre todas estas fases slo es lineal sobre el papel. En realidad, es mucho ms compleja y esconde toda una jerarqua de subfases. A travs de la experiencia acumulada en proyectos de minera de datos se han ido desarrollando metodologas que permiten gestionar esta complejidad de una manera ms o menos uniforme. Tcnicas de minera de datos Como ya se ha comentado, las tcnicas de la minera de datos provienen de la Inteligencia artificial y de la estadstica, dichas tcnicas, no son ms que algoritmos, ms o menos sofisticados que se aplican sobre un conjunto de datos para obtener unos resultados. Las tcnicas ms representativas son:

Redes neuronales.- Son un paradigma de aprendizaje y procesamiento automtico inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexin de neuronas en una red que colabora para producir un estmulo de salida. Algunos ejemplos de red neuronal son: o El Perceptrn.

42

o o

El Perceptrn multicapa. Los Mapas Autoorganizados, tambin conocidos como redes de Kohonen.

Regresin lineal.- Es la ms utilizada para formar relaciones entre datos. Rpida y eficaz pero insuficiente en espacios multidimensionales donde puedan relacionarse ms de 2 variables. rboles de decisin.- Un rbol de decisin es un modelo de prediccin utilizado en el mbito de la inteligencia artificial, dada una base de datos se construyen estos diagramas de construcciones lgicas, muy similares a los sistemas de prediccin basados en reglas, que sirven para representar y categorizar una serie de condiciones que suceden de forma sucesiva, para la resolucin de un problema. Ejemplos: o Algoritmo ID3. o Algoritmo C4.5. Modelos estadsticos.- Es una expresin simblica en forma de igualdad o ecuacin que se emplea en todos los diseos experimentales y en la regresin para indicar los diferentes factores que modifican la variable de respuesta. Agrupamiento o Clustering.- Es un procedimiento de agrupacin de una serie de vectores segn criterios habitualmente de distancia; se tratar de disponer los vectores de entrada de forma que estn ms cercanos aquellos que tengan caractersticas comunes. Ejemplos: o Algoritmo K-means. o Algoritmo K-medoids. Reglas de asociacin.- Se utilizan para descubrir hechos que ocurren en comn dentro de un determinado conjunto de datos.

Segn el objetivo del anlisis de los datos, los algoritmos utilizados se clasifican en supervisados y no supervisados (Weiss y Indurkhya, 1998):

Algoritmos supervisados (o predictivos): predicen un dato (o un conjunto de ellos) desconocido a priori, a partir de otros conocidos. Algoritmos no supervisados (o del descubrimiento del conocimiento): se descubren patrones y tendencias en los datos.

Ejemplos de uso de la minera de datos

43

Negocios La minera de datos puede contribuir significativamente en las aplicaciones de administracin empresarial basada en la relacin con el cliente. En lugar de contactar con el cliente de forma indiscriminada a travs de un centro de llamadas o enviando cartas, slo se contactar con aquellos que se perciba que tienen una mayor probabilidad de responder positivamente a una determinada oferta o promocin. Por lo general, las empresas que emplean minera de datos ven rpidamente el retorno de la inversin, pero tambin reconocen que el nmero de modelos predictivos desarrollados puede crecer muy rpidamente. En lugar de crear modelos para predecir qu clientes pueden cambiar, la empresa podra construir modelos separados para cada regin y/o para cada tipo de cliente. Tambin puede querer determinar qu clientes van a ser rentables durante una ventana de tiempo (una quincena, un mes, ...) y slo enviar las ofertas a las personas que es probable que sean rentables. Para mantener esta cantidad de modelos, es necesario gestionar las versiones de cada modelo y pasar a una minera de datos lo ms automatizada posible. Hbitos de compra en supermercados El ejemplo clsico de aplicacin de la minera de datos tiene que ver con la deteccin de hbitos de compra en supermercados. Un estudio muy citado detect que los viernes haba una cantidad inusualmente elevada de clientes que adquiran a la vez paales y cerveza. Se detect que se deba a que dicho da solan acudir al supermercado padres jvenes cuya perspectiva para el fin de semana consista en quedarse en casa cuidando de su hijo y viendo la televisin con una cerveza en la mano. El supermercado pudo incrementar sus ventas de cerveza colocndolas prximas a los paales para fomentar las ventas compulsivas. Minera de datos y otras disciplinas anlogas Suscita cierta polmica el definir las fronteras existentes entre la minera de datos y disciplinas anlogas, como pueden serlo la estadstica, la inteligencia artificial, etc. Hay quienes sostienen que la minera de datos no es sino estadstica envuelta en una jerga de negocios que la conviertan en un producto vendible. Otros, en cambio, encuentran en ella una serie de problemas y mtodos especficos que la hacen distinta de otras disciplinas.

44

El hecho es, que en la prctica la totalidad de los modelos y algoritmos de uso general en minera de datos redes neuronales, rboles de regresin y clasificacin, modelos logsticos, anlisis de componentes principales, etc. gozan de una tradicin relativamente larga en otros campos. De la estadstica Ciertamente, la minera de datos bebe de la estadstica, de la que toma las siguientes tcnicas:

Anlisis de varianza, mediante el cual se evala la existencia de diferencias significativas entre las medias de una o ms variables continuas en poblaciones distintos. Regresin: define la relacin entre una o ms variables y un conjunto de variables predictoras de las primeras. Prueba chi-cuadrado: por medio de la cual se realiza el contraste la hiptesis de dependencia entre variables. Anlisis de agrupamiento o clustering: permite la clasificacin de una poblacin de individuos caracterizados por mltiples atributos (binarios, cualitativos o cuantitativos) en un nmero determinado de grupos, con base en las semejanzas o diferencias de los individuos. Anlisis discriminante: permite la clasificacin de individuos en grupos que previamente se han establecido, permite encontrar la regla de clasificacin de los elementos de estos grupos, y por tanto una mejor identificacin de cules son las variables que definan la pertenencia al grupo. Series de tiempo: permite el estudio de la evolucin de una variable a travs del tiempo para poder realizar predicciones, a partir de ese conocimiento y bajo el supuesto de que no van a producirse cambios estructurales.

De la informtica De la informtica toma las siguientes tcnicas:

Algoritmos genticos: Son mtodos numricos de optimizacin, en los que aquella variable o variables que se pretenden optimizar junto con las variables de estudio constituyen un segmento de informacin. Aquellas configuraciones de las variables de anlisis que obtengan mejores valores para la variable de respuesta, correspondern a segmentos con mayor capacidad reproductiva. A travs de la reproduccin, los mejores segmentos perduran y su proporcin crece de generacin en generacin. Se puede adems introducir elementos aleatorios para la modificacin de las variables (mutaciones). Al cabo de cierto nmero de iteraciones, la poblacin estar constituida por buenas soluciones al problema de optimizacin, pues las malas soluciones han ido descartndose, iteracin tras iteracin.

45

Inteligencia Artificial: Mediante un sistema informtico que simula un sistema inteligente, se procede al anlisis de los datos disponibles. Entre los sistemas de Inteligencia Artificial se encuadraran los Sistemas Expertos y las Redes Neuronales. Sistemas Expertos: Son sistemas que han sido creados a partir de reglas prcticas extradas del conocimiento de expertos. Principalmente a base de inferencias o de causa-efecto. Sistemas Inteligentes: Son similares a los sistemas expertos, pero con mayor ventaja ante nuevas situaciones desconocidas para el experto. Redes neuronales: Genricamente, son mtodos de proceso numrico en paralelo, en el que las variables interactan mediante transformaciones lineales o no lineales, hasta obtener unas salidas. Estas salidas se contrastan con los que tenan que haber salido, basndose en unos datos de prueba, dando lugar a un proceso de retroalimentacin mediante el cual la red se reconfigura, hasta obtener un modelo adecuado.

Minera de datos basada en teora de la informacin Todas las herramientas tradicionales de minera de datos asumen que los datos que usarn para construir los modelos contienen la informacin necesaria para lograr el propsito buscado: obtener suficiente conocimiento que pueda ser aplicado al negocio (o problema) para obtener un beneficio (o solucin). El inconveniente es que esto no es necesariamente cierto. Adems, existe otro problema mayor an. Una vez construido el modelo no es posible conocer si el mismo ha capturado toda la informacin disponible en los datos. Por esta razn la prctica comn es realizar varios modelos con distintos parmetros para ver si alguno logra mejores resultados. Un enfoque relativamente nuevo al anlisis de datos soluciona estos problemas haciendo que la prctica de la minera de datos se parezca ms a una ciencia que a un arte. En 1948 Claude Shannon public un trabajo llamado Una Teora Matemtica de la Comunicacin. Posteriormente esta pas a llamarse Teora de la informacin y sent las bases de la comunicacin y la codificacin de la informacin. Shannon propuso una manera de medir la cantidad de informacin a ser expresada en bits. En 1999 Dorian Pyle public un libro llamado Data Preparation for Data Mining en el que propone una manera de usar la Teora de la Informacin para analizar datos. En este nuevo enfoque, una base de datos es un canal que transmite informacin. Por un lado est el mundo real que captura datos generados por el negocio. Por el

46

otro estn todas las situaciones y problemas importantes del negocio. Y la informacin fluye desde el mundo real y a travs de los datos, hasta la problemtica del negocio. Con esta perspectiva y usando la Teora de la informacin, es posible medir la cantidad de informacin disponible en los datos y qu porcin de la misma podr utilizarse para resolver la problemtica del negocio. Como un ejemplo prctico, podra encontrarse que los datos contienen un 65% de la informacin necesaria para predecir qu cliente rescindirn sus contratos. De esta manera, si el modelo final es capaz de hacer predicciones con un 60% de acierto, se puede asegurar que la herramienta que gener el modelo hizo un buen trabajo capturando la informacin disponible. Ahora, si el modelo hubiese tenido un porcentaje de aciertos de solo el 10%, por ejemplo, entonces intentar otros modelos o incluso con otras herramientas podra valer la pena. La capacidad de medir informacin contenida en los datos tiene otras ventajas importantes. Al analizar los datos desde esta nueva perspectiva se genera un mapa de informacin que hace innecesario la preparacin previa de los datos, una tarea absolutamente imprescindible si se desea buenos resultados, pero que lleva enorme cantidad de tiempo. Es posible seleccionar un grupo de variables ptimo que contenga la informacin necesaria para realizar un modelo de prediccin. Una vez que las variables son procesadas con el fin de crear el mapa de informacin y luego seleccionadas aquellas que aportan la mayor informacin, la eleccin de la herramienta que se usar para crear el modelo deja de tener importancia, ya que el mayor trabajo fue realizado en los pasos previos.

P 3.2 Datawarehouse e Inteligencia de Negocios En el contexto de la informtica, un almacn de datos (del ingls data warehouse) es una coleccin de datos orientada a un determinado mbito (empresa, organizacin, etc.), integrado, no voltil y variable en el tiempo, que ayuda a la toma de decisiones en la entidad en la que se utiliza. Se trata, sobre todo, de un expediente completo de una organizacin, ms all de la informacin transaccional y operacional, almacenado en una base de datos diseada para favorecer el anlisis y la divulgacin eficiente de datos (especialmente OLAP, procesamiento analtico en lnea). El almacenamiento de los datos no debe usarse con datos de uso actual. Los almacenes de datos contienen a menudo grandes cantidades de informacin que se subdividen a veces en unidades lgicas ms pequeas dependiendo del subsistema de la entidad del que procedan o para el que sean necesario.

47

Definiciones de almacn de datos Definicin de Bill Inmon Bill Inmon1 fue uno de los primeros autores en escribir sobre el tema de los almacenes de datos, define un data warehouse (almacn de datos) en trminos de las caractersticas del repositorio de datos:

Orientado a temas.- Los datos en la base de datos estn organizados de manera que todos los elementos de datos relativos al mismo evento u objeto del mundo real queden unidos entre s. Variante en el tiempo.- Los cambios producidos en los datos a lo largo del tiempo quedan registrados para que los informes que se puedan generar reflejen esas variaciones. No voltil.- La informacin no se modifica ni se elimina, una vez almacenado un dato, ste se convierte en informacin de slo lectura, y se mantiene para futuras consultas. Integrado.- La base de datos contiene los datos de todos los sistemas operacionales de la organizacin, y dichos datos deben ser consistentes.

Inmon defiende una metodologa descendente (top-down) a la hora de disear un almacn de datos, ya que de esta forma se considerarn mejor todos los datos corporativos. En esta metodologa los Data marts se crearn despus de haber terminado el data warehouse completo de la organizacin. Definicin de Ralph Kimball Ralph Kimball2 es otro conocido autor en el tema de los data warehouse, define un almacn de datos como: "una copia de las transacciones de datos especficamente estructurada para la consulta y el anlisis". Tambin fue Kimball quien determin que un data warehouse no era ms que: "la unin de todos los Data marts de una entidad". Defiende por tanto una metodologa ascendente (bottom-up) a la hora de disear un almacn de datos. Una definicin ms amplia de almacn de datos Las definiciones anteriores se centran en los datos en s mismos. Sin embargo, los medios para obtener y analizar esos datos, para extraerlos, transformarlos y cargarlos, as como las diferentes formas para realizar la gestin de datos son componentes esenciales de un almacn de datos. Muchas referencias a un almacn de datos utilizan esta definicin ms amplia. Por lo tanto, en esta definicin se incluyen herramientas para la inteligencia empresarial, herramientas para extraer, transformar y cargar datos en el almacn de datos, y herramientas para gestionar y recuperar los metadatos.

48

Funcin de un almacn de datos En un almacn de datos lo que se quiere es contener datos que son necesarios o tiles para una organizacin, es decir, que se utiliza como un repositorio de datos para posteriormente transformarlos en informacin til para el usuario. Un almacn de datos debe entregar la informacin correcta a la gente indicada en el momento ptimo y en el formato adecuado. El almacn de datos da respuesta a las necesidades de usuarios expertos, utilizando Sistemas de Soporte a Decisiones (DSS), Sistemas de informacin ejecutiva (EIS) o herramientas para hacer consultas o informes. Los usuarios finales pueden hacer fcilmente consultas sobre sus almacenes de datos sin tocar o afectar la operacin del sistema. En el funcionamiento de un almacn importantes las siguientes ideas:

de

los

datos

son

muy

Integracin de los datos provenientes de bases de datos distribuidas por las diferentes unidades de la organizacin y que con frecuencia tendrn diferentes estructuras (fuentes heterogneas). Se debe facilitar una descripcin global y un anlisis comprensivo de toda la organizacin en el almacn de datos. Separacin de los datos usados en operaciones diarias de los datos usados en el almacn de datos para los propsitos de divulgacin, de ayuda en la toma de decisiones, para el anlisis y para operaciones de control. Ambos tipos de datos no deben coincidir en la misma base de datos, ya que obedecen a objetivos muy distintos y podran entorpecerse entre s.

Peridicamente, se importan datos al almacn de datos de los distintos sistemas de planeamiento de recursos de la entidad (ERP) y de otros sistemas de software relacionados con el negocio para la transformacin posterior. Es prctica comn normalizar los datos antes de combinarlos en el almacn de datos mediante herramientas de extraccin, transformacin y carga (ETL). Estas herramientas leen los datos primarios (a menudo bases de datos OLTP de un negocio), realizan el proceso de transformacin al almacn de datos (filtracin, adaptacin, cambios de formato, etc.) y escriben en el almacn. Elementos que integran un almacn de datos Metadatos Uno de los componentes ms importantes de la arquitectura de un almacn de datos son los metadatos. Se define comnmente como "datos acerca de los datos", en el sentido de que se trata de datos que describen cul es la estructura de los datos que se van a almacenar y cmo se relacionan. El metadato documenta, entre otras cosas, qu tablas existen en una base de datos, qu columnas posee cada una de las tablas y qu tipo de datos se pueden almacenar. Los datos son de inters para

49

el usuario final, el metadato es de inters para los programas que tienen que manejar estos datos. Sin embargo, el rol que cumple el metadato en un entorno de almacn de datos es muy diferente al rol que cumple en los ambientes operacionales. En el mbito de los data warehouse el metadato juega un papel fundamental, su funcin consiste en recoger todas las definiciones de la organizacin y el concepto de los datos en el almacn de datos, debe contener toda la informacin concerniente a:

Tablas Columnas de tablas Relaciones entre tablas Jerarquas y Dimensiones de datos Entidades y Relaciones

Funciones ETL (extraccin, transformacin y carga) Los procesos de extraccin, transformacin y carga (ETL) son importantes ya que son la forma en que los datos se guardan en un almacn de datos (o en cualquier base de datos). Implican las siguientes operaciones:

Extraccin. Accin de obtener la informacin deseada a partir de los datos almacenados en fuentes externas. Transformacin. Cualquier operacin realizada sobre los datos para que puedan ser cargados en el data warehouse o se puedan migrar de ste a otra base de datos. Carga. Consiste en almacenar los datos en la base de datos final, por ejemplo el almacn de datos objetivo normal.

Middleware Middleware es un trmino genrico que se utiliza para referirse a todo tipo de software de conectividad que ofrece servicios u operaciones que hacen posible el funcionamiento de aplicaciones distribuidas sobre plataformas heterogneas. Estos servicios funcionan como una capa de abstraccin de software distribuida, que se sita entre las capas de aplicaciones y las capas inferiores (sistema operativo y red). El middleware puede verse como una capa API, que sirve como base a los programadores para que puedan desarrollar aplicaciones que trabajen en diferentes entornos sin preocuparse de los protocolos de red y comunicaciones en que se ejecutarn. De esta manera se ofrece una mejor relacin costo/rendimiento que pasa por el desarrollo de aplicaciones ms complejas, en menos tiempo. La funcin del middleware en el contexto de los data warehouse es la de asegurar la conectividad entre todos los componentes de la arquitectura de un almacn de datos Diseo de un almacn de datos

50

Para construir un Data Warehouse se necesitan herramientas para ayudar a la migracin y a la transformacin de los datos hacia el almacn. Una vez construido, se requieren medios para manejar grandes volmenes de informacin. Se disea su arquitectura dependiendo de la estructura interna de los datos del almacn y especialmente del tipo de consultas a realizar. Con este criterio los datos deben ser repartidos entre numerosos data marts. Para abordar un proyecto de data warehouse es necesario hacer un estudio de algunos temas generales de la organizacin o empresa, los cuales se describen a continuacin:

Situacin actual de partida.- Cualquier solucin propuesta de data warehouse debe estar muy orientada por las necesidades del negocio y debe ser compatible con la arquitectura tcnica existente y planeada de la compaa. Tipo y caractersticas del negocio.- Es indispensable tener el conocimiento exacto sobre el tipo de negocios de la organizacin y el soporte que representa la informacin dentro de todo su proceso de toma de decisiones. Entorno tcnico.- Se debe incluir tanto el aspecto del hardware (mainframes, servidores, redes,...) as como aplicaciones y herramientas. Se dar nfasis a los Sistemas de soporte a decisiones (DSS), si existen en la actualidad, cmo operan, etc. Expectativas de los usuarios.- Un proyecto de data warehouse no es nicamente un proyecto tecnolgico, es una forma de vida de las organizaciones y como tal, tiene que contar con el apoyo de todos los usuarios y su convencimiento sobre su bondad. Etapas de desarrollo.- Con el conocimiento previo, ya entra en el desarrollo de un modelo conceptual para construccin del data warehouse. se la

Prototipo.- Un prototipo es un esfuerzo designado a simular tanto como sea posible el producto final que ser entregado a los usuarios. Piloto.- El piloto de un data warehouse es el primero, o cada uno de los primeros resultados generados de forma iterativa que se harn para llegar a la construccin del producto final deseado. Prueba del concepto tecnolgico.- Es un paso opcional que se puede necesitar para determinar si la arquitectura especificada del data warehouse funcionar finalmente como se espera.

51

Almacn de datos espacial Almacn de datos espacial es una coleccin de datos orientados al tema, integrados, no voltiles, variantes en el tiempo y que aaden la geografa de los datos, para la toma de decisiones. Sin embargo la componente geogrfica no es un dato agregado, sino que es una dimensin o variable en la tecnologa de la informacin, de tal manera que permita modelar todo el negocio como un ente holstico, y que a travs de herramientas de procesamiento analtico en lnea (OLAP), no solamente se posea un alto desempeo en consultas multidimensionales sino que adicionalmente se puedan visualizar espacialmente los resultados. El almacn de datos espacial forma el corazn de un extensivo Sistema de Informacin Geogrfica para la toma de decisiones, ste al igual que los SIG, permiten que un gran nmero de usuarios accedan a informacin integrada, a diferencia de un simple almacn de datos que est orientado al tema, el Data warehouse espacial adicionalmente es Geo-Relacional, es decir que en estructuras relacionales combina e integra los datos espaciales con los datos descriptivos. Actualmente es geo-objetos, esto es que los elementos geogrficos se manifiestan como objetos con todas sus propiedades y comportamientos, y que adicionalmente estn almacenados en una nica base de datos Objeto-Relacional. Los Data Warehouse Espaciales son aplicaciones basadas en un alto desempeo de las bases de datos, que utilizan arquitecturas Cliente-Servidor para integrar diversos datos en tiempo real. Mientras los almacenes de datos trabajan con muchos tipos y dimensiones de datos, muchos de los cuales no referencian ubicacin espacial, a pesar de poseerla intrnsecamente, y sabiendo que un 80% de los datos poseen representacin y ubicacin en el espacio, en los Data warehouse espaciales, la variable geogrfica desempea un papel importante en la base de informacin para la construccin del anlisis, y de igual manera que para un Data warehouse, la variable tiempo es imprescindible en los anlisis, para los Data warehouse espaciales la variable geogrfica debe ser almacenada directamente en ella. Ventajas e inconvenientes de los almacenes de datos Ventajas Hay muchas ventajas por las que es recomendable usar un almacn de datos. Algunas de ellas son:

Los almacenes de datos hacen ms fcil el acceso a una gran variedad de datos a los usuarios finales Facilitan el funcionamiento de las aplicaciones de los sistemas de apoyo a la decisin tales como informes de tendencia', por ejemplo: obtener los tems con la mayora de las ventas en un rea en particular dentro de los ltimos dos

52

aos; informes de excepcin, informes que muestran los resultados reales frente a los objetivos planteados a priori. Los almacenes de datos pueden trabajar en conjunto y, por lo tanto, aumentar el valor operacional de las aplicaciones empresariales, en especial la gestin de relaciones con clientes.

Inconvenientes Utilizar almacenes de datos tambin inconvenientes, algunos de ellos son:

plantea

algunos

A lo largo de su vida los almacenes de datos pueden suponer altos costos. El almacn de datos no suele ser esttico. Los costos de mantenimiento son elevados. Los almacenes de datos se pueden quedar obsoletos relativamente pronto. A veces, ante una peticin de informacin estos devuelven una informacin subptima, que tambin supone una prdida para la organizacin. A menudo existe una delgada lnea entre los almacenes de datos y los sistemas operacionales. Hay que determinar qu funcionalidades de estos se pueden aprovechar y cules se deben implementar en el data warehouse, resultara costoso implementar operaciones no necesarias o dejar de implementar alguna que s vaya a necesitarse.

Inteligencia empresarial

Se denomina inteligencia empresarial, inteligencia negocios o BI (del ingls business intelligence) conjunto de estrategias y herramientas enfocadas a administracin y creacin de conocimiento mediante anlisis de datos existentes en una organizacin empresa.

de al la el o

Es posible diferenciar datos, informaciones y conocimientos, conceptos en los que se centra la inteligencia empresarial, ya que como sabemos un dato es algo vago, por ejemplo "10 000", la informacin es algo ms preciso, por ejemplo "Las ventas del mes de mayo fueron de 10 000", y el conocimiento se obtiene mediante el anlisis de la informacin, por ejemplo "Las ventas del mes de mayo fueron 10 000. Mayo es el mes ms bajo en ventas". Aqu es donde BI entra en juego, ya que al obtener conocimiento del negocio una vez capturada la informacin de todas las reas en la empresa es posible establecer estrategias y cuales son sus fortalezas y debilidades.

53

Caractersticas
Este conjunto de herramientas y metodologas tienen en comn las siguientes caractersticas:

Accesibilidad a la informacin. Los datos son la fuente principal de este concepto. Lo primero que deben garantizar este tipo de herramientas y tcnicas ser el acceso de los usuarios a los datos con independencia de la procedencia de estos. Apoyo en la toma de decisiones. Se busca ir ms all en la presentacin de la informacin, de manera que los usuarios tengan acceso a herramientas de anlisis que les permitan seleccionar y manipular slo aquellos datos que les interesen. Orientacin al usuario final. Se busca independencia entre los conocimientos tcnicos de los usuarios y su capacidad para utilizar estas herramientas.

Niveles de realizacin de BI
De acuerdo a su nivel de complejidad se pueden clasificar las soluciones de Business Intelligence en: Reportes
Reportes predefinidos Reportes a la medida Consultas ("Query") / Cubos OLAP (On-Line Analytic Processing). Alertas

Anlisis
Anlisis estadstico Pronsticos ("Forecasting") Modelado Predictivo o Minera de datos ("Data Mining") Optimizacin

Inteligencia de Empresas
La Inteligencia de Empresas es el concepto ms amplio del uso de la inteligencia en las organizaciones. Desde distintas perspectivas, la inteligencia de empresas ha ido emergiendo a partir de la contribucin de muchas reas del conocimiento: market intelligence (inteligencia de mercados), competitive intelligence (Inteligencia Competitiva), business intelligence (inteligencia empresarial).

54

Este concepto ha sido muy utilizado en el mundo de la tecnologa con distintos significados como inteligencia de negocios, strategic foresight (Inteligencia Estratgica), corporate intelligence (Inteligencia Corporativa), vigilancia tecnolgica, prospectiva tecnolgica, etc.

Inteligencia de Mercados internacionales "La estrategia"


La estrategia debe ser vista como un proceso creativo, buscar nuevas formas de hacer las cosas, de generar valor en el mundo de continuo cambio, y ser efectivo en el corto plazo por lo cual se necesita: Inteligencia para crear y compartir el conocimiento. La habilidad para integrar y administrar ste conocimiento. La imaginacin para visualizar acciones alternativas a las usuales y analizar sus consecuencias. La pericia necesidades deseable.1 para manejar los recursos y atender las actuales sin dejar de construir el futuro

As como en mercadotecnia se tienen las 4 ps tambin en inteligencia de mercados se tienen 4 Ps


PLAN:curso de accin conscientemente determinado POSICIN: un medio para ubicar a la organizacin (nicho, rentas, dominio) PATRN: es un modelo que implica consistencia PERSPECTIVA: una manera particular de percibir el mundo (concepto, cultura, ideologa)

Con la globalizacin, la competencia se convierte en hipercompetencia para lo cual hay que reaccionar con rapidz, sorpresa, anticipacin, tambin hay que cambiar las reglas del juego y hacer productos innovadores integrales para demostrar superioridad ante la competencia.3
Programa 4: Computacin Grafica y Procesamiento de Imagen

55

P4.1 Geometra Computacional Cilindro renderizado mediante un programa de ordenador.

La geometra computacional es una rama de las ciencias de la computacin dedicada al estudio de algoritmos que pueden ser expresados en trminos de la geometra. Algunos de los problemas puramente geomtricos surgen del estudio de los algoritmos de geometra computacional, y este tipo de problemas tambin se considera parte de la geometra computacional. Es una disciplina constructiva, de carcter abstracto, que utiliza tcnicas de la geometra clsica, la topologa, la teora de grafos, la teora de conjuntos y el lgebra lineal. La geometra computacional es independiente de la tecnologa de las mquinas de computacin. El principal impulso para el desarrollo de la geometra computacional como disciplina se lo dio el avance la computacin grfica y el diseo asistido por ordenador (CAD/CAM), pero muchos problemas en la geometra computacional son clsicos en la naturaleza. Otras aplicaciones importantes de la geometra computacional incluyen la robtica (planificacin de movimientos y problemas de visualizacin), los sistemas de informacin geogrfica (SIG) (localizacin y bsqueda geomtrica, planificacin de rutas), diseo de circuitos integrados (diseo geomtrico y verificin de CI), ingeniera asistida por computadora (CAE) (programacin de mquinas comtroladas numricamente). Las principales ramas de la geometra computacional son:

Geometra combinatoria computacional, tambin llamada geometra algortmica, que trata de objetos geomtricos como entidades discretas. Un libro sobre el tema por Preparata y Shamos fecha la primera utilizacin del trmino "geometra computacional" en este sentido en 1975.1 La geometra computacional numrica, tambin llamada geometra mquina, diseo geomtrico asistido por computador (CAGD), o modelado geomtrico, que trata principalmente con la representacin de objetos del mundo real en la forma adecuada para los clculos de ordenador en los sistemas CAD / CAM. Esta rama puede ser visto como un desarrollo de la

56

geometra descriptiva y es a menudo considerado como una rama de los grficos por ordenador o CAD. El trmino "geometra computacional", en este sentido ha estado en uso desde 1971. P4.2 Procedimiento de Imagen Procesamiento digital de imgenes El procesamiento digital de imgenes es el conjunto de tcnicas que se aplican a las imgenes digitales con el objetivo de mejorar la calidad o facilitar la bsqueda de informacin. Proceso de filtrado Es el conjunto de tcnicas englobadas dentro del preprocesamiento de imgenes cuyo objetivo fundamental es obtener, a partir de una imagen origen, otra final cuyo resultado sea ms adecuado para una aplicacin especfica mejorando ciertas caractersticas de la misma que posibilite efectuar operaciones del procesado sobre ella. Los principales objetivos que se persiguen con la aplicacin de filtros son:

Suavizar la imagen: reducir la cantidad de variaciones de intensidad entre pxeles vecinos. Eliminar ruido: eliminar aquellos pxeles cuyo nivel de intensidad es muy diferente al de sus vecinos y cuyo origen puede estar tanto en el proceso de adquisicin de la imagen como en el de transmisin. Realzar bordes: destacar los bordes que se localizan en una imagen. Detectar bordes: detectar los pxeles donde se produce un cambio brusco en la funcin intensidad.

Por tanto, se consideran los filtros como operaciones que se aplican a los pxeles de una imagen digital para optimizarla, enfatizar cierta informacin o conseguir un efecto especial en ella. El proceso de filtrado puede llevarse a cabo sobre los dominios de frecuencia y/o espacio. Filtrado en el dominio de la frecuencia

Los filtros de frecuencia procesan una imagen trabajando sobre el dominio de la frecuencia en la Transformada de Fourier de la imagen. Para ello, sta se modifica siguiendo el Teorema de la Convolucin correspondiente:

57

1. se aplica la Transformada de Fourier, 2. se multiplica posteriormente por la funcin del filtro que ha sido escogido, 3. para concluir re-transformndola al dominio espacial empleando la Transformada Inversa de Fourier Teorema de la Convolucin (frecuencia): F(u,v): transformada de Fourier de la imagen original H(u,v): filtro atenuador de frecuencias Como la multiplicacin en el espacio de Fourier es idntica a la convolucin en el dominio espacial, todos los filtros podran, en teora, ser implementados como un filtro espacial.

Etapas del frecuencia. Tipos

procesamiento

de

imgenes

en

el

dominio

de

la

Filtros en el dominio de la frecuencia y espacio Existen bsicamente tres tipos distintos de filtros que pueden aplicarse:

58

Filtro paso bajo: atena las frecuencias altas y mantiene sin variaciones las bajas. El resultado en el dominio espacial es equivalente al de un filtro de suavizado, donde las altas frecuencias que son filtradas se corresponden con los cambios fuertes de intensidad. Consigue reducir el ruido suavizando las transiciones existentes. Filtro paso alto: atena las frecuencias bajas manteniendo invariables las frecuencias altas. Puesto que las altas frecuencias corresponden en las imgenes a cambios bruscos de densidad, este tipo de filtros es usado, porque entre otras ventajas, ofrece mejoras en la deteccin de bordes en el dominio espacial, ya que estos contienen gran cantidad de dichas frecuencias. Refuerza los contrastes que se encuentran en la imagen. Filtro paso banda: atena frecuencias muy altas o muy bajas manteniendo una banda de rango medio.

Ventajas

Mtodo simple y sencillo de implementar. Fcil asociacin del concepto de frecuencia con ciertas caractersticas de la imagen; cambios de tonalidad suaves implican frecuencias bajas y cambios bruscos frecuencias altas. Proporciona flexibilidad en el diseo de soluciones de filtrado. Rapidez en el filtrado al utilizar el Teorema de la Convolucin.

Desventajas

Se necesitan conocimientos en varios campos para desarrollar una aplicacin para el procesamiento de imgenes. El ruido no puede ser eliminado completamente.

Filtrado en el dominio del espacio Las operaciones de filtrado se llevan a cabo directamente sobre los pxeles de la imagen. En este proceso se relaciona, para todos y cada uno de los puntos de la imagen, un conjunto de pxeles prximos al pxel objetivo con la finalidad de obtener una informacin til, dependiente del tipo de filtro aplicado, que permita actuar sobre el pxel concreto en que se est llevando a cabo el proceso de filtrado para, de este modo, obtener mejoras sobre la imagen y/o datos que podran ser utilizados en futuras acciones o procesos de trabajo sobre ella. Los filtros en el dominio del espacio pueden clasificarse en:

59

Filtros lineales (filtros basados en kernels o mscaras de convolucin). Filtros no lineales.

El concepto de kernel se entiende como una matriz de coeficientes donde el entorno del punto (x,y) que se considera en la imagen para obtener g(x,y) est determinado por el tamao y forma del kernel seleccionado. Aunque la forma y tamao de esta matriz es variable y queda a eleccin de cada usuario, es comn el uso de kernels cuadrados nxn. Dependiendo de la implementacin, en los lmites de la imagen se aplica un tratamiento especial (se asume un marco exterior de ceros o se repiten los valores del borde) o no se aplica ninguno. Es por ello, que el tipo de filtrado queda establecido por el contenido de dicho kernel utilizado.

Aplicacin de un kernel Para realizar un filtrado en el dominio del espacio se realiza una convolucin (barrido) del kernel sobre la imagen. Para ello se sigue el Teorema de Convolucin en el espacio: g(x,y) = h(x,y) * f(x,y)

60

1. Cada pxel de la nueva imagen se obtiene mediante el sumatorio de la multiplicacin del kernel por los pxeles contiguos: g(x,y) = f(i,j) w(i,j) 2. Generalmente se divide sobre cierto valor constante para normalizar que suele obtenerse de la suma de los valores del kernel empleado. Tipos

Ejemplo de filtrado promedio con filtro 5x5

Filtro paso bajo (suavizamiento): utilizados para eliminar ruido o detalles pequeos de poco inters puesto que slo afecta a zonas con muchos cambios. La frecuencia de corte se determina por el tamao del kernel y sus coeficientes. Se emplean diversos kernels: o Promedio: promedio de pxeles vecinos (kernel de unos). o Paso bajo en frecuencia. o Media: reemplaza cada pxel por el valor medio de sus contiguos. o Mediana: sustituye por el valor de la mediana de los pxeles vecinos (normalmente se comporta mejor que el de promedio). o Gaussiano: aproximacin a la distribucin gaussiana. Filtro paso alto (atenuamiento): intensifica los detalles, bordes y cambios de alta frecuencia, mientras que atena las zonas de tonalidad uniforme. Esto permite una mejor identificacin posterior de los objetos que se encuentren en la imagen, puesto que el brillo se hace mayor en las zonas con frecuencias ms altas, al mismo tiempo que se oscurecen las zonas de frecuencias bajas. Es comn la aparicin de ruido tras el proceso. Realce de bordes por desplazamiento y diferencia: sustrae de la imagen original una copia desplazada de la misma. As, es posible localizar y hacer resaltar los bordes existentes y que se quieran obtener segn el modelo de kernel aplicado: o Horizontal.

61

o o

Vertical. Horizontal/Vertical (diagonal).

Imagen original y resulta tras filtros Laplaciano y Sobel

Realce de bordes mediante Laplace: este tipo de filtros realza los bordes en todas direcciones (los resultados que se obtienen pueden considerarse como una suma de los obtenidos tras aplicar todos los modelos del tipo anterior). En esta ocasin se trabaja con la segunda derivada, que permite obtener unos mejores resultados, a pesar del aumento del ruido que se produce en la imagen. Resalte de bordes con gradiente direccional: empleado para destacar y resaltar con mayor precisin los bordes que se localizan en una direccin determinada. Trabaja con los cambios de intensidad existentes entre pxeles contiguos. Deteccin de bordes y filtros de contorno (Prewitt y Sobel): al igual que los anteriores, se centra en las diferencias de intensidad que se dan pixel a pixel. Son utilizados para obtener los contornos de objetos y de este modo clasificar las formas existentes dentro de una imagen. Este tipo de filtros requieren un menor coste computacional.

Programa 5: Ingeniera De Software Lneas P5.1 Tecnologa Open Source y Software libre Tecnologa Open Source Cdigo abierto es el trmino con el que se conoce al software distribuido y desarrollado libremente. El cdigo abierto tiene un punto de vista ms orientado a los beneficios prcticos de compartir el cdigo que a las cuestiones ticas y morales las cuales destacan en el llamado software libre.

62

Historia Su uso naci por primera vez en 1998 de la mano de algunos usuarios de la comunidad del software libre, tratando de usarlo como reemplazo al ambiguo nombre original en ingls del software libre (free software). Free en ingls significa dos cosas distintas dependiendo del contexto: gratuidad y libertad. Lo cual implica, para el caso que nos ocupa, "software que podemos leer, modificar y redistribuir gratuitamente" (software gratuito) y, adems, software libre, segn la acepcin espaola de libertad. El trmino para algunos no result apropiado como reemplazo para el ya tradicional free software, pues eliminaba la idea de libertad, confundida usualmente con la simple gratuidad. No obstante, el trmino cdigo abierto contina siendo ambivalente, puesto que se usa en la actualidad por parte de programadores que no ofrecen software libre pero, en cambio, s ofrecen el cdigo fuente de los programas para su revisin o modificacin previamente autorizada por parte de sus pares acadmicos. Dada la ausencia de tal ambigedad en la lengua espaola, el trmino software libre es adecuado para referirse a programas que se ofrecen con total libertad de modificacin, uso y distribucin bajo la regla implcita de no modificar dichas libertades hacia el futuro. De hecho en ingls tambin se usa el trmino "libre software" para evitar ambigedades semnticas. Desde el punto de vista de una "traduccin estrictamente literal", el significado textual de "cdigo abierto" es que "se puede examinar el cdigo fuente", por lo que puede ser interpretado como un trmino ms dbil y flexible que el del software libre. Sin embargo, ambos movimientos reconocen el mismo conjunto de licencias y mantienen principios equivalentes. Sin embargo, hay que diferenciar los programas de cdigo abierto, que dan a los usuarios la libertad de mejorarlos, de los programas que simplemente tienen el cdigo fuente disponible, previa restricciones sobre su uso o modificacin. En la actualidad el cdigo abierto se utiliza para definir un movimiento nuevo de software (la Iniciativa Open Source), diferente al movimiento del software libre, incompatible con este ltimo desde el punto de vista filosfico, y completamente equivalente desde el punto de vista prctico, de hecho, ambos movimientos trabajan juntos en el desarrollo prctico de proyectos. La idea bajo el concepto de cdigo abierto es sencilla: cuando los programadores (en Internet) pueden leer, modificar y redistribuir el cdigo fuente de un programa, ste evoluciona, se desarrolla y mejora. Los usuarios lo adaptan a sus necesidades, corrigen sus errores a una velocidad impresionante, mayor a la aplicada en el

63

desarrollo de software convencional o cerrado, resultado la produccin de un mejor software. Cronologa de una idea

dando

como

27 de septiembre de 1983: Richard Stallman inicia el proyecto GNU. 25 de agosto de 1991: Linus Torvalds publica un mensaje en el grupo de noticias USENET comp.os.minix acerca del nuevo kernel de tipo Unix (Linux) que ha estado desarrollando. 22 de enero de 1998: Netscape anuncia que liberar el cdigo fuente de Navigator. 3 de febrero de 1998: en la reunin de Palo Alto se acua el trmino "open source" y durante la semana siguiente Bruce Perens y Eric S. Raymond lanzan opensource.org. 31 de marzo de 1998: el cdigo de Navigator ya est disponible: en unas horas, mejoras del programa invaden la red. 7 de mayo de 1998: Corel Corporation anuncia Netwinder, un ordenador econmico que corre bajo GNU/Linux. 11 de mayo de 1998: Corel anuncia sus planes de adaptar WordPerfect y el resto de sus programas de ofimtica a GNU/Linux. 28 de mayo de 1998: Sun Microsystems y Adaptec se unen a Linux International, las primeras grandes empresas vendedoras de equipos y sistemas operativos en hacerlo. 13-17 de julio de 1998: Oracle e Informix anuncian que conectarn sus bases de datos a GNU/Linux. 10 de agosto de 1998: Sun Microsystems ofrece Solaris a usuarios individuales e instituciones educativas o sin nimo de lucro. 1 de noviembre de 1998: se publican los Halloween Documents: planes de Microsoft contra GNU/Linux y otros proyectos open source. 16 de diciembre de 1998: IDG anuncia que la cuota de mercado del GNU/Linux se increment un 212% en 1998. 1-5 de marzo de 1999: LinuxWorld Conference and Expo: primera exposicin sobre GNU/Linux. HP, IBM, SAP inician el comienzo del apoyo de las firmas comerciales. 15 de marzo de 1999: Apple lanza Darwin bajo licencia open source. 4 de junio de 1999: Microsoft afirma que Linux vende ms que Windows 98 en las grandes superficies.1

Entre 1998 y 2000 se observ un gran crecimiento en la popularidad de GNU/Linux y de la formacin de muchas empresas "pro software de cdigo abierto". El movimiento tambin captur la atencin de la principal industria del software, llevando al software de cdigo abierto las ofertas de compaas de software consolidadas como Sun Microsystems con StarOffice e IBM con OpenAFS.

64

Movimiento del "cdigo abierto"

Mapa conceptual del software libre y de cdigo abierto. La idea del cdigo abierto se centra en la premisa de que al compartir el cdigo, el programa resultante tiende a ser de calidad superior al software propietario, es una visin tcnica. Por otro lado, el software libre tiene tendencias filosficas e incluso morales: el software propietario, al no poder compartirse, es "antitico" dado que prohibir compartir entre seres humanos va en contra del sentido comn. Al igual que el software libre, el cdigo abierto u open source tiene una serie de requisitos2 necesarios para que un programa pueda considerarse dentro de este movimiento, stos son:

Libre redistribucin: el software debe poder ser regalado o vendido libremente. Cdigo fuente: el cdigo fuente debe estar incluido u obtenerse libremente.

65

Trabajos derivados: la redistribucin de modificaciones debe estar permitida. Integridad del cdigo fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas slo como parches. Sin discriminacin de personas o grupos: nadie puede dejarse fuera. Sin discriminacin de reas de iniciativa: los usuarios comerciales no pueden ser excluidos. Distribucin de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa La licencia no debe ser especfica de un producto: el programa no puede licenciarse solo como parte de una distribucin mayor. La licencia no debe restringir otro software: la licencia no puede obligar a que algn otro software que sea distribuido con el software abierto deba tambin ser de cdigo abierto. La licencia debe ser tecnolgicamente neutral: no debe requerirse la aceptacin de la licencia por medio de un acceso por clic de ratn o de otra forma especfica del medio de soporte del software.

Este declogo es compatible con las cuatro libertades del software libre.

Software Libre El software libre (en ingls free software, aunque esta denominacin tambin se confunde a veces con "gratis" por la ambigedad del trmino "free" en el idioma ingls, por lo que tambin se usa "libre software" y "logical libre") es la denominacin del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, modificado, y redistribuido libremente. Segn la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, modificar el software y distribuirlo modificado. El software libre suele estar disponible gratuitamente, o al precio de costo de la distribucin a travs de otros medios; sin embargo no es obligatorio que sea as, por lo tanto no hay que asociar software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su carcter de libre, puede ser distribuido comercialmente ("software comercial"). Anlogamente, el "software gratis" o "gratuito" incluye en ocasiones el cdigo fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificacin y redistribucin de dichas versiones modificadas del programa.

66

Tampoco debe confundirse software libre con "software de dominio pblico". ste ltimo es aquel software que no requiere de licencia, pues sus derechos de explotacin son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de l, siempre con fines legales y consignando su autora original. Este software sera aquel cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de este, habitualmente 70 aos. Si un autor condiciona su uso bajo una licencia, por muy dbil que sea, ya no es del dominio pblico. Libertades del software libre Artculo principal: Definicin de Software Libre De acuerdo con tal definicin, un garantiza las siguientes libertades:2 Libertad Descripcin 0 1 la libertad de usar el programa, con cualquier propsito. la libertad de estudiar cmo funciona el modificarlo, adaptndolo a tus necesidades. programa y software es "libre" cuando

la libertad de distribuir copias del programa, con lo cual puedes ayudar a tu prjimo. la libertad de mejorar el programa y hacer pblicas esas mejoras a los dems, de modo que toda la comunidad se beneficie.

Las libertades 1 y 3 requieren acceso al cdigo fuente porque estudiar y modificar software sin su cdigo fuente es muy poco viable. Ciertos tericos usan este cuarto punto (libertad 3) para justificar parcialmente las limitaciones impuestas por la licencia GNU GPL frente a otras licencias de software libre (ver Licencias GPL). Sin embargo el sentido original es ms libre, abierto y menos restrictivo que el que le otorga la propia situacin de incompatibilidad, que podra ser resuelta en la prxima versin 3.0 de la licencia GNU GPL, causa en estos momentos graves perjuicios a la comunidad de programadores de software libre, que muchas veces no pueden reutilizar o mezclar cdigos de dos licencias distintas, pese a que las libertades tericamente lo deberan permitir. En el sitio web oficial de Open Source Initiative est la lista completa de las licencias de software libre actualmente aprobadas y tenidas como tales.3

67

El trmino software no libre se emplea para referirse al software distribuido bajo una licencia de software ms restrictiva que no garantiza estas cuatro libertades. Las leyes de la propiedad intelectual reservan la mayora de los derechos de modificacin, duplicacin y redistribucin para el dueo del copyright; el software dispuesto bajo una licencia de software libre rescinde especficamente la mayora de estos derechos reservados. La definicin de software libre no contempla el asunto del precio; un eslogan frecuentemente usado es "libre como en libertad, no como en cerveza gratis" o en ingls "Free as in freedom, not as in free beer" (aludiendo a la ambigedad del trmino ingls "free"), y es habitual ver a la venta CD de software libre como distribuciones Linux. Sin embargo, en esta situacin, el comprador del CD tiene el derecho de copiarlo y redistribuirlo. El software gratis puede incluir restricciones que no se adaptan a la definicin de software libre por ejemplo, puede no incluir el cdigo fuente, puede prohibir explcitamente a los distribuidores recibir una compensacin a cambio, etc. Para evitar la confusin, algunas personas utilizan los trminos "libre" (software libre) y "gratis" (software gratis) para evitar la ambigedad de la palabra inglesa "free". Sin embargo, estos trminos alternativos son usados nicamente dentro del movimiento del software libre, aunque estn extendindose lentamente hacia el resto del mundo. Otros defienden el uso del trmino open source software (software de cdigo abierto). La principal diferencia entre los trminos "open source" y "free software" es que ste ltimo tiene en cuenta los aspectos ticos y filosficos de la libertad, mientras que el "open source" se basa nicamente en los aspectos tcnicos. En un intento por unir los mencionados trminos que se refieren a conceptos semejantes, se est extendiendo el uso de la palabra "FLOSS" con el significado de free/libre and open source software e, indirectamente, tambin a la comunidad que lo produce y apoya. Tipos de licencias Una licencia es aquella autorizacin formal con carcter contractual que un autor de un software da a un interesado para ejercer "actos de explotacin legales". Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario. Desde el punto de vista del software libre, existen distintas variantes del concepto o grupos de licencias: Licencias GPL Artculo principal: Licencias GPL Una de las ms utilizadas es la Licencia Pblica General de GNU (GNU GPL). El autor conserva los derechos de autor (copyright), y permite la redistribucin y modificacin bajo trminos diseados para asegurarse de que todas las versiones modificadas del software permanecen bajo los trminos ms restrictivos de la

68

propia GNU GPL. Esto hace que sea imposible crear un producto con partes no licenciadas GPL: el conjunto tiene que ser GPL. Es decir, la licencia GNU GPL posibilita la modificacin y redistribucin del software, pero nicamente bajo esa misma licencia. Y aade que si se reutiliza en un mismo programa cdigo "A" licenciado bajo licencia GNU GPL y cdigo "B" licenciado bajo otro tipo de licencia libre, el cdigo final "C", independientemente de la cantidad y calidad de cada uno de los cdigos "A" y "B", debe estar bajo la licencia GNU GPL. En la prctica esto hace que las licencias de software libre se dividan en dos grandes grupos, aquellas que pueden ser mezcladas con cdigo licenciado bajo GNU GPL (y que inevitablemente desaparecern en el proceso, al ser el cdigo resultante licenciado bajo GNU GPL) y las que no lo permiten al incluir mayores u otros requisitos que no contemplan ni admiten la GNU GPL y que por lo tanto no pueden ser enlazadas ni mezcladas con cdigo gobernado por la licencia GNU GPL. En el sitio web oficial de GNU hay una lista de licencias que cumplen las condiciones impuestas por la GNU GPL y otras que no.4 Aproximadamente el 60% del software licenciado como software libre emplea una licencia GPL. Licencias AGPL La Licencia Pblica General de Affero (en ingls Affero General Public License, tambin Affero GPL o AGPL) es una licencia copyleft derivada de la Licencia Pblica General de GNU diseada especficamente para asegurar la cooperacin con la comunidad en el caso de software que corra en servidores de red. La Affero GPL es ntegramente una GNU GPL con una clusula nueva que aade la obligacin de distribuir el software si ste se ejecuta para ofrecer servicios a travs de una red de ordenadores. La Free Software Foundation recomienda que el uso de la GNU AGPLv3 sea considerado para cualquier software que usualmente corra sobre una red.5 Licencias estilo BSD Llamadas as porque se utilizan en gran cantidad de software distribuido junto a los sistemas operativos BSD. El autor, bajo tales licencias, mantiene la proteccin de copyright nicamente para la renuncia de garanta y para requerir la adecuada atribucin de la autora en trabajos derivados, pero permite la libre redistribucin y modificacin, incluso si dichos trabajos tienen propietario. Son muy permisivas, tanto que son fcilmente absorbidas al ser mezcladas con la licencia GNU GPL con quienes son compatibles. Puede argumentarse que esta licencia asegura verdadero software libre, en el sentido que el usuario tiene libertad ilimitada con respecto al software, y que puede decidir incluso redistribuirlo como no libre. Otras opiniones estn

69

orientadas a destacar que este tipo de licencia no contribuye al desarrollo de ms software libre (normalmente utilizando la siguiente analoga: "una licencia BSD es ms libre que una GPL si y slo si se opina tambin que un pas que permita la esclavitud es ms libre que otro que no la permite"). Licencias estilo MPL y derivadas Esta licencia es de Software Libre y tiene un gran valor porque fue el instrumento que emple Netscape Communications Corp. para liberar su Netscape Communicator 4.0 y empezar ese proyecto tan importante para el mundo del Software Libre: Mozilla. Se utilizan en gran cantidad de productos de software libre de uso cotidiano en todo tipo de sistemas operativos. La MPL es Software Libre y promueve eficazmente la colaboracin evitando el efecto "viral" de la GPL (si usas cdigo licenciado GPL, tu desarrollo final tiene que estar licenciado GPL). Desde un punto de vista del desarrollador la GPL presenta un inconveniente en este punto, y lamentablemente mucha gente se cierra en banda ante el uso de dicho cdigo. No obstante la MPL no es tan excesivamente permisiva como las licencias tipo BSD. Estas licencias son denominadas de copyleft dbil. La NPL (luego la MPL) fue la primera licencia nueva despus de muchos aos, que se encargaba de algunos puntos que no fueron tenidos en cuenta por las licencias BSD y GNU. En el espectro de las licencias de software libre se la puede considerar adyacente a la licencia estilo BSD, pero perfeccionada. Comparacin con el software de cdigo abierto Aunque en la prctica el software de cdigo abierto y el software libre comparten muchas de sus licencias, la Free Software Foundation opina que el movimiento del software de cdigo abierto es filosficamente diferente del movimiento del software libre. Apareci en 1998 con un grupo de personas, entre los que cabe destacar a Eric S. Raymond y Bruce Perens, que formaron la Open Source Initiative (OSI). Ellos buscaban darle mayor relevancia a los beneficios prcticos del compartir el cdigo fuente, e interesar a las principales casas de software y otras empresas de la industria de la alta tecnologa en el concepto. Por otro lado, la Free Software Foundation y Richard Stallman prefieren plantear el asunto en trminos ticos empleando el trmino "software libre". Los defensores del trmino "cdigo abierto", en ingls open source, afirman que ste evita la ambigedad del trmino en ese idioma que es free en free software. El trmino "cdigo abierto" fue acuado por Christine Peterson del think tank Foresight Institute, y se registr para actuar como marca registrada el trmino en ingls para los productos de software libre. Mucha gente reconoce el beneficio cualitativo del proceso de desarrollo de software cuando los desarrolladores pueden usar, modificar y redistribuir el cdigo fuente de un programa. (Vase tambin La Catedral y el Bazar). El movimiento del software libre

70

hace especial nfasis en los aspectos morales o ticos del software, viendo la excelencia tcnica como un producto secundario deseable de su estndar tico. El movimiento de cdigo abierto ve la excelencia tcnica como el objetivo prioritario, siendo la comparticin del cdigo fuente un medio para dicho fin. Por dicho motivo, la FSF se distancia tanto del movimiento de cdigo abierto como del trmino "Cdigo Abierto" (en ingls Open Source). Puesto que la OSI slo aprueba las licencias que se ajustan a la Open Source Definition (definicin de cdigo abierto), la mayora de la gente lo interpreta como un esquema de distribucin, e intercambia libremente "cdigo abierto" con "software libre". An cuando existen importantes diferencias filosficas entre ambos trminos, especialmente en trminos de las motivaciones para el desarrollo y el uso de tal software, raramente suelen tener impacto en el proceso de colaboracin. Aunque el trmino "cdigo abierto" elimina la ambigedad de libertad frente a precio (en el caso del ingls), introduce una nueva: entre los programas que se ajustan a la definicin de cdigo abierto, que dan a los usuarios la libertad de mejorarlos, y los programas que simplemente tiene el cdigo fuente disponible, posiblemente con fuertes restricciones sobre el uso de dicho cdigo fuente. Mucha gente cree que cualquier software que tenga el cdigo fuente disponible es de cdigo abierto, puesto que lo pueden manipular (un ejemplo de este tipo de software sera el popular paquete de software gratuito Graphviz, inicialmente no libre pero que inclua el cdigo fuente, aunque luego AT&T le cambi la licencia). Sin embargo, mucho de este software no da a sus usuarios la libertad de distribuir sus modificaciones, restringe el uso comercial, o en general restringe los derechos de los usuarios. Software libre en la Administracin Pblica Existe una serie de pases en los cuales, sus administraciones pblicas, han mostrado apoyo al software libre, sea migrando total o parcialmente sus servidores y sistemas de escritorio, sea subvencionndolo. Como ejemplos de ello se tiene a Alemania,9 10 Argentina,11 Brasil,12 13 Cuba,14 Chile,15 China,16 Ecuador17 Espaa,18 19 Francia,20 Mxico,21 Repblica Dominicana22 y Venezuela.23 Adems de lo anterior, la Administracin Pblica tiene una cierta funcin de escaparate y/o gua de la industria que la hace tener un gran impacto, que debera dirigirse a la creacin de un tejido tecnolgico generador de riqueza nacional. sta puede crearse fomentando empresas, cuyo negocio sea en parte el desarrollo de nuevo software libre para la Administracin, el mantenimiento y la adaptacin del software existente. En Espaa en el ao 2009, el Centro Nacional de Referencia de Aplicacin de las TIC basadas en Fuentes Abiertas (CENATIC), elaboro un informe junto a la Universidad Rey Juan Carlos (Grupo GsyC/LibreSoft) y Telefnica I+D, con el fin de analizar el estado

71

en que se encuentra el proceso de implantacin del software de fuentes abiertas en la Administracin Pblica espaola. En Mxico el Software Libre naci en las universidades y los centros de investigacin. Es por eso que, desde hace tres dcadas, los estudiantes y los profesores usan software libre para fines didcticos y de investigacin. Las universidades suelen optar por el uso de software libre en vez de utilizar software privativo porque satisface de una mejor manera sus necesidades de cmputo, dada su naturaleza de apertura del cdigo y la libertad de compartir los resultados obtenidos. De forma colateral, no se tienen gastos adicionales derivados del pago de licenciamientos. El software libre no se limita a ser gratuito, porque tambin tiene un valor social fundamental, puesto que la nica restriccin que tiene es la de conservarse libre, lo cual quiere decir que puede ser explorado, verificado, reproducido y extendido en todas sus capacidades para beneficio de todos, de forma muy similar a la naturaleza de la produccin de la ciencia. Computlogos, fsicos, qumicos, matemticos y otros profesionistas y cientficos utilizan software libre como herramienta de investigacin y creacin. Un claro ejemplo de ello es la llamada Delta Metropolitana, que es una red de supercomputadoras que estn en varios puntos de la Ciudad de Mxico, en el CINESTAV, el IPN, la UAM y la UNAM. Esa red de supercmputo utiliza software libre para consolidar sus recursos, hacer investigacin y generar conocimiento. Motivaciones del software libre

La motivacin tica, abanderada por la Free Software Foundation, heredera de la cultura hacker, y partidaria del apelativo libre, que argumenta que el software es conocimiento y debe poderse difundir sin trabas. Su ocultacin es una actitud antisocial y la posibilidad de modificar programas es una forma de libertad de expresin, aunque sin olvidar una estructura jerarquizada por la meritocracia24 La motivacin pragmtica, abanderada por la Open Source Initiative y partidaria del apelativo abierto, que argumenta ventajas tcnicas y econmicas, con respecto a evitar una tragedia de los anticomunes mejorando los incentivos.

Aparte de estas dos grandes motivaciones, la gente que trabaja en software libre suele hacerlo por muchas otras razones, que van desde la diversin a la mera retribucin econmica, que es posible debido a modelos de negocio sustentables.25 Ventajas del software libre

72

Bajo costo de adquisicin: Se trata de un software econmico ya que permite un ahorro de grandes cantidades en la adquisicin de las licencias. Innovacin tecnolgica: esto se debe a que cada usuario puede aportar sus conocimientos y su experiencia y as decidir de manera conjunta hacia donde se debe dirigir la evolucin y el desarrollo del software. Este es un gran avance en la tecnologa mundial. Independencia del proveedor: al disponer del cdigo fuente, se garantiza una independencia del proveedor que hace que cada empresa o particular pueda seguir contribuyendo al desarrollo y los servicios del software. Escrutinio pblico: esto hace que la correccin de errores y la mejora del producto se lleven a cabo de manera rpida y eficaz por cada uno de los usuarios que lleguen a utilizar el producto. Adaptacin del software: esta cualidad resulta de gran utilidad para empresas e industrias especficas que necesitan un software personalizado para realizar un trabajo especfico y con el software libre se puede realizar y con costes totales de operacin (TCO) mucho ms razonables.26 Lenguas: aunque el software se cree y salga al mercado en una sola lengua, el hecho de ser software libre facilita en gran medida su traduccin y localizacin para que usuarios de diferentes partes del mundo puedan aprovechar estos beneficios.

Impacto del software libre Los impactos del software libre, y las perspectivas que permite, son los siguientes:

principales

nuevas

Aprovechamiento ms adecuado de los recursos: muchas aplicaciones utilizadas o promovidas por las administraciones pblicas son tambin utilizadas por otros sectores de la sociedad. Fomento de la industria local: una de las mayores ventajas del software libre es la posibilidad de desarrollar industria local de software. Independencia del proveedor: es obvio que una organizacin preferir depender de un mercado en rgimen de competencia que de un solo proveedor que puede imponer las condiciones en que proporciona su producto. Adaptacin a las necesidades exactas: en el caso del software libre, la adaptacin puede hacerse con mucha mayor facilidad, y lo que es ms importante, sirvindose de un mercado con competencia, si hace falta contratarla. Escrutinio pblico de seguridad: para una Administracin Pblica poder garantizar que sus sistemas informticos hacen slo lo que est previsto que hagan es un requisito fundamental y, en muchos estados, un requisito legal.

73

Disponibilidad a largo plazo: muchos datos que manejan las administraciones y los programas que sirven para calcularlos han de estar disponibles dentro de decenas de aos.

Algunos estudios apuntan al software libre como un factor clave para aumentar la competitividad en la Unin Europea. P5.2 Proceso de Desarrollo de software Introduccin Un sistema informtico est compuesto por hardware y software. En cuanto al hardware, su produccin se realiza sistemticamente y la base de conocimiento para el desarrollo de dicha actividad est claramente definida. La fiabilidad del hardware es, en principio, equiparable a la de cualquier otra mquina construida por el hombre. Sin embargo, respecto del software, su construccin y resultados han sido histricamente cuestionados debido a los problemas asociados, entre ellos podemos destacar los siguientes [1]:

Los sistemas no responden a las expectativas de los usuarios. Los programas fallan con cierta frecuencia. Los costes del software son difciles de prever y normalmente superan las estimaciones. La modificacin del software es una tarea difcil y costosa. El software se suele presentar fuera del plazo establecido y con menos prestaciones de las consideradas inicialmente. Normalmente, es difcil cambiar de entorno hardware usando el mismo software. El aprovechamiento ptimo de los recursos (personas, tiempo, dinero, herramientas, etc.) no suele cumplirse.

Segn el Centro Experimental de Ingeniera de Software (CEIS)1, el estudio de mercado The Chaos Report realizado por Standish Group Internactional2 en 1996, concluy que slo un 16% de los proyectos de software son exitosos (terminan dentro de plazos y costos y cumplen los requerimientos acordados). Otro 53% sobrepasa costos y plazos y cumple parcialmente los requerimientos. El resto ni siquiera llega al trmino. Algunas deficiencias comunes en el desarrollo de software son:

Escasa o tarda validacin con el cliente.

74

Inadecuada gestin de los requisitos. No existe histricos. medicin del proceso ni registro de datos

Estimaciones imprevistas de plazos y costos. Excesiva e irracional presin en los plazos. Escaso o deficiente control en el progreso del proceso de desarrollo. No se hace gestin de riesgos formalmente. No se realiza un proceso formal de pruebas. No se realizan revisiones tcnicas formales e inspecciones de cdigo.

El primer reconocimiento pblico de la existencia de problemas en la produccin de software tuvo lugar en la conferencia organizada en 1968 por la Comisin de Ciencias de la OTAN en Garmisch (Alemania), dicha situacin problemtica se denomin crisis del software. En esta conferencia, as como en la siguiente realizada en Roma en 1969, se estipul el inters hacia los aspectos tcnicos y administrativos en el desarrollo y mantenimiento de productos software. Se pretenda acordar las bases para una ingeniera de construccin de software. Segn Fritz Bauer [2] lo que se necesitaba era establecer y usar principios de ingeniera orientados a obtener software de manera econmica, que sea fiable y funcione eficientemente sobre mquinas reales. Esta definicin marcaba posibles cuestiones tales como: Cules son los principios robustos de la ingeniera aplicables al desarrollo de software de computadora? Cmo construimos el software econmicamente para que sea fiable? Qu se necesita para crear programas de computadora que funcionen eficientemente no en una mquina sino en diferentes mquinas reales?. Sin embargo, dicho planteamiento adems deba incluir otros aspectos, tales como: mejora de la calidad del software, satisfaccin del cliente, mediciones y mtricas, etc. El IEEE Standard Glossary of Software Engineering Terminology (Stad. 610.12-1990) ha desarrollado una definicin ms completa para ingeniera del software [1]: (1) La aplicacin de un enfoque sistemtico, disciplinado y cuantificable para el desarrollo, operacin y mantenimiento del software; es decir, la aplicacin de ingeniera al software. (2) El estudio de enfoques en (1). Pressman [1] caracteriza la Ingeniera de Software tecnologa multicapa, ilustrada en la Figura 1. como una

75

Figura 1: Capas de la Ingeniera de Software. Dichas capas se describen a continuacin:

Cualquier disciplina de ingeniera (incluida la ingeniera del software) debe descansar sobre un esfuerzo de organizacin de calidad. La gestin total de la calidad y las filosofas similares fomentan una cultura continua de mejoras de procesos que conduce al desarrollo de enfoques cada vez ms robustos para la ingeniera del software. El fundamento de la ingeniera de software es la capa proceso. El proceso define un marco de trabajo para un conjunto de reas clave, las cuales forman la base del control de gestin de proyectos de software y establecen el contexto en el cual: se aplican los mtodos tcnicos, se producen resultados de trabajo, se establecen hitos, se asegura la calidad y el cambio se gestiona adecuadamente. Los mtodos de la ingeniera de software indican cmo construir tcnicamente el software. Los mtodos abarcan una gran gama de tareas que incluyen anlisis de requisitos, diseo, construccin de programas, pruebas y mantenimiento. Estos mtodos dependen de un conjunto de principios bsicos que gobiernan cada rea de la tecnologa e incluyen actividades de modelado y otras tcnicas descriptivas. Las herramientas de la ingeniera del software proporcionan un soporte automtico o semi-automtico para el proceso y los mtodos, a estas herramientas se les llama herramientas CASE (Computer-Aided Software Engineering).

Dado lo anterior, el objetivo de la ingeniera de software es lograr productos de software de calidad (tanto en su forma final como durante su elaboracin), mediante un proceso apoyado por mtodos y herramientas. A continuacin nos enfocaremos elaborar un producto de software. en el proceso necesario para

El proceso de desarrollo del software Un proceso de desarrollo de software tiene como propsito la produccin eficaz y eficiente de un producto software que rena los requisitos del cliente. Dicho proceso, en trminos globales se muestra en la Figura 2 [3]. Este proceso es intensamente intelectual, afectado por la creatividad y juicio de las personas involucradas [4]. Aunque un proyecto de desarrollo de software es equiparable en muchos aspectos a cualquier otro proyecto de

76

ingeniera, en el desarrollo de software hay una serie de desafos adicionales, relativos esencialmente a la naturaleza del producto obtenido. A continuacin se explican algunas particularidades asociadas al desarrollo de software y que influyen en su proceso de construccin. Un producto software en s es complejo, es prcticamente inviable conseguir un 100% de confiabilidad de un programa por pequeo que sea. Existe una inmensa combinacin de factores que impiden una verificacin exhaustiva de las todas posibles situaciones de ejecucin que se puedan presentar (entradas, valores de variables, datos almacenados, software del sistema, otras aplicaciones que intervienen, el hardware sobre el cual se ejecuta, etc.). Un producto software es intangible y por lo general muy abstracto, esto dificulta la definicin del producto y sus requisitos, sobre todo cuando no se tiene precedentes en productos software similares. Esto hace que los requisitos sean difciles de consolidar tempranamente. As, los cambios en los requisitos son inevitables, no slo despus de entregado en producto sino tambin durante el proceso de desarrollo. Adems, de las dos anteriores, siempre puede sealarse la inmadurez de la ingeniera del software como disciplina, justificada por su corta vida comparada con otras disciplinas de la ingeniera. Sin embargo, esto no es ms que un intil consuelo.

Requisitos nuevos o modificados

Proceso de Desarrollo de Software

Sistema nuevo o modificado

Figura 2: proceso de desarrollo de software. El proceso de desarrollo de software no es nico. No existe un proceso de software universal que sea efectivo para todos los contextos de proyectos de desarrollo. Debido a esta diversidad, es difcil automatizar todo un proceso de desarrollo de software. A pesar de la variedad de propuestas de proceso de software, existe un conjunto de actividades fundamentales que se encuentran presentes en todos ellos [4]: 1. Especificacin de software: Se debe definir la funcionalidad y restricciones operacionales que debe cumplir el software. 2. Diseo e Implementacin: Se disea y construye el software de acuerdo a la especificacin. 3. Validacin: El software debe validarse, cumpla con lo que quiere el cliente. para asegurar que

77

4. Evolucin: El software debe evolucionar, para adaptarse a las necesidades del cliente. Adems de estas actividades fundamentales, Pressman [1] menciona un conjunto de actividades protectoras, que se aplican a lo largo de todo el proceso del software. Ellas se sealan a continuacin:

Seguimiento y control de proyecto de software. Revisiones tcnicas formales. Garanta de calidad del software. Gestin de configuracin del software. Preparacin y produccin de documentos. Gestin de reutilizacin. Mediciones. Gestin de riesgos.

Pressman [1] caracteriza un proceso de desarrollo de software como se muestra en la Figura 3. Los elementos involucrados se describen a continuacin:

Un marco comn del proceso, definiendo un pequeo nmero de actividades del marco de trabajo que son aplicables a todos los proyectos de software, con independencia del tamao o complejidad. Un conjunto de tareas, cada uno es una coleccin de tareas de ingeniera del software, hitos de proyectos, entregas y productos de trabajo del software, y puntos de garanta de calidad, que permiten que las actividades del marco de trabajo se adapten a las caractersticas del proyecto de software y los requisitos del equipo del proyecto. Las actividades de proteccin, tales como garanta de calidad del software, gestin de configuracin del software y medicin, abarcan el modelo del proceso. Las actividades de proteccin son independientes de cualquier actividad del marco de trabajo y aparecen durante todo el proceso.

78

Figura 3: Elementos del proceso del software

Otra perspectiva utilizada para determinar los elementos del proceso de desarrollo de software es establecer las relaciones entre elementos que permitan responder Quin debe hacer Qu, Cundo y Cmo debe hacerlo [5].

Figura 4: Relacin entre elementos del proceso del software En la Figura 4 se muestran los elementos de un proceso de desarrollo de software y sus relaciones. As las interrogantes se responden de la siguiente forma:

Quin: Las Personas participantes en el proyecto de desarrollo desempeando uno o ms Roles especficos.

79

Qu: Un Artefacto3 es producido por un Rol en una de sus Actividades. Los Artefactos se especifican utilizando Notaciones especficas. Las Herramientas apoyan la elaboracin de Artefactos soportando ciertas Notaciones. Cmo y Cundo: Las Actividades son una serie de pasos que lleva a cabo un Rol durante el proceso de desarrollo. El avance del proyecto est controlado mediante hitos que establecen un determinado estado de terminacin de ciertos Artefactos.

La composicin y sincrona de las actividades est basada en un conjunto de Principios y Prcticas. Las Prcticas y Principios enfatizan ciertas actividades y/o la forma como deben realizarse, por ejemplo: desarrollar iterativamente, gestionar requisitos, desarrollo basado en componentes, modelar visualmente, verificar continuamente la calidad, gestionar los cambios, etc. Modelos de proceso software Sommerville [4] define modelo de proceso de software como Una representacin simplificada de un proceso de software, representada desde una perspectiva especfica. Por su naturaleza los modelos son simplificados, por lo tanto un modelo de procesos del software es una abstraccin de un proceso real. Los modelos genricos no son descripciones definitivas de procesos de software; sin embargo, son abstracciones tiles que pueden ser utilizadas para explicar diferentes enfoques del desarrollo de software. Modelos que se van a discutir a continuacin:

Codificar y corregir Modelo en cascada Desarrollo evolutivo Desarrollo formal de sistemas Desarrollo basado en reutilizacin Desarrollo incremental Desarrollo en espiral

Codificar y corregir (Code-and-Fix) Este es el modelo bsico utilizado en los inicios del desarrollo de software. Contiene dos pasos:

Escribir cdigo. Corregir problemas en el cdigo.

Se trata de primero implementar algo de cdigo y luego pensar acerca de requisitos, diseo, validacin, y mantenimiento.

Un artefacto es una pieza de informacin que (1) es producida, modificada o usada por el proceso, (2) define un rea de responsabilidad para un rol y (3) est sujeta a control de versiones. Un artefacto puede ser un modelo, un elemento de modelo o un documento.

80

Este modelo tiene tres problemas principales [7]:

Despus de un nmero de correcciones, el cdigo puede tener una muy mala estructura, hace que los arreglos sean muy costosos. Frecuentemente, an el software bien diseado, no se ajusta a las necesidades del usuario, por lo que es rechazado o su reconstruccin es muy cara. El cdigo es difcil de reparar por su pobre preparacin para probar y modificar.

Modelo en cascada El primer modelo de desarrollo de software que se public se deriv de otros procesos de ingeniera [8]. ste toma las actividades fundamentales del proceso de especificacin, desarrollo, validacin y evolucin y las representa como fases separadas del proceso. El modelo en cascada consta de las siguientes fases: 1. Definicin de los requisitos: Los servicios, restricciones y objetivos son establecidos con los usuarios del sistema. Se busca hacer esta definicin en detalle. 2. Diseo de software: Se particiona el sistema en sistemas de software o hardware. Se establece la arquitectura total del sistema. Se identifican y describen las abstracciones y relaciones de los componentes del sistema. 3. Implementacin y pruebas unitarias: Construccin de los mdulos y unidades de software. Se realizan pruebas de cada unidad. 4. Integracin y pruebas del sistema: Se integran todas las unidades. Se prueban en conjunto. Se entrega el conjunto probado al cliente. 5. Operacin y mantenimiento: Generalmente es la fase ms larga. El sistema es puesto en marcha y se realiza la correccin de errores descubiertos. Se realizan mejoras de implementacin. Se identifican nuevos requisitos. La interaccin entre fases puede observarse en la Figura 5. Cada fase tiene como resultado documentos que deben ser aprobados por el usuario. Una fase no comienza hasta que termine la generalmente se incluye la correccin de encontrados en fases previas. fase anterior y los problemas

81

Figura 5: Modelo de desarrollo en cascada. En la prctica, este modelo no es lineal, e involucra varias iteraciones e interaccin entre las distintas fases de desarrollo. Algunos problemas que se observan en el modelo de cascada son:

Las iteraciones son costosas e implican rehacer trabajo debido a la produccin y aprobacin de documentos. Aunque son pocas iteraciones, es normal congelar parte del desarrollo y continuar con las siguientes fases. Los problemas se dejan para su posterior resolucin, lo que lleva a que estos sean ignorados o corregidos de una forma poco elegante. Existe una alta probabilidad de que el software no cumpla con los requisitos del usuario por el largo tiempo de entrega del producto. Es inflexible a la hora de evolucionar para incorporar nuevos requisitos. Es difcil responder a cambios en los requisitos. los

Este modelo slo debe usarse si se entienden a plenitud requisitos. An se utiliza como parte de proyectos grandes.

Desarrollo evolutivo La idea detrs de este modelo es el desarrollo de una implantacin del sistema inicial, exponerla a los comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado. En la Figura 6 se observa cmo las actividades concurrentes: especificacin, desarrollo y validacin, se realizan durante el desarrollo de las versiones hasta llegar al producto final. Una ventaja de este modelo realimentacin del usuario, especificacin, desarrollo y iteracin. es que se obtiene una rpida ya que las actividades de pruebas se ejecutan en cada

82

Figura 6: Modelo de desarrollo evolutivo. Existen dos tipos de desarrollo evolutivo:

Desarrollo Exploratorio: El objetivo de este enfoque es explorar con el usuario los requisitos hasta llegar a un sistema final. El desarrollo comienza con las partes que se tiene ms claras. El sistema evoluciona conforme se aaden nuevas caractersticas propuestas por el usuario. Enfoque utilizando prototipos: El objetivo es entender los requisitos del usuario y trabajar para mejorar la calidad de los requisitos. A diferencia del desarrollo exploratorio, se comienza por definir los requisitos que no estn claros para el usuario y se utiliza un prototipo para experimentar con ellos. El prototipo ayuda a terminar de definir estos requisitos. La especificacin puede desarrollarse de forma creciente. Los usuarios y desarrolladores logran un mejor entendimiento del sistema. Esto se refleja en una mejora de la calidad del software. Es ms efectivo que el modelo de cascada, ya que cumple con las necesidades inmediatas del cliente. y administracin se

Entre los puntos favorables de este modelo estn:


Desde una perspectiva de ingeniera identifican los siguientes problemas:

Proceso no Visible: Los administradores necesitan entregas para medir el progreso. Si el sistema se necesita desarrollar rpido, no es efectivo producir documentos que reflejen cada versin del sistema. Sistemas pobremente estructurados: Los cambios continuos pueden ser perjudiciales para la estructura del software haciendo costoso el mantenimiento. Se requieren tcnicas y herramientas: Para el rpido desarrollo se necesitan herramientas que pueden ser incompatibles con otras o que poca gente sabe utilizar.

83

Este modelo es efectivo en proyectos pequeos (menos de 100.000 lneas de cdigo) o medianos (hasta 500.000 lneas de cdigo) con poco tiempo para su desarrollo y sin generar documentacin para cada versin. Para proyectos largos es mejor combinar lo mejor del modelo de cascada y evolutivo: se puede hacer un prototipo global del sistema y posteriormente reimplementarlo con un acercamiento ms estructurado. Los subsistemas con requisitos bien definidos y estables se pueden programar utilizando cascada y la interfaz de usuario se puede especificar utilizando un enfoque exploratorio. Desarrollo formal de sistemas Este modelo se basa en transformaciones formales de los requisitos hasta llegar a un programa ejecutable.
Desiciones Especificacin Informal Especificacin Especificacin de alto nivel (prototipo) Tranformacin Interactiva Especificacin de bajo nivel Transformacin Automtica Desarrollo Formal

Cdigo Fuente

Optimizacin Validacin de Especificacin

Mantenimiento

Figura 7: Paradigma de programacin automtica. La Figura 7 (obtenida desde [20]) ilustra un paradigma ideal de programacin automtica. Se distinguen dos fases globales: especificacin (incluyendo validacin) y transformacin. Las caractersticas principales de este paradigma son: la especificacin es formal y ejecutable constituye el primer prototipo del sistema), la especificacin es validada mediante prototipacin. Posteriormente, a travs de transformaciones formales la especificacin se convierte en la implementacin del sistema, en el ltimo paso de transformacin se obtiene una implementacin en un lenguaje de programacin determinado. , el mantenimiento se realiza sobre la especificacin (no sobre el cdigo fuente), la documentacin es generada automticamente y el mantenimiento es realizado por repeticin del proceso (no mediante parches sobre la implementacin). Observaciones sobre el desarrollo formal de sistemas:

Permite demostrar la correccin del sistema durante el proceso de transformacin. As, las pruebas que verifican la correspondencia con la especificacin no son necesarias. Es atractivo sobre todo para sistemas donde hay requisitos de

84

seguridad y confiabilidad importantes.

Requiere desarrolladores especializados este proceso para llevarse a cabo.

experimentados

en

Desarrollo basado en reutilizacin Como su nombre lo indica, es un modelo fuertemente orientado a la reutilizacin. Este modelo consta de 4 fases ilustradas en la Figura 9. A continuacin se describe cada fase: 1. Anlisis de componentes: Se determina qu componentes pueden ser utilizados para el sistema en cuestin. Casi siempre hay que hacer ajustes para adecuarlos. 2. Modificacin de requisitos: Se adaptan (en lo posible) los requisitos para concordar con los componentes de la etapa anterior. Si no se puede realizar modificaciones en los requisitos, hay que seguir buscando componentes ms adecuados (fase 1). 3. Diseo del sistema con reutilizacin: Se disea o reutiliza el marco de trabajo para el sistema. Se debe tener en cuenta los componentes localizados en la fase 2 para disear o determinar este marco. 4. Desarrollo e integracin: El software que no puede comprarse, se desarrolla. Se integran los componentes y subsistemas. La integracin es parte del desarrollo en lugar de una actividad separada. Las ventajas de este modelo son:

Disminuye el costo y esfuerzo de desarrollo. Reduce el tiempo de entrega. Disminuye los riesgos durante el desarrollo.

Figura 8: Desarrollo basado en reutilizacin de componentes Desventajas de este modelo:

Los compromisos en los requisitos son inevitables, por lo cual puede que el software no cumpla las expectativas del cliente. Las actualizaciones de los componentes adquiridos no estn en manos de los desarrolladores del sistema.

85

Procesos iterativos A continuacin se expondrn dos enfoques hbridos, especialmente diseados para el soporte de las iteraciones:

Desarrollo Incremental. Desarrollo en Espiral.

Desarrollo incremental Mills [9] sugiri el enfoque incremental de desarrollo como una forma de reducir la repeticin del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema (ver Figura 10). Es una combinacin del Modelo de Cascada y Modelo Evolutivo. Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para retrasar las decisiones hasta tener experiencia en el sistema. Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o evolutivo, dependiendo del conocimiento que se tenga sobre los requisitos a implementar. Si se tiene un buen conocimiento, se puede optar por cascada, si es dudoso, evolutivo.

Figura 9: Modelo de desarrollo iterativo incremental. Entre las ventajas del modelo incremental se encuentran:

Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema. Pueden empezar a usarlo desde el primer incremento. Los clientes pueden aclarar los requisitos claros conforme ven las entregas del sistema. que no tengan

Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede distribuir en cada incremento. Las partes ms importantes del sistema son entregadas primero, por lo cual se realizan ms pruebas en estos mdulos y se disminuye el riesgo de fallos. Cada incremento debe ser pequeo para limitar el riesgo (menos de 20.000 lneas).

Algunas de las desventajas identificadas para este modelo son:

86

Cada incremento debe aumentar la funcionalidad. Es difcil establecer las correspondencias de contra los incrementos. los requisitos

Es difcil detectar las unidades o servicios genricos para todo el sistema.

Desarrollo en espiral El modelo de desarrollo en espiral (ver Figura 11) es actualmente uno de los ms conocidos y fue propuesto por Boehm [7]. El ciclo de desarrollo se representa como una espiral, en lugar de una serie de actividades sucesivas con retrospectiva de una actividad a otra. Cada ciclo de desarrollo se divide en cuatro fases: 1. Definicin de objetivos: Se definen los objetivos. Se definen las restricciones del proceso y del producto. Se realiza un diseo detallado del plan administrativo. Se identifican los riesgos y se elaboran estrategias alternativas dependiendo de estos. 2. Evaluacin y reduccin de riesgos: Se realiza un anlisis detallado de cada riesgo identificado. Pueden desarrollarse prototipos para disminuir el riesgo de requisitos dudosos. Se llevan a cabo los pasos para reducir los riesgos. 3. Desarrollo y validacin: Se escoge el modelo de desarrollo despus de la evaluacin del riesgo. El modelo que se utilizar (cascada, sistemas formales, evolutivo, etc.) depende del riesgo identificado para esa fase. 4. Planificacin: Se determina si continuar con otro ciclo. Se planea la siguiente fase del proyecto. Este modelo a diferencia de los otros toma en consideracin explcitamente el riesgo, esta es una actividad importante en la administracin del proyecto.

El ciclo de vida inicia con la definicin de los objetivos. De acuerdo a las restricciones se determinan distintas alternativas. Se identifican los riesgos al sopesar los objetivos contra las alternativas. Se evalan los riesgos con actividades como anlisis detallado, simulacin, prototipos, etc. Se desarrolla un poco el sistema. Se planifica la siguiente fase.

87

Figura 10: Modelo de desarrollo en Espiral

Cul es el modelo de proceso ms adecuado? Cada proyecto de software requiere de una forma de particular de abordar el problema. Las propuestas comerciales y acadmicas actuales promueven procesos iterativos, donde en cada iteracin puede utilizarse uno u otro modelo de proceso, considerando un conjunto de criterios (Por ejemplo: grado de definicin de requisitos, tamao del proyecto, riesgos identificados, entre otros). En la Tabla 1 se expone un cuadro comparativo de acuerdo con algunos criterios bsicos para la seleccin de un modelo de proceso [10], la medida utilizada indica el nivel de efectividad del modelo de proceso de acuerdo al criterio (Por ejemplo: El modelo Cascada responde con un nivel de efectividad Bajo cuando los Requisitos y arquitectura no estn predefinidos ):

88

Modelo proceso

Funciona con requisitos de y arquitectu ra no predefinid os

Produce software altamente fiable

Gestin riesgos

Visin del Permite progreso de correcciones por el sobre la Cliente marcha y el Jefe del proyecto

Codificar y Bajo corregir

Bajo

Bajo

Alto

Medio

Cascada

Bajo

Alto

Bajo

Bajo

Bajo

Evolutivo exploratori o Medio Alto o Medio Alto o Medio Medio o Alto Medio Alto o

Evolutivo Alto prototipado Medio Medio Alto Alto

89

Desarrollo formal de Bajo sistemas

Alto

Bajo Medio

Bajo

Bajo

Desarrollo orientado a Medio reutilizaci n

Bajo a Alto

Bajo Medio

Alto

Alto

Incremental

Bajo

Alto

Medio

Bajo

Bajo

Espiral

Alto

Alto

Alto

Medio

Medio

Tabla 1: Comparacin entre modelos de proceso de software. Metodologas para desarrollo de software Un proceso de software detallado y completo suele denominarse Metodologa. Las metodologas se basan en una combinacin de los modelos de proceso genricos (cascada, evolutivo, incremental, etc.). Adicionalmente una metodologa debera definir con precisin los artefactos, roles y actividades involucrados, junto con prcticas y tcnicas recomendadas, guas de adaptacin de la metodologa al proyecto, guas para uso de herramientas de apoyo, etc. Habitualmente se utiliza el trmino mtodo para referirse a tcnicas, notaciones y guas asociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, por ejemplo, suele hablarse de mtodos de anlisis y/o diseo. La comparacin y/o clasificacin de metodologas no es una tarea sencilla debido a la diversidad de propuestas y diferencias en el grado de detalle, informacin disponible y alcance de cada una de ellas. A grandes rasgos, si tomamos como criterio las notaciones utilizadas para especificar artefactos producidos en actividades de anlisis y diseo, podemos clasificar las metodologas en dos grupos: Metodologas Estructuradas y Metodologas Orientadas a

90

Objetos. Por otra parte, considerando su filosofa de desarrollo, aquellas metodologas con mayor nfasis en la planificacin y control del proyecto, en especificacin precisa de requisitos y modelado, reciben el apelativo de Metodologas Tradicionales (o peyorativamente denominada Metodologas Pesadas, o Peso Pesado). Otras metodologas, denominadas Metodologas giles, estn ms orientadas a la generacin de cdigo con ciclos muy cortos de desarrollo, se dirigen a equipos de desarrollo pequeos, hacen especial hincapi en aspectos humanos asociados al trabajo en equipo e involucran activamente al cliente en el proceso. A continuacin se revisan brevemente cada una de estas categoras de metodologas. Metodologas estructuradas Los mtodos estructurados comenzaron a desarrollarse a fines de los 70s con la Programacin Estructurada, luego a mediados de los 70s aparecieron tcnicas para el Diseo (por ejemplo: el diagrama de Estructura) primero y posteriormente para el Anlisis (por ejemplo: Diagramas de Flujo de Datos). Estas metodologas son particularmente apropiadas en proyectos que utilizan para la implementacin lenguajes de 3ra y 4ta generacin. Ejemplos de metodologas estructuradas de mbito gubernamental: MERISE4 (Francia), MTRICA5 (Espaa), SSADM6 (Reino Unido). Ejemplos de propuestas de mtodos estructurados en el mbito. Metodologas orientadas a objetos Su historia va unida a la evolucin de los lenguajes de programacin orientada a objeto, los ms representativos: a fines de los 60s SIMULA, a fines de los 70s Smalltalk-80, la primera versin de C++ por Bjarne Stroustrup en 1981 y actualmente Java7 o C# de Microsoft. A fines de los 80s comenzaron a consolidarse algunos mtodos Orientadas a Objeto. En 1995 Booch y Rumbaugh proponen el Mtodo Unificado con la ambiciosa idea de conseguir una unificacin de sus mtodos y notaciones, que posteriormente se reorienta a un objetivo ms modesto, para dar lugar al Unified Modeling Language (UML)8, la

91

notacin OO ms popular en la actualidad. Algunos mtodos OO con notaciones predecesoras de UML son: OOAD (Booch), OOSE (Jacobson), Coad & Yourdon, Shaler & Mellor y OMT (Rumbaugh). Algunas metodologas orientadas a objetos que utilizan la notacin UML son: Rational Unified Process (RUP)9, OPEN10, MTRICA (que tambin soporta la notacin estructurada) Metodologas giles
Un proceso es gil cuando el desarrollo de software es incremental (entregas pequeas de software, con ciclos rpidos), cooperativo (cliente y desarrolladores trabajan juntos constantemente con una cercana comunicacin), sencillo (el mtodo en s mismo es fcil de aprender y modificar, bien documentado), y adaptable (permite realizar cambios de ltimo momento) [11]. Entre las metodologas giles identificadas en [11]:

Extreme Programming Scrum ([12], [13]).

[6].

Familia de Metodologas Crystal [14]. Feature Driven Development [15]. Proceso Unificado Rational, una configuracin gil ([16]). Dynamic Systems Development Method [17]. Adaptive Software Development [18].

Open Source Software Development [19].

Metodologas tradicionales (no giles) Las metodologas no giles son aquellas que estn guiadas por una fuerte planificacin durante todo el proceso de desarrollo; llamadas tambin metodologas tradicionales o clsicas, donde se realiza una intensa etapa de anlisis y diseo antes de la construccin del sistema. Todas las propuestas metodolgicas antes indicadas pueden considerarse como metodologas tradicionales. Aunque en el caso particular de RUP, por el especial nfasis que presenta en cuanto a su adaptacin a las condiciones del proyecto (mediante su

92

configuracin previa a aplicarse), realizando una configuracin adecuada, podra considerarse gil. P5.3 Ingenieria de Software Dirigidos por Modelos Es una evolucin de estndares definidos por OMG (Object Management Group) para mejorar procesos de desarrollo de sistemas de software dirigidos por modelos. Ideas centrales en MDA Separar la especificacin de la funcionalidad del sistema de su implementacin sobre una plataforma en una tecnologa especfica. Controlar la evolucin desde modelos abstractos a implementaciones tendiendo a aumentar el grado de automatizacin. Plataforma en MDA Plataforma Es un conjunto de subsistemas y tecnologas que proveen un conjunto coherente de funcionalidad que puede ser usada en cualquier aplicacin sin tener en cuenta detalles de cmo la funcionalidad es implementada Modelos y MDA Distingue diferentes tipos de modelos: CIM (Computation Independent Model) PIM (Platform Independent Model) PSM (Platform Specific Model) ISM (Implementation Specific Model) Computation Independent Model (CIM) Es una descripcin de la lgica del negocio desde una perspectiva independiente de la computacin. Es un modelo del dominio Platform Independent Model Es una descripcin de la funcionalidad del sistema en forma independiente de las caractersticas de plataformas de implementacin especficas. Platform Specific Model (PSM) Es una descripcin del sistema en trminos de una plataforma especfica Implementation Specific Model Es una descripcin (especificacin) del sistema a nivel de cdigo MDD (Model-Driven Development)

93

Transformaciones y MDA La evolucin desde modelos CIM a ISM es alcanzada por: Refinamientos que permiten construir una especificacin ms especfica a partir de una ms abstracta (por ejemplo, PIM PSM, PSM ISM ) y Refactorings que permiten transformar modelos en un determinado nivel sin cambiar su funcionalidad, pero mejorando algunos factores de calidad no funcionales (por ejemplo PIM PIM, PSM PSM, ISM ISM) Metamodelos y MDA En MDA es crucial Mantener trazas y relaciones entre diferentes modelos Lograr interoperabilidad en diferentes niveles

Metamodelos Modelos, Transformaciones y Metamodelos Estndares de OMG UML/OCL --------------------- Modelos MOF --------------------- Metamodelos (Meta Object Facility) QVT --------------------- Transformaciones (Query-View-Transformation) Arquitectura de metamodelado

94

Arquitectura de metamodelado de 4 niveles: Meta-metamodelo (MOF) Metamodelo (Metamodelo UML, SPEM) Modelo (UML, RUP) Objetos

MOF SPEM RUP es-una-instancia

MOF (Meta Object Facility) MOF captura la diversidad de estndares de modelamiento para integrar diferentes tipos de modelos y metadatos e intercambiarlos entre diferentes herramientas. Se describen mediante: Modelos estticos UML Clases Asociaciones binarias Tipos de datos Package Especificaciones OCL Metamodelo Especificaciones OCL

95

context Package self.class -> forAll (e1,e2 /e1.name = e2.name implies e1 = e2) self.association->forAll(a1,a2/a1.name=a2.name implies a1=a2) self.nestedPackages-> forAll(p1,p2 /p1.name = p2.name implies p1=p2) context AssociationEnd source = self.otherEnd.target and target = otherEnd.source

Transformaciones y metamodelos

HERRAMIENTAS CASE CASE-UML Rational Rose, Argo/UML, Together, UModel, MagicDraw, MetaEdit+, Poseidon CASE-Tiempo Real Rapsody, Rational Rose Real Time, RapidRMA CASE-MDA OptimalJ, AndroMDA, Ameos, Together Architect, Codagen, ArcStyler, MDE Studio, Objecteering Unas 120 herramientas CASE se basan en UML y slo un 10% soporta parcialmente MDA. Limitaciones en procesos de: ingeniera directa (forward engineering)

96

ingeniera reversa (reverse engineering) transformaciones (refinamientos, refactoring) anlisis de consistencia No proveen asistencia en reenginera de sistemas legacy

MDA y Reingeniera

97

Programa 6: Inteligencia Artificial. Lneas P6.1 Redes Neuronales Las redes de neuronas artificiales (denominadas habitualmente como RNA o en ingls como: "ANN"1 ) son un paradigma de aprendizaje y procesamiento automtico inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexin de neuronas en una red que colabora para producir un estmulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.

Propiedades

Perceptrn con 2 entradas. Una red neuronal se compone de unidades llamadas neuronas. Cada neurona recibe una serie de entradas a travs de interconexiones y emite una salida. Esta salida viene dada por tres funciones:

98

1. Una funcin de propagacin (tambin conocida como funcin de excitacin), que por lo general consiste en el sumatorio de cada entrada multiplicada por el peso de su interconexin (valor neto). Si el peso es positivo, la conexin se denomina excitatoria; si es negativo, se denomina inhibitoria. 2. Una funcin de activacin, que modifica a la anterior. Puede no existir, siendo en este caso la salida la misma funcin de propagacin. 3. Una funcin de transferencia, que se aplica al valor devuelto por la funcin de activacin. Se utiliza para acotar la salida de la neurona y generalmente viene dada por la interpretacin que queramos darle a dichas salidas. Algunas de las ms utilizadas son la funcin sigmoidea (para obtener valores en el intervalo [0,1]) y la tangente hiperblica (para obtener valores en el intervalo [-1,1]). Diseo y programacin de una RNA (red neuronal artificial) Con un paradigma convencional de programacin en ingeniera del software, el objetivo del programador es modelar matemticamente (con distintos grados de formalismo) el problema en cuestin y posteriormente formular una solucin (programa) mediante un algoritmo codificado que tenga una serie de propiedades que permitan resolver dicho problema. En contraposicin, la aproximacin basada en las RNA parte de un conjunto de datos de entrada suficientemente significativo y el objetivo es conseguir que la red aprenda automticamente las propiedades deseadas. En este sentido, el diseo de la red tiene menos que ver con cuestiones como los flujos de datos y la deteccin de condiciones, y ms que ver con cuestiones tales como la seleccin del modelo de red, la de las variables a incorporar y el preprocesamiento de la informacin que formar el conjunto de entrenamiento. Asimismo, el proceso por el que los parmetros de la red se adecuan a la resolucin de cada problema no se denomina genricamente programacin sino que se suele denominar entrenamiento neuronal. Por ejemplo en una red que se va a aplicar al diagnstico de imgenes mdicas; durante la fase de entrenamiento el sistema recibe imgenes de tejidos que se sabe son cancergenos y tejidos que se sabe son sanos, as como las respectivas clasificaciones de dichas imgenes. Si el entrenamiento es el adecuado, una vez concluido, el sistema podr recibir imgenes de tejidos no clasificados y obtener su clasificacin sano/no sano con un buen grado de seguridad. Las variables de entrada pueden ser desde los puntos individuales de cada imagen hasta un vector de caractersticas de las mismas que se puedan incorporar al sistema (por ejemplo, procedencia anatmica del tejido de la imagen o la edad del paciente al que se le extrajo la muestra). Estructura La mayora de los cientficos coinciden en que una RNA es muy diferente en trminos de estructura de un cerebro animal. Al igual que el cerebro, una RNA se compone de un conjunto masivamente

99

paralelo de unidades de proceso muy simples y es en las conexiones entre estas unidades donde reside la inteligencia de la red. Sin embargo, en trminos de escala, un cerebro es muchsimo mayor que cualquier RNA creada hasta la actualidad, y las neuronas artificiales tambin son ms simples que su contrapartida animal. Biolgicamente, un cerebro aprende mediante la reorganizacin de las conexiones sinpticas entre las neuronas que lo componen. De la misma manera, las RNA tienen un gran nmero de procesadores virtuales interconectados que de forma simplificada simulan la funcionalidad de las neuronas biolgicas. En esta simulacin, la reorganizacin de las conexiones sinpticas biolgicas se modela mediante un mecanismo de pesos, que son ajustados durante la fase de aprendizaje. En una RNA entrenada, el conjunto de los pesos determina el conocimiento de esa RNA y tiene la propiedad de resolver el problema para el que la RNA ha sido entrenada. Por otra parte, en una RNA, adems de los pesos y las conexiones, cada neurona tiene asociada una funcin matemtica denominada funcin de transferencia. Dicha funcin genera la seal de salida de la neurona a partir de las seales de entrada. La entrada de la funcin es la suma de todas las seales de entrada por el peso asociado a la conexin de entrada de la seal. Algunos ejemplos de entradas son la funcin escaln de Heaviside, la lineal o mixta, la sigmoide y la funcin gaussiana, recordando que la funcin de transferencia es la relacin entre la seal de salida y la entrada. Ventajas Las redes neuronales artificiales (RNA) tienen muchas ventajas debido a que estn basadas en la estructura del sistema nervioso, principalmente el cerebro.

Aprendizaje: Las RNA tienen la habilidad de aprender mediante una etapa que se llama etapa de aprendizaje. Esta consiste en proporcionar a la RNA datos como entrada a su vez que se le indica cul es la salida (respuesta) esperada. Auto organizacin: Una RNA crea su propia representacin de la informacin en su interior, descargando al usuario de esto. Tolerancia a fallos: Debido a que una RNA almacena la informacin de forma redundante, sta puede seguir respondiendo de manera aceptable aun si se daa parcialmente. Flexibilidad: Una RNA puede manejar cambios no importantes en la informacin de entrada, como seales con ruido u otros cambios en la entrada (por ejemplo si la informacin de entrada es la imagen de un objeto, la respuesta correspondiente no sufre cambios si la imagen cambia un poco su brillo o el objeto cambia ligeramente). Tiempo real: La estructura de una RNA es paralela, por lo cual si esto es implementado con computadoras o en

100

dispositivos electrnicos respuestas en tiempo real. Tipologa de las RNA

especiales,

se

pueden

obtener

Modelos Existe una serie de modelos que aparecen en la mayora de estudios acadmicos y la bibliografa especializada.

Perceptrn Adaline Perceptrn multicapa Memorias asociativas Mquina de Boltzmann Mquina de Cauchy Propagacin hacia atrs (backpropagation) Redes de Elman Redes de Hopfield Red de contrapropagacin Redes de neuronas de base radial Redes de neuronas de aprendizaje competitivo Mapas Autoorganizados (RNA) (Redes de Kohonen) Crecimiento dinmico de clulas Gas Neuronal Creciente Redes ART (Adaptative Resonance Theory)

Topologa Una primera clasificacin de las redes de neuronas artificiales que se suele hacer es en funcin del patrn de conexiones que presenta. As se definen tres tipos bsicos de redes:

Dos tipos de redes de propagacin hacia delante o acclicas en las que todas las seales van desde la capa de entrada hacia la salida sin existir ciclos, ni conexiones entre neuronas de la misma capa. o Monocapa. Ejemplos: perceptrn, Adaline. o Multicapa. Ejemplos: perceptrn multicapa. Las redes recurrentes que presentan al menos un ciclo cerrado de activacin neuronal. Ejemplos: Elman, Hopfield, mquina de Boltzmann.

P6.2 Sistemas Expertos

Sistema Experto (SE)


Es una aplicacin informtica capaz de solucionar un conjunto de problemas que exigen un gran conocimiento sobre un determinado tema. Un sistema experto es un conjunto de programas que, sobre una base de conocimientos, posee

101

informacin de uno o ms expertos en un rea especfica. Se puede entender como una rama de la inteligencia artificial, donde el poder de resolucin de un problema en un programa de computadora viene del conocimiento de un dominio especfico. Estos sistemas imitan las actividades de un humano para resolver problemas de distinta ndole (no necesariamente tiene que ser de inteligencia artificial). Tambin se dice que un SE se basa en el conocimiento declarativo (hechos sobre objetos, situaciones) y el conocimiento de control (informacin sobre el seguimiento de una accin). Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fcil, reuniendo dos capacidades para poder cumplirlo:
1. Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generar la explicacin para cada una de estas reglas, que a la vez se basan en hechos. 2. Adquisicin de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre la base de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que sta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con ms rapidez y eficacia todas las tareas que realiza.

Debido a esto en la actualidad se estn mezclando diferentes tcnicas o aplicaciones aprovechando las ventajas que cada una de estas ofrece para poder tener empresas ms seguras. Un ejemplo de estas tcnicas sera los agentes que tienen la capacidad de negociar y navegar a travs de recursos en lnea; y es por eso que en la actualidad juega un papel preponderante en los sistemas expertos.

Estructura bsica de un SE
Un Sistema Experto est conformado por:

Base de conocimientos (BC): Contiene conocimiento modelado extrado del dilogo con un experto. Base de hechos (Memoria de trabajo): contiene los hechos sobre un problema que se ha descubierto durante el anlisis. Motor de inferencia: Modela el proceso de razonamiento humano. Mdulos de justificacin: Explica el razonamiento utilizado por el sistema para llegar a una determinada conclusin.

102

Interfaz de usuario: es la interaccin entre el SE y el usuario, y se realiza mediante el lenguaje natural.

Tipos de SE
Principalmente existen tres tipos de sistemas expertos:

Basados en reglas previamente establecidas. Basados en casos o CBR (Case Based Reasoning). Basados en redes bayesianas.

En cada uno de ellos, la solucin a un problema planteado se obtiene:


Aplicando reglas heursticas apoyadas generalmente en lgica difusa para su evaluacin y aplicacin. Aplicando el razonamiento basado en casos, donde la solucin a un problema similar planteado con anterioridad se adapta al nuevo problema. Aplicando redes bayesianas, basadas en estadstica y el teorema de Bayes.

Ventajas y limitaciones de los Sistemas Expertos


Ventajas

Permanencia: A diferencia de un experto humano un SE (sistema experto) no envejece, y por tanto no sufre prdida de facultades con el paso del tiempo. Replicacin: Una vez programado un SE lo podemos replicar infinidad de veces. Rapidez: Un SE puede obtener informacin de una base de datos y realizar clculos numricos mucho ms rpido que cualquier ser humano. Bajo costo: A pesar de que el costo inicial pueda ser elevado, gracias a la capacidad de duplicacin el coste finalmente es bajo. Entornos peligrosos: Un SE puede trabajar en entornos peligrosos o dainos para el ser humano. Fiabilidad: Los SE no se ven afectados por condiciones externas, un humano s (cansancio, presin, etc.). Consolidar varios conocimientos. Apoyo Acadmico.

Limitaciones

Sentido comn: Para un Sistema Experto no hay nada obvio. Por ejemplo, un sistema experto sobre medicina podra admitir que un hombre lleva 40 meses embarazado, a no ser que se

103

especifique que esto no es posible ya que un hombre no puede gestar hijos. Lenguaje natural: Con un experto humano podemos mantener una conversacin informal mientras que con un SE no podemos. Capacidad de aprendizaje: Cualquier persona aprende con relativa facilidad de sus errores y de errores ajenos, que un SE haga esto es muy complicado. Perspectiva global: Un experto humano es capaz de distinguir cuales son las cuestiones relevantes de un problema y separarlas de cuestiones secundarias. Capacidad sensorial: Un SE carece de sentidos. Flexibilidad: Un humano es sumamente flexible a la hora de aceptar datos para la resolucin de un problema. Conocimiento no estructurado: Un SE no es capaz de manejar conocimiento poco estructurado.

Ejemplos importantes

Dendral XCon Dipmeter Advisor Mycin CADUCEUS R1 CLIPS, Jess Prolog

Tareas que realiza un Sistema Experto


Monitorizacin

La monitorizacin es un caso particular de la interpretacin, y consiste en la comparacin continua de los valores de las seales o datos de entrada y unos valores que actan como criterios de normalidad o estndares. En el campo del mantenimiento predictivo los Sistemas Expertos se utilizan fundamentalmente como herramientas de diagnstico. Se trata de que el programa pueda determinar en cada momento el estado de funcionamiento de sistemas complejos, anticipndose a los posibles incidentes que pudieran acontecer. As, usando un modelo computacional del razonamiento de un experto humano, proporciona los mismos resultados que alcanzara dicho experto.
Diseo

Diseo es el proceso de especificar una descripcin de un artefacto que satisface varias caractersticas desde un nmero de fuentes de conocimiento.

104

El diseo se concibe de distintas formas:

El diseo en ingeniera es el uso de principios cientficos, informacin tcnica e imaginacin en la definicin de una estructura mecnica, mquina o sistema que ejecute funciones especficas con el mximo de economa y eficiencia. El diseo industrial busca rectificar las omisiones de la ingeniera, es un intento consciente de traer forma y orden visual a la ingeniera de hardware donde la tecnologa no provee estas caractersticas.

Los SE en diseo ven este proceso como un problema de bsqueda de una solucin ptima o adecuada. Las soluciones alternas pueden ser conocidas de antemano o se pueden generar automticamente probndose distintos diseos para verificar cules de ellos cumplen los requerimientos solicitados por el usuario, sta tcnica es llamada generacin y prueba, por lo tanto estos SE son llamados de seleccin. En reas de aplicacin, la prueba se termina cuando se encuentra la primera solucin; sin embargo, existen problemas ms complejos en los que el objetivo es encontrar la solucin ptima.
Planificacin

La planificacin es la realizacin de planes o secuencias de acciones y es un caso particular de la simulacin. Est compuesto por un simulador y un sistema de control. El efecto final es la ordenacin de un conjunto de acciones con el fin de conseguir un objetivo global. Los problemas que presentan la planificacin mediante SE son los siguientes:

Existen consecuencias no previsibles, de forma que hay que explorar y explicar varios planes. Existen muchas consideraciones que deben ser valoradas o incluirles un factor de peso. Suelen existir interacciones entre planes de subobjetivos diversos, por lo que deben elegirse soluciones de compromiso. Trabajo frecuente con incertidumbre, pues la mayora de los datos con los que se trabaja son ms o menos probables pero no seguros. Es necesario hacer uso de fuentes diversas tales como bases de datos.

Control

Un sistema de control participa en la realizacin de las tareas de interpretacin, diagnstico y reparacin de forma

105

secuencial. Con ello se consigue conducir o guiar un proceso o sistema. Los sistemas de control son complejos debido al nmero de funciones que deben manejar y el gran nmero de factores que deben considerar; esta complejidad creciente es otra de las razones que apuntan al uso del conocimiento, y por tanto de los SE. Cabe aclarar que los sistemas de control pueden ser en lazo abierto, si en el mismo la realimentacin o el paso de un proceso a otro lo realiza el operador, o en lazo cerrado si no tiene que intervenir el operador en ninguna parte del mismo. Reparacin, correcta o terapia. La reparacin, correccin, terapia o tratamiento consiste en la proposicin de las acciones correctoras necesarias para la resolucin de un problema. Los SE en reparacin tienen que cumplir diversos objetivos, como son: Reparacin lo ms rpida y econmicamente posible. Orden de las reparaciones cuando hay que realizar varias. Evitar los efectos secundarios de la reparacin, es decir la aparicin de nuevas averas por la reparacin.
Simulacin

La simulacin es una tcnica que consistente en crear modelos basados en hechos, observaciones e interpretaciones sobre la computadora, a fin de estudiar el comportamiento de los mismos mediante la observacin de las salidas para un conjunto de entradas. Las tcnicas tradicionales de simulacin requieren modelos matemticos y lgicos, que describen el comportamiento del sistema bajo estudio. El empleo de los SE para la simulacin viene motivado por la principal caracterstica de los SE, que es su capacidad para la simulacin del razonamiento de un experto humano, que es un proceso complejo. En la aplicacin de los SE para simulacin diferenciar cinco configuraciones posibles: hay que

1. Un SE puede disponer de un simulador con el fin de comprobar las soluciones y en su caso rectificar el proceso que sigue. 2. Un sistema de simulacin puede contener como parte del mismo a un SE y por lo tanto el SE no tiene que ser necesariamente de simulacin. 3. Un SE puede controlar un proceso de simulacin, es decir que el modelo est en la base de conocimiento del SE y su evolucin es funcin de la base de hechos, la base de conocimientos y el motor de inferencia, y no de un conjunto de ecuaciones aritmtico lgicas.

106

4. Un SE puede utilizarse como consejero del usuario y del sistema de simulacin. 5. Un SE puede utilizarse como mscara o sistema frontal de un simulador con el fin de que el usuario reciba explicacin y justificacin de los procesos. Instruccin

Un sistema de instruccin realizara un seguimiento del proceso de aprendizaje. El sistema detecta errores ya sea de una persona con conocimientos e identifica el remedio adecuado, es decir, desarrolla un plan de enseanza que facilita el proceso de aprendizaje y la correccin de errores.
Recuperacin de informacin

Los Sistemas Expertos, con su capacidad para combinar informacin y reglas de actuacin, han sido vistos como una de las posibles soluciones al tratamiento y recuperacin de informacin, no slo documental. La dcada de 1980 fue prolija en investigacin y publicaciones sobre experimentos de este orden, inters que continua en la actualidad. Lo que diferencia a estos sistemas de un sistema tradicional de recuperacin de informacin es que stos ltimos slo son capaces de recuperar lo que existe explcitamente, mientras que un Sistema Experto debe ser capaz de generar informacin no explcita, razonando con los elementos que se le dan. Pero la capacidad de los SE en el mbito de la recuperacin de la informacin no se limita a la recuperacin. Pueden utilizarse para ayudar al usuario, en seleccin de recursos de informacin, en filtrado de respuestas, etc. Un SE puede actuar como un intermediario inteligente que gua y apoya el trabajo del usuario final.
Programa 7: Sistemas, Informtica y Sociedad P7.1 Gestin del Comercio P7.2 Redes Sociales

Las redes sociales son estructuras sociales compuestas de grupos de personas, las cuales estn conectadas por uno o varios tipos de relaciones, tales como amistad, parentesco, intereses comunes o que comparten conocimientos. El anlisis de redes sociales estudia esta estructura social aplicando la Teora de Grafos e identificando las entidades como "nodos" o "vrtices" y las relaciones como "enlaces" o "aristas". La estructura del grafo resultante es a menudo muy compleja. Como se ha dicho, puede haber muchos tipos de lazos entre los nodos. La investigacin multidisciplinar ha

107

mostrado que las redes sociales operan en muchos niveles, desde las relaciones de parentesco hasta las relaciones de organizaciones a nivel estatal (se habla en este caso de Redes polticas), desempeando un papel crtico en la determinacin de la agenda poltica y el grado en el cual los individuos o las organizaciones alcanzan sus objetivos o reciben influencias. En su forma ms simple, una red social es un mapa de todos los lazos relevantes entre todos los nodos estudiados. Se habla en este caso de redes "sociocntricas" o "completas". Otra opcin es identificar la red que envuelve a una persona (en los diferentes contextos sociales en los que interacta); en este caso se habla de "red personal". La red social tambin puede ser utilizada para medir el capital social (es decir, el valor que un individuo obtiene de los recursos accesibles a travs de su red social). Estos conceptos se muestran, a menudo, en un diagrama donde los nodos son puntos y los lazos, lneas. Red social tambin se suele referir a las plataformas en Internet. Las redes sociales de internet cuyo propsito es facilitar la comunicacin y otros temas sociales en el sitio web.

Anlisis de redes sociales

108

Ejemplo de un diagrama de una red social. El nodo con la ms alta intermediacin centralidad est marcado en amarillo.

El Anlisis de redes sociales (relacionado con la teora de redes) ha emergido como una metodologa clave en las modernas Ciencias Sociales, entre las que se incluyen la sociologa, la antropologa, la psicologa social, la economa, la geografa, las Ciencias polticas, la cienciometra, los estudios de comunicacin, estudios organizacionales y la sociolingstica. Tambin ha ganado un apoyo significativo en la fsica y la biologa entre otras. En el lenguaje cotidiano se ha utilizado libremente la idea de "red social" durante ms de un siglo para denotar conjuntos complejos de relaciones entre miembros de los sistemas sociales en todas las dimensiones, desde el mbito interpersonal hasta el internacional. En 1954, el antroplogo de la Escuela de Manchester J. A. Barnes comenz a utilizar sistemticamente el trmino para mostrar patrones de lazos, abarcando los conceptos tradicionalmente utilizados por los cientficos sociales: grupos delimitados (p.e., tribus, familias) y categoras sociales (p.e., gnero, etnia). Acadmicos como S.D. Berkowitz, Stephen Borgatti, Ronald Burt, Kathleen Carley, Martin Everett, Katherine Faust, Linton Freeman, Mark Granovetter, David Knoke, David Krackhardt, Peter Marsden, Nicholas Mullins, Anatol Rapoport, Stanley Wasserman, Barry Wellman, Douglas R. White y Harrison White expandieron el uso del anlisis de redes sociales sistemtico.1 El anlisis de redes sociales ha pasado de ser una metfora sugerente para constituirse en un enfoque analtico y un paradigma, con sus principios tericos, mtodos de software para anlisis de redes sociales y lneas de investigacin propios. Los analistas estudian la influencia del todo en las partes y viceversa, el efecto producido por la accin selectiva de los individuos en la red; desde la estructura hasta la relacin y el individuo, desde el comportamiento hasta la actitud. Como se ha dicho estos anlisis se realizan bien en redes completas, donde los lazos son las relaciones especficas en una poblacin definida, o bien en redes personales (tambin conocidas como redes egocntricas, aunque no son exactamente equiparables), donde se estudian "comunidades personales".2 La distincin entre redes totales/completas y redes personales/egocntricas depende mucho ms de la capacidad del analista para recopilar los datos y la informacin. Es decir, para grupos tales como empresas, escuelas o sociedades con membreca, el analista

109

espera tener informacin completa sobre quien est en la red, siendo todos los participantes egos y alteri potenciales. Los estudios personales/egocntricos son conducidos generalmente cuando las identidades o egos se conocen, pero no sus alteri. Estos estudios permiten a los egos aportar informacin sobre la identidad de sus alteri y no hay la expectativa de que los distintos egos o conjuntos de alteri estn vinculados con cada uno de los otros.

Otra representacin esquemtica de una red social.

Una red construida a partir de una bola de nieve se refiere a la idea de que los alteri son identificados en una encuesta por un conjunto de Egos iniciales (oleada cero) y estos mismos alteri se convierten en egos en la oleada 1 y nombran a otros alteri adicionales y as sucesivamente hasta que el porcentaje de alteri nuevos empieza a disminuir. Aunque hay varios lmites logsticos en la conduccin de estudios de bola de nieve, hay desarrollo recientes para examinar redes hbridas, segn el cual egos en redes completas pueden nombrar a alteri que de otro modo no estaran identificados, posibilitando que stos sean visibles para todos los egos de la red.3 La red hbrida, puede ser valiosa para examinar redes totales/completas sobre las que hay la expectativa de incluir actores importantes ms all de los identificados formalmente. Por ejemplo, los empleados de una compaa a menudo trabajan con consultores externos que son parte de una red que no pueden definir totalmente antes de la recoleccin de datos. En el anlisis de redes tendencias analticas:4 sociales, se distinguen varias

No se parte de la hiptesis de que los grupos son los bloques en la sociedad: el enfoque est abierto a estudiar sistemas sociales menos definidos, desde comunidades no locales, hasta enlaces a travs de websites. En lugar de tratar a los individuos (personas, organizaciones, estados) como unidades discretas de anlisis,

110

se centra en cmo la estructura de las relaciones afecta a los individuos y sus relaciones. En contraste con los anlisis que asumen que la socializacin de las normas determina el comportamiento, el anlisis de redes se utiliza para observar el grado en que la estructura y composicin de las relaciones entre los individuos afectan a las normas.

La forma de una red social ayuda a determinar la utilidad de la red para sus individuos. Las redes ms pequeas y ms estrictas, pueden ser menos tiles para sus miembros que las redes con una gran cantidad de conexiones sueltas (vnculo dbil) con personas fuera de la red principal. Las redes ms abiertas, con muchos vnculos y relaciones sociales dbiles, tienen ms probabilidades de presentar nuevas ideas y oportunidades a sus miembros que las redes cerradas con muchos lazos redundantes. En otras palabras, un grupo de amigos que slo hacen cosas unos con otros ya comparten los mismos conocimientos y oportunidades. Un grupo de individuos con conexiones a otros mundos sociales es probable que tengan acceso a una gama ms amplia de informacin. Es mejor para el xito individual tener conexiones con una variedad de redes en lugar de muchas conexiones en una sola red. Del mismo modo, los individuos pueden ejercer influencia o actuar como intermediadores en sus redes sociales, de puente entre dos redes que no estn directamente relacionadas (conocido como llenar huecos estructurales).5 El poder de anlisis de redes sociales estriba en su diferencia de los estudios tradicionales en las Ciencias Sociales, que asumen que los atributos de cada uno de los actores -ya sean amistosos o poco amistosos, inteligentes o tontos, etc- es lo que importa. El anlisis de redes sociales produce una visin a la vez alternativa y complementaria, en la cual los atributos de los individuos son menos importantes que sus relaciones y sus vnculos con otros actores dentro de la red. Este enfoque ha resultado ser til para explicar muchos fenmenos del mundo real, pero deja menos espacio para la accin individual y la capacidad de las personas para influir en su xito, ya que gran parte se basa en la estructura de su red. Las redes sociales tambin se han utilizado para examinar cmo las organizaciones interactan unas con otras, caracterizando las mltiples conexiones informales que vinculan a los ejecutivos entre si, as como las asociaciones y conexiones entre los empleados de diferentes

111

organizaciones. Por ejemplo, el poder dentro de las organizaciones, a menudo proviene ms del grado en que un individuo dentro de una red se encuentra en el centro de muchas relaciones, que de su puesto de trabajo real. Las redes sociales tambin juegan un papel clave en la contratacin, en el xito comercial y en el desempeo laboral. Las redes son formas en las cuales las empresas recopilan informacin, desalientan la competencia, y connivencia en la fijacin de precios o polticas.

Redes sociales en Internet


El software germinal de las redes sociales parte de la teora de los Seis grados de separacin, segn la cual toda la gente del planeta est conectada a travs de no ms de seis personas. De hecho, existe una patente en EEUU conocida como six degrees patent por la que ya han pagado Tribe y LinkedIn. Hay otras muchas patentes que protegen la tecnologa para automatizar la creacin de redes y las aplicaciones relacionadas con stas. Estas redes sociales se basan en la teora de los seis grados, Seis grados de separacin es la teora de que cualquiera en la Tierra puede estar conectado a cualquier otra persona en el planeta a travs de una cadena de conocidos que no tiene ms de seis intermediarios. La teora fue inicialmente propuesta en 1929 por el escritor hngaro Frigyes Karinthy en una corta historia llamada Chains. El concepto est basado en la idea que el nmero de conocidos crece exponencialmente con el nmero de enlaces en la cadena, y slo un pequeo nmero de enlaces son necesarios para que el conjunto de conocidos se convierta en la poblacin humana entera. El trmino red social es acuado principalmente a los antroplogos ingleses John Barnes y Elizabeth Bott, ya que, para ellos resultaba imprescindible cosiderar lazos externos a los famliares, residenciales o de pertenencia a algn grupo social.19 Los fines que han motivado la creacin de las llamadas redes sociales son varios, principalmente, es el disear un lugar de interaccin virtual, en el que millones de personas alrededor del mundo se concentran con diversos intereses en comn. Recogida tambin en el libro "Six Degrees: The Science of a Connected Age del socilogo Duncan Watts, y que asegura que es posible acceder a cualquier persona del planeta en tan solo seis saltos.

112

Segn esta Teora, cada persona conoce de media, entre amigos, familiares y compaeros de trabajo o escuela, a unas 100 personas. Si cada uno de esos amigos o conocidos cercanos se relaciona con otras 100 personas, cualquier individuo puede pasar un recado a 10.000 personas ms tan solo pidiendo a un amigo que pase el mensaje a sus amigos. Estos 10.000 individuos seran contactos de segundo nivel, que un individuo no conoce pero que puede conocer fcilmente pidiendo a sus amigos y familiares que se los presenten, y a los que se suele recurrir para ocupar un puesto de trabajo o realizar una compra. Cuando preguntamos a alguien, por ejemplo, si conoce una secretaria interesada en trabajar estamos tirando de estas redes sociales informales que hacen funcionar nuestra sociedad. Este argumento supone que los 100 amigos de cada persona no son amigos comunes. En la prctica, esto significa que el nmero de contactos de segundo nivel ser sustancialmente menor a 10.000 debido a que es muy usual tener amigos comunes en las redes sociales. Si esos 10.000 conocen a otros 100, la red ya se ampliara a 1.000.000 de personas conectadas en un tercer nivel, a 100.000.000 en un cuarto nivel, a 10.000.000.000 en un quinto nivel y a 1.000.000.000.000 en un sexto nivel. En seis pasos, y con las tecnologas disponibles, se podra enviar un mensaje a cualquier lugar individuo del planeta. Evidentemente cuanto ms pasos haya que dar, ms lejana ser la conexin entre dos individuos y ms difcil la comunicacin. Internet, sin embargo, ha eliminado algunas de esas barreras creando verdaderas redes sociales mundiales, especialmente en segmento concreto de profesionales, artistas, etc. En la dcada de los 50, Ithiel de Sola Pool (MIT) y Manfred Kochen (IBM) se propusieron demostrar la teora matemticamente. Aunque eran capaces de enunciar la cuestin "dado un conjunto de N personas, cual es la probabilidad de que cada miembro de estos N estn conectados con otro miembro va k1, k2, k3,..., kn enlaces?", despus de veinte aos todava eran incapaces de resolver el problema a su propia satisfaccin. En 1967, el psiclogo estadounidense Stanley Milgram ide una nueva manera de probar la Teora, que l llam "el problema del pequeo mundo". El experimento del mundo pequeo de Milgram consisti en la seleccin al azar de varias personas del medio oeste estadounidense para que enviaran tarjetas postales a un extrao situado en Massachusetts, situado a varios miles de millas de distancia. Los remitentes conocan

113

el nombre del destinatario, su ocupacin y la localizacin aproximada. Se les indic que enviaran el paquete a una persona que ellos conocieran directamente y que pensaran que fuera la que ms probabilidades tendra, de todos sus amigos, de conocer directamente al destinatario. Esta persona tendra que hacer lo mismo y as sucesivamente hasta que el paquete fuera entregado personalmente a su destinatario final. Aunque los participantes esperaban que la cadena incluyera al menos cientos de intermediarios, la entrega de cada paquete solamente llev, como promedio, entre cinco y siete intermediarios. Los descubrimientos de Milgram fueron publicados en "Psychology Today" e inspiraron la frase seis grados de separacin. En The social software weblog han agrupado 120 sitios web en 10 categoras y QuickBase tambin ha elaborado un completo cuadro sobre redes sociales en Internet. El origen de las redes sociales se remonta, al menos, a 1995, cuando Randy Conrads crea el sitio web classmates.com. Con esta red social se pretende que la gente pueda recuperar o mantener el contacto con antiguos compaeros del colegio, instituto, universidad, etctera. En 2002 comienzan a aparecer sitios web promocionando las redes de crculos de amigos en lnea cuando el trmino se empleaba para describir las relaciones en las comunidades virtuales, y se hizo popular en 2003 con la llegada de sitios tales como MySpace o Xing. Hay ms de 200 sitios de redes sociales, aunque Friendster ha sido uno de los que mejor ha sabido emplear la tcnica del crculo de amigos[cita requerida]. La popularidad de estos sitios creci rpidamente y grandes compaas han entrado en el espacio de las redes sociales en Internet. Por ejemplo, Google lanz Orkut el 22 de enero de 2004. Otros buscadores como KaZaZZ! y Yahoo crearon redes sociales en 2005. En estas comunidades, un nmero inicial de participantes envan mensajes a miembros de su propia red social invitndoles a unirse al sitio. Los nuevos participantes repiten el proceso, creciendo el nmero total de miembros y los enlaces de la red. Los sitios ofrecen caractersticas como actualizacin automtica de la libreta de direcciones, perfiles visibles, la capacidad de crear nuevos enlaces mediante servicios de presentacin y otras maneras de conexin social en lnea. Las redes sociales tambin pueden crearse en torno a las relaciones comerciales.

114

Las herramientas informticas para potenciar la eficacia de las redes sociales online (software social), operan en tres mbitos, las 3Cs, de forma cruzada:

Comunicacin (nos ayudan a poner en comn conocimientos). Comunidad (nos ayudan a encontrar e integrar comunidades). Cooperacin (nos ayudan a hacer cosas juntos).

El establecimiento combinado de contactos (blended networking) es una aproximacin a la red social que combina elementos en lnea y del mundo real para crear una mezcla. Una red social de personas es combinada si se establece mediante eventos cara a cara y una comunidad en lnea. Los dos elementos de la mezcla se complementan el uno al otro. Vea tambin computacin social. Las redes sociales continan avanzando en Internet a pasos agigantados, especialmente dentro de lo que se ha denominado Web 2.0 y Web 3.0, y dentro de ellas, cabe destacar un nuevo fenmeno que pretende ayudar al usuario en sus compras en Internet: las redes sociales de compras. Las redes sociales de compras tratan de convertirse en un lugar de consulta y compra. Un espacio en el que los usuarios pueden consultar todas las dudas que tienen sobre los productos en los que estn interesados, leer opiniones y escribirlas, votar a sus productos favoritos, conocer gente con sus mismas aficiones y, por supuesto, comprar ese producto en las tiendas ms importantes con un solo clic. Esta tendencia tiene nombre, se llama Shopping 2.0.

Tipologa de redes sociales en Internet


No hay unanimidad entre los autores a la hora de proponer una tipologa concreta. En algunos sitios se aplica la misma tipologa que en su da se utiliz para los portales, dividirlos en horizontales y verticales:

Horizontales: buscan proveer herramientas para la interrelacin en general: Facebook, Google+, Hi5, Bebbo . Verticales por tipo de usuario: dirigidos a un pblico especfico, por ejemplo, profesionales Linkedin, amantes de los gatos MyCatSpace, etc Verticales por tipo de actividad: los que promueven una actividad particular. Videos YouTube, Microbloggin Twitter, compras, etc.

Mtricas (Medidas) en anlisis de redes sociales


Intermediacin

115

La medida en que un nodo se encuentra entre los dems nodos en una red. Esta medida toma en cuenta la conectividad de los vecinos del nodo, dando un mayor valor a los nodos que conectan a grupos. La medida refleja el nmero de personas que una persona conecta indirectamente a travs de sus vnculos directos.20 Conector Un lazo puede ser llamado conector si su eliminacin causa que los puntos que conecta se transformen en componentes distintos de un grafo. Centralidad Esta medida da una idea aproximada del poder social de un nodo basndose en lo bien que se "conecte" ste a la red. "Intermediacin", "Cercana", y "Grado" son todas medidas de centralidad. Centralizacin La diferencia entre el nmero de enlaces para cada nodo, dividido entre la cantidad mxima posible de diferencias. Una red centralizada tendr muchos de sus vnculos dispersos alrededor de uno o unos cuantos puntos nodales, mientras que una red descentralizada es aquella en la que hay poca variacin entre el nmero de enlaces de cada nodo posee. Cercana El grado en que un persona est cerca de todas las dems en una red (directa o indirectamente). Refleja la capacidad de acceder a la informacin a travs de la "red de chismes" de los miembros de la red. As, la cercana es la inversa de la suma de las distancias ms cortas entre cada individuo y cada una de las otras personas en la red. (Vase tambin: Proxemics). El camino ms corto tambin es conocido como la "distancia geodsica". Coeficiente de agrupamiento Una medida de la probabilidad de que dos personas vinculadas a un nodo se asocien a s mismos. Un coeficiente de agrupacin ms alto indica un mayor exclusivismo. Cohesin

116

El grado en que los actores se conectan directamente entre s por vnculos cohesivos. Los grupos se identifican como cliques si cada individuo est vinculado directamente con con cada uno de los otros, crculos sociales si hay menos rigor en el contacto directo y este es inmpreciso, o bloques de cohesin estructural si se requiere la precisin.21 Grado El recuento del nmero de vnculos con otros actores en la red. Vase tambin grado (teora de grafos). (Nivel individual) Densidad El grado de relaciones de un demandado de conocerse unos a otros / proporcin de lazos entre las mencione de un individuo. La densidad de la red, o densidad global, es la proporcin de vnculos en una red en relacin con el total de vnculos posibles (redes escasas versus densas) Flujo de centralidad de intermediacin El grado en que un nodo contribuye a la suma del flujo mximo entre todos los pares de noso (excluyendo ese nodo). Centralidad de Eigenvector (Autovector) Una medida de la importancia de un nodo en una red. Asigna puntuaciones relativas a todos los nodos de la red basadas en el principio de que las conexiones a los nodos que tienen una puntuacin ms alta, contribuyen ms a la puntuacin del nodo en cuestin.

P7.3 Seguridad y Auditoria Informtica Seguridad La seguridad informtica es el rea de la informtica que se enfoca en la proteccin de la infraestructura computacional y todo lo relacionado con esta (incluyendo la informacin contenida). Para ello existen una serie de estndares, protocolos, mtodos, reglas, herramientas y leyes concebidas para minimizar los posibles riesgos a la infraestructura o a la informacin. La seguridad informtica comprende software, bases de datos, metadatos, archivos y todo lo que la organizacin valore (activo) y signifique un riesgo si sta llega a manos de otras personas. Este tipo de informacin se conoce como informacin privilegiada o confidencial.

117

El concepto de seguridad de la informacin no debe ser confundido con el de seguridad informtica, ya que este ltimo slo se encarga de la seguridad en el medio informtico, pudiendo encontrar informacin en diferentes medios o formas. Objetivos de la seguridad informtica La seguridad informtica est concebida para proteger los activos informticos, entre los que se encuentran:

La informacin contenida Se ha convertido en uno de los elementos ms importantes dentro de una organizacin. La seguridad informtica debe ser administrada segn los criterios establecidos por los administradores y supervisores, evitando que usuarios externos y no autorizados puedan acceder a ella sin autorizacin. De lo contrario la organizacin corre el riesgo de que la informacin sea utilizada maliciosamente para obtener ventajas de ella o que sea manipulada, ocasionando lecturas erradas o incompletas de la misma. Otra funcin de la seguridad informtica en esta rea es la de asegurar el acceso a la informacin en el momento oportuno, incluyendo respaldos de la misma en caso de que esta sufra daos o prdida producto de accidentes, atentados o desastres. La infraestructura computacional Una parte fundamental para el almacenamiento y gestin de la informacin, as como para el funcionamiento mismo de la organizacin. La funcin de la seguridad informtica en esta rea es velar que los equipos funcionen adecuadamente y prever en caso de falla planes de robos, incendios, boicot, desastres naturales, fallas en el suministro elctrico y cualquier otro factor que atente contra la infraestructura informtica. Los usuarios Son las personas que utilizan la estructura tecnolgica, zona de comunicaciones y que gestionan la informacin. La seguridad informtica debe establecer normas que minimicen los riesgos a la informacin o infraestructura informtica. Estas normas incluyen horarios de funcionamiento, restricciones a ciertos lugares, autorizaciones, denegaciones, perfiles de usuario, planes de emergencia, protocolos y todo lo necesario que permita un buen nivel de seguridad informtica minimizando el impacto en el desempeo de los funcionarios y de la organizacin en general y como principal contribuyente al uso de programas realizados por programadores.

118

Las amenazas Una vez que la programacin y el funcionamiento de un dispositivo de almacenamiento (o transmisin) de la informacin se consideran seguras, todava deben ser tenidos en cuenta las circunstancias "no informticas" que pueden afectar a los datos, las cuales son a menudo imprevisibles o inevitables, de modo que la nica proteccin posible es la redundancia (en el caso de los datos) y la descentralizacin -por ejemplo mediante estructura de redes(en el caso de las comunicaciones). Estos fenmenos pueden ser causados por:

El usuario: causa del mayor problema ligado a la seguridad de un sistema informtico (porque no le importa, no se da cuenta o a propsito). Programas maliciosos: programas destinados a perjudicar o a hacer un uso ilcito de los recursos del sistema. Es instalado (por inatencin o maldad) en el ordenador abriendo una puerta a intrusos o bien modificando los datos. Estos programas pueden ser un virus informtico, un gusano informtico, un troyano, una bomba lgica o un programa espa o Spyware. Un intruso: persona que consigue acceder a los datos o programas de los cuales no tiene acceso permitido (cracker, defacer, script kiddie o Script boy, viruxer, etc.). Un siniestro (robo, incendio, inundacin): una mala manipulacin o una malintencin derivan a la prdida del material o de los archivos. El personal interno de Sistemas. Las pujas de poder que llevan a disociaciones entre los sectores y soluciones incompatibles para la seguridad informtica.

Tipos de amenaza El hecho de conectar una red a un entorno externo nos da la posibilidad de que algn atacante pueda entrar en ella, con esto, se puede hacer robo de informacin o alterar el funcionamiento de la red. Sin embargo el hecho de que la red no sea conectada a un entorno externo no nos garantiza la seguridad de la misma. De acuerdo con el Computer Security Institute (CSI) de San Francisco aproximadamente entre 60 y 80 por ciento de los incidentes de red son causados desde adentro de la misma. Basado en esto podemos decir que existen 2 tipos de amenazas:

Amenazas internas: Generalmente estas amenazas pueden ser ms serias que las externas por varias razones como son:

-Los usuarios conocen la red y saben cmo es su funcionamiento. -Tienen algn nivel de acceso a la red por las mismas necesidades de su trabajo.

119

-Los IPS y internas.

Firewalls

son

mecanismos

no

efectivos

en

amenazas

Esta situacin se presenta gracias a los esquemas ineficientes de seguridad con los que cuentan la mayora de las compaas a nivel mundial, y porque no existe conocimiento relacionado con la planeacin de un esquema de seguridad eficiente que proteja los recursos informticos de las actuales amenazas combinadas. El resultado es la violacin de los sistemas, provocando la prdida o modificacin de los datos sensibles de la organizacin, lo que puede representar un dao con valor de miles o millones de dlares.

Amenazas externas: Son aquellas amenazas que se originan fuera de la red. Al no tener informacin certera de la red, un atacante tiene que realizar ciertos pasos para poder conocer qu es lo que hay en ella y buscar la manera de atacarla. La ventaja que se tiene en este caso es que el administrador de la red puede prevenir una buena parte de los ataques externos.

La amenaza informtica del futuro Si en un momento el objetivo de los ataques fue cambiar las plataformas tecnolgicas ahora las tendencias cibercriminales indican que la nueva modalidad es manipular los significados de la informacin digital. El rea semntica, era reservada para los humanos, se convirti ahora en el ncleo de los ataques debido a la evolucin de la Web 2.0 y las redes sociales, factores que llevaron al nacimiento de la generacin 3.0.

Se puede afirmar que la Web 3.0 otorga contenidos y significados de manera tal que pueden ser comprendidos por las computadoras, las cuales -por medio de tcnicas de inteligencia artificial- son capaces de emular y mejorar la obtencin de conocimiento, hasta el momento reservada a las personas. Es decir, se trata de dotar de significado a las pginas Web, y de ah el nombre de Web semntica o Sociedad del Conocimiento, como evolucin de la ya pasada Sociedad de la Informacin

En este sentido, las amenazas informticas que viene en el futuro ya no son con la inclusin de troyanos en los sistemas o softwares espas, sino con el hecho de que los ataques se han profesionalizado y manipulan el significado del contenido virtual.

La Web 3.0, basada en conceptos como elaborar, compartir y significar, est representando un desafo para los hackers que ya no utilizan las plataformas convencionales de ataque, sino que optan por modificar los significados del contenido

120

digital, provocando as la confusin lgica del usuario y permitiendo de este modo la intrusin en los sistemas, La amenaza ya no solicita la clave de homebanking del desprevenido usuario, sino que directamente modifica el balance de la cuenta, asustando al internauta y, a partir de all, s efectuar el robo del capital. Para no ser presa de esta nueva ola de ataques ms sutiles, Se recomienda:

Mantener las soluciones activadas y actualizadas. Evitar realizar operaciones comerciales en computadoras de uso pblico. Verificar los archivos adjuntos de mensajes sospechosos y evitar su descarga en caso de duda.

Tipos de Virus Los virus se pueden clasificar de la siguiente forma: Virus residentes La caracterstica principal de estos virus es que se ocultan en la memoria RAM de forma permanente o residente. De este modo, pueden controlar e interceptar todas las operaciones llevadas a cabo por el sistema operativo, infectando todos aquellos ficheros y/o programas que sean ejecutados, abiertos, cerrados, renombrados, copiados. Algunos ejemplos de este tipo de virus son: Randex, CMJ, Meve, MrKlunky. Virus de accin directa Al contrario que los residentes, estos virus no permanecen en memoria. Por tanto, su objetivo prioritario es reproducirse y actuar en el mismo momento de ser ejecutados. Al cumplirse una determinada condicin, se activan y buscan los ficheros ubicados dentro de su mismo directorio para contagiarlos. Virus de sobreescritura Estos virus se caracterizan por destruir la informacin contenida en los ficheros que infectan. Cuando infectan un fichero, escriben dentro de su contenido, haciendo que queden total o parcialmente inservibles. Virus de boot(bot_kill) o de arranque Los trminos boot o sector de arranque hacen referencia a una seccin muy importante de un disco (tanto un disquete como un disco duro respectivamente). En ella se guarda la informacin esencial sobre las caractersticas del disco y se encuentra un programa que permite arrancar el ordenador. Este tipo de virus no infecta ficheros, sino los discos que los contienen. Actan infectando en primer lugar el sector de arranque de los disquetes. Cuando un ordenador se pone en marcha con un disquete infectado, el virus de boot infectar a su vez el disco duro.

121

Los virus de boot no pueden afectar al ordenador mientras no se intente poner en marcha a ste ltimo con un disco infectado. Por tanto, el mejor modo de defenderse contra ellos es proteger los disquetes contra escritura y no arrancar nunca el ordenador con un disquete desconocido en la disquetera. Algunos ejemplos de este tipo de virus son: Polyboot.B, AntiEXE. Virus de enlace o directorio Los ficheros se ubican en determinadas direcciones (compuestas bsicamente por unidad de disco y directorio), que el sistema operativo conoce para poder localizarlos y trabajar con ellos. Virus cifrados Ms que un tipo de virus, se trata de una tcnica utilizada por algunos de ellos, que a su vez pueden pertenecer a otras clasificaciones. Estos virus se cifran a s mismos para no ser detectados por los programas antivirus. Para realizar sus actividades, el virus se descifra a s mismo y, cuando ha finalizado, se vuelve a cifrar. Virus polimrficos Son virus que en cada infeccin que realizan se cifran de una forma distinta (utilizando diferentes algoritmos y claves de cifrado). De esta forma, generan una elevada cantidad de copias de s mismos e impiden que los antivirus los localicen a travs de la bsqueda de cadenas o firmas, por lo que suelen ser los virus ms costosos de detectar. Virus multipartites Virus muy avanzados, que pueden realizar mltiples infecciones, combinando diferentes tcnicas para ello. Su objetivo es cualquier elemento que pueda ser infectado: archivos, programas, macros, discos, etc. Virus del Fichero Infectan programas o ficheros ejecutables (ficheros con extensiones EXE y COM). Al ejecutarse el programa infectado, el virus se activa, produciendo diferentes efectos. Virus de FAT La Tabla de Asignacin de Ficheros o FAT es la seccin de un disco utilizada para enlazar la informacin contenida en ste. Se trata de un elemento fundamental en el sistema. Los virus que atacan a este elemento son especialmente peligrosos, ya que impedirn el acceso a ciertas partes del disco, donde se almacenan los ficheros crticos para el normal funcionamiento del ordenador. Anlisis de riesgos El activo ms importante que se posee es la informacin y, por lo tanto, deben existir tcnicas que la aseguren, ms all de la seguridad fsica que se establezca sobre los equipos en los cuales

122

se almacena. Estas tcnicas las brinda la seguridad lgica que consiste en la aplicacin de barreras y procedimientos que resguardan el acceso a los datos y slo permiten acceder a ellos a las personas autorizadas para hacerlo. Existe un viejo dicho en la seguridad informtica que dicta: "lo que no est permitido debe estar prohibido" y sta debe ser la meta perseguida. Los medios para conseguirlo son: 1. Restringir el acceso (de personas de la organizacin y de las que no lo son) a los programas y archivos. 2. Asegurar que los operadores puedan trabajar pero que no puedan modificar los programas ni los archivos que no correspondan (sin una supervisin minuciosa). 3. Asegurar que se utilicen los datos, archivos y programas correctos en/y/por el procedimiento elegido. 4. Asegurar que la informacin transmitida sea la misma que reciba el destinatario al cual se ha enviado y que no le llegue a otro. 5. Asegurar que existan sistemas y pasos de emergencia alternativos de transmisin entre diferentes puntos. 6. Organizar a cada uno de los empleados por jerarqua informtica, con claves distintas y permisos bien establecidos, en todos y cada uno de los sistemas o aplicaciones empleadas. 7. Actualizar constantemente las contraseas de accesos a los sistemas de cmputo. Elementos de un anlisis de riesgo Cuando se pretende disear una tcnica anlisis de riesgo informtico se pueden puntos como referencia a seguir:

para implementar un tomar los siguientes

Planes para reducir los riesgos.

Anlisis de impacto al negocio El reto es asignar estratgicamente los recursos para equipo de seguridad y bienes que intervengan, basndose en el impacto potencial para el negocio, respecto a los diversos incidentes que se deben resolver. Para determinar el establecimiento de prioridades, el sistema de gestin de incidentes necesita saber el valor de los sistemas de informacin que pueden ser potencialmente afectados por incidentes de seguridad. Esto puede implicar que alguien dentro de la organizacin asigne un valor monetario a cada equipo y un archivo en la red o asignar un valor relativo a cada sistema y la informacin sobre ella. Dentro de los Valores para el sistema se pueden distinguir: Confidencialidad de la informacin, la Integridad (aplicaciones e informacin) y finalmente la Disponibilidad del sistema. Cada uno de estos valores es un sistema independiente del negocio, supongamos el siguiente

123

ejemplo, un servidor Web pblico pueden poseer los requisitos de confidencialidad de baja (ya que toda la informacin es pblica),pero de alta disponibilidad y los requisitos de integridad. En contraste, un sistema de planificacin de recursos empresariales (ERP), sistema puede poseer alto puntaje en los tres variables. Los incidentes individuales pueden variar ampliamente en trminos de alcance e importancia. Puesta en marcha de una poltica de seguridad Actualmente las legislaciones nacionales de los Estados, obligan a las empresas, instituciones pblicas a implantar una poltica de seguridad. Ej: En Espaa la Ley Orgnica de Proteccin de Datos o tambin llamada LOPD y su normativa de desarrollo. Generalmente se ocupa exclusivamente a asegurar los derechos de acceso a los datos y recursos con las herramientas de control y mecanismos de identificacin. Estos mecanismos permiten saber que los operadores tienen slo los permisos que se les dio. La seguridad informtica debe ser estudiada para que no impida el trabajo de los operadores en lo que les es necesario y que puedan utilizar el sistema informtico con toda confianza. Por eso en lo referente a elaborar una poltica de seguridad, conviene:

Elaborar reglas y procedimientos para cada servicio de la organizacin. Definir las acciones a emprender y elegir las personas a contactar en caso de detectar una posible intrusin Sensibilizar a los operadores con los problemas ligados con la seguridad de los sistemas informticos.

Los derechos de acceso de los operadores deben ser definidos por los responsables jerrquicos y no por los administradores informticos, los cuales tienen que conseguir que los recursos y derechos de acceso sean coherentes con la poltica de seguridad definida. Adems, como el administrador suele ser el nico en conocer perfectamente el sistema, tiene que derivar a la directiva cualquier problema e informacin relevante sobre la seguridad, y eventualmente aconsejar estrategias a poner en marcha, as como ser el punto de entrada de la comunicacin a los trabajadores sobre problemas y recomendaciones en trmino de seguridad informtica. Tcnicas para asegurar el sistema

Codificar la informacin: Criptologa, Criptografa y Criptociencia, contraseas difciles de averiguar a partir de datos personales del individuo. Vigilancia de red. Zona desmilitarizada Tecnologas repelentes o protectoras: cortafuegos, sistema de deteccin de intrusos - antispyware, antivirus, llaves para proteccin de software, etc. Mantener los sistemas de

124

informacin con las actualizaciones que ms impacten en la seguridad. Sistema de Respaldo Remoto. Servicio de backup remoto

Respaldo de Informacin La informacin constituye el activo ms importante de las empresas, pudiendo verse afectada por muchos factores tales como robos, incendios, fallas de disco, virus u otros. Desde el punto de vista de la empresa, uno de los problemas ms importantes que debe resolver es la proteccin permanente de su informacin crtica. La medida ms eficiente para la proteccin de los datos es determinar una buena poltica de copias de seguridad o backups: Este debe incluir copias de seguridad completa (los datos son almacenados en su totalidad la primera vez) y copias de seguridad incrementales (slo se copian los ficheros creados o modificados desde el ltimo backup). Es vital para las empresas elaborar un plan de backup en funcin del volumen de informacin generada y la cantidad de equipos crticos. Un buen sistema de respaldo caractersticas indispensables:

debe

contar

con

ciertas

Continuo El respaldo de datos debe ser completamente automtico y continuo. Debe funcionar de forma transparente, sin intervenir en las tareas que se encuentra realizando el usuario.

Seguro Muchos softwares de respaldo incluyen cifrado de datos (128448 bits), lo cual debe ser hecho localmente en el equipo antes del envo de la informacin.

Remoto Los datos deben quedar alojados en dependencias alejadas de la empresa.

Mantencin de versiones anteriores de los datos

Se debe contar con un sistema que permita la recuperacin de versiones diarias, semanales y mensuales de los datos. Hoy en da los sistemas de respaldo de informacin online (Servicio de backup remoto) estn ganando terreno en las empresas y organismos gubernamentales. La mayora de los sistemas modernos

125

de respaldo de informacin online cuentan con las mximas medidas de seguridad y disponibilidad de datos. Estos sistemas permiten a las empresas crecer en volumen de informacin sin tener que estar preocupados de aumentar su dotacin fsica de servidores y sistemas de almacenamiento. Organismos oficiales de seguridad informtica Existen organismos oficiales encargados de asegurar servicios de prevencin de riesgos y asistencia a los tratamientos de incidencias, tales como el CERT/CC (Computer Emergency Response Team Coordination Center) del SEI (Software Engineering Institute) de la Carnegie Mellon University el cual es un centro de alerta y reaccin frente a los ataques informticos, destinados a las empresas o administradores, pero generalmente estas informaciones son accesibles a todo el mundo. Auditora informtica De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda La auditora informtica es un proceso llevado a cabo por profesionales especialmente capacitados para el efecto, y que consiste en recoger, agrupar y evaluar evidencias para determinar si un sistema de informacin salvaguarda el activo empresarial, mantiene la integridad de los datos, lleva a cabo eficazmente los fines de la organizacin, utiliza eficientemente los recursos, y cumple con las leyes y regulaciones establecidas. Permiten detectar de forma sistemtica el uso de los recursos y los flujos de informacin dentro de una organizacin y determinar qu informacin es crtica para el cumplimiento de su misin y objetivos, identificando necesidades, duplicidades, costes, valor y barreras, que obstaculizan flujos de informacin eficientes. Auditar consiste principalmente en estudiar los mecanismos de control que estn implantados en una empresa u organizacin, determinando si los mismos son adecuados y cumplen unos determinados objetivos o estrategias, estableciendo los cambios que se deberan realizar para la consecucin de los mismos. Los mecanismos de control pueden ser directivos, preventivos, de deteccin, correctivos o de recuperacin ante una contingencia. Los objetivos de la auditora Informtica son:

El anlisis de la eficiencia de los Sistemas Informticos La verificacin del cumplimiento de la Normativa en este mbito La revisin de la eficaz gestin de los recursos informticos.

126

La auditora informtica sirve caractersticas en la empresa como:


para

mejorar

ciertas

Desempeo Fiabilidad Eficacia Rentabilidad Seguridad Privacidad

Generalmente se puede desarrollar en alguna o combinacin de las siguientes reas:


Gobierno corporativo Administracin del Ciclo de vida de los sistemas Servicios de Entrega y Soporte Proteccin y Seguridad Planes de continuidad y Recuperacin de desastres

La necesidad de contar con lineamientos y herramientas estndar para el ejercicio de la auditora informtica ha promovido la creacin y desarrollo de mejores prcticas como COBIT, COSO e ITIL. Actualmente la certificacin de ISACA para ser CISA Certified Information Systems Auditor es una de las ms reconocidas y avaladas por los estndares internacionales ya que el proceso de seleccin consta de un examen inicial bastante extenso y la necesidad de mantenerse actualizado acumulando horas (puntos) para no perder la certificacin. Tipos de Auditora de Sistemas Dentro de la auditora informtica destacan los siguientes tipos (entre otros):

Auditora de la gestin: la contratacin de bienes y servicios, documentacin de los programas, etc. Auditora legal del Reglamento de Proteccin de Datos: Cumplimiento legal de las medidas de seguridad exigidas por el Reglamento de desarrollo de la Ley Orgnica de Proteccin de Datos. Auditora de los datos: Clasificacin de los datos, estudio de las aplicaciones y anlisis de los flujogramas. Auditora de las bases de datos: Controles de acceso, de actualizacin, de integridad y calidad de los datos. Auditora de la seguridad: Referidos a datos e informacin verificando disponibilidad, integridad, confidencialidad, autenticacin y no repudio. Auditora de la seguridad fsica: Referido a la ubicacin de la organizacin, evitando ubicaciones de riesgo, y en algunos

127

casos no revelando la situacin fsica de esta. Tambin est referida a las protecciones externas (arcos de seguridad, CCTV, vigilantes, etc.) y protecciones del entorno. Auditora de la seguridad lgica: Comprende los mtodos de autenticacin de los sistemas de informacin. Auditora de las comunicaciones. Se refiere a la auditoria de los procesos de autenticacin en los sistemas de comunicacin. Auditora de la seguridad en produccin: Frente a errores, accidentes y fraudes.

la tcnica de la auditora, siendo por tanto aceptables equipos multidisciplinarios formados por titulados en Ingeniera Informtica e Ingeniera Tcnica en Informtica y licenciados en derecho especializados en el mundo de la auditora. Principales pruebas y herramientas para efectuar una auditora informtica En la realizacin de una auditora informtica el auditor puede realizar las siguientes pruebas:

Pruebas sustantivas: Verifican el grado de confiabilidad del SI del organismo. Se suelen obtener mediante observacin, clculos, muestreos, entrevistas, tcnicas de examen analtico, revisiones y conciliaciones. Verifican asimismo la exactitud, integridad y validez de la informacin. Pruebas de cumplimiento: Verifican el grado de cumplimiento de lo revelado mediante el anlisis de la muestra. Proporciona evidencias de que los controles claves existen y que son aplicables efectiva y uniformemente. herramientas de las que dispone un auditor

Las principales informtico son:


Observacin Realizacin de cuestionarios Entrevistas a auditados y no auditados Muestreo estadstico Flujogramas Listas de chequeo Mapas conceptuales

128

You might also like