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