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



Documentos relacionados
Actualización de versión a Bizagi 10.x

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Caso práctico de Cuadro de Mando con Tablas Dinámicas

Manual de usuario Página 1 ÍNDICE

Sistema de Mensajería Empresarial para generación Masiva de DTE

PEEPER PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS. Mayo Versión 2.1 OSCAR IVAN LÓPEZ PULIDO

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

SECRETARÍA VIRTUAL Perfil Ciudadano

POLÍTICA DE COOKIES. A continuación explicaremos qué son las cookies y los tipos de cookies que utiliza la Fundación Fuertes en su sitio Web:

MEMORANDO CIRCULAR No CARLOS IVÁN VILLEGAS Presidente POLÍTICA DE TRATAMIENTO DE DATOS PERSONALES

El proceso de edición digital en Artelope y CTCE

Plataforma de Formación Online con Moodle!

Base de datos en la Enseñanza. Open Office

La publicación. Pere Barnola Augé P08/93133/01510

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Métricas, Estimación y Planificación en Proyectos de Software

PROGRAMA DE GESTIÓN DOCUMENTAL PGD UNIDAD PARA LA ATENCIÓN Y REPARACIÓN INTEGRAL A LAS VICTIMAS APROBACIÓN DEL PROGRAMA DE GESTIÓN DOCUMENTAL- PGD

LA PROTECCIÓN DE DATOS PERSONALES Y LA LEY DE DELITOS INFORMÁTICOS.

Plan de estudios Maestría en Sistemas de Información y Tecnologías de Gestión de Datos

Proyectos de Innovación Docente

Gestión de Proyectos en Bibliotecas Universitarias bajo el Enfoque de Marco Lógico. Alejandra M. Nardi

Licenciatura en Computación

ORIENTACIONES SIMCE TIC

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Capítulo 6: Conclusiones

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

Servicio de telefonía ip de la Universidad Carlos III de Madrid

Introducción a la Firma Electrónica en MIDAS

Documento de Arquitectura de Software. KunaySoft. Autores: Juan Camilo González Vargas. Javier Leonardo Parra Laguna

11/06/2011. Alumno: José Antonio García Andreu Tutor: Jairo Sarrias Guzman

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

FICHA DE REGISTRO DE TRABAJOS INSTITUCIÓN PÚBLICA

Instituto Tecnológico de Costa Rica

Política de Privacidad y Protección de Datos Mercedes-Benz Impulsando Pymes

CAPÍTULO III 3. MÉTODOS DE INVESTIGACIÓN. El ámbito de los negocios en la actualidad es un área donde que cada vez más

Para llegar a conseguir este objetivo hay una serie de líneas a seguir:

GESTIÓN DE LA DOCUMENTACIÓN

UML, ejemplo sencillo sobre Modelado de un Proyecto

DIGITALIZACIÓN DE DOCUMENTOS: PROYECTO DIGISAN

Alumnos de Nuevo Ingreso Master en Gestión y Administración Pública

Guías de ayuda para la configuración de la privacidad y seguridad de las redes sociales

La e-capacitación: Estrategia Competitiva

Por qué es importante la planificación?

DESARROLLO DE SOFTWARE DEFINICIÓN GENERAL DEL PROCESO GABY LORENA GUERRERO LEYDI ROCIO ERAZO PABLO FELIPE MIRANDA WALTER ALEXIS ANTE

Figura 4.1 Clasificación de los lenguajes de bases de datos

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

GUÍAS. Módulo de Diseño de software SABER PRO

Plan de Estudios. Maestría en Seguridad Informática

Implantación de los servicios web 2.0 para la pagina del Departamento de Eléctrica y Electrónica de la Escuela Politécnica del Ejercito

Manual de Procedimientos

Elementos requeridos para crearlos (ejemplo: el compilador)

Módulo 2. Inicio con Java

Desarrollo de un Sistema de Gestión de Proyectos mediante el framework GWT

SEGUIMIENTO EDUCATIVO. Comunicaciones

3. Participantes en el diseño y seguimiento curricular del programa

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

GLOSARIO DE TÉRMINOS

POLÍTICA PARA EL MANEJO DE DATOS PERSONALES 3M COLOMBIA S.A.

Programa de Criminología UOC

Capítulo 1. Introducción

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

MODULO ADMINISTRATIVO

Capítulo 1 INTRODUCCIÓN. Introducción

1-9 August 2003, Berlin

GERENCIA DE INTEGRACIÓN

Guía breve para la. administración de la capacitación en las. entidades públicas. Versión abreviada del Manual para la. entidades públicas

REPUBLICA DE COLOMBIA PROGRAMA DE LAS NACIONES UNIDAS PARA EL DESARROLLO PNUD

E-learning: E-learning:

Recomendaciones jurídicas para que una empresa empiece un negocio en la web

