obtención de la âred socialâ del usuario móvil y su grupo de
Transcription
obtención de la âred socialâ del usuario móvil y su grupo de
OBTENCIÓN DE LA “RED SOCIAL” DEL USUARIO MÓVIL Y SU GRUPO DE “INFLUENCIADORES” A PARTIR DE LA RECUPERACIÓN DE DATOS ALMACENADOS EN LOS SMARTPHONES NESTOR ARMANDO GARCIA CUERVO UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA DEPARTAMENTO DE OPERCIONES Y SISTEMAS PROGRAMA DE INGENIERIA INFORMATICA SANTIAGO DE CALI 2014 OBTENCIÓN DE LA “RED SOCIAL” DEL USUARIO MÓVIL Y SU GRUPO DE “INFLUENCIADORES” A PARTIR DE LA RECUPERACIÓN DE DATOS ALMACENADOS EN LOS SMARTPHONES NESTOR ARMANDO GARCIA CUERVO Proyecto de Grado para optar el título de Ingeniero Informático Director ALEXANDER GARCIA DAVALOS Ingeniero de Sistemas UNIVERSIDAD AUTONOMA DE OCCIDENTE FACULTAD DE INGENIERIA DEPARTAMENTO DE OPERCIONES Y SISTEMAS PROGRAMA DE INGENIERIA INFORMATICA SANTIAGO DE CALI 2014 2 Nota de aceptación: Aprobado por el Comité de Grado en cumplimiento de los requisitos exigidos por la Universidad Autónoma de Occidente para optar al título de Ingeniero Informático ZEIDA MARIA SOLARTE___________ Jurado DIEGO FERNANDO ALMARIO______ Jurado Santiago de Cali, Diciembre de 2014 3 AGRADECIMIENTOS Muchas gracias a mi esposa quien estuvo ahí, apoyándome, día, noche y madrugada, por su amor y comprensión. Agradecimiento especial al señor Jairo Giraldo quien me apoyo laboral y económicamente, fue importante para que éste trabajo se llevara a cabo. Gracias a mis padres y hermanos que permitieron que creciera en una familia integra y siempre me apoyaron en mis estudios. Gracias a los docentes que contribuyeron con su conocimiento y experiencia a mi formación profesional y personal. 4 CONTENIDO pág. RESUMEN 14 INTRODUCCION 15 1 PLANTEAMIENTO DEL PROBLEMA 17 2 JUSTIFICACIÓN 19 3 ANTECEDENTES 20 4. MARCO TEÓRICO 22 4.1 LAS REDES SOCIALES 22 4.2 PROPIEDADES DE LAS REDES SOCIALES 22 4.2.1 Distancia en las redes 23 4.2.2 Coeficiente de agrupamiento 23 4.2.3 Cliques 23 4.2.4 Puentes 23 4.2.5 Camino 24 4.3 CLASIFICACIÓN DE LAS REDES SOCIALES 24 4.3.1 Redes basadas en su tamaño 24 4.3.2 Redes basadas en su evolución 24 4.3.3 Redes basadas en su origen 24 4.3.4 Redes basadas en su topología 25 4.4 REPRESENTACIÓN DE REDES SOCIALES 25 4.5 SISTEMAS PARA EL ANÁLISIS DE REDES SOCIALES 25 4.6 MUESTREO DE REDES SOCIALES 25 4.6.1 Muestreo bola de nieve 26 4.6.2 Muestreo de nodo 26 4.6.3 Muestreo de enlace 26 4.7 LOS INFLUENCIADORES 26 5. MARCO LEGAL 28 5.1 LEY 1581 DE OCT 17 DE 2012 PROTECCIÓN DE DATOS 28 5.2 ARTÍCULO 15 DE LA CONSTITUCIÓN POLÍTICA 29 5.3 ARTÍCULO 20 DE LA CONSTITUCIÓN POLÍTICA 30 5.4 LEY 1273 DE 2009 DELITOS INFORMÁTICOS 30 5.5 OTRAS LEYES 31 6. OBJETIVOS 32 6.1 OBJETIVO GENERAL 32 6.2 OBJETIVOS ESPECÍFICOS 32 7. METODOLOGÍA 33 7.1 INICIO Y EXPLORACIÓN 33 7.2 ELABORACIÓN Y PRODUCTIZACIÓN 33 7.3 ESTABILIZACIÓN 34 7.4 PRUEBAS DE SISTEMA 34 8. DESARROLLO DEL PROYECO 35 6 8.1 DESARROLLO PROPUESTO 35 8.2 DEFINICIÓN DEL ALCANCE 38 8.3 DEFINICIÓN DE LA ARQUITECTURA 39 8.3.1 Arquitectura 40 8.3.2 Patrón arquitectónico 41 8.4 DEFINICIÓN DEL ENTORNO DE DESARROLLO 41 8.4.1 Máquina virtual de java jre 41 8.4.2 Eclipse 41 8.4.3 Sdk de android 41 8.4.4 Android 42 8.4.5 Jgrapht 43 8.4.6 Grapher 43 8.5 ESPECIFICACIÓN DE REQUERIMIENTOS 43 8.5.1 Requerimientos funcionales 43 8.5.2 Requerimientos no funcionales 45 8.5.3 Actores del sistema 45 8.5.4 Listado de casos de uso 46 8.5.5 Matriz de casos de uso 47 8.6 MODELADO DE REQUERIMIENTOS 48 8.6.1 Diagrama de casos de uso 48 8.6.2 Diagramas de actividad 49 8.7 IMPLEMENTACIÓN DE REQUERIMIENTOS 69 7 8.7.1 Identificación de clases 69 8.7.2 Definición de interfaces 76 8.7.3 Diagrama de clases 78 8.7.4 Base de datos 79 8.7.5 Estructura del proyecto 80 8.7.6 Diagrama de paquetes 83 8.7.7 Funciones implementadas 84 8.8 PRUEBAS DE ACEPTACIÓN 90 9. CONCLUSIONES 98 10. RECOMENDACIONES 100 BIBLIOGRAFIA 101 8 LISTA DE FIGURAS pág. Figura 1. Red social de contactos telefónicos. 36 Figura 2. Red social del usuario de Facebook. 37 Figura 3. Arquitectura de la Aplicación. 39 Figura 4. Arquitectura Android. 42 Figura 5. Clase MainActivity. 69 Figura 6. Clase PhoneContacts. 70 Figura 7. Clase MessageContacts. 71 Figura 8. Clase FacebookActivity. 72 Figura 9. Clase Network. 73 Figura 10. Clase Workspace. 74 Figura 11. Clase GraphViewController. 75 Figura 12. Interfaz de Usuario. 76 Figura 13. Interfaz de Usuario 2. 77 Figura 14. Estructura del proyecto. 81 Figura 15. Estructura del Proyecto 2. 81 Figura 16. Archivo Manifiest.xml. 82 Figura 17. Método getContacts(). 84 Figura 18. Método graphFacebook(). 84 9 Figura 19. Método getFriendsFacebook. 85 Figura 20. Método getMutualFriendFacebook(). 86 Figura 21. Métodos createVertex-getVertex_of_graph() y drawGraphMf(). 87 Figura 22. Método drawGraph(). 88 Figura 23. Métodos createCommunity() y setCommunityGraph(). 89 10 LISTA DE CUADROS pág. Cuadro 1. Matriz de Casos de Uso. 47 Cuadro 2. Prueba N°1. 90 Cuadro 3. Prueba N°2. 91 Cuadro 4. Prueba N°3. 91 Cuadro 5. Prueba N°4. 92 Cuadro 6. Prueba N°5. 92 Cuadro 7. Prueba N°6. 93 Cuadro 8. Prueba N°7. 93 Cuadro 9. Prueba N°8 94 Cuadro 10. Prueba N°9. 94 Cuadro 11. Prueba N°10. 95 Cuadro 12. Prueba N°11. 95 Cuadro 13. Prueba N°12. 95 Cuadro 14. Prueba N°13. 96 Cuadro 15. Prueba N°14. 96 Cuadro 16. Prueba N°15. 97 Cuadro 17. Prueba N°16. 97 11 LISTA DE DIAGRAMAS pág. Diagrama 1. Diagrama de Casos de Uso. 48 Diagrama 2. Diagrama de actividad CU-1. 50 Diagrama 3. Diagrama de actividad CU-2. 51 Diagrama 4. Diagrama de actividad CU-3. 52 Diagrama 5. Diagrama de actividad CU-4. 53 Diagrama 6. Diagrama de actividad CU-5. 54 Diagrama 7. Diagrama de actividad CU-6. 55 Diagrama 8. Diagrama de actividad CU-7. 56 Diagrama 9. Diagrama de actividad CU-8. 57 Diagrama 10. Diagrama de actividad CU-9. 58 Diagrama 11. Diagrama de actividad CU-10. 59 Diagrama 12. Diagrama de actividad CU-11. 60 Diagrama 13. Diagrama de actividad CU-12. 61 Diagrama 14. Diagrama de actividad CU-13. 62 Diagrama 15. Diagrama de actividad CU-14. 63 Diagrama 16. Diagrama de actividad CU-15. 64 Diagrama 17. Diagrama de actividad CU-16. 64 Diagrama 18. Diagrama de actividad CU-17. 65 Diagrama 19. Diagrama de actividad CU-18. 66 12 Diagrama 20. Diagrama de actividad CU-19. 67 Diagrama 21. Diagrama de actividad CU-20. 68 Diagrama 22. Diagrama de actividad CU-21. 68 Diagrama 23. Diagrama de clases. 78 Diagrama 24. Diagrama de paquetes. 83 13 RESUMEN Las aplicaciones móviles, en su gran mayoría han sido destinadas al consumo de entretenimiento y al comercio, el análisis de redes sociales es un tema aún en desarrollo en éste tipo de aplicaciones. Resulta un reto poder crear la red social de un usuario móvil a partir de los datos almacenados en su dispositivo móvil y allí mismo, analizarlo mediante el uso de teoría de grafos y mostrarlo gráficamente a través de nodos conectados entre sí, formando estructuras sociales que presentan comportamientos objeto de estudio en Análisis de Redes Sociales. En éste trabajo se ha desarrollado una aplicación en Android que construye la red social del usuario móvil, entendida como el conjunto de nodos y enlaces que representan su grafo social, para su implementación se ha utilizado una metodología compuesta por conceptos del desarrollo ágil y el proceso unificado, así como estructuras de extracción de datos nativas de Android y también proporcionadas por la API de Facebook. Los datos se han obtenido desde tres fuentes del dispositivo: los contactos telefónicos con los que el usuario se comunica a través de llamadas, con los que se comunica por mensajes y los amigos de Facebook. Resultado del análisis matemático y el diseño gráfico, se ha obtenido la estructura social del usuario móvil, una estructura de nodos y enlaces que puede ser manipulada por pantalla táctil, de manera dinámica y en donde se identifican factores propios de un grafo y de interés en el estudio de redes sociales, como los son las comunidades, cliques, puentes y caminos entre nodos. Palabras Clave: Análisis de Redes Sociales, Grafos, Android, Facebook, Dispositivo Móvil, Aplicaciones Móviles, Detección de Comunidades, Clustering, Nodos, Enlaces, Contactos, Influenciadores. 14 INTRODUCCIÓN Una red social es una estructura compuesta por un conjunto de actores o entidades relacionadas entre sí a través de vínculos que se pueden interpretar como lazos interpersonales de amistad, parentesco, política, ideales, etc. El análisis de redes sociales se basa en la teoría de grafos para estudiar su comportamiento, los actores son los nodos y las relaciones son las aristas del grafo. El estudio de redes sociales tiene múltiples aplicaciones en las ciencias sociales como la sociología, antropología, política, economía, entre otras, y el resultado de su estudio es una compleja red de actores y relaciones muy densa y difícil de graficar manualmente, por lo cual es necesario utilizar programas para simular el comportamiento de éste tipo de grafos. La red que envuelve a una persona en sus diferentes maneras de interactuar en un contexto social, se denomina “red social personal”, cada elemento de la red interactúa con el usuario entorno a un factor común que los relaciona, esto permite encontrar dentro de una red, comportamientos importantes en el estudio de redes sociales como la formación de comunidades, nodos que representan un puente entre dos comunidades o el grupo de influenciadores de un nodo. La red social de una persona o grupo de personas se obtiene a través de técnicas de recolección de datos reconocidas como encuestas, entrevistas, investigaciones, simulaciones, entre otras. Con el incremento de la tecnología móvil y su uso, así como el surgimiento de nuevos dispositivos móviles cada día más potentes, cada persona tiene su información automatizada y lista para ser extraída de su dispositivo, esto significa una demografía lo suficientemente grande como para satisfacer cualquier estudio sociológico. La problemática abarcada en éste proyecto es la posibilidad que nos da los dispositivos móviles de tener una vasta demografía de usuarios y diseñar e implementar soluciones para extraer los datos del usuario almacenados en un dispositivo Android, presentarlos gráficamente, y mediante técnicas matemáticas de grafos reconocer los nodos influenciadores y las comunidades formadas dentro de la red. Este trabajo tiene como fin, obtener la red social personal de un usuario móvil a partir de la recuperación de los datos de su Smartphone como contactos y 15 mensajería corta, así como de la utilización de aplicaciones orientadas al manejo de redes sociales online. 16 1. PLANTEAMIENTO DEL PROBLEMA El análisis de redes sociales nace a principios de los años 70 como una metodología de estudio para detectar estructuras sociales basadas en la relación que tienen sus actores, para identificar sus propiedades, clasificarlas y visualizarlas1. En sus principios, las redes sociales se identificaban a través de registros escritos por los actores, la comunicación verbal y la relación que tienen con los otros actores, cada actor expresaba una identidad que lo hacía perteneciente a una comunidad, un ejemplo de ello son los árboles genealógicos. La incorporación de las nuevas tecnologías ha evolucionado la forma de extraer los datos de una red social, la aparición de la web y la gran cantidad de información contenida en los sistemas de redes sociales en línea, ha permitido a los investigadores realizar diferentes estudios e implementar nuevas técnicas de muestreo para obtener información de los actores de éstas redes, para eso se deben utilizar mecanismos complejos y algoritmos de extracción de información. El auge de la telefonía móvil, la convergencia de las redes, y la integración del poder computacional y la movilidad, ha permitido que cada persona (nodo) esté conectada en red con todos sus contactos a través de un teléfono inteligente (smartphone), formando una inmensa y compleja red rica en información desde el punto de vista del análisis de redes sociales. Objetivos como poder detectar comunidades agrupadas en torno a un tema, o identificar los contactos que ejercen mayor influencia sobre un determinado usuario móvil son temas que para ser estudiados ampliamente con los programas actuales requerirían sincronizar el dispositivo móvil con un computador que ejecute aplicaciones de extracción de datos y análisis de redes sociales, en este caso, se perdería el carácter de movilidad. Las aplicaciones móviles, en su gran mayoría han sido destinadas al consumo de entretenimiento y al comercio, el análisis de redes sociales es un tema aún en desarrollo en éste tipo de aplicaciones. Ante esta situación la pregunta problema que se aborda en el presente trabajo es: What is Social Network Analysis? [en linea]: International Network for Social Network Analysis. Delaware, INSA, 2010 [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.insna.org/what_is_sna.html. 1 17 ¿Cómo obtener la red social personal de un usuario móvil a partir de la recuperación de los datos de su teléfono móvil (Smartphone), como contactos y mensajería corta, así como de la utilización de aplicaciones orientadas al manejo de redes sociales en línea? La red social personal se puede representar mediante el grafo de los contactos del usuario, lo cual se puede lograr con una aplicación móvil que extraiga la información desde el teléfono inteligente del usuario, la analice y presente de manera gráfica en cualquier momento y lugar. 18 2. JUSTIFICACIÓN Una aplicación que extraiga la información desde un dispositivo móvil, la analice, y presente al usuario su propia red social de manera gráfica, en la que pueda reconocer la estructura social de la red y sus influenciadores, es un aporte importante al análisis de redes sociales y su aplicación en los dispositivos móviles. El uso de conceptos de teoría de redes y teoría de grafos demuestra la importancia de la matemática aplicada al estudio de una red social, factores como la centralidad, distancia entre redes y tipos de interacción son propiedades de un grafo, y por lógica, de una red social. Otro aspecto importante de la realización de este proyecto es el aporte y contribución a la sociología, sociometría y demás ciencias sociales, al permitir obtener datos particulares de muchas personas y sus relaciones, resultado del uso masivo de los dispositivos móviles y el acceso casi total de una persona a uno de ellos, además, el aporte a las otras áreas del conocimiento y entidades que deben su objetivo de negocio al contacto con las personas y la identificación de estrategias para influenciarlas. El desarrollo de aplicaciones para dispositivos móviles con sentido no comercial y generadoras de conocimiento, es otro aspecto importante de este proyecto, investigadores, empresas, instituciones educativas, pueden usar este tipo de herramientas en la realización o estudio de otras soluciones móviles en el campo de análisis de redes sociales. 19 3. ANTECEDENTES El análisis de redes sociales tiene sus raíces en la antropología, psicología, sociología, las matemáticas y la sociometría, inicialmente se concebía una red social como una totalidad conceptual compleja y organizada que posee propiedades especificas diferentes de la simple adición de las propiedades de las partes, en un espacio social formado por grupos de individuos y su entorno2. Una red social configura un campo de relaciones que pueden ser analizadas por procedimientos matemáticos, es así como grupos de investigadores incorporaron las teorías de grafos como aplicación a las redes sociales para determinar la estructura de estas redes, y cómo ésta estructura afecta el comportamiento individual de sus elementos. En los últimos años el análisis de redes sociales ha tomado forma con la incorporación de métodos, técnicas, algoritmos, recolección de datos y muestreo, estos factores permiten identificar grupos y subgrupos dentro de una red y establecer estadísticas a partir de datos relacionales con el fin de definir la estructura de la red y sus propiedades. Recientemente las redes sociales en la red han tomado gran popularidad, sitios como Facebook, Twitter, Youtube y Flickr son un ejemplo de redes sociales con millones y millones de usuarios que tienen relaciones de amistad, parentesco, compartición de recursos y demás, éstas redes se convierten en una fuente de información para afianzar el estudio de redes sociales. Existen técnicas y aplicaciones destinadas a la extracción de datos de redes sociales en la web, tal es el caso de FLINK3 y POLYPHONET4 que explotan los SCOTT, John. Social Network Analysis: A Handbook. Segunda Edición. Los Angeles (USA): SAGE Publications Ltd, 2000. p. 4. 2 3 MIKA, Peter. Flink: Web Technology for Extractation and Analysis of Social Networks [en linea], Amsterdam, Department of Computer Science. Vrije University, 2005 [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.websemanticsjournal.org/index.php/ps/article/viewFile/73/71. 4 YUTAKA, Matsuo, JUNICHIRO Mori, MASAHIRO Hamasaki. Polyphonet: An Advanced Social Network Extraction System from the Web [en linea]. Tokio, 2006. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www2006.org/programme/files/pdf/4042.pdf. 20 motores de búsqueda como google y yahoo para obtener información de la web a través de búsquedas basadas en semántica. Las redes sociales online brindan a los desarrolladores API´s para que puedan extraer datos de estos sistemas y realizar aplicaciones con los mismos estándares, tal es el caso de Facebook5. Algunos desarrolladores en Facebook han creado aplicaciones que se ejecutan en los perfiles de usuario de las redes sociales, donde pueden ver una gráfica que representa su red de contactos. También se ha trabajado en algoritmos de extracción de datos basados en listas de contactos y en relaciones por contenido, así como algoritmos para la detección de comunidades basados en intermediación y cliques6. Existen aplicaciones en la red destinadas a modelar y visualizar redes sociales a partir de conjuntos de datos relacionales y matriciales, tal es el caso de E-NET, NetDraw, UCINET, Pajek7, entre otras, muchas de éstas aplicaciones reconocen formatos estandarizados que son computados y modelados, por lo cual se pueden integrar con otras aplicaciones que realizan el trabajo matemático y algorítmico en cuanto a teoría de grafos. 5 Facebook API [en linea], Cambridge, Facebook Inc., 2013 [Consultado frecuentemente desde 01 de Marzo de 2013] Disponible en internet: https://developers.facebook.com/docs. 6 ALDECOA, Rodrigo. Detección de Comunidades en Redes Complejas, [en linea]. Valencia, Universidad Pontificia de Valencia. 2012. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://riunet.upv.es/bitstream/handle/10251/15337/TFM_RodrigoAldecoa.pdf?sequence=1. 7 HUISMAN, DUIJN Mark and van, MARIJTJE A.J. Software for Social Network Analysis [en linea]. Londres, SAGE (2011), [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.gmw.rug.nl/~huisman/sna/software.html. 21 4. MARCO TEORICO 4.1 LAS REDES SOCIALES S. Wasserman y K. Faust definen las Redes Sociales como “un conjunto bien delimitado de actores -individuos, grupos, organizaciones, comunidades, sociedades globales, etc.- vinculados unos a otros a través de una relación o un conjunto de relaciones sociales”8. El análisis de redes sociales se centra en el estudio de las relaciones como base para construir el comportamiento de los individuos a través de un conjunto de métodos y técnicas para tal fin. La medición de datos y formalización de una red social se fundamenta en la teoría de grafos y teoría matricial, donde los actores se representan como nodos o vértices y las relaciones o vínculos se representan como arcos o aristas. Los actores pueden ser individuos, empresas, unidades colectivas sociales, departamentos en una empresa, agencias de servicio público en la ciudad, estados, etc. Las relaciones son los vínculos entre pares de actores y son de tipo personales, transferencias de recursos, asociaciones, interacciones comportamentales, movilidad geográfica o social, conexiones físicas, relaciones formales u organizacionales, etc9. 4.2 PROPIEDADES DE LAS REDES SOCIALES Las redes sociales se representan mediante grafos y utilizan las técnicas de teoría de grafos para determinar la estructura de una red social con base en su forma, distribución y similitud entre los conjuntos de nodos y relaciones que existen en la red. WASSERMAN Stanley, FAUST Katherine. Social Network Analysis: Method and Applications. Cambridge, Cambridge University Press, 1994. p. 3. 8 9 MONSALVE, Mauricio. Análisis de redes sociales [en linea]: un tutorial. Chile, Universidad de Chile. 2008. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://users.dcc.uchile.cl/~mnmonsal/SNA.pdf. 22 4.2.1 Distancia en las redes. La distancia entre redes es un parámetro de teoría de grafos que permite definir la posición de un nodo dentro de la estructura del grafo. La trayectoria es el número de enlaces existentes entre dos actores, la trayectoria mínima también llamada distancia geodésica es importante en el Análisis de Redes Sociales, ya que permite hallar el camino más eficiente entre actores. La manera de interacción entre los actores de una red permite determinar sus relaciones, a esto se le llama conectividad, una red con un alto nivel de conectividad permite encontrar trayectorias más cortas entre actores. Cuando dos actores presentan reciprocidad, es decir, hay un enlace dirigido del nodo A al nodo B y uno del nodo B al nodo A, el diámetro del grafo es reducido. 4.2.2 Coeficiente de agrupamiento. El coeficiente de agrupamiento es una medida de grafos que representa la similaridad entre nodos, se determina a partir de las conexiones entre un nodo y sus nodos adyacentes. Se puede determinar el coeficiente de agrupamiento local y global, midiendo el nivel de agrupamiento entre un nodo y sus nodos vecinos, así como el grupo con respecto al resto del grafo. En redes sociales el coeficiente de agrupamiento, permite identificar el grado de pertenencia de un nodo a un grupo de nodos o “comunidad”, y la relación de la comunidad dentro de la red completa, permitiendo detectar comunidades dentro de la red, esta actividad en redes sociales se denomina clustering. 4.2.3 Cliques. Un clique es un subgrafo de una red donde cada nodo del clique tiene al menos un enlace con cada uno de los otros nodos. En redes sociales identificar cliques representa encontrar subgrupos de nodos que tienen una relación muy fuerte como la familia o un grupo de amigos en la universidad o en el trabajo. 4.2.4 Puentes. Un puente es la relación existente entre dos nodos que pertenecen a diferentes comunidades, matemáticamente hablando, es una arista que de ser eliminada, incrementa el número de componentes conexos (comunidades) en un grafo. Una manera de detectar comunidades en una red social es eliminando puentes hasta que una eliminación incremente el número de comunidades, esto se hace iterativamente con todas las aristas. 23 4.2.5 Camino. Un camino es la sucesión de vértices existentes entre el nodo origen y el nodo destino, siempre y cuando exista una arista entre cada nodo y el siguiente. El camino más corto entre dos nodos depende del tipo de grafo, en un grafo ponderado el camino se calcula sumando los pesos de cada arista, en un grafo no ponderado el camino más corto es el que contenga menor cantidad de vértices en su trayectoria. 4.3 CLASIFICACIÓN DE REDES SOCIALES Las redes sociales debido a su complejidad y a diferencia de los grafos matemáticos se han clasificado de distintas maneras según el área que las investiga, existen maneras generales de clasificar una red social: 10 4.3.1 Redes basadas en su tamaño. La distancia más larga entre dos actores se denomina diámetro de la red, las redes sociales se pueden medir según el diámetro, aunque no de una manera exacta, un valor obtenido a través de aplicaciones de visualización puede determinar el diámetro de una red social y clasificarlas entre redes a pequeña y grande escala. 4.3.2 Redes basadas en su evolución. Este tipo de redes se mide según los cambios adquiridos a lo largo del tiempo, pueden representar diferentes tamaños y formas. Existen redes que presenta cambios muy esporádicos y conservan su estado por largos espacios de tiempo, estas redes se llama redes estáticas. Redes como las que vemos en la web, presentan una evolución constante en tamaño y forma debido a la incorporación y eliminación de actores, estas redes se llaman redes dinámicas. 4.3.3 Redes basadas en su origen. Este tipo de redes dependen de la fuente de donde se obtienen los datos. Las redes sociales obtenidas a través de datos no electrónicos, como documentos físicos e investigaciones se denomina redes offline, las redes obtenidas producto de un algoritmo computarizado como la MEJIA, Olivares Cristian. Análisis de Redes Sociales a gran escala [en linea]: Mexico DF. Centro de investigación y de estudios avanzados del instituto politécnico nacional. 2010. [Consultado 06 de Marzo de 2013]. Disponible en internet: http://www.cs.cinvestav.mx/TesisGraduados/2010/tesisCristianMejia.pdf. 10 24 gestión de contactos, se denominan redes online, es el caso de redes sociales como Facebook, twitter, y otras redes en la web. 4.3.4 Redes basadas en su topología. Estas redes dependen de su forma y complejidad, una red poco compleja puede ser analizada con conceptos básicos de grafos, una red compleja que presenta propiedades no triviales como las redes aleatorias, debe ser estudiada con conceptos empíricos de las redes del mundo real. 4.4 REPRESENTACIÓN DE REDES SOCIALES El análisis de redes sociales identifica los nodos de una red como actores, y los enlaces entre actores se identifican como vínculos. El análisis de redes sociales utiliza dos técnicas matemáticas para representar los actores y sus vínculos; los grafos y las matrices, estas dos técnicas permite analizar grafos a través de programas computarizados. La representación gráfica de redes sociales se lleva a cabo diseñando los actores como nodos y los vínculos como líneas dirigidas, formando así un grafo dirigido mejor llamada en sociología como un sociograma. 4.5 SISTEMAS PARA EL ANÁLISIS DE REDES SOCIALES El análisis de redes sociales utiliza diversos programas para gestionar grafos, los cuales se clasifican según su capacidad para hacer mediciones (MultiNet, StOCNET, SIENA, GNU R), visualizar los grafos formados y analizar su estructura (NetDraw, NetMiner, Pajek, GUESS). La visualización de redes utiliza algoritmos para representación gráfica. 4.6 MUESTREO DE REDES SOCIALES El muestreo es la técnica utilizada para recolectar información de una red sin identificar para analizar sus datos, diseñar la red y visualizarla desde un modelo estructurado. El muestreo de redes sociales en línea es una oportunidad de obtener mucha información de las redes sociales basadas en web 2.0, pero no es una tarea fácil gracias a la complejidad de estos sistemas. Existen sistemas como 25 Flink y POLYPHONET, que se dedican a la explotación de motores de búsqueda como Google y Yahoo mediante el análisis de los resultados de las búsquedas, aunque éstos resultados no son exactos y puede presentarse ambigüedad a la hora de estructurar la red, por eso existen métodos de muestreo para redes sociales. 4.6.1 Muestreo bola de nieve. En este tipo de muestreo se empieza con un nodo semilla o inicial, enlazándolo a todos los nodos conectados directamente a éste y luego se hace este proceso recursivamente para todos los nodos directamente conectados al paso anterior. 4.6.2 Muestreo de nodo. Este método consiste en seleccionar un número n de nodos de la red original aleatoriamente y posteriormente relacionarlos con los enlaces de la red inicial que existen entre los n nodos seleccionados, Los nodos que son seleccionados y no se enlazan con ningún otro nodo son removidos de la nueva red. 4.6.3 Muestreo de enlace. Una vez seleccionado los nodos, se seleccionan enlaces de manera aleatoria, en este caso no se remueven nodos ni enlaces. 4.7 LOS INFLUENCIADORES Las redes sociales vistas como grafos representan nodos enlazados por vínculos de interdependencia que pueden ser de tipo parentesco, amistad, compartición de recursos, entre otros, cada vínculo puede ser ponderado por indicadores que representan la fuerza del vínculo, esto hace que un nodo dentro de la red sea altamente influenciable por otro11. Los indicadores que ponderan un enlace entre dos nodos dependen del tipo de relación que tengan, en una red social de contactos telefónicos, se puede utilizar indicadores como la cantidad o extensión de llamadas para identificar los TANBEER Syed K., LEUNG Carson Kai-Sang, CAMERON Juan J. DIFSoN [en linea]: Discovering Influential Friends from Social Networks. Winnipeg, MB, Canada, Department of Computer Science, University of Manitoba. 2012. [Consultado 04 de Marzo de 2013]. Disponible en internet: http://140.123.102.14:8080/reportSys/file/paper/prince123/prince123_6_paper.pdf. 11 26 contactos que ejercen mayor influencia sobre el usuario, en el caso del uso de aplicaciones de mensajería, la cantidad o extensión de los mensajes. En redes sociales online el panorama es aún más extenso, pues se tiene un sinfín de indicadores, además de la cantidad o extensión de mensajes, podemos pensar en la cantidad de amigos en común que se tiene con un contacto o la cantidad de etiquetas o likes. 27 5. MARCO LEGAL Dentro del procedimiento para cumplir con el objetivo de éste proyecto, es necesario implementar técnicas de extracción de datos para recolectar información personal del usuario almacenada en los Smartphone, el tratamiento de la información personal está regulado por las leyes del estado colombiano, dentro de este marco legal hay que tener en cuenta que aunque para efectos de pruebas se manejarán dispositivos con datos experimentales, para el uso de la aplicación se requiere del consentimiento previo, expreso e informado del usuario y estar dentro de los parámetros legales que el gobierno estipula. A continuación se presenta un resumen de las leyes colombianas relacionadas con la información personal y su protección. 5.1 LEY 1581 DE OCT 17 DE 2012 PROTECCIÓN DE DATOS Esta ley protege los datos personales registrados en cualquier base de datos que realiza operaciones de recolección, almacenamiento, uso, circulación o supresión (Tratamiento) por parte de entidades públicas o privadas. El tratamiento de datos personales deben seguir unos principios básicos de: - Legalidad: debe seguir los parámetros establecidos por la ley en ésta y todas las disposiciones. - Finalidad: debe tener una finalidad legítima de acuerdo con la constitución y la ley. Debe ser informada al usuario. - Libertad: debe realizarse con el consentimiento previo e informado del titular. - Veracidad y calidad: la información debe ser verás, completa, exacta, actualizada, comprobable y comprensible. 28 - Transparencia: el titular tiene todo derecho de obtener del responsable o encargado del tratamiento, información que le concierne y sin restricciones. - Acceso y Circulación Restringida: el tratamiento se limita por lo dispuesto en la ley y la naturaleza de los datos personales. - Seguridad: los datos personales deben tratarse con las medidas necesarias para dar seguridad a las bases de datos. - Confidencialidad: las personas involucradas en el tratamiento deben garantizar la reserva de la información. La ley establece los deberes de los responsables y encargados del tratamiento de la información, categorización de los datos, establecimiento de sanciones, regulación de transferencia entre países y demás reglamentos que protegen la información personal. 5.2 ARTÍCULO 15 DE LA CONSTITUCIÓN POLÍTICA “Todas las personas tienen derecho a su intimidad personal y familiar y a su buen nombre, y el Estado debe respetarlos y hacerlos respetar. De igual modo, tienen derecho a conocer, actualizar y rectificar las informaciones que se hayan recogido sobre ellas en bancos de datos y en archivos de entidades públicas y privadas. En la recolección, tratamiento y circulación de datos se respetarán la libertad y demás garantías consagradas en la Constitución. La correspondencia y demás formas de comunicación privada son inviolables. Sólo pueden ser interceptadas o registradas mediante orden judicial, en los casos y con las formalidades que establezca la ley. Para efectos tributarios o judiciales y para los casos de inspección, vigilancia e intervención del Estado podrá exigirse la presentación de 29 libros de contabilidad y demás documentos privados, en los términos que señale la ley”12. 5.3 ARTÍCULO 20 DE LA CONSTITUCIÓN POLÍTICA “Se garantiza a toda persona la libertad de expresar y difundir su pensamiento y opiniones, la de informar y recibir información veraz e imparcial, y la de fundar medios masivos de comunicación. Estos son libres y tienen responsabilidad social. Se garantiza el derecho a la rectificación en condiciones de equidad. No habrá censura”13. 5.4 LEY 1273 DE 2009 DELITOS INFORMÁTICOS Ley en la cual se establece nuevos tipos penales para delitos informáticos, penas de prisión y multas para quienes incurra en estos delitos. La ley 1273 “ por medio de la cual se modifica el Código Penal, se crea un nuevo bien jurídico tutelado denominado “de la protección de la información y de los datos”- y se preservan integralmente los sistemas que utilicen las tecnologías de la información y las comunicaciones, entre otras disposiciones”14. Esta ley tipificó como delitos un conjunto de conductas relacionadas con el tratamiento de datos personales, generalmente estas conductas son: - Acceso abusivo a un sistema informático. - Obstaculización ilegítima de sistema informático o red de telecomunicación. 12 Constitución Política de Colombia [en linea]: Artículo 15, Derecho a la Intimidad. Colombia. Bitajor.com. 2013. [Consultado 04 de Marzo de 2013]. Disponible en internet:http://www.constitucioncolombia.com/titulo-2/capitulo-1/articulo-15 13 Constitución Política de Colombia [en linea]: Artículo 20, Libertad de Expresión. Colombia. Bitajor.com. 2013. [Consultado 04 de Marzo de 2013]. Disponible en internet:http://www.constitucioncolombia.com/titulo-2/capitulo-1/articulo-15 14 COLOMBIA CONGRESO DE LA REPUBLICA. Ley 1273 de 05 de Enero de 2009 [en linea]: Por medio de la cual se modifica el Código Penal, se crea un nuevo bien jurídico tutelado – denominado “de la protección de la información y de los datos”. [Consultado el 06 de Marzo de 2013]. Disponible en internet: http://acueductopopayan.com.co/wp-content/uploads/2012/08/ley1273-2009.pdf. 30 - Interceptación de datos informáticos. - Daño Informático. - Uso de software malicioso. - Violación de datos personales. - Suplantación de sitios web para capturar datos personales. - Circunstancias de agravación punitiva. - Hurto por medios informáticos y semejantes. - Transferencia no consentida de activos. 5.5 OTRAS LEYES Dentro del marco legal del tratamiento de datos personales hay que tener en cuenta leyes como la 201 de 2012 que reglamenta los derechos de autor y la ley 527 de 1999 que regula el comercio electrónico, envió y recepción de mensajes de datos, certificados y firmas digitales. 31 6. OBJETIVOS 6.1 OBJETIVO GENERAL Diseñar e implementar una aplicación móvil para obtener la red social de un usuario y su grupo de influenciadores a partir de la recuperación de los datos almacenados en su Smartphone utilizando técnicas de extracción de datos y la aplicación de teoría de grafos. 6.2 OBJETIVOS ESPECIFICOS - Documentar información tanto de comprensión del problema como de requerimientos a establecer, para desarrollar la aplicación. - Diseñar e implementar una solución para recuperar los datos almacenados en un dispositivo móvil (contactos, agenda, llamadas, mensajes etc.). - Diseñar e implementar la base de datos para almacenar la información de la aplicación. - Diseñar e implementar una solución para obtener la red social del usuario a partir de los datos recuperados de su dispositivo móvil. 32 7. METODOLOGIA La metodología a implementar sigue muchos de los lineamientos del proceso unificado, aunque al ser una aplicación que se ejecutará en un dispositivo móvil, se incorporará conceptos del desarrollo ágil15, que se basa en las características básicas de una aplicación móvil, como lo es la limitación en memoria de ejecución y almacenamiento, limitaciones en el tiempo de desarrollo, énfasis en el objetivo actual de la aplicación por encima de los objetivos futuros, y sobre todo la capacidad de añadir componentes adicionales a productos previamente terminados (actualizaciones), y por último prima la funcionalidad sobre la documentación, permitiendo iterar sobre las fases en las actividades diarias, teniendo así entregables funcionales y ejecutables constantemente. Teniendo en cuenta las características de este proyecto, podemos incluir conceptos ya estudiados y recomendados de la metodología Mobile-D, favoreciendo el desarrollo ágil, y la metodología RUP, favoreciendo el desarrollo orientado a objetos. Las etapas del proyecto serán: 7.1 INICIO Y EXPLORACIÓN En esta etapa se define el plan del proyecto, la línea de arquitectura a seguir y el entorno de desarrollo que vamos a utilizar. Se analiza los objetivos y los alcances del proyecto y se define el documento inicial de requerimientos funcionales y no funcionales y su ilustración (historias de usuario), la descripción del diseño y la arquitectura de la aplicación. Se implementa la funcionalidad de la aplicación para poder obtener una primera versión del producto para realizarle pruebas de aceptación. 7.2 ELABORACIÓN Y PRODUCTIZACIÓN En esta etapa se implementa la funcionalidad prioritaria del sistema, haciendo énfasis en el core de la aplicación, se documentan las pruebas de aceptación para definir el listado de defectos, se debe iterar sobre las etapas anteriores para actualizar el documento de requerimientos y la arquitectura si se requiere. AGILE Software Technologies Research Programme [en linea]: Mobile-D. Finlandia, Tecnical VTT Research Ltd. 2013. [Consultado 04 de Marzo de 2013]. Disponible en internet: http://agile.vtt.fi/mobiled.html. 15 33 7.3 ESTABILIZACIÓN En esta etapa se debe finalizar la implementación de toda la aplicación y finalizar la documentación, con el fin de asegurar la calidad del producto, para llevar a cabo esta etapa es necesario actualizar y finalizar los productos de las etapas anteriores. 7.4 PRUEBAS DE SISTEMA En esta etapa se llevan a cabo las pruebas de sistema basado en el documento de pruebas establecido, se retroalimenta con el usuario el funcionamiento de la aplicación y se elabora un documento de defectos encontrados y el plan para corregirlos. Se corrigen los defectos. Los resultados de esta etapa pueden llevarnos a la etapa de estabilización de nuevo. El proceso finaliza cuando se han cumplido los objetivos fijados en el inicio. 34 8. DESARROLLO DEL PROYECTO 8.1 DESARROLLO PROPUESTO Una aplicación móvil que se ejecute en una plataforma Android en dispositivos móviles inteligentes, que permita al usuario extraer los datos almacenados en el teléfono como contactos, llamadas, mensajes e información de Facebook, con el fin de crear la red social personal del usuario y su círculo de influencia, la aplicación debe permitir visualizar la información y modelarla mediante la utilización de grafos. En el desarrollo propuesto el usuario obtendrá su red social personal, entendida como la construcción de los nodos y enlaces que represente su grafo social, los nodos representan los contactos del teléfono o los amigos de Facebook y se visualizan mediante círculos, y los enlaces representan relaciones de contacto o amistad entre dos nodos y se visualizan mediante líneas. La red social se obtiene a partir de los datos almacenados en el dispositivo móvil desde tres perspectivas, llamadas, mensajería y Facebook. La información que se extrae del dispositivo ha sido recolectada mediante el uso de aplicaciones, el acceso que se tiene a la información de cada aplicación es diferente y permite llegar a diferentes niveles de profundidad dentro de un grafo. La aplicación de contactos, es decir, la agenda telefónica, permite conocer los contactos y la cantidad o duración de llamadas a cada contacto, la aplicación de mensajería permite conocer la cantidad, extensión y destinatario de los mensajes enviados o recibidos, estas dos aplicaciones tienen un nivel de profundidad limitado porque solo podemos conocer información de la interacción del usuario propietario del dispositivo con cada uno de sus contactos, pero no de la interacción entre contactos terceros. En este orden de ideas, la red social de contactos telefónicos, tanto de llamadas como de mensajería, permite identificar dentro de la estructura del grafo, los nodos influyentes posicionados más cerca del nodo central que representa el usuario, el grado de cercanía tiene relación directa con la frecuencia de llamadas o de mensajes. El grafo se construye mediante un muestreo bola de nieve donde se empieza por un nodo semilla que representa el usuario y luego se crea un enlace para cada uno de los contactos. 35 Figura 1. Red social de contactos telefónicos. En la figura se puede identificar los nodos influyentes dentro de la red social de contactos telefónicos, posicionados más cerca del nodo central que representa el usuario. En el caso de la red social de Facebook, al ser una red social en línea, se puede extraer información tanto de la interacción del usuario con cada amigo como la interacción entre amigos. La red social del usuario obtenida mediante el uso de Facebook es una red más estructurada y profunda, se crean los nodos que representan los amigos de Facebook del usuario, luego, implementando un muestreo bola de nieve se crean los enlaces para cada nodo, que representan relaciones de amistad entre cada amigo y los amigos en común que tiene con el usuario. La red social del usuario de Facebook es una red sobre la cual se puede obtener información producto de la aplicación de la teoría de grafos: - El diámetro del grafo representa la cantidad de amigos del usuario, - Los cliques representan grupos de amigos con gran cohesión, - Los cluster representan comunidades agrupadas como la familia, compañeros de trabajo o amigos de la universidad, 36 - Los puentes representan los amigos que tienen en común dos comunidades diferentes, también representan los amigos a contactar para relacionarse con otra comunidad, - El camino más corto entre dos nodos representa la forma más fácil de influenciar una persona dentro de mi red de amigos u obtener información sobre ella, - La centralidad de grado permite reconocer los amigos de cada nodo, - El coeficiente de agrupamiento permite encontrar la similaridad entre nodos y así formar comunidades. Figura 2. Red social del usuario de Facebook. En la figura se puede identificar los amigos de Facebook del usuario agrupados en comunidades. El objetivo de éste desarrollo es mostrar la red social personal del usuario móvil desde tres perspectivas distintas, llamadas, mensajería corta y Facebook. 37 8.2 DEFINICION DEL ALCANCE El alcance de la aplicación tendrá los siguientes aspectos: - El usuario podrá consultar la información del dispositivo como contactos, registro de llamadas y mensajería. - El usuario podrá iniciar sesión en Facebook y consultar la información de sus amigos. - El usuario tendrá la opción de crear su red social personal basada en los contactos de su teléfono y Facebook, y visualizarla en forma de grafo. - El usuario podrá conocer su círculo de influencia mediante la detección de comunidades en su grafo social, a partir de criterios característicos de la relación con sus contactos. - El usuario podrá compartir su grafo en un formato reconocible por otras aplicaciones tanto de dispositivos móviles como de Pc´s. - El usuario podrá encontrar las comunidades de su grafo agrupadas por un interés en común. - El usuario podrá interactuar con su grafo social, mover y conocer cada nodo. - El usuario podrá guardar registro de cada grafo creado. 38 8.3 DEFINICIÓN DE LA ARQUITECTURA Figura 3. Arquitectura de la Aplicación Fuentes: Clip Art [en línea]: Servidor. Panamá: clipartlogo.com, 2011 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://es.clipartlogo.com/image/server_286845.html. Clip Art [en línea]: Firewall. Panamá: clipartlogo.com, 2009 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://es.clipartlogo.com/image/firewallclip-art_379370.html. Clip Art [en línea]: Plaza de la antena. Panamá: clipartlogo.com, 2008 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://es.clipartlogo.com/image/antenna-square_164012.html. 39 Clip Art [en línea]: Teléfono Android. Panamá: clipartlogo.com, 2010 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://es.clipartlogo.com/image/android-phone_220787.html. Comunicación interactiva [en línea]: El impacto de las redes sociales en la música. España, Mariana Peraza, 2013 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://usr.uvic.cat/bloc/2013/04/15/el-impacto-de-internet-y-las-redessociales-en-la-industria-musical/. La importancia de MVC en Android [en línea]: Modelo-Vista-Controlador. México: Androideity, 2012 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://androideity.com/2012/05/10/la-importancia-del-mvc-en-android/. 8.3.1 Arquitectura. La arquitectura de la aplicación consta de varias capas, aunque en aplicaciones para PC las capas representarían también componentes físicos como un servidor y varios pc clientes, en aplicaciones móviles nos referimos a las capas que se identifican en los componentes funcionales dentro de un sistema Android en un dispositivo Smartphone, sin embargo, el dispositivo se conecta a través de internet con servidores de redes sociales y mediante la utilización de API´s se extraen datos para su procesamiento a nivel de dispositivo (ver figura 1) donde las capas funcionales son: - Capa de presentación: es la visual que tiene el usuario de la aplicación, con un mínimo de desarrollo, a través de una interfaz XML, aquí se captura la información, se comunica con las otras capas y muestra el resultado obtenido. - Capa de lógica de negocio: escrita en código java contiene las operaciones de recepción y devolución de datos y procesamiento de información, se comunica con la capa de datos para solicitar o actualizar información y con la capa de presentación para enviar los eventos a mostrar. En esta capa se valida la información capturada en la capa de presentación. - Capa de datos: es donde residen los datos de la aplicación, sin necesidad de un manejador de base de datos, Android contiene las librerías de SQLite para el manejo de persistencia de datos, recibe las solicitudes de almacenamiento o actualización provenientes de las otras capas, los datos de contactos del teléfono son accedidos a través de proveedores de contenidos y los datos de contactos de redes sociales online son accedidos a través de API´s y conexión a internet. 40 8.3.2 Patrón Arquitectónico. Los patrones arquitectónicos son estrategias de diseño empleadas para aprovechar las buenas practicas reconocidas en procesos y experiencias que han sido efectivas y reutilizables, el diseño en Android está ligado a su arquitectura y la forma como fueron creados sus componentes, es decir que hay una manera recomendada en la documentación Android para diseñar las aplicaciones, y esta manera sigue muchos de los lineamientos del patrón arquitectónico de Modelo-Vista-Controlador, pero no todos, ya que en la implementación veremos que en componentes como las “Activity” se crean elementos de presentación y se efectúan operaciones de datos, por tanto, éste proyecto no implementa un patrón arquitectónico reconocido sino que su diseño es fuertemente influenciado por el Modelo-Vista-Controlador. 8.4 DEFINICIÓN DEL ENTORNO DE DESARROLLO El entorno de desarrollo es el conjunto de herramientas necesarias para programar aplicaciones, en nuestro caso, aplicaciones móviles, a continuación se describe los componentes a utilizar en este proyecto: 8.4.1 Máquina Virtual de Java JRE. Es el entorno de ejecución del código java, como las aplicaciones Android se programan en código java, es necesario tener instalado la máquina virtual de java16. 8.4.2 Eclipse. Es un entorno de programación para casi cualquier lenguaje. Para programar en Android es necesario descargar desde el repositorio de Google el plugin para Eclipse e instalarlo17. 8.4.3 SDK de Android. Es el conjunto de librerías, api´s, recursos, herramientas y fuentes necesarias para el flujo de trabajo de una aplicación Android, se puede descargar desde el repositorio de Google18. Máquina Virtual Java [en linea]. Oracle Technology Network. 2013. [Consultado 06 de Marzo de 2013]. Disponible en internet: http://www.oracle.com/technetwork/java/javase/downloads/jre7downloads-1880261.html. 16 17 Entorno de Desarrollo Eclipse [en linea]. The Eclipse Foundation. 2013 [Consultado 06 de Marzo de 2013]. Disponible en internet: https://www.eclipse.org/. 18 SDK Android [en linea]. Google Inc. 2013. [Consultado 06 de Marzo de 2013]. Disponible en internet: http://www.android.com/. 41 8.4.4 Android. Sistema operativo basado en el kernel de Linux y diseñado para dispositivos táctiles, a continuación se describe sus componentes principales: Figura 4. Arquitectura Android Fuente: Arquitectura Android [en línea]: Arquitectura Android. México: Androideity, 2012 [consultado 06 de Marzo de 2013]. Disponible en Internet: http://androideity.com/2011/07/04/arquitectura-de-android/. Aplicaciones: conjunto de elementos visuales interactivos presentados al usuario y escritos en lenguaje java, cumplen funciones esenciales del dispositivo como llamadas, mensajes, correos, navegadores, etc. Framework de aplicaciones: conjunto de API´s disponibles y reutilizables usadas por desarrolladores para construir aplicaciones. Bibliotecas: conjunto de librerías usadas por el sistema para su funcionamiento, escritas en C/C++ y accesibles para el desarrollador a través del Framework de aplicaciones. 42 Kernel de Linux: funciona como capa de abstracción entre el hardware y el software, encargado de gestionar los recursos del teléfono, garantiza la seguridad al ser solo accesible desde las librerías del sistema. 8.4.5 JgraphT19. Conjunto de librerías java que proporciona objetos y algoritmos de teoría de grafos, soporta grafos dirigidos, no dirigidos, ponderados y no ponderados, creado para ser practico y sencillo, tiene licencia GNU y EPL. JgraphT está diseñado para ser visualizado gráficamente usando la biblioteca JGraph en PC´s, para efectos de la aplicación Android se utilizará una colaboración llamada Grapher. 8.4.6 Grapher20. Proyecto liberado como GPL por Pal Gronas Drange diseñado para crear y visualizar grafos en sistemas Android. Se usará como base para dibujar los grafos sociales y se integrará con JgraphT para las operaciones matemáticas. El código de este proyecto tiene un objetivo diferente al proyecto propuesto, pero será modificado para que cumpla las funciones que éste proyecto necesita. 8.5 ESPECIFICACIÓN DE REQUERIMIENTOS Los requerimientos constituyen las especificaciones en cuanto a características y funcionalidades propuestas en éste proyecto, se clasifican en requerimientos funcionales y no funcionales. 8.5.1 Requerimientos Funcionales. Los requerimientos funcionales están enfocados al comportamiento interno de la aplicación. En éste proyecto se tendrán los siguientes requerimientos funcionales: - REQF-1. El sistema debe permitir consultar el listado de contactos almacenados. - REQF-2. El sistema debe permitir consultar la información de cada contacto. - REQF-3. El sistema debe permitir consultar las llamadas realizadas. 19 NAVEH, Barak. JGraphT [en línea]. Barak and Contributors. 2011. [Consultado 10 de Enero de 2014]. Disponible en internet: http://jgrapht.org/. 20 DRANGE, Pal Gronas. Grapher [en línea]. Bergen (Norway). Github. 2014. [Consultado 15 de Marzo de 2014]. Disponible en internet: https://github.com/drange/Grapher/. 43 - REQF-4. El sistema debe permitir consultar la duración de llamadas. - REQF-5. El sistema debe permitir consultar los mensajes realizados. - REQF-6. El sistema debe permitir crear una red social en forma de grafo con los contactos que interactúa a través de mensajes de texto. - REQF-7. El sistema debe permitir crear una red social personal en forma de grafo con los contactos que interactúa a través de llamadas. - REQF-8. El sistema debe permitir visualizar en una red social los contactos más influyentes con los que se comunica por mensajes de texto. - REQF-9. El sistema debe permitir visualizar en una red social los contactos más influyentes con los que se comunica por llamadas. - REQF-10. El sistema debe permitir al usuario iniciar sesión en su cuenta de Facebook. - REQF-11. El sistema debe permitir al usuario consultar el listado de contactos de Facebook. - REQF-12. El sistema debe permitir al usuario crear una red social personal en forma de grafo con sus contactos de Facebook. - REQF-13. El sistema debe permitir al usuario visualizar en una red social los contactos de Facebook más influyentes. - REQF-14. El sistema debe permitir visualizar las comunidades que forma su red social entorno a un interés común. - REQF-15. El sistema debe permitir que el usuario cambie de posición los nodos del grafo social. - REQF-16. El sistema debe permitir consultar la información de cada nodo (nombre, número, foto, etc.). - REQF-17. El sistema debe permitir visualizar en cada nodo de Facebook, la comunidad a la cual pertenece. - REQF-18. El sistema debe permitir guardar un grafo social creado. - REQF-19. El sistema debe permitir cargar un grafo social guardado. 44 - REQF-20. El sistema debe permitir eliminar un grafo social guardado. - REQF-21. El sistema debe permitir visualizar el camino más corto entre dos nodos. - REQF-22. El sistema debe permitir consultar el diámetro del grafo social. - REQF-23. El sistema debe permitir visualizar el clique máximo dentro del grafo social. - REQF-24. El sistema debe permitir visualizar los puentes del grafo social. - REQF-25. El sistema debe permitir exportar el grafo en un formato reconocible por programas externos de visualización de grafos. - REQF-26. El sistema debe permitir al usuario acercar y alejar la vista del grafo social. - REQF-27. El sistema debe permitir al usuario cerrar sesión en su cuenta de Facebook. 8.5.2 Requerimientos no Funcionales. Los requerimientos no funcionales están relacionados con las características generales del sistema, hacen referencia a factores como la seguridad, integridad, usabilidad, escalabilidad, etc... En este proyecto se tendrán los siguientes requerimientos no funcionales: - REQNF-1. El sistema debe asegurarse de tener los permisos necesarios para el tratamiento de datos personales del usuario. - REQNF-2. El sistema debe estar implementado en Android. - REQNF-3. El sistema debe tener un diseño de interfaz amigable e intuitivo. - REQNF-4. El sistema debe controlar el acceso a las redes sociales validando los datos de usuario. 8.5.3 Actores del Sistema. Los actores son los elementos que interactúan con la aplicación, para éste proyecto se han definido los siguientes actores: 45 - El usuario de la aplicación: el usuario final quien podrá utilizar todas las opciones de la aplicación. - El sistema: la aplicación que en nombre del usuario podrá interactuar con las redes sociales y los datos del teléfono. 8.5.4 Listado de Casos de Uso. Los casos de uso son las situaciones de interacción entre el usuario y la aplicación, otorga un sentido realista de lo que el usuario puede hacer con las opciones de la aplicación, se construyen a partir de los requerimientos dados, a continuación el listado de casos de uso para éste proyecto. - CU-1. Consultar listado de contactos del teléfono. - CU-2. Consultar la información del contacto - CU-3. Consultar los mensajes de texto realizados. - CU-4. Crear red social de contactos por llamadas. - CU-5. Crear red social de contactos por mensajes. - CU-6. Iniciar sesión de Facebook. - CU-7. Consultar listado de contactos de Facebook. - CU-8. Crear una red social de contactos de Facebook. - CU-9. Cambiar posición de un nodo. - CU-10. Consultar información de un nodo. - CU-11. Visualizar la comunidad de un nodo de Facebook. - CU-12. Guardar grafo. - CU-13. Cargar grafo. - CU-14. Eliminar grafo. - CU-15. Visualizar el camino más corto entre dos nodos de Facebook. 46 - CU-16. Consultar el diámetro del grafo. - CU-17. Visualizar clique máximo. - CU-18. Visualizar los puentes entre comunidades de Facebook. - CU-19. Compartir grafo. - CU-20. Cambiar vista (acercar/alejar) - CU-21. Cerrar sesión de Facebook. 8.5.5 Matriz de Casos de Uso. La matriz de casos de uso relaciona cada uno de los casos de uso con los requerimientos contemplados. Cuadro 1. Matriz de Casos de Uso N° Nombre CU-1 CU-2 Consultar listado de contactos del teléfono Consultar la información del contacto CU-3 CU-4 CU-5 CU-6 CU-7 CU-8 Consultar los mensajes de texto realizados. Crear red social de contactos por llamadas. Crear red social de contactos por mensajes. Iniciar sesión de Facebook. Consultar listado de contactos de Facebook. Crear una red social de contactos de Facebook CU-9 CU-10 CU-11 CU-12 CU-13 CU-14 CU-15 Cambiar posición de un nodo. Consultar información de un nodo. Visualizar la comunidad de un nodo de Facebook. Guardar grafo. Cargar grafo. Eliminar grafo. Visualizar el camino más corto entre dos nodos de Facebook. Consultar el diámetro del grafo. Visualizar clique máximo. Visualizar los puentes entre comunidades de Facebook. Compartir grafo. Cambiar vista (acercar/alejar). Cerrar sesión de Facebook. CU-16 CU-17 CU-18 CU-19 CU-20 CU-21 47 Requerimientos Relacionados REQF-1 REQF-2, REQF-3, REQF4. REQF-5. REQF-7, REQF-9. REQF-6, REQF-8. REQF-10. REQF-11. REQF-12. REQF-13, REQF-14. REQF-15. REQF-16. REQF-17. REQF-18. REQF-19. REQF-20. REQF-21. REQF-22. REQF-23. REQF-24. REQF-25. REQF-26. REQF-27. 8.6 MODELADO DE REQUERIMIENTOS 8.6.1 Diagrama de Casos de Uso Diagrama 1. Diagrama de Casos de Uso. 48 El diagrama de casos de uso es la representación gráfica de las funcionalidades de la aplicación y los actores que interactúan con ellas, en dispositivos móviles existe un único usuario que es el propietario del dispositivo y accede a todas las funcionalidades, todos los casos de uso de ésta aplicación son accesibles por el usuario, algunos, especificaciones de otros casos de uso y representados mediante relaciones de inclusión “--------> <<include>>”, se menciona porque no aparecen en el diagrama para no confundir al lector. 8.6.2 Diagramas de Actividad. Esta actividad tiene como fin describir cada uno de los casos de uso de manera gráfica mediante el uso de diagramas, comúnmente se utilizan guiones de caso de uso, sin embargo, en éste proyecto se decidió implementar diagramas de actividad para una mejor comprensión del flujo de la aplicación. Cada caso de uso se especificará con los siguientes apartados, pudiendo prescindir de alguno de no ser necesario: - Definición - Pre-condición: condición que debe cumplirse antes de empezar el caso de uso. - Post-condición: condición a satisfacer después de concluir el caso de uso. - Diagrama de actividad: grafica que representa la interacción entre el usuario y la aplicación. Se sobreentiende para todos los casos de uso que como precondición se debe haber iniciado la aplicación y otorgado los permisos para el acceso a datos personales. No incluimos en los diagramas el apartado de actores ya que los únicos que interactúan están descritos en la gráfica. CU-1. Consultar listado de contactos del teléfono. Ver en pantalla el listado de contactos almacenados en el dispositivo ordenados por frecuencia de llamadas. Pre-condiciones: - Los contactos deben estar almacenados en el dispositivo. Post-condiciones: - Muestra el listado de contactos del dispositivo. 49 Diagrama 2. Diagrama de actividad CU-1. CU-2. Consultar la información del contacto. Ver información del contacto como nombre, número de teléfono, foto de contacto, e-mail, etc. Pre-condiciones: - Los contactos debe estar almacenados. - Cada contacto debe tener diligenciados los campos de información. - Cada contacto debe tener una foto de contacto. Post-condiciones: - La aplicación mostrara la información del contacto que esté diligenciada en su tarjeta de contacto. 50 Diagrama 3. Diagrama de actividad CU-2. CU-3. Consultar los mensajes de texto realizados. Ver la actividad de conversaciones a través de mensajería corta del dispositivo. Pre-condiciones: - El dispositivo debe tener una aplicación nativa de SMS-MMS. Post-condiciones: - Muestra las conversaciones mediante SMS. 51 Diagrama 4. Diagrama de actividad CU-3. CU-4. Crear red social de contactos por llamadas. Crear un grafo donde los nodos son los contactos y donde existe un enlace entre cada contacto y el usuario. Pre-condiciones: - El dispositivo debe tener contactos almacenados Post-condiciones: - Muestra un grafo con un nodo central y los contactos con los que más se comunica por llamadas enlazadas más cerca que los otros. 52 Diagrama 5. Diagrama de actividad CU-4. CU-5. Crear red social de contactos por mensajes. Crear un grafo donde los nodos son los contactos y donde existe un enlace entre cada contacto y el usuario. Pre-condiciones: - El dispositivo debe tener contactos almacenados - El usuario debe haberse comunicado con alguno de sus contactos a través de mensajes. Post-condiciones: - Muestra un grafo con un nodo central y los contactos con los que interactuó por mensajería. Los contactos con los que se comunica más frecuentemente enlazados más cerca que los otros. 53 Diagrama 6. Diagrama de actividad CU-5. CU-6. Iniciar sesión de Facebook. Iniciar sesión en la red social online Facebook Pre-condiciones: - El usuario debe tener una cuenta de Facebook asignada - El usuario debe tener acceso a internet. Post-condiciones: - Sesión de Facebook abierta y disponible para consultar información del usuario. 54 Diagrama 7. Diagrama de actividad CU-6. CU-7. Consultar listado de contactos de Facebook. Ver en pantalla el listado de amigos de Facebook del usuario. Pre-condiciones: - El usuario debe haber iniciado sesión en su cuenta de Facebook. - El usuario debe tener al menos un contacto en su cuenta de Facebook. Post-condiciones: La aplicación muestra los nombres de los amigos de Facebook del usuario. 55 Diagrama 8. Diagrama de actividad CU-7. CU-8. Crear una red social de contactos de Facebook. Crear un grafo donde los nodos son los amigos de Facebook y los enlaces son las relaciones de amistad entre ellos. Pre-condiciones: - El usuario debe haber iniciado sesión en su cuenta de Facebook. - El usuario debe haber cargado el listado de amigos de Facebook. Post-condiciones: - Muestra la red social de Facebook representada en un grafo, organizada en comunidades agrupadas por un interés en común como familia, colegio, universidad, trabajo, religión, etc. Cada comunidad diferenciada por el color de sus nodos. 56 Diagrama 9. Diagrama de actividad CU-8. CU-9. Cambiar posición de un nodo. Mover el nodo en cualquier dirección haciendo un toque sobre él y arrastrándolo hacia la posición deseada. Pre-condiciones: - El usuario debe haber cargado el grafo. Post-condiciones: - La aplicación detecta la coordenada donde el usuario toca y donde suelta para mover el nodo desde el origen hasta el destino. 57 Diagrama 10. Diagrama de actividad CU-9. CU-10. Consultar información de un nodo. Ver la información de cada nodo mediante una pulsación larga sobre el nodo. Pre-condiciones: - El usuario debe haber cargado el grafo. Post-condiciones: - La aplicación muestra la tarjeta de contacto si el grafo es de contactos telefónicos, si el grafo es de amigos de Facebook, muestra el nombre, foto de perfil y numero de amigos en común con el usuario. 58 Diagrama 11. Diagrama de actividad CU-10. CU-11. Visualizar la comunidad de un nodo de Facebook. Ver solo los contactos pertenecientes a la comunidad del nodo seleccionado. Pre-condiciones: - El usuario debe haber cargado el grafo de Facebook. Post-condiciones: - Muestra la comunidad del nodo seleccionado. 59 Diagrama 12. Diagrama de actividad CU-11. CU-12. Guardar grafo. Guardar el grafo creado en el sistema de archivos del dispositivo para que pueda ser cargado después. Pre-condiciones: - El usuario debe haber cargado el grafo. Post-condiciones: - La aplicación guarda el grafo con el nombre ingresado por el usuario. 60 Diagrama 13. Diagrama de actividad CU-12. CU-13. Cargar grafo. Cargar un grafo seleccionado desde una lista de grafos guardados. Pre-condiciones: - El usuario debe haber guardado el grafo que va a cargar. Post-condiciones: - Muestra en pantalla la imagen del grafo guardado con anterioridad. 61 Diagrama 14. Diagrama de actividad CU-13. CU-14. Eliminar grafo. Eliminar un grafo seleccionado desde una lista de grafos guardados. Pre-condiciones: - El usuario debe haber guardado el grafo que va a eliminar. Post-condiciones: - Se elimina el grafo seleccionado. 62 Diagrama 15. Diagrama de actividad CU-14. CU-15. Visualizar el camino más corto entre dos nodos de Facebook. Ver en el grafo de Facebook la ruta de acceso más corta entre dos nodos seleccionados mediante el uso de algoritmos de teoría de grafos. Pre-condiciones: - El usuario debe haber cargado el grafo de Facebook. Post-condiciones: - La aplicación resalta los nodos y los enlaces de la ruta más corta entre dos nodos seleccionados. 63 Diagrama 16. Diagrama de actividad CU-15. CU-16. Consultar el diámetro del grafo. Mostrar en pantalla la cantidad de nodos del grafo creado. Pre-condiciones: - El usuario debe haber cargado el grafo. Post-condiciones: - Muestra en pantalla el número de nodos. Diagrama 17. Diagrama de actividad CU-16. 64 CU-17. Visualizar clique máximo. Ver en el grafo el clique máximo entendido como el mayor subgrafo donde cada nodo esta enlazado con cada uno de los demás nodos, calculado mediante algoritmos de teoría de grafos. Representa la comunidad más compacta entre los amigos de Facebook. Pre-condiciones: - El usuario debe haber cargado el grafo de Facebook. Post-condiciones: - La aplicación muestra solo el subgrafo que representa el clique máximo. Diagrama 18. Diagrama de actividad CU-17. 65 CU-18. Visualizar los puentes entre comunidades de Facebook. Ver en el grafo los puentes representados como la única conexión entre dos comunidades. Pre-condiciones: - El usuario debe haber cargado el grafo de Facebook. Post-condiciones: - La aplicación resalta los nodos y los enlaces que representan los puentes entre comunidades. Diagrama 19. Diagrama de actividad CU-18. CU-19. Compartir grafo. Enviar a través de otra aplicación como e-mail, mensajería, bluetooth, Facebook, etc..., un texto en formato Metapost o Tikz que representa el grafo compartido para ser reconocido por algún software de visualización externo. Pre-condiciones: - El usuario debe haber cargado el grafo. - El usuario debe tener alguna aplicación disponible para enviar la información del grafo. 66 - Post-condiciones: - La aplicación envía un texto en formato Metapost o Tikz. Diagrama 20. Diagrama de actividad CU-19. CU-20. Cambiar vista (acercar/alejar). Acercar y alejar la vista del grafo haciendo el gesto de pellizco hacia adentro para alejar y hacia afuera para acercar. Pre-condiciones: - El usuario debe haber cargado el grafo. - La aplicación debe estar configurada para detectar el gesto. Post-condiciones: - La aplicación muestra con mayor detalle el grafo cuando acerca la vista y una visión más general cuando aleja. 67 Diagrama 21. Diagrama de actividad CU-20. CU-21. Cerrar sesión de Facebook. Cerrar sesión en la cuanta de Facebook. Pre-condiciones: - El usuario debe haber iniciado sesión de Facebook. Post-condiciones: - Se cierra sesión de Facebook. Diagrama 22. Diagrama de actividad CU-21. 68 8.7 IMPLEMENTACIÓN DE REQUERIMIENTOS 8.7.1 Identificación de clases. En sistemas Android su componente principal son las Activity, clases que lanzan el componente visual XML y que están almacenados como recursos en conjunto con cadenas e imágenes, también gestionan los elementos de entrada y los elementos a mostrar en pantalla, cada pantalla en Android es una Activity y los componentes algorítmicos son archivos java utilizables como librerías. Este proyecto usó los archivos java de las librerías de JgraphT para gestionar los algoritmos de teoría de grafos, las librerías java de Android 4.2 para gestionar los recursos del dispositivo, el entorno de desarrollo y almacenamiento de datos, las librerías java de GRAPHER se usaron para dibujar en pantalla los grafos creados, algunas de las clases de esta librería fueron modificadas y mencionadas en éste proyecto, y por ultimo las clases de la API de Facebook que se usaron para los procesos de autorización de usuarios y para ejecutar consultas con el fin de extraer la información del usuario. MainActivity: Es la actividad principal y la primera que se ejecuta al iniciar la aplicación, muestra las opciones para que el usuario escoja si desea ver su grafo social a partir de su información de contactos telefónicos, mensajería o su cuenta de Facebook. Figura 5. Clase MainActivity. 69 PhoneContacts: Es la actividad que se ejecuta cuando el usuario quiere ver el grafo social de sus contactos telefónicos, esta actividad gestiona todas las operaciones de consulta de información a la base de datos de contactos del teléfono, de allí podrán lanzarse actividades nativas como la agenda telefónica para consultar o editar contactos, o la lista de llamadas. Esta actividad es la encargada de darle la opción de crear el grafo de contactos telefónicos del usuario. Figura 6. Clase PhoneContacts. 70 MessageContacts: Es la actividad que se ejecuta cuando el usuario quiere ver el grafo social de sus contactos telefónicos con los que se comunica por mensajes de texto, esta actividad gestiona todas las operaciones de consulta de información a la base de datos de mensajería corta, de allí podrán lanzarse actividades nativas como la lista de conversaciones de mensajería. Esta actividad es la encargada de darle la opción de crear el grafo de contactos del usuario con los que se comunica por mensajería. Figura 7. Clase MessageContacts. FacebookActivity: Es la actividad que se ejecuta cuando el usuario quiere ver el grafo social de Facebook, gestiona los procesos de acceso a Facebook y las consultas necesarias para extraer los datos del usuario, muestra el listado de amigos de Facebook y muestra la opción de crear el grafo de amigos de Facebook. 71 Figura 8. Clase FacebookActivity. Network: Esta clase contiene algoritmos de grafos escritos en java especialmente orientados a hacer clustering o detección de comunidades en grafos a gran escala, esta clase fue usada porque contiene un algoritmo de detección de comunidades más eficiente, algoritmo de Louvain implementado en java por Ludo Waltman y Nees Jan van Eck21 y basado en el paper Fast unfolding of communities in large networks (Blondel, Guillaume, Lambiotte, and Lefebvre (2008))22. 21 WALTMAN, Ludo, and ECK, Nees Jan van. A smart local moving algorithm for large-scale modularity-based community detection [en línea] : Eindhoven. Ludo Waltman Website. 2013. [Consultado 25 de Junio de 2014]. Disponible en internet: http://www.ludowaltman.nl/slm/. 22 D. BLONDELA, Vincent – GUILLAUME, Jean-loup – LAMBIOTTE, renaud – LEFEBVRE, Eetienne. Fast unfolding of communities in large networks [en línea] : Ithaca NY. Cornell University Library. 2008. [Consultado 25 de Junio de 2014]. Disponible en internet: http://arxiv.org/pdf/0803.0476.pdf. 72 Figura 9. Clase Network. 73 Workspace: Es la actividad que carga la vista de cada grafo pintando sobre una cuadricula, círculos y líneas que representan nodos y enlaces, recibe información de las clases anteriores según sea la opción de grafo escogida por el usuario, gestiona el componente visual del grafo y sus opciones, diálogos en pantalla, y funciones de almacenamiento de grafos. Esta actividad está dentro del paquete del proyecto GRAPHER, se menciona en éste proyecto porque será modificada en su mayoría para que realice las funciones que éste proyecto necesita. Figura 10. Clase Workspace. GraphViewController: Es una clase java que controla la clase GraphView (clase que hereda de View y contiene los atributos y métodos del componente gráfico), contiene las operaciones del grafo a nivel de estructura de los nodos y enlaces como los vemos en la pantalla, define lo que se ve o no se ve del grafo, ejecuta las operaciones de bajo nivel de las librerías de JgraphT, obtiene datos de las clases FacebookActivity, PhoneContacts y MessageContacts para establecer descripciones, posiciones y conexiones de los nodos en el grafo, parametriza los componentes de GraphView y usa la clase Workspace para mostrar elementos en pantalla. 74 Figura 11. Clase GraphViewController. 75 8.7.2 Definición de interfaces. De acuerdo con la metodología se procedió a implementar los componentes funcionales de la aplicación para poder generar una primera versión, éste proceso nos permite definir las interfaces de usuario en lenguaje XML, es decir, diseñar las actividades que se verán en pantalla. Figura 12. Interfaz de Usuario 76 En la figura anterior vemos el cuadro por cuadro la función “Contactos” de la aplicación, que inicialmente nos muestra el listado de contactos, la opción “Editar contactos” ejecuta la actividad nativa de la agenda telefónica, la opción “Ver llamadas” ejecuta la actividad nativa del registro de llamadas y la opción “Ver grafo” genera el grafo social de contactos telefónicos. Volviendo a la pantalla principal, la opción “Mensajes” ejecuta otra actividad donde aparece las opciones “Ver mensajes” que nos lleva a la actividad nativa de conversaciones de la aplicación de mensajería corta, y la opción “Crear grafo” nos muestra el grafo social de los contactos telefónicos con los que interactuó por mensajería. Presionando por más de 2 segundos sobre un nodo veremos la tarjeta de contacto del nodo. Figura 13. Interfaz de Usuario 2. 77 La opción “Facebook” nos muestra el listado de amigos de Facebook del usuario si ya ha iniciado sesión, de lo contrario deberá presionar sobre la opción iniciar sesión y luego cargar la lista de amigos desde la opción “Lista de amigos”, solo después de esto podrá crear el grafo con el listado de amigos ya cargado, la opción “Crear grafo” muestra el grafo social de Facebook organizado en comunidades por colores, si el usuario presiona por dos segundos sobre un nodo, la aplicación muestra la foto de perfil del amigo de Facebook que representa ese nodo y se podrá ver la comunidad de la cual es parte. 8.7.3 Diagrama de clases. El diagrama de clases nos muestra las clases resultantes del análisis de clases y sus relaciones en notación UML, generada en el mismo proceso de implementación de la funcionalidad prioritaria. Diagrama 23. Diagrama de clases 78 8.7.4 Base de datos. Dentro de los objetivos principales del proyecto esta elaborar la base de datos para almacenar la información extraída del dispositivo, inicialmente en fase de planeación se pensaba que se debería tener la información del usuario lo suficientemente estructurada para acceder a ella, en la fase de exploración y documentación de los conceptos necesarios para el desarrollo de la aplicación, se descubrió que la información del usuario en el dispositivo está estructurada desde la arquitectura misma de Android. Android utiliza SQLite como librería para la gestión de base de datos, que a diferencia de los gestores de bases de datos conocidos, no se usa como un componente independiente sino que se integra con la aplicación misma, logrando así ser más simple y fiable. La información de los contactos telefónicos es accedida a través de estructuras llamadas “contentproviders”, estas estructuras acceden a la librería SQLite y contienen la información que se desea conocer por otras aplicaciones, en nuestro caso, información de los contactos telefónicos en cuanto se refiere a lista de contactos, llamadas realizadas y recibidas, mensajes enviados y recibidos, contactos frecuentes, etc. La información obtenida de las redes sociales también puede ser accedida de manera estructurada a través de las API de la red social consultada, los sistemas gestores de bases de datos de las redes sociales online son sistemas no convencionales diseñados especialmente para manejar inmensas cantidades de información. La aplicación desarrollada en éste proyecto está destinada a consultar y consumir información, mas no a crearla o estructurarla, es por eso que se hace innecesario elaborar un modelo de base de datos, por tanto se usaron las estructuras ya diseñadas para ello, se describen a continuación: SQlite: SQlite es un proyecto público de 500 Kb creado para funcionar como un sistema gestor de bases de datos relacionales, rápido, ágil y liviano. Las consultas no se comunican con un motor de base de datos sino que SQlite se integra a la aplicación como una librería más, es multiplataforma y no necesita ser instalado. El uso de una máquina virtual interna facilita el desarrollo de las aplicaciones, en el caso de Android, se puede acceder a los datos a través de estructuras como los 79 ContentProviders, eximiendo al desarrollador incluso de utilizar lenguaje de consultas.23 Contentproviders: Un ContentProvider es una estructura proporcionada por la librería Android para compartir información entre aplicaciones, los ContentProvider se usan cuando determinada información de la base de datos es solicitada frecuentemente y por varias aplicaciones, en nuestro caso, los contactos, las llamadas y los mensajes, los ContentProvider actúan como intermediarios y facilitadores en la consulta de información conteniendo los datos por la cual fueron creados. Facebook Request: Los Request son estructuras diseñadas para consultar información de Facebook a través de GRAPH API y de manera asíncrona. Se puede solicitar información individual o en bloques llamados “Batch”. La respuesta es una estructura “Response” que puede ser gestionada a nivel de aplicación y extraer de ella la información que se necesita específicamente. Un Request necesita una Sesión iniciada, unos parámetros de consulta e implementar la forma en que la información retorna. 8.7.5 Estructura del proyecto. La estructura de un proyecto de Android es un modelo empleado para todo proyecto, las clases implementados son incluidas en la carpeta src del proyecto, las demás son generadas por el entorno de desarrollo, algunas de las cuales deben ser modificadas, a continuación se muestra una visión general del proyecto. 23 CABERO, Gerardo Antonio, MALDONADO, Daniel. SQlite [en línea]: Rápido, Ágil, Liviano y Robusto. Revista Linux+. 2007. [Consultado 25 de Junio de 2014]. Disponible en internet: http://www.caceriadespammers.com.ar/2013/06/sqlite-rapido-agil-liviano-y-robusto.html. 80 Figura 14. Estructura del proyecto. Algunos de los paquetes de las librerías utilizadas de Grapher y JGraphT, fueron importados para el correcto funcionamiento de la aplicación como se muestra a continuación: Figura 15. Estructura del Proyecto 2. El AndroidManifiest.xml contiene todas las especificaciones de la aplicación, lo referente en cuanto nombre de la aplicación, actividades utilizadas, intents y permisos solicitados. 81 Figura 16. Archivo Manifiest.xml La carpeta /res contiene los recursos usados por la aplicación, tales como cadenas de nombres, imágenes y layouts. Los layout son clases xml que contienen la información de lo que se ve en cada pantalla, cada layout es gestionado por una Activity que por lo general tiene un nombre parecido. 82 8.7.6 Diagrama de paquetes. El diagrama de paquetes de la aplicación SocialGraph representa los paquetes que contiene cada una de las clases importantes del proyecto y la relación que tienen con las otras clases cuando una usa componentes de otra. Diagrama 24. Diagrama de paquetes 83 8.7.7 Funciones implementadas. En este apartado se presenta la implementación a nivel de código java de algunos métodos que por la importancia que tienen dentro de la consecución de los objetivos, deben ser mostrados. Com.socialgrapher.PhoneContacts.getContacts: Este método extrae los contactos del dispositivo de la base de datos mediante el uso del contentprovider de contactos de la librería de Android, usa un objeto de la clase cursor el cual se puede recorrer y almacenar cada contacto que contenga un número telefónico en un arreglo de cadenas y en orden de frecuencia. Figura 17. Método getContacts. no.uib.ii.algo.st8.GraphViewController.graphFacebook: Este método usa el listado de amigos de Facebook para crear un grafo con cada amigo como un nodo y los ubica en el espacio de manera circular de adentro hacia afuera y llama al método que parametriza cada nodo. Figura 18. Método graphFacebook. 84 Com.socialgrapher.FacebookActivity.getFriendsFacebook: Este método se conecta a Facebook con las credenciales del usuario y extrae mediante un request el listado de amigos de Facebook en una estructura GraphUser que contiene todos los datos de cada amigo, extrae el nombre de cada amigo y lo almacena en un arreglo de cadenas. Figura 19. Método getFriendsFacebook. Com.socialgrapher.FacebookActivity.getMutualFriendsFacebook: Este método se conecta a Facebook y extrae los amigos en común que tiene determinado amigo, el método recibe un objeto de la clase GraphViewController que maneja la creación de nodos en el grafo, también recibe el nodo que contiene el identificador del amigo de Facebook que usará para extraer los amigos en común que tiene con el usuario. El método usa un request que se ejecuta en una tarea asíncrona, por eso recibe el objeto de la clase GraphViewController porque se necesita que se ejecute de manera asíncrona debido a su tiempo de ejecución, crea los enlaces desde el nodo recibido en el parámetro hacia los nodos que representan sus amigos en común. El método está diseñado para ser usado 85 desde la clase creadora del grafo y la ejecutará tantas veces como nodos tenga el grafo, cuando se ejecute por última vez llamará el método que organiza el grafo en comunidades. Figura 20. Método getMutualFriendFacebook(). no.uib.ii.algo.st8.GraphViewController.(createVertex-getVertex_of_graphdrawGraphMf): Estos métodos fueron incluidos en la librería Grapher, el primero crea un nodo y lo ubica en determinada coordenada, el segundo tiene la función de extraer un nodo del grafo que tenga el nombre recibido como parámetro., y el tercero crea un en lace desde el nodo recibido hacia cada uno de los nodos del arreglo de nodos también recibido, siempre y cuando no tenga ya un enlace o sea un enlace a sí mismo. 86 Figura 21. Métodos createVertex-getVertex_of_graph() y drawGraphMf() no.uib.ii.algo.st8.GraphViewController.drawGraph: Este método parametriza todos los nodos, es decir, les asigna nombre y un id en caso de ser nodos de Facebook, la importancia de este método radica en que cuando se parametriza un grafo de Facebook, llama el método de la clase FacebookActivity que solicita los amigos mutuos para cada uno de los nodos, y que a su vez invoca el método que los enlaza y organiza en comunidades. 87 Figura 22. Método drawGraph(). no.uib.ii.algo.st8.GraphViewController.createComunities: Este método sintetiza la función principal de la aplicación que es poder identificar los círculos de influencia del usuario mediante la conformación de comunidades agrupadas por un tema en común, primero almacena todas las aristas representadas cada una por un par de nodos (origen-destino). El algoritmo de modularidad de louvain implementado en java por Ludo Waltman y Nees Jan van Eck y basado en el paper Fast unfolding of communities in large networks (Blondel, Guillaume, 88 Lambiotte, and Lefebvre (2008)), es un algoritmo que trabaja con números enteros, entonces se implementó la forma de que el algoritmo recibiera estructuras “edges” que son las aristas del grafo y pudiera trabajar con los identificadores de cada nodo, el método retorna un objeto de la clase Network que contiene todos los atributos en cuanto a algoritmos de grafos se refiere, el atributo que se usará es “cluster” que es el conjunto de números enteros que representa cada comunidad. Figura 23. Métodos createCommunity() y setCommunityGraph(). no.uib.ii.algo.st8.GraphViewController.setComunityGraph: Este método organiza los nodos teniendo en cuenta que recibe como parámetro el listado de enteros con el número de comunidad para cada nodo, almacena en un arreglo los colores a utilizar para pintar los nodos y recorre los nodos pintando cada uno con 89 el color de su misma comunidad hasta que encuentre un nodo de otra comunidad, entonces cambia el color y sigue con la siguiente comunidad hasta pintarlos todos. 8.8 PRUEBAS DE ACEPTACIÓN Las pruebas se realizaron iterativamente y simultáneamente con la implementación de la aplicación, dado que la aplicación es totalmente demostrativa, es decir, no existen elementos de entrada, solo el ingreso del usuario y clave de Facebook que es manejado por las librerías de la API de Facebook, la corrección de errores ésta representada en un gran porcentaje por validar la existencia de variables, autorizaciones de acceso, cumplimiento de prerrequisitos e implementaciones correctas. El detalle de las pruebas realizadas está compuesto por la tarea realizada, la cual puede abarcar varios casos de uso, una descripción de la tarea, el resultado esperado y el resultado obtenido en cada iteración. Dado que no se manejan elementos de entrada, las pruebas de caja negra y de stress son desestimadas, por lo cual resulta conveniente realizar las pruebas de aceptación a nivel de interacción usuario aplicación, los errores de implementación fueron tratados desde el entorno de desarrollo en fase de depuración por lo cual no serán descritos en éste apartado. Cuadro 2. Prueba N°1 Prueba N°1 Tarea Listado de contactos (CU-1) Descripción Muestra en pantalla el listado de contactos Resultado esperado ListView con los contactos telefónicos Resultado obtenido 1. Vacío, el emulador no tiene contactos 2. Error, Variable “lista” es null 3. Correcto. 90 Cuadro 3. Prueba N°2 Prueba N°2 Tarea Información de contactos (CU-2) Descripción Muestra en pantalla la agenda telefónica. Resultado esperado Agenda con los contactos telefónicos. Resultado obtenido 1. Error (problemas con la versión de API) 2. Correcto. Cuadro 4. Prueba N°3 Prueba N°3 Tarea Mensajes de texto (CU-3) Descripción Muestra en pantalla las conversaciones por SMS Resultado esperado Listado de mensajes enviados y recibidos. Resultado obtenido 1. Error (problemas con la versión de API) 2. Correcto. 91 Cuadro 5. Prueba N°4 Prueba N°4 Tarea Red social de contactos (CU-4, CU-5, CU10) Descripción Muestra en pantalla el grafo que representa la red social. Resultado esperado Conjunto de nodos (contactos) y enlaces ubicados de manera circular alrededor del nodo “Yo” ordenado por “más veces contactado”. Al hacer LongPress sobre un nodo aparece la tarjeta de contacto. Resultado obtenido 1. Nodos dispersos sin enlaces. 2. Nodos ordenados circularmente y enlazados con nodo central, existen nodos repetidos. 3. Nodos ubicados correctamente, no aparece tarjeta de contacto (MYMETYPE incorrecto). 4. Correcto. Cuadro 6. Prueba N°5 Prueba N°5 Tarea Iniciar sesión de Facebook (CU-6, CU-21) Descripción Usuario selecciona botón “Login in Facebook” si su sesión está cerrada ingresa login y pasword para autorizar inicio de sesión, si está abierta cierra sesión. Resultado esperado Sesión iniciada/cerrada. Resultado obtenido 1. Solo inicia sesión con el usuario del propietario (problema de token). 2. Correcto. 92 Cuadro 7. Prueba N°6 Prueba N°6 Tarea Listado de amigos de Facebook (CU-7) Descripción Muestra en pantalla el listado de amigos de Facebook. Resultado esperado ListView con los amigos de Facebook. Resultado obtenido 1. Correcto. Cuadro 8. Prueba N°7 Prueba N°7 Tarea Red social de amigos de Facebook (CU-8, CU-10, CU-11) Descripción Muestra nodos (amigos) y enlaces (relación de amistad) organizados en comunidades por colores, si el usuario hace LongPress sobre un nodo puede ver su foto de perfil y su comunidad. Resultado esperado Nodos y enlaces organizados en comunidades. Resultado obtenido 1. Nodos y enlaces ubicados circularmente (cambiar método). 2. Error, al interactuar mientras se construye grafo (mostrar dialogo mientras construye). 3. Comunidades incorrectas (se necesita mejor precisión). 4. No aparece foto de perfil. 5. Correcto. 93 Cuadro 9. Prueba N°8 Prueba N°8 Tarea Proceso de manejos de movimiento de nodos y vistas (CU-9, CU-20) Descripción Detección de toques y gestos en la pantalla para modificar posiciones de nodos y/o hacer zoom. Resultado esperado Al tocar un nodo, cambie de color y muestre su nombre, si lo arrastra cambia su posición, si hace el gesto de pellisco acerca o lajea la vista. Resultado obtenido 1. El usuario toca en una coordenada y se activa en otra. 2. Correcto. Cuadro 10. Prueba N°9 Prueba N°9 Tarea Guardar grafo (CU-12) Descripción La aplicación guarda el grafo en un archivo de texto que reconocerá cuando lo vuelva a cargar. Resultado esperado Grafo guardado. Resultado obtenido 1. Correcto. 94 Cuadro 11. Prueba N°10 Prueba N°10 Tarea Cargar grafo (CU-13) Descripción La aplicación carga el grafo seleccionado de una lista de grafos guardados. Resultado esperado Grafo cargado. Resultado obtenido 1. Correcto. Cuadro 12. Prueba N°11 Prueba N°11 Tarea Eliminar grafo (CU-14) Descripción La aplicación elimina el grafo seleccionado de una lista de grafos guardados Resultado esperado Grafo eliminado. Resultado obtenido 1. Correcto. Cuadro 13. Prueba N°12 Prueba N°12 Tarea Visualizar el camino más corto entre dos nodos de Facebook (CU-15) Descripción La aplicación muestra los nodos y los enlaces de la ruta más corta entre dos nodos (amigos) seleccionados. Resultado esperado Ruta más corta Resultado obtenido 1. 2. 3. 4. 95 No muestra la ruta. Ruta incorrecta. Se demora mucho tiempo. Correcto. Cuadro 14. Prueba N°13 Prueba N°13 Tarea Consultar diámetro del grafo (CU-16) Descripción La aplicación muestra la cantidad de contactos o de amigos. Resultado esperado Diámetro. Resultado obtenido 1. Correcto. Cuadro 15. Prueba N°14 Prueba N°14 Tarea Visualizar clique máximo (CU-17) Descripción La aplicación muestra los nodos y enlaces del máximo clique. Resultado esperado Clique máximo Resultado obtenido 1. Se demora mucho y no termina. 2. Muestra nodos que no pertenecen al clique. 3. Correcto. 96 Cuadro 16. Prueba N°15 Prueba N°15 Tarea Visualizar puentes entre comunidades (CU-18) Descripción La aplicación muestra los nodos y enlaces que representan los puentes entre comunidades Resultado esperado Puentes. Resultado obtenido 1. Muestra todos los nodos como puentes (se necesita un algoritmo más preciso). 2. Correcto. Cuadro 17. Prueba N°16 Prueba N°16 Tarea Compartir grafo (CU-19) Descripción La aplicación crea un archivo de texto en un formato reconocible por programas externos y disponible para aplicaciones de envió de datos instaladas. Resultado esperado Grafo compartido. Resultado obtenido 1. Correcto. 97 9. CONCLUSIONES La realización de éste trabajo deja una amplia incorporación de conceptos nuevos para el autor, durante la etapa de documentación y contextualización se aprovecharon las habilidades académicas e investigativas adquiridas a lo largo de la carrera y aplicadas a éste proyecto. El entorno de desarrollo Android se asimiló de la mejor manera, aunque se dedicó un tiempo considerable en adquirir los conocimientos necesarios en cuanto a desarrollo, almacenamiento de datos y manejo de interfaces software-hardware. Siendo las aplicaciones para dispositivos móviles todavía novedosas, resulta menos sencillo incorporar nuevos conceptos que en aplicaciones de escritorio se han trabajado con mayor frecuencia. El uso de teoría de grafos aplicado al desarrollo de aplicaciones móviles fue un aspecto importante en la identificación de comunidades, cliques y puentes en el grafo social del usuario, permitiendo reconocer círculos de influencia social útiles para el estudio sociológico de las poblaciones en la red y mediante la extracción de los datos almacenados en los dispositivos móviles, más aun cuando las aplicaciones móviles orientadas al estudio de redes sociales están en periodo de exploración, sobre todo el desarrollo gráfico y la forma de visualizar los grafos. Se probaron varias maneras de visualización, pero solo la librería Grapher en conjunto con la librería JGraphT, facilitó la elaboración de una solución que diera cumplimiento a los objetivos planteados. El uso de la Api de Facebook permitió extraer información de los usuarios, útil para crear la red social del usuario, además de aportar experiencia para nuevas aplicaciones que interactúen con la red social, sobre todo cuando se necesita extraer datos de usuarios como lo fue la técnica de extracción de datos utilizada en éste proyecto. Se implementó la solución para recuperar los datos almacenados en los dispositivos, en el caso de los contactos telefónicos, se utilizaron estructuras de la librería Android diseñadas para consultar información de la base de datos de contactos, una base de datos ya estructurada y disponible dentro de la misma arquitectura Android. De igual manera se hizo con los contactos que a través de mensajes de texto fueron contactados por el usuario. 98 La recuperación de datos de la cuenta de Facebook del usuario se realizó mediante la Api de Facebook, librería Android destinada a intermediar recursos e información de Facebook y la aplicación. También se implementaron los métodos para autorizar el ingreso de usuarios a su cuenta y extraer la información de los amigos y los amigos en común que se tiene con cada uno de ellos, permitiendo así, tener la información necesaria para construir una red de contactos representada en forma de grafos. Durante la etapa de contextualización se descubrió dentro de las estructuras utilizadas, tanto Facebook como Android, Bases de datos que almacenan y administran la información de los contactos, así como lenguajes de consulta para solicitar información estructurada y organizada. Se tomó la decisión de no diseñar una nueva base de datos, siendo innecesario almacenar la información dos veces, también por las características de la aplicación, orientada especialmente hacia el consumo de información más que a la producción de la misma. El cumplimiento del objetivo general del presente proyecto se evidencia a través de la aplicación móvil para construir y visualizar el grafo, que representa las redes sociales a partir de los datos almacenados en el teléfono móvil y de Facebook, esto con el fin de identificar círculos de influencia y la forma como los contactos se agrupan dentro de la red en comunidades alrededor de un tema en común. Para el desarrollo de la aplicación móvil, fue necesario utilizar librerías externas; en el caso del componente matemático de los grafos se utilizó la librería JGraphT que contiene los algoritmos de grafos que fueron invocados; para el componente gráfico se utilizó la librería Grapher, que permite dibujar grafos en dispositivos móviles, ambas son librerías Java integradas al proyecto Android. Éste proyecto es realizado como profundización de los conocimientos y habilidades adquirido durante el proceso de formación en la Universidad Autónoma de Occidente, también busca generar nuevo conocimiento dentro del estudio de redes sociales y la implementación de aplicaciones móviles destinadas a ello. 99 10. RECOMENDACIONES Éste proyecto es un trabajo innovador dentro del auge de los dispositivos móviles y la implementación de aplicaciones para éste sistema, cada aplicación como ésta abre las puertas a nuevas ideas y diferentes formas de aprovechar el trabajo ya realizado, como se hizo también en éste proyecto. A continuación se mencionan algunas recomendaciones a tener en cuenta para la generación de conocimiento a partir de éste trabajo. - Al ser un trabajo integrado con colaboraciones de dominio público, es posible, con los conocimientos ya adquiridos, contribuir al desarrollo de los sistemas externos aquí utilizados para el mejoramiento de ésta y otras aplicaciones. - Los algoritmos de grafos en su gran mayoría son algoritmos de alta complejidad, en grafos de gran escala los tiempos de ejecución son considerablemente extensos como para presentarse ante un usuario. El estudio de algoritmos eficientes permitirá mejorar el tiempo de ejecución de los procesos aquí trabajados. - La extracción de los datos de los usuarios depende de las librerías utilizadas para ello, pero el manejo de los datos a nivel de aplicación no depende de las librerías externas, es decir, éste sistema puede ser utilizado para crear grafos sociales con datos extraídos desde otras redes sociales además de Facebook, como trabajo de continuación y complemento de la aplicación. - La extracción de datos de las redes sociales online requiere de una conexión a internet, las redes de operadores de telefonía aún tienen dificultades en cuanto a disponibilidad y ancho de banda, el crecimiento tecnológico y la creación de nuevas generaciones de redes harán que cada vez sea más rápido extraer la información de los usuarios de las redes sociales. 100 BIBLIOGRAFIA AGILE Software Technologies Research Programme [en línea] : Mobile-D. Finlandia, Tecnical VTT Research Ltd. 2013. [Consultado 04 de Marzo de 2013]. Disponible en internet: http://agile.vtt.fi/mobiled.html. ALDECOA, Rodrigo. Detección de Comunidades en Redes Complejas, [en línea]. Valencia, Universidad Pontificia de Valencia. 2012. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://riunet.upv.es/bitstream/handle/10251/15337/TFM_RodrigoAldecoa.pdf?sequ ence=1. Análisis de Redes Sociales (ARS) [en línea]: San Francisco. Wikispaces for KsToolkit. 2013 [Consultado 04 de Marzo de 2013]. Disponible en internet: http://www.kstoolkit.org/An%C3%A1lisis+de+Redes+Sociales+(ARS). CABERO, Gerardo Antonio, MALDONADO, Daniel. SQlite [en línea]: Rápido, Ágil, Liviano y Robusto. Revista Linux+. 2007. [Consultado 25 de Junio de 2014]. Disponible en internet: http://www.caceriadespammers.com.ar/2013/06/sqlite-rapido-agil-livianoy-robusto.html. COLOMBIA CONGRESO DE LA REPUBLICA. Ley 1273 de 05 de Enero de 2009 [en línea]: Por medio de la cual se modifica el Código Penal, se crea un nuevo bien jurídico tutelado – denominado “de la protección de la información y de los datos”. [Consultado el 06 de Marzo de 2013]. Disponible en internet: http://acueductopopayan.com.co/wp-content/uploads/2012/08/ley-1273-2009.pdf. (--------). Ley Estatutaria 1581 Octubre 17 de 2012 [en línea]: Por la cual se dictan disposiciones generales para la protección de datos personales. [Consultado el 06 de Marzo de 2013]. Disponible en internet: http://www.alcaldiabogota.gov.co/sisjur/normas/Norma1.jsp?i=49981. D. BLONDELA, Vincent – GUILLAUME, Jean-loup – LAMBIOTTE, renaud – LEFEBVRE, Eetienne. Fast unfolding of communities in large networks [en línea] : Ithaca NY. Cornell University Library. 2008. [Consultado 25 de Junio de 2014]. Disponible en internet: http://arxiv.org/pdf/0803.0476.pdf. 101 Facebook API [en línea], Cambridge, Facebook Inc., 2013 [Consultado frecuentemente desde 01 de Marzo de 2013] Disponible en internet: https://developers.facebook.com/docs. HOLZHAUER, Sascha. Developing a Social Network Analysis and Visualization [en línea] : Module for Repast Models Applications. Kassel. Kassel University Press. 2010. [Consultado 02 de Marzo de 2013]. Disponible en internet: http://www.uni-kassel.de/upress/online/frei/978-3-89958-978-8.volltext.frei.pdf. HUISMAN, DUIJN Mark and van, MARIJTJE A.J. Software for Social Network Analysis [en línea]. Londres, SAGE (2011), [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.gmw.rug.nl/~huisman/sna/software.html. MEJIA, Olivares Cristian. Análisis de Redes Sociales a gran escala [en línea]: Mexico DF. Centro de investigación y de estudios avanzados del instituto politécnico nacional. 2010. [Consultado 06 de Marzo de 2013]. Disponible en internet: http://www.cs.cinvestav.mx/TesisGraduados/2010/tesisCristianMejia.pdf. MIKA, Peter. Flink: Web Technology for Extractation and Analysis of Social Networks [en línea], Amsterdam, Department of Computer Science. Vrije University, 2005 [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.websemanticsjournal.org/index.php/ps/article/viewFile/73/71. MONSALVE, Mauricio. Análisis de redes sociales [en línea]: un tutorial. Chile, Universidad de Chile. 2008. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://users.dcc.uchile.cl/~mnmonsal/SNA.pdf. SCOTT, John. Social Network Analysis: A Handbook. Segunda Edición. Los Angeles (USA): SAGE Publications Ltd, 2000. 208 p. What is Social Network Analysis? [en línea]: International Network for Social Network Analysis. Delaware, INSA, 2010 [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www.insna.org/what_is_sna.html. 102 TANBEER Syed K., LEUNG Carson Kai-Sang, CAMERON Juan J. DIFSoN [en línea]: Discovering Influential Friends from Social Networks. Winnipeg, MB, Canada, Department of Computer Science, University of Manitoba. 2012. [Consultado 04 de Marzo de 2013]. Disponible en internet: http://140.123.102.14:8080/reportSys/file/paper/prince123/prince123_6_paper.pdf. WALTMAN, Ludo, and ECK, Nees Jan van. A smart local moving algorithm for large-scale modularity-based community detection [en línea] : Eindhoven. Ludo Waltman Website. 2013. [Consultado 25 de Junio de 2014]. Disponible en internet: http://www.ludowaltman.nl/slm/. WASSERMAN Stanley, FAUST Katherine. Social Network Analysis: Method and Applications. Cambridge, Cambridge University Press, 1994. 827 p. Wikkipedia [en línea]: Red Social. Florida. Wikimedia Foundation. 2013. [Consultado 02 de Marzo de 2013]. Disponible en internet: http://es.wikipedia.org/wiki/Red_social. YUTAKA, Matsuo, JUNICHIRO Mori, MASAHIRO Hamasaki. Polyphonet: An Advanced Social Network Extraction System from the Web [en línea]. Tokio, 2006. [Consultado 01 de Marzo de 2013]. Disponible en internet: http://www2006.org/programme/files/pdf/4042.pdf. 103