GUÍA DE SEGURIDAD DE LA INFORMACIÓN GUÍA GOBIERNO CORPORATIVO PARA EMPRESAS SEP

Convención sobre los Derechos del Niño (CDN)

Proyecto 10. Universidades Comprometidas con Sociedades Sustentables. Indicadores de Sustentabilidad Ambiental

ISO Anexo A OBJETIVOS DE CONTROL Y CONTROLES DE REFERENCIA DANIELA RAMIREZ PEÑARANDA WENDY CARRASCAL VILLAMIZAR

Sistemas de Calidad Empresarial

Our Mobile Planet: España

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller Previsto

Web Crawler en eva.fing.edu.uy

Itinerario Formativo en Innovación Docente

EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 RESUMEN


Características y ventajas de WinZip

ANEXO VI REFERIDO EN EL ARTÍCULO 2.3 EN RELACIÓN CON LA ASISTENCIA ADMINISTRATIVA MUTUA EN ASUNTOS ADUANEROS

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

En cumplimiento con lo establecido en la "Ley Federal de Protección de. Datos Personales en Posesión de los Particulares" vigente en México, y

CAPÍTULO 3 3 DISEÑO DE UN MECANISMO DE DETECCIÓN DE TRÁFICO MALICIOSO PARA REDUNAM

TÍTULO III: ADAPTACIONES, RECONOCIMIENTOS Y TRANSFERENCIA DE CRÉDITOS EN ESTUDIOS DE GRADO

INGENIERÍA EN SISTEMAS COMPUTACIONALES (ISIC )

Wiip Surveillance. Sistema de gestión de rondas de vigilancia. Wiip Systems C.B. S.L

App para realizar consultas al Sistema de Información Estadística de Castilla y León

El contenido ha sido siempre un factor importante a la hora de. El valor de los contenidos para móviles

Guía breve para la. Versión abreviada del Manual para la. evaluación de desempeño y potencial

Web colegial. Especificaciones Funcionales. Versión 1.0 Fecha de Elaboración Última Modificación Elaboración a Cargo Revisón a Cargo

Preguntas Frecuentes. Plataforma ScienTI. Aplicativos CvLAC y GrupLAC

CAPÍTULO 2 IMPORTANCIA DE LA ASIGNATURA OUTSOURCING EN TECNOLOGÍAS DE INFORMACIÓN

Norma ISO 9001:2015. Cuáles son los cambios presentados en la actualización de la Norma?

Auditoría administrativa

Transmisión de documentos digitalizados a través de ORVE/SIR. Argumentario.

Transcripción:

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 visualizarlas 1. 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: 1 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. 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 entorno 2. 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 FLINK 3 y POLYPHONET 4 que explotan los 2 SCOTT, John. Social Network Analysis: A Handbook. Segunda Edición. Los Angeles (USA): SAGE Publications Ltd, 2000. p. 4. 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 Facebook 5. 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 cliques 6. 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, Pajek 7, 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, etc 9. 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. 8 WASSERMAN Stanley, FAUST Katherine. Social Network Analysis: Method and Applications. Cambridge, Cambridge University Press, 1994. p. 3. 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 10 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. 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 otro 11. 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 11 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. 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/ley- 1273-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 ágil 15, 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. 15 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. 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 java 16. 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 instalarlo 17. 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 Google 18. 16 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/jre7- downloads-1880261.html. 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 JgraphT 19. 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 Grapher 20. 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 Requerimientos Relacionados CU-1 Consultar listado de contactos del teléfono REQF-1 CU-2 Consultar la información del contacto REQF-2, REQF-3, REQF- 4. CU-3 Consultar los mensajes de texto realizados. REQF-5. CU-4 Crear red social de contactos por llamadas. REQF-7, REQF-9. CU-5 Crear red social de contactos por mensajes. REQF-6, REQF-8. CU-6 Iniciar sesión de Facebook. REQF-10. CU-7 Consultar listado de contactos de Facebook. REQF-11. CU-8 Crear una red social de contactos de Facebook REQF-12. REQF-13, REQF-14. CU-9 Cambiar posición de un nodo. REQF-15. CU-10 Consultar información de un nodo. REQF-16. CU-11 Visualizar la comunidad de un nodo de Facebook. REQF-17. CU-12 Guardar grafo. REQF-18. CU-13 Cargar grafo. REQF-19. CU-14 Eliminar grafo. REQF-20. CU-15 Visualizar el camino más corto entre dos nodos de REQF-21. Facebook. CU-16 Consultar el diámetro del grafo. REQF-22. CU-17 Visualizar clique máximo. REQF-23. CU-18 Visualizar los puentes entre comunidades de Facebook. REQF-24. CU-19 Compartir grafo. REQF-25. CU-20 Cambiar vista (acercar/alejar). REQF-26. CU-21 Cerrar sesión de Facebook. REQF-27. 47

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 Eck 21 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