SG35 (Febrero - Abril 2012)

Page 1

Usabilidad: Análisis de Interacción P.34

Arquitectura Empresarial P.38

Introducción a Clojure P.52

NO.

35

Tutorial

ZeroMQ

CONOCIMIENTO EN PRÁCTICA

BIG DATA

Software Guru

Febrero-Abril 2012 www.sg.com.mx

Caso de Estudio

www.sg.com.mx |

UN GRAN RETO Recuperando un Proyecto con Kanban Emprendiendo

Internet Startups y el Mercado Empresarial

México, $65.00



www.sg.com.mx |

Software Guru


35

CONOCIMIENTO EN PRÁCTICA

.CONTENIDO Febrero-Abril 2012 |

www.sg.com.mx

En Portada Big Data

20

En nuestra industria no solo se trata de generar grandes cantidades de datos sino de encontrar medios para obtener información útil. Nuestro mundo se está moviendo a través de información digital y esto despierta el reto de almacenar e interpretar a una velocidad apropiada para poner en la mesa de los negocios información relevante que lleve a tomar decisiones con las cuales se obtengan ventajas competitivas y diferenciadores. Esto y más, es Big Data.

Columnas Tejiendo Nuestra Red

06

Por Hanna Oktaba

Mejora Continua

08

Por Luis Cuellar

Tendencias en Software

11

Por Luis Daniel Soto

Código Innovare

42

Por Victor Jesús Hernández Salinas

Tecno-lógico

46

Por Mauricio Angulo

Programar es un Estilo de Vida

48

Por Gunnar Wolf

PÁG.

20 02

Columna invitada Por Anibal Gonda

54


.CONTENIDO

Herramientas y Novedades Lo que Viene

10

Java y la JVM

12

Por Enrique Zamudio

Tutorial ZeroMQ

14

Por Miguel Angel Jimenez

Carrera

PÁG.

18

Capacitación en Línea / Manteniéndose actualizado en una industria de conocimiento

Emprendiendo

Por Vanessa Amaya

18

Por Manuel Landa

Clojure

Tecnología 44

Por Fabián Fandiño

Prácticas Usabilidad Análisis y presentación de los flujos de interacción de una interfaz

34

Por Pamela Rodríguez

Prueba de Software Aprovechando las bondades de “whois” en las pruebas de seguridad

36

Por Berenice Ruíz y Miguel Angel Cortés

Arquitectura Implantando prácticas de arquitectura dentro de la organización

38

Por Humberto Cervantes

Ágil Caso de Estudio: Recuperando un proyecto de desarrollo de software caótico con el método Kanban Por Masa K Maeda, Manuel Mazán

03

52

Por Andrés Gómez

40

En Cada Número Editorial

04

Noticias

05

Gadgets

56

Software Guru

Seguridad Seguridad pública eficiente: Almena contemporánea

Fundamentos

www.sg.com.mx |

Internet startups y el mercado empresarial

50


.EDITORIAL BIENVENIDA

. “Lo que es un hecho es que los datos ya están ahí, dentro y fuera de tu empresa.”

2012: El año del Big Data

T

odavía ni siquiera empezaba el 2012 cuando las principales firmas de análisis de la industria de TI declararon que este sería el año del big data. Después de habernos dedicado el último par de meses a investigar al respecto, podemos concluir que big data sí es un elemento que impactará significativamente el cómputo empresarial durante los próximos años. ¿Cuándo? Eso ya depende de cada organización. Lo que es un hecho es que los datos ya están ahí, dentro y fuera de tu empresa; aprovecharlos o no ya es cosa de cada quién. En este número de SG te brindamos un panorama sobre los beneficios potenciales de esta práctica así como las principales tecnologías que la sustentan. Para variar, en SG estamos muy activos con nuestros eventos para este año. Recuerda que te esperamos en SG Virtual este 22 de marzo. Tendremos más de 10 horas seguidas de conferencias gratuitas vía web en las que puedes participar desde donde quiera que estés, así que no hay pretexto para quedarse fuera. Asimismo, te recomendamos que vayas preparando todo para acompañarnos del 19 al 21 de junio en la Ciudad de México para SG Conference and Expo 2012. Es muy probable que cuando este ejemplar llegue a tus manos, SG esté estrenando un nuevo sitio web. Es un sitio donde tú mismo podrás publicar noticias, eventos, código y ligas a otros contenidos en Internet. Esperamos que sea de tu agrado y lo aproveches al máximo. Nos vemos ahí.

››Equipo Editorial SOFTWARE GURU

DIRECTORIO SG Dirección Editorial Pedro Galván / Dirección de Operaciones Mara Ruvalcaba Coordinación Editorial Vanessa Amaya / Arte y Diseño Oscar Sámano / Suscripciones María Morales Consejo Editorial Jorge Valdés - PMI / Luis Cuéllar - Softtek / Luis D. Soto - Microsoft / Hanna Oktaba - UNAM / Emilio Osorio - Sistemas Humanos / Luis Vinicio León - e-Quallity / Gloria Quintanilla

Colaboradores Andrés Gómez, Anibal Gonda, Berenice Ruíz, Enrique Zamudio, Fabián Fandiño, Gunnar Wolf, Humberto Cervantes, Manuel Landa,Manuel Mazán, Masa K Maeda, Mauricio Angulo, Miguel Angel Cortés, Miguel Angel Jimenez, Pamela Rodríguez, Victor Jesús Hernández Salinas Ventas Claudia Perea, María Morales / Eventos Montserrat Ramírez / Alianzas Daniel Velázquez / Webmaster Karen Rodríguez Educación contínua Ana Karen Rosales / SG Talento Denise Aguilar Contacto info@sg.com.mx SG Software Guru es una publicación trimestral editada por Brainworx, S.A. de C.V., Temístocles 34 piso 3, México DF 11560. Los contenidos de esta publicación son propiedad intelectual de los autores y están licenciados bajo Creative Commons Atribución-No comercial 2.5 México. Todos los artículos son responsabilidad de sus propios autores y no necesariamente reflejan el punto de vista de la editorial. Reserva de Derechos al Uso Exclusivo: En trámite. ISSN: 1870-0888. Registro Postal: PP15-5106. Distribuido por Sepomex. Se imprimió en febrero de 2012 en 4Press.

04


.NOTICIAS

El pasado 8 y 9 de febrero se realizó con éxito la edición 2012 del SAP Forum en el Centro Banamex de la Ciudad de México. Este fue un evento con gran impacto en el que se reunieron alrededor de 8 mil personas interesadas en el mundo de los negocios desde diversas áreas y perspectivas, pero todas con un objetivo en común: innovar y hacer uso de las mejores tecnologías de la información para ello. SAP Forum contó con sobresalientes ponentes de la talla de Steve Wozniack, que relató su historia como entusiasta de la computación y sus días al lado de Steve Jobs.

.IDC IT Forum - Tabasco

El pasado 16 de febrero se llevó a cabo en Villa Hermosa, Tabasco el IDC México IT Forum Tabasco 2012, evento enfocado en las herramientas actuales de TIC que permitirán elevar la competitividad de las empresas y aquellas que podrán prepararlas para alcanzar una transformación integral, que les permita adaptarse a las tendencias futuras.

.Drupal Summit Latino 2012

Del 19 al 21 de enero en Guadalajara, Jalisco se reunieron Drupaleros de todo el continente americano, para aprender y platicar sobre este CMS. Durante estos tres días se impartieron talleres para principiantes y avanzados, y se ofrecieron una gran cantidad de pláticas sobre programación, diseño gráfico, y negocios, donde también se habló de la comunidad de Drupal en México y en Latinoamérica. http://gdl2012.drupal-latino.org

.Quesos y Procesos

TenStep Latinoamérica, Avantare y la Universidad Iberoamericana, organizaron el evento “Quesos y Procesos” con el tema de Administración de Procesos de Negocio, en el cual participaron panelistas expertos en la materia. A lo largo del evento se demostró que esta disciplina ha mostrado importantes avances en los últimos años, y que las empresas que quieran mantenerse competitivas están obligadas a contar con un marco de referencia confiable de administración de procesos de negocio. Para mayor información, noticias al día y actualizaciones de la industria visita: www.sg.com.mx

05

www.sg.com.mx |

.SAP Forum 2012

El pasado mes de enero, la Secretaría de Economía realizó un homenaje a Watts Humphrey, en el marco de la iniciativa nacional TSP, contando con el apoyo de CANIETI, TEC de Monterrey, Infotec y el Software Engineering Institute (SEI). Durante el evento se recordó a este personaje tan importante en el ámbito de los procesos de software, y también se aprovechó para hablar sobre el papel que representa México en la industria de software en el mundo.

Software Guru

.Homenaje a Watts Humphrey


.COLUMNA TEJIENDO NUESTRA RED

Principios

Revisando los del Manifiesto por el Desarrollo Ágil de Software

H

an pasado diez años desde que diecisiete expertos de la industria del software: Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland y Dave Thomas dieron a conocer el Manifiesto por el Desarrollo Ágil de Software. Desde entonces se han publicado decenas de libros con la palabra ágil en el título y se han promovido nuevas prácticas y métodos abanderados por este movimiento. Aunque usted no lo crea, durante estos años he seguido de cerca las diferentes propuestas de XP, Scrum, lean, kanban y otras, para ver cuál es su aportación a los procesos de desarrollo de software llamados “tradicionales”. Aprovechando este décimo aniversario del Manifiesto, citaré sus valores para compartir mis comentarios y reflexiones. Tal como lo establece la parte inicial del Manifiesto [1], éste promueve la valoración de:

Individuos e interacciones sobre procesos y herramientas

Fue un reclamo muy legítimo contra la idealización del papel de los procesos y las herramientas en el desarrollo de software. En muchas organizaciones fue más importante obtener la “certificación” en un modelo de procesos o contar con la herramienta más sofisticada, que cuidar que su gente estuviera motivada y capacitada para obtener beneficios tangibles al adoptarlos en su trabajo. Los desarrolladores tienen que sentir que los procesos y las herramientas realmente les sirven y facilitan su trabajo para poder aceptarlos. La interacción y colaboración dentro de los equipos de trabajo tampoco fue muy destacada en los procesos tradicionales, más bien se consideraba que era algo implícito. Llamar la atención sobre este tema fue, en mi opinión, una aportación muy importante del Manifiesto.

Software funcionando sobre documentación extensiva

La Dra. Hanna Oktaba es profesora de la UNAM, miembro del IPRC, y directora técnica del proyecto COMPATISOFT. hanna.oktaba@ ciencias.unam.mx

06

Creo que este valor es el que más frecuentemente se ha interpretado mal. Nadie duda que el software funcionando es lo más importante, pero el papel de la documentación quedó en el entredicho. Muchos lo han entendido como “al diablo con la documentación, solo el código que se ejecuta es valioso”. Esta gente tiene una visión del ciclo de vida del software muy limitada. Se imagina que el autor del código va a ser su único amo hasta que el software se retire de la operación. Sabemos que la realidad no es así. Salvo los sistemas que fracasan, los que son exitosos sobreviven por mucho a sus autores. Nuevos desarrolladores tienen que darles mantenimiento y adecuarlos a las nuevas necesidades de los usuarios o negocios. Para que esta labor se pueda realizar, sin costo excesivo, es indispensable la documen-

tación de diferentes aspectos del sistema. Es cierto que para sistemas muy pequeños y simples, la documentación puede ser muy básica, pero para los sistemas complejos, del cuyo funcionamiento dependen organizaciones enteras, la documentación tiene que abarcar todos los aspectos cruciales del sistema para ayudar a comprenderlo. Me atrevo a decir que la complejidad de la documentación debe ser directamente proporcional a la complejidad del sistema de software. En mi opinión la pregunta no es ¿qué tan extensa debe ser la documentación? sino ¿qué es lo que hay que documentar para poder comprender un sistema de software para darle el mantenimiento?

Colaboración con el cliente sobre negociación contractual

Creo que la facilidad de poner en la práctica este valor es la que más depende del contexto. Cuando un grupo de desarrollo de software está incrustado como un área interna en una organización, tiene un solo cliente que es la propia organización para la cual trabaja. En este caso la colaboración muy estrecha entre ambos aparentemente debe ser fácil sin que haya un contrato muy estricto de por medio. Esto no es tan claro cuando el grupo de desarrollo es un proveedor externo a la organización. En este último caso el contrato y su negociación es inevitable. Entonces ¿qué mensaje nos quieren transmitir con este valor? Tal como yo lo entiendo, por un lado, sea el cliente interno o externo, la relación con sus representantes tiene que ser mucho más estrecha de lo que nos obligaban los modelos tradicionales de procesos. En estos modelos, se habla de revisiones y validaciones con el cliente, pero se deja a la interpretación la frecuencia y la profundidad de estas actividades. Por otro lado, queda abierta la pregunta sobre ¿cómo expresar las condiciones de los contratos para que el cliente tenga la flexibilidad de ajustar sus necesidades en cualquier momento y que el proveedor no quiebre a raíz de éstos ajustes? En este punto, el Manifiesto nos puso el dedo en la yaga. La relación cliente-proveedor en el desarrollo de software no puede tener bases tradicionales (uno exige y paga al otro por cumplir). Esta relación debe ser de colaboración con beneficios mutuos.

Respuesta ante el cambio sobre seguir un plan

Las solicitudes de cambio por parte del cliente, que pueden causar la modificación del plan, ya han existido en procesos tradicionales. La insistencia de los autores del Manifiesto en este punto puede ser a consecuencia de que los contratos típicos exigían esta rigidez de seguir un plan previamente acordado sin ofrecer mucha margen para los cambios. Pero también sospecho que es un llamado a los propios desarrolladores, a los que se desesperan cuando un


››”EN LA RELACIÓN

CLIENTE-PROVEEDOR, EL MANIFIESTO NOS PUSO EL DEDO EN LA YAGA.” cliente les cambia la “jugada” y ellos ya pensaron que el sistema está casi listo. Los autores del manifiesto les quieren decir que su enojo no tiene sentido. A fin de cuentas el sistema debe de servir al cliente y a los usuarios, y por lo tanto tienen que apechugar los cambios aunque les duela.

››Por Hanna Oktaba Referencias: [1] Manifesto for Agile Software Development. http://agilemanifesto.org

www.sg.com.mx |

Al finalizar la parte del Manifiesto dedicada a los valores, encontramos algo que es como las letras chiquitas de los contratos: “Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.” Y aquí está el gato encerrado. Los autores dicen que aunque valoran más los elementos de la izquierda también consideran de valor las partes de la derecha de sus enunciados, es decir: procesos y herramientas, documentación extensiva, negociación contractual y seguir un plan. Así que no rechazan por completo de las aportaciones de los métodos tradicionales sino claman por agregarles mayor cuidado de: individuos e interacciones, software funcionando, colaboración con el cliente y respuesta ante el cambio. A la distancia de diez años creo que la propuesta de los agilistas fue muy importante para el avance de la comprensión de la forma de trabajar de los desarrolladores de software. De ninguna manera invalidan la aportación de las propuestas anteriores, más bien las enriquecen poniendo énfasis en los aspectos que no han tenido suficiente atención. A las nuevas generaciones de desarrolladores y a los directivos de sus organizaciones los invito a reflexionar sobre estos valores del Manifiesto por el Desarrollo Ágil de Software para que complementen su forma de trabajar actual con las prácticas que les hagan falta, sea de métodos ágiles o sea de métodos tradicionales. Seguro les va a servir esta reflexión.

Software Guru

La letra pequeña ...


.COLUMNA MEJORA CONTINUA

La Ilusión de Predecir el

Futuro ,

ESTIMACIÓN PROYECCIÓN Y CONTROL

P

arece ser que en todas partes a donde voy los problemas en el desarrollo de software se concentran en la estimación de proyectos, ya sea porque nos dio una cantidad de esfuerzo demasiado grande y no somos competitivos o porque la estimación fue muy baja y no podemos salir. Parecería que la culpa del éxito o fracaso de un proyecto depende tan solo de la estimación. Cuando escucho esto me parece que le estamos dando demasiada importancia a la estimación y nos olvidamos de que el éxito del proyecto es cincuenta por ciento estimación y cincuenta por ciento ejecuciones. Hace poco me encontré la siguiente A ESTIMACIÓN frase: “El ser humano es excelente para proyectar pero pésimo para predecir”, y REQUIERE DE estoy totalmente de acuerdo. Somos sumamente malos adivinando lo que va a TÉCNICAS DE suceder en el futuro, para lo que somos muy buenos es para ver lo que ha sucePREDICCIÓN Y NO dido en el pasado y proyectarlo a lo que va a pasar. Nuestro razonamiento estaDE ADIVINANZA dístico y la comprensión de los procesos normales nos sugieren que si seguimos el mismo proceso y los mismos supuestos para lograr un objetivo podemos inferir el resultado que vamos a obtener. Por ejemplo, si pregunto: “¿cuánto tiempo te toma llegar de tu casa al trabajo?” seguramente me puedes dar un excelente estimado, sobre todo si has viajado de tu casa a tu trabajo innumerable número de veces y tomando en cuenta que sigues el mismo camino, a la misma hora. Pero si te pregunto cuánto tiempo te tomaría gatear de tu casa a la villa, la estimación es mucho más difícil de hacer. Para que nuestro ejercicio de proyección funcione, lo más importante es modificar lo menos posible los supuestos con los que hemos trabajado anteriormente y requerimos tener la mayor cantidad de información sobre el resultado de nuestra predicción y nuestra ejecución. Por ejemplo, si en el pasado hemos hecho solamente proyectos de 10,000 líneas de código, y se han hecho exclusivamente con personal experimentado, y con esta misma información quiero estimar un proyecto de 50,000 líneas con personal nuevo, mi estimación Luis R. Cuellar es director de calidad será poco confiable. El riesgo aumenta cuando introducimos a nivel mundial de Softtek. Es recovariables para las cuales no tenemos historia. nocido por la ASQ como Certified Vale la pena mencionar que al cambiar la forma en que Quality Manager, estimas tamaño, dado que es la entrada de la estimación, Certified Software Engineer y Six automáticamente se hace obsoleta toda la historia. Así que Sigma Black Belt. @lcuellar la decisión más importante al desarrollar un modelo de estimación es precisamente la forma en se establece el tamaño.

››“L

.”

08

Tomando estos puntos en cuenta podremos mejorar nuestras estimaciones. Pero pasemos ahora al otro 50%, a la ejecución que consta del seguimiento a proyectos y el control de los cambios. El problema de seguimiento inicia al dejar claramente documentado los supuestos con los que hice la estimación. Si estimé que cada programa me tomaría tres días y me está tomando cuatro, desde ese momento entiendo que algo está mal y debo de corregir, ¿Cómo? detectando las causas raíz por las que me está tomando más de lo estimado y haciendo las correcciones necesarias. El seguimiento normalmente falla debido a que se hace de una manera tan general que no podemos detectar las diferencias con respecto a los supuestos utilizados en la estimación. Lo siguiente que no debemos descuidar es el alcance del proyecto. Muchas veces he visto iniciar proyectos con una cantidad mínima de requerimientos al iniciar, los cuales se convierten cada vez en requerimientos más complejos que los supuestos iniciales o requerimientos cambiantes a través del tiempo, los cuales nos obligan a ejecutar varias veces lo mismo. Aquí aplica la frase, “El camino al infierno consta de un paso a la vez”, cada pequeño cambio se acumula y si no tengo claro los cambios que están en el proyecto y en qué punto debo de levantar la mano para renegociar, el proyecto está perdido. En mi experiencia en proyectos de desarrollo aquí es donde la mayoría de los proyectos realmente se barren, en otras palabras si tu organización tiene problemas de estimación, échale un vistazo a tu control de cambio porque lo más probable es que ahí esté el problema. Cada vez veo más la idea de manejar el análisis por hora aplicada y estimar a partir de que el análisis está terminado porque esto definitivamente es una solución sobre todo cuando no están claros los requerimientos. En resumen si nuestro costo está por encima del mercado no necesariamente es un problema de estimación sino un problema de eficiencia y a lo mejor para resolverlo tengo que enfocarme en el entrenamiento o el tipo de proyectos que estoy atendiendo. La estimación requiere de técnicas de predicción y no de adivinanza, lo que requiere registrar el histórico para ajustar el modelo frecuentemente. Y por último: es tan importante predecir cómo se comportará el proyecto, como asegurar que se comporte como se predijo.

››Por Luis Cuellar


www.sg.com.mx |

Software Guru


.HERRAMIENTAS Y TECNOLOGÍAS LO QUE VIENE

1 Autonomy IDOL 10 Big Data para corporativos

A finales del 2011 HP adquirió la empresa de software Autonomy por cerca de 10 billones de dólares. Uno de los primeros resultados de esta adquisición es el lanzamiento de la plataforma IDOL 10, diseñada para ayudar a los corporativos a administrar y analizar grandes cantidades de datos. IDOL 10 maneja datos estructurados de bases de datos relacionales, en conjunto con datos no estructurados tales como emails, documentos de texto, audio, video y medios sociales. Aprovecha la tecnología de Autonomy para procesamiento automático de datos no estructurados, integrándola con tecnología de Vertica —otra empresa que HP adquirió en 2011— que provee un motor para análisis de datos en tiempo real. Grandes cantidades de datos, con gran variedad, procesados con alta velocidad … eso suena a Big Data, y al parecer HP le está entrando fuerte.

2

La integración continua (CI por sus siglas en inglés) es una práctica común en el desarrollo ágil, donde los distintos miembros del equipo integran su trabajo frecuentemente, generando builds varias veces al día. Como te podrás imaginar, hacer esto de forma efectiva sin que entorpezca las actividades del equipo requiere de herramientas especializadas. TeamCity es una herramienta para integración continua, y justo está lanzando su versión 7 que incorpora capacidades para mejorar el control, velocidad y visibilidad del proceso de integración. TeamCity está disponible bajo distintas posibilidades de licenciamento: gratis con uso limitado, de paga sin restricciones, y open source para proyectos de software libre activos y autorizados.

MongoDB 2.2

El punto de entrada para NoSQL

4

CI al alcance de todos

3

De las distintas opciones de base de datos que han surgido del movimiento NoSQL, MongoDB es posiblemente la que está ganando más tracción para aplicaciones de propósito general. De hecho, la estrategia de 10gen —la empresa detrás de MongoDB— es enfocar las capacidades de MongoDB para poder satisfacer la funcionalidad típicamente provista por bases de datos relacionales, además de proveer los beneficios de ser un almacenamiento NoSQL. La versión 2.2 de mongoDB se liberará esta primavera. Entre sus novedades incorpora un framework de agregación de datos que facilitará tareas sencillas de agregación como conteos, promedios y agrupaciones (group by). Todo esto es funcionalidad básica en las bases de datos relacionales, pero que típicamente los almacenamientos NoSQL no incorporan. Si todavía no estás usando un almacenamiento NoSQL, parece ser que MongoDB puede ser un buen punto de entrada.

Todo parece indicar que este verano se lanzará Windows 8, y que no será simplemente “una versión más”. Windows 8 representa un cambio significativo para los desarrolladores de aplicaciones para este sistema operativo. Destaca que su nueva plataforma aplicativa ahora está basada en HTML5 y Javascript, y utiliza como default el estilo de interfaz de usuario Metro (la UI usada en Windows Phone 7). Para no alienar a sus tecnologías y plataformas tradicionales , se han realizado cambios en el sistema operativo de modo que todas las aplicaciones, ya sea que hayan sido desarrolladas con C#, MFC o HTML5/JavaScript, se traducen a los APIs de WinRT, que está directamente sobre el kernel de Windows. Windows 8 también incorpora APIs para near field communication (NFC) facilitando la interacción entre dispositivos. Consideramos que la plataforma de Windows 8 es bastante progresista, y en principio nos gusta. Ahora a ver que tal la reciben los desarrolladores.

10

TeamCity 7

Windows 8

Una nueva forma de construir aplicaciones


.COLUMNA

TENDENCIAS EN SOFTWARE

El Nuevo Mundo de¿ Entendimiento? PARA QUÉ LOS GRANDES DATOS

L

››ESTAMOS DESCUBRIENDO QUE

Retrocedo un paso para poder crear el contexto apropiado. En un artículo publicado por la IEEE en el 2009 “The Unreasonable effectiveness of Data” [1] se establece que: invariablemente, los algoritmos simples de aprendizaje con datos abundantes triunfan sobre “algoritmos inteligentes” con menor cantidad de datos. Una idea fundamental del web semántico es la capacidad de interactuar con servicios de software sin requerir inteligencia artificial. Esto se debe a que un mismo significado puede ser expresado de muchas maneras y la misma expresión puede tener diferentes significados. El artículo concluye que las relaciones semánticas pueden ser aprendidas automáticamente de evidencia acumulada en forma de patrones de texto y tablas.

2012: El científico de datos

Los gigantes del web hoy ingieren más de 5 Petabytes al mes. Y esto en una realidad donde los sensores se encuentran en uso aún de forma muy limitada. Esto ha generado una nueva figura – el científico de datos – que se encarga de obtener, depurar, explorar, modelar e interpretar datos, estadísticas y lenguaje basado en máquina. Son aquellos que aprecian a los datos como “un producto” de primera clase. La inteligencia de negocios es todo sobre como “jugar con los datos” y llegar a conclusiones. Para este nuevo rol, los datos son la inspiración de un nuevo modelo. Su producto no son decisiones, sino datos adicionales o análisis. Juntos aumentan a la BI actual. 11

Las empresas líderes no tienen datos suficientes para contestar preguntas de negocio, pero “colectan” grandes cantidades de datos. De aquí que la capacidad de combinar datos internos a la organización con la externa puede producir nuevo valor.

Futuras Aplicaciones: Con entendimiento y adaptivas

Software Guru

2009: El valor de los datos

LOS PROCESOS DE NEGOCIO DEBEN SER ALIMENTADOS CON “ENTENDIMIENTO.”

Las nuevas aplicaciones deben estar pensadas para múltiples dispositivos, para utilizar la nube y para aprovechar los avances en metodologías de desarrollo. Ejemplo: Amazon “reacciona” a cualquier operación que un usuario realice en su sitio web. En solo 3 clicks de navegación es posible disparar recomendaciones, sin importar qué usuario sea o qué información previa se tenga de él. “Sabemos de dónde nos visitas, sabemos qué explorador usas, al primer clic podemos deducir qué estás buscando” Las aplicaciones tienen que hacerse más inteligentes, tienen que reaccionar en tiempo real. Se requieren adaptar a lo que está sucediendo en el mundo real. Un motor de recomendaciones que tarde más de tres minutos fallará, porque el usuario ya no se encontrará visitando el sitio. Una gran oportunidad está por delante para los que puedan aprovechar estas fuerzas en la era de los negocios conducidos por datos.

>> Por Luis Daniel Soto

Referencias: [1] A. Halevy, P. Norvig, F. Pereira. “The Unreasonable Effectiveness of Data”. http://swgu.ru/sg35r4

www.sg.com.mx |

a “inteligencia de negocio” (BI) nos tenía una gran sorpresa escondida: no se trata solo de información para un usuario de hojas de cálculo. Estamos descubriendo que los procesos de negocio deben ser alimentados con “entendimiento”, ya que es un combustible fundamental para la evolución de las aplicaciones críticas. La inmensa cantidad de datos que nacen digitalmente están sirviendo para consolidar una nueva categoría de “aplicaciones conducidas por entendimiento”.

Luis Daniel Soto Maldonado (@ luisdans) labora en la división de negocio de servidores y herramientas de Microsoft Corp.


.PRODUCTOS HERRAMIENTAS

Java y su Máquina Virtual ENTENDIENDO LAS DIFERENCIAS

C

uando surgió Java, y posteriormente se volvió buzzword, la percepción era —y para muchos sigue siendo—, que Java es una sola cosa; una tecnología para aplicaciones portables. En cierto sentido esto es cierto, pero de hace unos años para acá, se vuelve cada vez más necesario diferenciar entre Java el lenguaje de programación, y Java la máquina virtual.

La máquina virtual de Java

Una parte fundamental de la tecnología Java es su máquina virtual, conocida por sus siglas en inglés como JVM (Java Virtual Machine). Esta pieza de software provee una abstracción sobre el hardware real que la ejecuta; su lenguaje nativo es conocido como bytecode. Es indispensable contar con una JVM para poder ejecutar una aplicación Java. A pesar de que la JVM provista por Oracle es la más utilizada (recordemos que Oracle compró a Sun Microsystems hace unos años), existen otras implementaciones tales como la provista por Apple, y OpenJDK.

El lenguaje de programación Java

Cuando surgió Java, la característica principal era la capacidad de escribir un programa en el lenguaje de programación Java, compilarlo en cualquier plataforma que contara con el JDK (el Java Developer Kit) y ejecutarlo en cualquier plataforma con una JVM. Así que inicialmente era natural que en la práctica Java fuera considerado tanto el lenguaje como su máquina virtual, todo es parte de un conjunto; si escribes un programa en Java, únicamente lo puedes ejecutar en la JVM. Y para ejecutar un programa en la JVM, necesitas haberlo escrito en Java.

El ambiente de ejecución de Java

Hay un tercer Java: El ambiente de ejecución, conocido por sus siglas en inglés como JRE (Java Runtime Environment). Este consiste en una amplia biblioteca de clases agrupadas en paquetes, con distintas finalidades: las clases más básicas para manejar cadenas y números, las colecciones como listas, arreglos, mapas, pilas, colas, etc; manejo de archivos, conexiones de red, interfaz gráfica, comunicación entre procesos, criptografía, etc. En su mayoría, estas clases están escritas en lenguaje Java, con algunas rutinas de muy bajo nivel implementadas en C y se invocan haciendo uso de la JNI (Java Native Interface), que permite invocar código compilado de manera nativa para la plataforma en donde se ejecuta un programa Java. A partir de aquí, para evitar más confusión, haré uso de esta nomenclatura: JVM para referirme a la máquina virtual; JRE para 12

››Por Enrique Zamudio

referirme al ambiente de ejecución y las bibliotecas base; Java para referirme al lenguaje de programación.

De Java al bytecode

Como ya mencionamos anteriormente, la JVM ejecuta bytecode. El bytecode es muy similar al lenguaje máquina de un procesador RISC; sus instrucciones son de muy bajo nivel: almacenar una referencia en la pila, cargar una referencia de la pila, almacenar o cargar una referencia en una variable local, almacenar o cargar un valor de tipo nativo en la pila o en una variable local, las operaciones aritméticas básicas, conversiones de tipo básicas, etc. Muy recientemente, apenas en la versión 7 de la JVM, se introdujo un operador a nivel bytecode para realizar una invocación de manera dinámica a un método en un objeto. Y aquí es donde empiezan las diferencias: el compilador de Java transforma nuestro código Java en bytecode, pero la JVM no sabe en realidad nada del lenguaje Java; por lo tanto, ¿será posible compilar otros lenguajes a bytecode?

Otros lenguajes en la JVM

Efectivamente, es posible hacer compiladores para otros lenguajes, que dejen como resultado final bytecode que la JVM pueda ejecutar. Y es gracias a esto que ahora tenemos una gran diversidad de lenguajes para la JVM: Groovy, JRuby, Scala, Kotlin, Xtend, Jython, Clojure y Ceylon, por mencionar sólo algunos. ¿Por qué tantos lenguajes? El lenguaje Java fue una excelente opción en un principio, pero ha ido evolucionando muy lentamente; muchos de los lenguajes alternos para la JVM ofrecen características que en Java hoy son sólo una promesa en algunos casos, o que en otros casos simplemente no se tiene contemplada su adición. Algunos ejemplos son los closures, las funciones de orden superior (es decir, la habilidad de recibir una función como parámetro en otra función, o que el resultado de una función sea otra función), tipado dinámico, la capacidad de hacer scripting (es decir, ejecutar un programa breve utilizando componentes de Java pero directamente pasando el archivo de código fuente a un intérprete, sin tener que pasar explícitamente por una fase de compilación previa), comprehensión de listas, por mencionar algunos.

¿Por qué la JVM?

Si bien muchos de estos lenguajes ofrecen una alternativa al lenguaje Java, no pasan por alto el hecho de que su plataforma, la JVM, es una excelente opción como ambiente de ejecución, al grado de


.PRODUCTOS

HERRAMIENTAS

t %FTFNQFĂ—P La JVM cuenta con un compilador JIT (just in time), que convierte el bytecode a cĂłdigo nativo de la plataforma en donde corre, permitiendo un excelente desempeĂąo de nuestro cĂłdigo. t .BOFKP EF NFNPSJB La JVM cuenta con recolecciĂłn de basura, o garbage collection. Esto significa que no es necesario alojar memoria y luego liberarla como se hace en C y otros lenguajes de mĂĄs bajo nivel; simplemente cuando algĂşn objeto ya no es utilizado por ningĂşn otro objeto, la JVM lo detecta y lo elimina, liberando la memoria que ocupaba. La versiĂłn 7 incluso trae mecanismos nuevos de recolecciĂłn y permite elegir el mĂĄs apropiado segĂşn el tipo de aplicaciĂłn. t +3& La distribuciĂłn de Java incluye la JVM y una vasta biblioteca de clases bĂĄsicas, con tipos bĂĄsicos como nĂşmeros, fechas y cadenas, estructuras bĂĄsicas de control y manejo de concurrencia como Threads, ThreadPools y Locks, componentes para manejo de archivos y conexiones de red, criptografĂ­a, etc. Muchos lenguajes ya no tienen que crear sus clases mĂĄs bĂĄsicas desde cero sino que pueden reutilizar muchos de estos componentes, en ocasiones simplemente creando un envoltorio o wrapper alrededor de algunos componentes para facilitar la interoperabilidad. t #JCMJPUFDBT EF UFSDFSPT Hay una enorme cantidad de bibliotecas, componentes y frameworks completos hechos en Java, tanto de software libre y/o cĂłdigo abierto, como de software propietario. En algunas ocasiones incluso lo difĂ­cil es poder elegir una herramienta para solucionar un problema especĂ­fico, debido a que hay gran cantidad de alternativas, con distintas filosofĂ­as, objetivos, funcionalidad y licencias

No todo son ponies y arcoiris

Por otra parte, la JVM no es una plataforma perfecta; si bien cada versiĂłn que sale contiene varias mejoras en cuanto a desempeĂąo, funcionalidad, manejo de memoria, etc, hay algunos problemas que simplemente no han sido atacados; un ejemplo de esto es la modularidad. Esto ha dado pie a que surjan soluciones de terceros, no siempre compatibles entre sĂ­, no siempre ideales, a veces demasiado complejas, otras veces incompletas. Retomando el caso de la modularidad, un ejemplo de un intento de soluciĂłn es OSGi (Open Systems Gateway Initiative), que si bien es una buena tecnologĂ­a, a muchos les ha parecido demasiado complicada de implementar y mantener, ademĂĄs que puede llegar a entorpecer el ciclo de desarrollo si no se lleva de manera adecuada. Incluso ya hay una propuesta “oficialâ€? para resolver el problema, conocida como el QSPZFDUP +JHTBX, que probablemente vendrĂĄ incluido en la versiĂłn 8 de Java. Otro ejemplo de algo que ha tenido que ser cubierto por herramientas externas es el manejo de dependencias al momento de construir, probar y ejecutar aplicaciones. Para ello se ha tenido que recurrir a tecnologĂ­as tales como Maven, Ivy y Gradle (en SG #33 se publicĂł un tutorial de Gradle). Pero, a fin de cuentas, la situaciĂłn actual es buena. Hoy en dĂ­a existe una variedad suficiente de lenguajes de programaciĂłn soportados por la JVM, cada uno con diferentes objetivos y filosofĂ­a, y por lo tanto con caracterĂ­sticas muy distintas: tipado dinĂĄmico o estĂĄtico, funciones de primer orden, closures, capacidad de scripting, covarianza y contravarianza, comprehensiĂłn de listas, etcĂŠtera. La JVM se ha convertido en una base comĂşn para el desarrollo polĂ­glota, permitiendo a los programadores mezclar distintos lenguajes de programaciĂłn para construir un sistema, eligiendo el mĂĄs adecuado para cada problema especĂ­fico.

/PUB EFM FEJUPS &O FEJDJPOFT TJHVJFOUFT EF 4( QVCMJDBSFNPT BSUĂ“DVMPT TPCSF EJTUJOUPT MFOHVBKFT TPQPSUBEPT QPS MB +7. 1PS MP QSPOUP FO MB TFDDJĂ˜O EF 'VOEBNFOUPT EF FTUB FEJDJĂ˜O IFNPT JODMVJEP VOP TPCSF $MPKVSF

.BIO Enrique Zamudio (@chochosmx) es Licenciado en Sistemas Computacionales egresado de la Universidad Iberoamericana y tiene 18 aĂąos desarrollando software profesionalmente, principalmente utilizando tecnologĂ­as relacionadas con Java del lado del servidor. Es autor de los proyectos de software libre jAlarms, j8583 y ScalaSQL; forma parte del staff de la comunidad de desarrolladores JavaMĂŠxico y es integrante del equipo de desarrollo de Ceylon. github.com/chochos

13

Software Guru

t 1PSUBCJMJEBE Una aplicaciĂłn hecha para la JVM puede ejecutarse en cualquier plataforma para la cual exista una JVM: Windows, Linux, Mac, sin tener que modificar el cĂłdigo fuente, ni recompilar binarios.

de uso/distribuciĂłn. Los lenguajes alternos para la JVM, al tener interoperabilidad con software hecho en Java, pueden aprovechar este gran acervo.

www.sg.com.mx |

que varios de estos lenguajes han sido creados expresamente para la JVM (por ejemplo Groovy y Ceylon), mientras que otros vienen de otra plataforma y han sido portados a la JVM (por ejemplo JRuby). Estas son algunas razones por las que estos lenguajes deciden seguir utilizando la JVM:


.PRODUCTOS TUTORIAL

ZeroMQ SENCILLO, Rà PIDO Y FLEXIBLE ››Por Miguel à ngel JimÊnez

P

or mĂĄs de dos dĂŠcadas, los Berkeley sockets -conocidos simplemente como sockets- han sido el mecanismo default para la comunicaciĂłn entre aplicaciones en red. Sin embargo, ofrecen un API de muy bajo nivel, por lo que es necesario agregar en nuestros componentes una cantidad significativa de programaciĂłn para poder interactuar con ellos. Para intentar resolver este problema existen frameworks de I/O y sistemas de mensajerĂ­a empresarial (enterprise messaging systems), pero distan de ser soluciones ideales ya sea porque son poco flexibles, complicadas, intensivas en el uso de recursos, o en algunos casos bastante costosas. 0MQ (ZeroMQ) es un sistema de mensajerĂ­a que toma un acercamiento distinto para resolver estos problemas. En lugar de inventar nuevos APIs y complejos protocolos, 0MQ extiende el API de los sockets, utilizando protocolos muy sencillos, y brindando un gran desempeĂąo, incluso mejor que el de los sockets tradicionales. De hecho, sus creadores lo definen como “sockets con esteroidesâ€?. "MHVOBT DBSBDUFSĂ“TUJDBT EF ;FSP.2 t &T VOB MJCSFSĂ“B EF DPNVOJDBDJĂ˜O OFUXPSLJOH RVF TF DPNQPSUB como un framework de concurrencia. t 1SPQPSDJPOB TPDLFUT DBQBDFT EF MMFWBS NFOTBKFT DPNQMFUPT B USBWĂ?T de varios transportes tales como interproceso, entre procesos, TCP o multicast. Es posible conectar estos sockets en patrones N-to-N como pueden ser fanout, publisher-subscriber, task distribution, request-reply o algun patrĂłn personalizado. t &T NVZ SĂˆQJEP JODMVTP MP TVmDJFOUF DPNP QBSB DPOFDUBS VO DMVTUFS t 1SPDFTB MBT FOUSBEBT Z TBMJEBT EF GPSNB BTĂ“ODSPOB QPS MP RVF CSJOda alta escalabilidad en ambientes multicore. 14

t 'VODJPOB FO MB NBZPSĂ“B EF MPT TJTUFNBT PQFSBUJWPT -JOVY 8JOdows, Solaris, OSX y mĂĄs) y cuenta con APIs para una gran variedad de lenguajes de programaciĂłn (C, C#, Java, Ruby, Python, Javascript, PHP, entre otros) . t &T TPGUXBSF MJCSF DSFBEP QPS MB FNQSFTB J.BUSJY Z MJDFODJBEP CBKP LGPL por lo que se puede incluir tanto en aplicaciones de cĂłdigo abierto como cerrado.

Comencemos

A lo largo de este artĂ­culo, realizarĂŠ un tutorial para familiarizarnos con ZeroMQ. Para comenzar, lo primero que necesitaremos es descargar e instalar las librerĂ­as de ZeroMQ desde http://www.zeromq.org/area:download Es importante utilizar una versiĂłn estable de ZeroMQ, porque las de desarrollo tienen problemas con los bindings. Una vez hecho esto, hay que habilitar los bindings correspondientes al lenguaje(s) que planeemos usar. La lista de bindings e instrucciones para instalar cada uno se puede consultar en http://www. zeromq.org/bindings:_start Para este artĂ­culo estarĂŠ utilizando Ruby (1.9.x) en un entorno Linux. La instalaciĂłn del binding de Ruby es muy sencilla, ya que existe una gema, asĂ­ que basta con dar: gem install zmq

MuĂŠstrame el cĂłdigo

Vamos a comenzar a usar ZeroMQ implementando un patrĂłn Request-Response, es decir enviĂł peticiĂłn a una aplicaciĂłn y esta debe responder. En nuestro ejemplo, una aplicaciĂłn preguntarĂĄ la hora, y otra contestarĂĄ. El listado 1 tiene el cĂłdigo de la aplicaciĂłn que pide la hora (Request.rb):


.PRODUCTOS TUTORIAL

require “zmq” context =ZMQ::Context.new(1) p “app de request” envio=context.socket(ZMQ::REQ) envio.connect(“tcp://127.0.0.1:9000”) for i in 1..10 do envio.send(i.to_s() +”.-Que horas son?”) p “Peticion enviada” respuesta = envio.recv p respuesta end p “Termino el envio de mensajes”

Notemos que a diferencia de la aplicación de peticiones, en este caso se usa un socket de respuestas (ZMQ::REP). Una vez que lo asociamos a un puerto donde estaremos escuchando, creamos un ciclo donde recibiremos las peticiones utilizando el método recv y las responderemos con el método send. Para ejecutar nuestros programas, los invocamos desde terminales de comando distintas. Primero ejecutamos el programa que envía peticiones: ruby Request.rb

y mientras dejamos ese programa corriendo, en una terminal de comandos distinta, invocamos el servidor:

require “zmq” context =ZMQ::Context.new(1) p “app de response” respuestas= context.socket(ZMQ::REP) respuestas.bind(“tcp://127.0.0.1:9000”) loop do request = respuestas.recv p request respuestas.send(Time.now.to_s()) p “Respuesta enviada” end Listado 2. Response.rb

Volvamos a intentarlo (puedes interrumpir la ejecución con Control C), ejecutando varias instancias del programa de peticiones (Request.rb) antes de invocar el de respuestas (Response.rb). El video de este demo está disponible en http://swgu.ru/sg35v1. Veremos que a todas las peticiones se les da respuesta. Esto se conoce como fair-queuing, es decir que a todas las peticiones se les asigna una prioridad igual y se tratan de atender mientras existan recursos suficientes para procesarlas en paralelo. Ahora vamos a modificar nuestro código para crear una aplicación cliente que hace peticiones que pueden ser contestadas por un número n de nodos, los cuales se reparten la carga de procesamiento. Los listados 3 y 4 reflejan esto.

require “zmq” context =ZMQ::Context.new(1) p “app de request” envio=context.socket(ZMQ::REQ) envio.bind(“tcp://127.0.0.1:9001”) for i in 1..50 do envio.send(i.to_s() +”.-Que horas son?”) p “Peticion enviada” respuesta = envio.recv if envio.getsockopt(ZMQ::RCVMORE) identClient=envio.recv end p “Enviada por:” + identClient +” Resp:” +respuesta sleep(0.5) end p “Termino el envio de mensajes” Listado 3. Request2.rb

15

www.sg.com.mx |

Analizando el código de Request.rb podemos ver que se invoca la librería de ZeroMQ. Después se crea un objeto de contexto con el cual podemos crear nuestro socket. En este caso vamos a utilizar un socket de request(ZMQ::REQ) y nos conectamos por medio de tcp a una dirección y puerto. A continuación se crea un ciclo donde realizamos una serie de envíos de las peticiones usando el método send. El método send nos permite enviar información ya sea una cadena de texto o un arreglo de bytes y es inmediatamente enviado al servidor que va a responder nuestras peticiones. Como estamos usando un patrón Request-Response, cada petición espera una respuesta, por lo cual inmediatamente que se envía una petición se espera una respuesta usando el método recv. El método recv recibe la información que envía el cliente y la devuelve ya sea como una cadena de texto o arreglo de bytes. Para poder responder a las peticiones, necesitamos un servidor. Haremos un programa llamado Response.rb que será nuestro servidor. El listado 2 contiene el código de Response.rb:

Software Guru

ruby Response.rb

Listado 1. Request.rb


.PRODUCTOS TUTORIAL

require “zmq� context =ZMQ::Context.new(1) identidad=ARGV[0] p “app de response:� +identidad respuestas= context.socket(ZMQ::REP) respuestas.connect(“tcp://127.0.0.1:9001�) loop do request = respuestas.recv p request respuestas.send(Time.now.to_s(),ZMQ::SNDMORE) respuestas.send(identidad) p “Respuesta enviada� end Listado 4. Response2.rb

Pueden notar que hemos invertido la manera en que nos asociamos con nuestros sockets, usando bind en la aplicaciĂłn que envĂ­a las peticiones y send en los nodos que responden. Otro elemento que agregamos es la identidad. En este caso la aplicaciĂłn que envĂ­a las peticiones espera una repuesta que se compone de varias partes (ZeroMQ nos permite dividir un mensaje en partes). Para saber si todavĂ­a quedan partes por procesar durante la recepciĂłn de un mensaje, utilizamos el mĂŠtodo getsockopt y le mandamos de parĂĄmetro la propiedad ZMQ::RCVMORE, de esa manera si existen mĂĄs partes del mensaje, devuelve un valor verdadero, y debemos seguir recibiendo datos con el mĂŠtodo recv. En caso contrario significa que ya no hay mas partes que forman parte de ese mensaje y debemos esperar a que llegue un nuevo mensaje. Del lado de la aplicaciĂłn que responde, queremos enviar la identidad de nuestra aplicaciĂłn y la respuesta a la peticiĂłn que nos hicieron, por lo cual dividimos el mensaje en dos: enviamos primero una respuesta con el mĂŠtodo send, pero agregamos un parĂĄmetro ZMQ::SNDMORE para que ZeroMQ le indique al receptor que estĂĄ enviando una serie de partes que integran un mensaje. Cuando queremos terminar la serie de partes del mensaje, solo usamos el mĂŠtodo send sin parĂĄmetro adicional, esto cierra la serie de partes de un mensaje. Lo anterior nos muestra un escenario de balanceo de cargas, donde una aplicaciĂłn reparte mensajes por medio de roundrobin a los nodos que se conectan a ella. El demo de esto se puede ver en http://swgu.ru/sg35v2. 16

Una caracterĂ­stica interesante de este balanceo de cargas, es que pueden agregarse mĂĄs nodos simplemente con conectarse al socket. No se requiere realizar algĂşn otro tipo de proceso adicional en el servidor, por lo cual es relativamente fĂĄcil escalar un servicio o repartir tareas entre uno o mas nodos.

Otros patrones

En los ejemplos anteriores utilizamos los patrones REQ, REP pero ZeroMQ soporta muchos otros. La tabla 1 muestra los distintos patrones de comunicaciĂłn que provee ZeroMQ. Algunos son compatibles con otros y pueden usarse en combinaciĂłn para crear patrones de distribuciĂłn o balanceo de cargas tal como ya lo vimos en el ejemplo anterior.

ÂżDĂłnde puedo aplicar ZeroMQ?

Todo suena muy interesante, pero Âżtiene aplicaciĂłn prĂĄctica? SĂ­, mucha. A continuaciĂłn les comparto una lista de escenarios comunes que se prestan para la utilizaciĂłn de ZeroMQ: t %JWJEJS UBSFBT EF QSPDFTBNJFOUP DPNQMFKBT FOUSF EJTUJOUPT nodos para que realicen el procesamiento en paralelo. t $PNVOJDBDJĂ˜O FOUSF QSPDFTPT El intercambio de mensajes es muy rĂĄpido y mĂĄs efectivo que otros protocolos, ademĂĄs utilizando JSON o protocol buffers como serializaciĂłn, se tiene una muy buena forma de integrar aplicaciones en distintos lenguajes y nodos. t 4JTUFNBT EF DPNVOJDBDJĂ˜O EF OPEPT EFTDFOUSBMJ[BEP CBTBEPT FO EJSFDUPSJPT Puede crearse un servicio que tenga la lista de los nodos en la red y estos pueden establecer comunicaciĂłn directa sin pasar por el servicio central. t .POJUPSFP QPS IFBSUCFBU Por tener baja latencia y ser muy rĂĄpido, se puede implementar que distintas aplicaciones reporten el estatus activo a un monitor central utilizando un patrĂłn REQUEST-RESPONSE como el visto en este artĂ­culo, sabiendo asĂ­ cuĂĄndo una aplicaciĂłn estĂĄ fuera de lĂ­nea (porque no envĂ­a heartbeat). t .FOTBKFT 164) Es posible enviar mensajes a una serie de nodos escucha y que estos lo filtren por medio de su entidad, es decir solo enviar el mensaje a un nodo receptor de entre varios que estĂŠn conectado al servidor. t 3VUBT EF NFOTBKFT Es posible enviar mensajes y establecer rutas de pasos entre distintos nodos para crear proxies, repartidores o embudos de procesamientos, de esta manera tener una infraestructura de procesamiento robusta para un sistema.


Compatible con

Dirección

Balanceo

Patrón envio/recepción

REQ

REP

Bidireccional

Round-robin

Envio,recepción,envio,recepción …

REP

REQ

Bidireccional

Fair-queued

Recepción,envio,recepción,envio ...

DEALER

ROUTER,REQ,REP

Bidireccional

Round-robin/ Fair-queued

Sin restricción

ROUTER

DEALER,REQ,REP

Bidireccional

Fair-queued

Especial

PUB

SUB

Unidireccional

Fan out(envio a todos los nodos conectados)

Envio solamente

SUB

PUB

Unidireccional

Fair-queued

Recepción solamente

PUSH

PULL

Unidireccional

Round-robin

Envío solamente

PULL

PUSH

Unidireccional

Fair-queued

Recepción solamente

PAIR

PAIR

Bidireccional

No tiene

Sin restricción pero solamente con un nodo a la vez

Tabla 1.

Conclusión

Hemos visto que ZeroMQ es poderoso pero sencillo, además de ser compatible con una gran cantidad de plataformas de desarrollo. Solo es cosa de que haya interés en comenzar a experimentar con cómputo distribuido y encontrar un escenario donde se pueda aprovechar en la empresa o proyectos personales. Con infraestructura en la nube y una creciente tendencia a ofrecer servicios empresariales que usan técnicas similares a la nube, es indispensable que las aplicaciones se desarrollen con mecanismos de escalabilidad y comunicación que permitan soportar de

manera elástica cargas de procesamiento. ZeroMQ nos ayuda a resolver ese problema. El código de los ejemplos mostrados en este artículo, así como ejemplos adicionales está disponible en: https://github.com/majimenezp/EjemplosZeroMQ Referencias: [1] Página principal de ZeroMQ: http://www.zeromq.org [2] La guía de ZeroMQ: http://zguide.zeromq.org [3] N. Piel. “ZeroMQ an introduction”. http://nichol.as/zeromq-an-introduction

.BIO Miguel Angel Jimenez(@majimenezp) es desarrollador independiente con tecnologías como .Net, NodeJs, Erlang y Ruby en Ciudad del Carmen, Campeche; comenzando con el proyecto http://arrancame.la, colectivo de programadores profesionales para startups. Trabajando actualmente como consultor para una empresa que proporciona servicios a Pemex. http://github.com/majimenezp

17

www.sg.com.mx |

Nombre

Software Guru

.PRODUCTOS TUTORIAL


Startups y el Mercado Empresarial PILAR DEL EMPRENDIMIENTO

››Por Manuel Landa

El texto original de este artículo fue publicado como: “Internet Startups: ¿Se olvidan del sector enterprise?” en http://capitaldisruptivo. com/2011/12/12/internet-startups-se-olvidan-del-sector-enterprise/ La versión que aquí presentamos fue editada por Software Guru y se publica con permiso del autor.

L

a revolución del Web 2.0 ha impulsado la innovación en servicios al consumidor y obligó a las startups a ser muy creativas en su pensar —amén de muy ágiles y asertivas en su ejecución— para poder sobrevivir en medio de la feroz competencia que caracteriza a los mercados de consumo en general. El impacto de esta poderosa ola de servicios basados en Internet para consumidores, ha provocado incluso que en el conservador sector de TI para empresas ya se habla de la “consumerización” de las TI empresariales. En este fenómeno el usuario adquiere tecnologías (dispositivos como el iPad o aplicaciones como Dropbox) y espera utilizarlas dentro de su empresa como una herramienta de trabajo, volviéndose un factor de decisión muy importante en el rumbo tecnológico de la compañía. De hecho, podemos hablar de que hoy existe una brecha importante entre los dispositivos, aplicaciones y en general herramientas que tienen los consumidores a comparación de los usuarios de una empresa (que en esencia son las mismas personas), donde estos últimos tienen aplicaciones rígidas, complicadas, difíciles de aprender, muy limitadas en sus alcances y muy caras. Esta diferencia entre am18

bos mundos lo podemos explicar principalmente por el modelo de negocio de los proveedores de tecnología empresarial, quienes una vez lograda una masa crítica de adopción, se vuelven un monopolio dentro de sus clientes que difícilmente los cambiarían por otras opciones ante el alto costo de configuración y arranque inicial, además de la dolorosa curva de aprendizaje de los usuarios. Dada esta falta de competencia real de un proveedor de TI dentro de una empresa, es fácil deducir por qué los servicios y aplicaciones del segmento empresarial no han evolucionado a la par de las de consumidores, ni en calidad, ni en sencillez de uso, ni en precio. Independientemente de que las oportunidades de disrupción en múltiples mercados de consumo son de tal magnitud que sería un craso error no explorarlas, el sector de servicios en general (y no solo de TI) enfocado a las empresas medianas y grandes está siendo ignorado por la mayoría de los fundadores de startups e incluso por inversionistas angeles y firmas de capital de riesgo. Y esto es irónico porque más allá de las claras condiciones de disrupción observadas en el sector empresarial según el Dilema del Innovador [1], la empresa


.EMPRENDIENDO INDUSTRIA

0VUTPVSDJOH La tercerizaciĂłn de funciones no esenciales de una organizaciĂłn era una prĂĄctica reservada normalmente a la grandes empresas. Dada la ubicuidad de las redes globales de comunicaciones y permeabilidad de los sistemas computacionales, la tercerizaciĂłn estĂĄ creciendo de manera muy rĂĄpida en empresas de todos los tamaĂąos, lo que cambia fundamentalmente su modelo de operaciĂłn hacia una empresa de tipo virtual con operaciones “federadasâ€?. Esto requiere nuevas herramientas de colaboraciĂłn, administraciĂłn y control que no existen en los proveedores tradicionales. )PNF 0ĆDF Z $P 8PSLJOH Se estima que en EUA el 30% de la fuerza de trabajo labora desde su casa o desde lo que se ha empezado a denominar el “tercer espacioâ€? (despuĂŠs de la oficina y la casa) que iniciĂł siendo el Starbucks mĂĄs cercano y ahora ha evolucionado a espacios de co-working donde la persona encuentra mejores instalaciones y un ambiente social de soporte (no necesariamente con sus colegas) donde puede desempeĂąar su trabajo, pagando por dĂ­a u horas el espacio fĂ­sico. Combinando esta tendencia empresarial por reducir los cubĂ­culos de empleados dentro de sus instalaciones, con el cambio del modelo de empleo permanente por uno de “freelanceâ€? o por proyecto, se crean las condiciones para una tormenta perfecta donde el mercado mundial de bienes raĂ­ces enfocado al sector comercial de oficinas se pudiera colapsar en algunos aĂąos, y en su lugar surgir espacios mĂĄs informales de co-working con rentabilidades muy superiores, parecidas a la diferencia por metro cuadrado de rentar una habitaciĂłn de hotel contra un departamento o piso a largo plazo. .FSDBEP EF 4FMFDDJĂ˜O Z 3FDMVUBNJFOUP EF 1FSTPOBM Todo el mercado de reclutamiento de personal ha llegado a condiciones de disrupciĂłn claras por la sobreoferta de caracterĂ­sticas no necesarias al cliente, y por otro lado su propuesta de valor pierde aceleradamente validez cuando las empresas buscan llenar menos posiciones permanentes y prefieren la flexibilidad operativa y mayor calidad de la oferta, cuando realizan contrataciones temporales por proyecto. Existen oportunidades muy interesantes en crear nuevos modelos y plataformas de contrataciĂłn para ese nuevo tipo de empleado virtual, donde ya no basta con ofrecer un mejor catĂĄlogo online de curriculums o una atractiva herramienta de entrevistas por video. 4FSWJDJPT EF 1VCMJDJEBE Z .BSLFUJOH El mercado de publicidad tradicional en medios (TV, radio, periĂłdicos, revistas, eventos) sigue siendo el que recibe el mayor gasto de las empresas, a pesar de que 19

t &M DMJFOUF PCKFUJWP FT NVMUJEJNFOTJPOBM FO FM TFOUJEP EF RVF MB decisiĂłn de compra la toman los usuarios, el area de TI, compras, finanzas, las regulaciones aplicables, etcĂŠtera. Esto lo hace mĂĄs complejo que el consumidor que en general es prĂĄctico e impulsivo. t &M OJWFM EF FTGVFS[P EF QSF WFOUB WFOUB Z QPTU WFOUB QBSB VO DMJFOUF enterprise es mĂĄs demandante que hacia un consumidor, por lo que la oferta debe ser estructurada muy cuidadosamente para ser rentable. t &O FM NFSDBEP FOUFSQSJTF FYJTUFO NFOPT DPNQFUJEPSFT Z NĂˆT nichos por atacar, a diferencia de los grandes mercados de consumo donde los competidores relevantes dominan rĂĄpidamente con dinero y masa crĂ­tica. t -PT NFDBOJTNP EF NPOFUJ[BDJĂ˜O FO FM NFSDBEP FOUFSQSJTF TPO NĂˆT claros y directos que en los mercados de consumo basados en Internet. t -B SFOUBCJMJEBE B MBSHP QMB[P HFOFSBEB QPS MPT NĂˆSHFOFT Z MB estabilidad de los clientes empresariales como clientes) es mayor que en productos y servicios de consumo, donde tambiĂŠn la competencia es mĂĄs feroz. t -B iDPNPEJUJ[BDJĂ˜Ow EFM DĂ˜NQVUP HSBDJBT BM PQFO TPVSDF crowdsourcing y cloud computing, permiten hoy crear desde paĂ­ses en desarrollo, aplicaciones y servicios de clase mundial para clientes enterprise, aspecto que hace menos de 10 .BIO aĂąos serĂ­a impensable. Pero Manuel Landa es emprendedor en el area de TecnologĂ­a y Managing la mentalidad para crear Partner de la Incubadora Startup Factory (startupfactory.com.mx) esta nueva generaciĂłn de aplicaciones y servicios tipo enterprise debe tambiĂŠn ser Referencias: [1] M. Landa. “El Dilema del Innovadorâ€?. renovada, combinando la http://swgu.ru/sg35r2 agilidad y facilidad de las [2] M. Landa. “Cloud computing: AnĂĄlisis de disrupciĂłn del mercado de TIâ€?. aplicaciones de consumo http://swgu.ru/sg35r3 con la confiabilidad de los sistemas empresariales.

Software Guru

$MPVE $PNQVUJOH Z FM NFSDBEP EF 5* La consumerizaciĂłn y virtualizaciĂłn de la infraestructura de TI de las empresas, donde existirĂĄn en 2015 oportunidades por US$177 billones, tan solo en servicios de nube [2] del tipo PaaS, IaaS, SaaS y BPaaS, mas un mercado global de TI de US$1.8 trillones de dolares en la oferta de nuevos dispositivos, servicios de soporte a infraestructura, servicios de consultorĂ­a, etcĂŠtera.

disminuye cada vez su audiencia, misma que se vuelca hacia medios online. Solo ahĂ­ existe una oportunidad de arbitraje interesante provocada por esta distorsiĂłn coyuntural. Sin embargo hay diferencias mas profundas en este mercado que la simple relaciĂłn de inversiĂłn en medios VS. audiencia: las empresas tradicionales del mercado de marketing (ATL y BTL), asĂ­ como los medios tradicionales del ecosistema, basan su propuesta de valor hacia la empresa en fĂłrmulas casi “mĂĄgicasâ€?, donde esta debe creer que obtendrĂĄ resultados a partir de inferencias subjetivas (intuiciones) de los expertos, productos ingeniosos y mucha repeticiĂłn, para al final lograr el intangible “posicionamiento de marcaâ€?. Esto contrasta con el nuevo marketing y medios digitales que estĂĄn basados en experimentaciĂłn objetiva con mĂŠtricas estadĂ­sticamente comprobables que llevan a resultados trazables hasta el movimiento de inventarios, y con un control preciso de los costos y del retorno a la inversiĂłn. Obviamente esto suena muy aburrido y complejo para los “creativosâ€? tradicionales, pero ese es el futuro del “marketing cientĂ­ficoâ€? donde existen muchas nuevas empresas por surgir. Existen oportunidades muy significativas en el sector Enterprise de compaùías medianas y grandes. Sin embargo, estas requieren una mentalidad diferente a la de los proyectos de consumo. A continuaciĂłn comparto algunos consejos al respecto:

www.sg.com.mx |

como modelo de organizaciĂłn productiva estĂĄ pasando por transformaciones dramĂĄticas y profundas. Menciono a continuaciĂłn algunos de estos cambios del entorno empresarial que vale la pena explotar como oportunidades de disrupciĂłn y creaciĂłn de nuevos modelos de negocio:


BIG

DATA

El desafío de la explosión de datos ››Por Francisco Bernal

En los últimos años, debido al avance de las Tecnologías de la Información, estamos siendo testigos de una verdadera explosión en la cantidad de datos disponibles, listos para ser analizados y así convertirse en información importante para la inteligencia de negocio. Este nuevo escenario se refiere no sólo al volumen de datos, sino también a la velocidad, complejidad y variedad de los tipos de información disponible, como acontece con los datos de las redes sociales, logs de acceso a Internet o datos generados por máquinas, por ejemplo. Por lo tanto, los modelos tradicionales de data warehouse y soluciones analíticas, desarrolladas para ofrecer soporte a ese mundo de informaciones, encuentran un nuevo desafío relacionado, sobre todo, a la manipulación de ese contenido, acompañado de toda esa complejidad y dinamismo: es aquí donde surge el concepto de Big Data. Los Big Data o Grandes Datos son datos ricos y extremamente útiles para análisis, pero que no se encuentran disponibles —al menos inicialmente— de una manera estructurada, ya sea por la alta velocidad con que son producidos o por los mecanismos a través de los cuales son generados. Siendo así, más allá de la gran cantidad de información disponible hoy, los Big Data se relacionan directamente a la capacidad de manipular y analizar datos multi-estructurados no relacionados, que requieren de una interacción rápida y adaptable. Como soporte a esa nueva realidad, ya están disponibles nuevas técnicas y tecnologías como MapReduce o Hadoop, que resuelven limitaciones de SQL tradicional, para tratar los variados tipos de datos complejos disponibles en Internet o en otras fuentes. Desde el punto de vista de hardware, los Big Data pueden recurrir a tecnologías existentes, como las arquitecturas de Procesamiento Paralelo Masivo (MPP), que permiten el rápido procesamiento de estos grandes y complejos volúmenes de datos. Muchas empresas ya están comenzando a desarrollar su propia lógica utilizando ese tipo de infraestructura, posibilitando análisis importantes como el comportamiento de los clientes en casos de optimización del marketing digital, las interacciones entre usuarios en las redes sociales, transacciones e interacciones on-line para detección y prevención del fraude así como también la eficiencia operacional por datos generados por máquinas, entre otros. En esos escenarios, surge también la figura del científico de datos o desarrollador analítico, que es un profesional responsable por el desarrollo e implementación de esos tipos de análisis para beneficio

20

del negocio. Este no es el mismo analista tradicional de BI (Business Inteligence) que conocemos hoy: son personas que conocen con detalle la necesidad del negocio, los datos disponibles y, al mismo tiempo, utilizan estas nuevas tecnologías para perfeccionar análisis que puedan traer nuevas directrices para la gestión estratégica. Como se podrá usted imaginar, un aspecto importante a ser considerado, es el de desarrollar dentro de los usuarios y profesionales de TI las habilidades y conocimientos necesarios para aprovechar el potencial del Big Data en beneficio de las empresas. Esto sucede porque la mayoría de los usuarios y personal de TI están acostumbrados al desarrollo e implementación de proyectos relacionados con los sistemas, aplicaciones y análisis tradicionales de BI, que también son necesarios y vitales pero que —en la mayoría de los casos— consisten básicamente en la obtención de datos de sus fuentes tradicionales de origen (tales como el ERP) a fin de disponerlos en informes pre-concebidos para los usuarios. En este vasto universo de capacidades analíticas, el contexto de los Big Data incrementa el potencial de las empresas, aprovechando la utilización de las nuevas tecnologías y herramientas cada vez más importantes para el análisis de las inagotables fuentes de información que están disponibles hoy, trayendo consigo conocimiento, nuevas perspectivas y oportunidades para vencer en un mercado cada vez más competitivo. .BIO Francisco Bernal es Director General de Teradata México


www.sg.com.mx |

Software Guru

.PRINCIPAL

21


TOMEMOS DECISIONES ESTRATÉGICAS ››Por Ramón Martínez

Desde tiempo atrĂĄs las empresas han manejado una fuerte cantidad de informaciĂłn no estructurada tanto interna como externa. Las empresas no tenĂ­an un control y se dieron cuenta que habĂ­a duplicidad o datos que realmente no les proporcionaban valor, asĂ­ que comenzaron a enfocar esfuerzos hacia la tarea de estructurar, limpiar y dar calidad a la informaciĂłn. Hoy el escenario es diferente, la era digital ha provocado un gran aumento de informaciĂłn y, sobre todo, ha provocado un aumento en el valor de dichos datos. Los datos no dejan de aumentar, existen datos no estructurados ocasionados por blogs, redes sociales, sensores y sistemas de ubicaciĂłn que proporciona a las compaùías nueva informaciĂłn sobre hechos y patrones que antes no podĂ­an ser analizados. La avalancha de informaciĂłn va a generar millones de nuevas ideas para saber cĂłmo resolver los problemas, construir nuevos mercados, expandir los ya existentes y con esto, vendrĂĄn tambiĂŠn muchos desafĂ­os. EstratĂŠgicamente, operacionalmente y culturalmente, las compaùías deben volver a considerar su enfoque sobre la gestiĂłn de datos y tomar decisiones importantes con base a quĂŠ datos deciden utilizar y cĂłmo prefieren emplearlos. Big Data es la tendencia que las compaùías tienen que adoptar como soluciĂłn a estas necesidades. Es la soluciĂłn vista en funciĂłn de reunir gran cantidad de informaciĂłn, analizarla en tiempo casi real para comprender lo Ăştil que dicha informaciĂłn puede ser para las empresas y la oportunidad que les ofrece de generar negocios exitosos, sin importar el tamaĂąo ni el tipo de industria. De aquĂ­ se desprende lo que en SAS llamamos las 3 V’s en Big Data: t 7PMVNFO Podemos procesar y analizar una gran cantidad de datos. t 7FMPDJEBE No sĂłlo se trata de mover informaciĂłn de un lado a otro; hay que hacerlo rĂĄpidamente. La velocidad influye en los beneficios de la informaciĂłn. El objetivo es mover una cantidad grande de informaciĂłn a una velocidad importante, para habilitar la toma de decisiones en tiempo real. t 7FSBDJEBE Independientemente de la fuente, Âżse puede confiar en ese dato? A estas 3 V’s, se agrega una variante importante que es la complejidad; el dato puede ser real, pero de quĂŠ sirve si viene en cĂłdigos o encriptado, o si no sabemos quĂŠ es lo que realmente se puede hacer con ese dato. Por lo tanto podemos decir que con soluciones de Big Data se puede analizar el volumen de datos, a una velocidad importante y ofreciendo seguridad y veracidad. Nota del editor: Es comĂşn encontrar otra V como atributo de Big Data, que se refiere a la Variedad de datos ya que recurre tanto a datos estructurados como no estructurados. Ahora hablemos de la lucha de grandes, medianas y pequeĂąas empresas para actualizar sus prĂĄcticas. TodavĂ­a hay mucho que aprender, sin embargo, para aquellas empresas que combinan una visiĂłn

22

a largo plazo con prĂĄcticas avanzadas de gestiĂłn de datos y cambio cultural, hay una oportunidad de poner algo de distancia entre ellos y su competencia para asĂ­ marcar una diferencia. Eric Brynjolfsson, economista de Sloan School of Management del Instituto de TecnologĂ­a de Massachusetts, mostrĂł en un estudio que las compaùías que utilizan “datos dirigidos para la toma de decisionesâ€? disfrutan del 5 al 6% de beneficios en su productividad. Entre los beneficios de esta tecnologĂ­a encontramos un fuerte vĂ­nculo entre la estrategia efectiva de la gestiĂłn de datos y el rendimiento financiero, y que las empresas que utilizan los datos de manera eficaz destacan del resto de las compaùías y enfocan la responsabilidad de esta estrategia a la alta direcciĂłn. Estas empresas entienden el potencial de Big Data y lo estĂĄn utilizando para marcar una ventaja competitiva, aplican dicho potencial al desarrollo de la estrategia, a la direcciĂłn del producto, al desarrollo y funcionamiento del mercado y a la eficiencia operacional. A pesar de los beneficios y de los avances que muchas empresas puedan mostrar, para muchas otras, extraer el valor de una gran cantidad de datos sigue siendo difĂ­cil; los datos son abundantes y fĂĄcilmente disponibles, pero no se utilizan de la manera correcta. Existe una desconexiĂłn entre la capacidad de recopilar datos y la posibilidad de basar las decisiones en ellos. El estudio de Brynjolfsson arrojĂł que uno de cada cuatro encuestados percibe que los datos de sus empresas no estĂĄn siendo explotados, 53% sĂłlo utilizan la mitad de todos sus datos valiosos y sĂłlo el 22% de los encuestados estĂĄn ocupando casi la totalidad de sus datos de valor real para un buen uso. Esto indica que las organizaciones todavĂ­a estĂĄn aprendiendo cĂłmo gestionar grandes volĂşmenes de datos. De acuerdo con esto, un reporte que realizĂł “The Economist Intelligence Unitâ€? clasifica a las empresas en cuatro categorĂ­as, dependiendo de la importancia asignada a la recolecciĂłn de datos: t "ENJOJTUSBEPSFT EF EBUPT FTUSBUĂ?HJDPT Dentro del grupo mĂĄs avanzado respecto a Big Data, se encuentran por lo regular las empresas manufactureras, de servicios financieros y de tecnologĂ­a. Son organizaciones que tienen bien definida su estrategia de gestiĂłn de datos, la cual es enfocada a la recopilaciĂłn y anĂĄlisis de los datos mĂĄs valiosos. Utilizan realmente los datos que se alinean estrechamente a las metas corporativas, por lo tanto destinan una fuerte inversiĂłn a todos los aspectos de su gestiĂłn, garantizando que estos sean precisos, completos e integrados.


t "ENJOJTUSBEPSFT EF EBUPT BTQJSBDJPOBMFT Este es uno de los grupos mås numerosos. Son empresas que comprenden el valor de los datos y estån clasificando los recursos para un mejor aprovechamiento de los mismos y realmente ven los beneficios de Big Data para el futuro en su empresa. Permiten que los datos sean tomados en cuenta para la toma de decisiones estratÊgicas y para una fuerte inversión. Uno de sus problemas es que aún se esfuerzan en la limpieza y armonización de sus datos. t 3FDPQJMBEPSFT EF EBUPT Son empresas que recogen una gran cantidad de datos pero no siempre maximizan su valor, carecen de los recursos para el buen manejo de los datos y tienen que esforzarse mås en la calidad, precisión y reconciliación de los mismos. Sus esfuerzos van mås enfocados en cumplir con los procesos reglamentarios a seguir. t %FSSPDIBEPSFT EF EBUPT Empresas que recogen datos, pero no hacen uso de ellos. Este grupo estå mås interesado por mejorar sus operaciones y reportes internos, por lo tanto se enfocan sólo en este tipo de información. Se encuentran en un nivel inferior de otras compaùías, en el de inversión en soluciones de gestión de datos.

.BIO RamĂłn MartĂ­nez es Especialista en AnalĂ­tica Empresarial en SAS MĂŠxico.

www.sg.com.mx |

El anĂĄlisis de estos grupos refleja que el desafĂ­o de Big Data no es igual para todas las empresas y como una nueva tendencia en tecnologĂ­a, todavĂ­a existe una curva de aprendizaje fuerte. A menudo, se requieren aĂąos para que las empresas pasen el proceso de adopciĂłn. Este fue el caso de las TI en general y se estĂĄ replicando con Big Data. A final de cuentas, estamos en los primeros aĂąos de esta soluciĂłn por lo que no es de extraĂąar que las empresas aĂşn estĂŠn en la etapa de comprensiĂłn del cambio y de sus beneficios para su negocio. Nos encontramos en la fase en la que las empresas estĂĄn trabajando en sentar las bases de lo que estĂĄ por venir.

Big Data irå en aumento, ahora ningún dato es descartado por mås pequeùo o antiguo que pueda ser. Los CIO’s de empresas consideran a la analítica de datos como una de las åreas mås importantes para invertir, lo que hace que Big Data trascienda en un entorno empresarial cada vez mås complejo. Lo importante para continuar innovando serå apoyarse de tecnologías de cómputo de alto desempeùo, sobre todo porque Big Data supera a las tendencias comúnmente utilizadas para capturar, gestionar y procesar los datos a un precio asequible y en un plazo de tiempo realmente aceptable. Esta tecnología se posiciona como una base clave para la captura potencial de valor y para lograr un buen nivel de competitividad; es por esto que mås allå del tipo o tamaùo de industria, las empresas deben tomar los datos con especial seriedad. La velocidad con la que los datos llegan a las empresas, la variedad de sus formas y las ideas que contienen son completamente cambiantes. Todo lo que hemos tratado sobre la recopilación, anålisis y gestión de datos, representan la nueva etapa de Big Data, en la que el volumen de datos puede dar soluciones sobre la forma en la que funciona el mundo, de cómo se puede evitar la crisis financiera y por supuesto de cómo las empresas pueden mejorar y competir. No se trata de sólo contar con la herramienta y de ponerla a trabajar, la parte mås importante se encuentra en el måximo aprovechamiento de dicha información para decisiones estratÊgicas y efectivas, lo cual puede ser posible si estå basado en tecnologías de cómputo de alto desempeùo. El objetivo final depende mucho de la industria, las condiciones del mercado y la estrategia que se decida implementar. En SAS estamos para apoyar a las empresas con estas herramientas.

Software Guru

.PRINCIPAL

23


ANAL�TICA SOCIAL Arquitecturas, estrategias y tecnologías ››Por Ken Collier

Este artĂ­culo fue originalmente publicado por Cutter Consortium en Noviembre del 2011 y estĂĄ disponible para clientes de Cutter en http://www.cutter.com/content/bia/fulltext/updates/2011/biau1122.html La versiĂłn presentada aquĂ­ fue editada y traducida por SG Software Guru con permiso de Cutter Consortium.

Los conceptos de data warehousing e inteligencia de negocios comenzaron a emerger hace poco mĂĄs de dos dĂŠcadas, y durante ese tiempo hemos visto algunos avances graduales en las tecnologĂ­as, herramientas y tĂŠcnicas. Sin embargo, estamos viendo un cambio significativo provocado por la gran cantidad de datos —principalmente no estructurados— que se estĂĄn haciendo disponibles, acompaĂąados de avances tecnolĂłgicos que permiten descubrir y manejar estos grandes volĂşmenes de datos. El concepto de analĂ­tica social (social analytics) describe un nuevo tipo de soluciones de BI que combinan estos factores para descubrir conocimiento y sustentar la toma de decisiones. Consiste en analizar lo que el mundo estĂĄ diciendo, y cĂłmo se relaciona con los productos y servicios de su organizaciĂłn. Algunos de los escenarios que la analĂ­tica social habilita son: t $PNQSFOTJĂ˜O EFM TFOUJNJFOUP EF MPT DMJFOUFT Z FM NFSDBEP t *EFOUJmDBS PQPSUVOJEBEFT EF JOOPWBDJĂ˜O t 0QUJNJ[BS FTGVFS[PT EF NBSLFUJOH t %FUFDUBS JOEJDBEPSFT EF DBNCJP t 0CUFOFS VO DPOPDJNJFOUP NĂˆT QSPGVOEP EF MB SFMBDJĂ˜O DPO MPT clientes. t &OUFOEFS UFOEFODJBT TPDJBMFT La analĂ­tica social requiere arquitecturas, tecnologĂ­as y estrategias especiales. En este artĂ­culo damos un panorama de ellas.

Arquitectura Los medios sociales consisten principalmente de datos no estructurados y cualitativos. Las organizaciones no estĂĄn acostumbradas a modelar dichos datos, y las bases de datos relacionales no se adecĂşan para almacenarlos ya que carecen de una estructura consistente de renglones y columnas. Es asĂ­ que la analĂ­tica social nos lleva a usar bases de datos postrelacionales, tambiĂŠn llamadas NoSQL. Tales bases de datos tĂ­picamente son no relacionales, distribuidas y escalan horizontalmente. Muchas de ellas son open source, tales como Hadoop/HBase. Si en su organizaciĂłn deciden hacer analĂ­tica social usando bases de datos relacionales, entonces le recomiendo que utilice tĂŠcnicas de modelado de datos adaptables (adaptive data modeling). En ĂŠstas, los datos se modelan usando una estructura objeto->atributo->valor, lo cual nos permite agregar, visualizar y analizar de forma Ăştil estos datos. Los datos de medios sociales tienen un tiempo de vida relativamente corto. La relevancia de un tweet, post o blog puede ir de algunas horas a algunas semanas, dependiendo del contexto. Es asĂ­ que una arquitectura 24

para analĂ­tica social debe estar orientada a tomar corrientes de datos (data streaming) y procesarlas de manera continua, reteniendo solamente los mĂ­nimos datos necesarios. Esto es muy distinto a los datawarehouse tradicionales, que almacenan histĂłricos de las operaciones de la empresa.

Estrategias En la analĂ­tica social es difĂ­cil establecer una visiĂłn de largo plazo sobre nuestra informaciĂłn, ya que los datos, tĂłpicos y casos de uso estĂĄn cambiando continuamente. Entonces, decidir quĂŠ informaciĂłn obtener y cĂłmo utilizar el conocimiento derivado es una actividad que se realiza de manera continua. AsĂ­ como las estrategias de anĂĄlisis de datos deben ser altamente adaptables, tambiĂŠn deben serlo las estrategias de desarrollo. Dado el gran dinamismo de los datos, no es posible aplicar tĂŠcnicas tradicionales de data warehousing para la integraciĂłn de datos. AquĂ­ tiene mayor importancia la velocidad y volumen de datos que la precisiĂłn. La integraciĂłn entre datos sociales y datos de sistemas empresariales presenta un reto interesante. La mayorĂ­a de las organizaciones maduras tiene polĂ­ticas de calidad de sus datos empresariales, mientras que los datos sociales tĂ­picamente son muy crudos y pueden tener duplicados y contradicciones. Una buena estrategia de analĂ­tica social debe considerar puntos y mecanismos de integraciĂłn adecuados entre datos empresariales y datos sociales pĂşblicos, organizĂĄndolos de la forma que sea mĂĄs Ăştil al negocio.

TecnologĂ­as Un ambiente de analĂ­tica social requiere un conjunto distinto de tecnologĂ­as que los que tĂ­picamente se tienen en una infraestructura de datawarehousing y BI. Las tecnologĂ­as candidatas deben incluir herramientas para: descubrimiento y cosecha de datos; filtrado y retenciĂłn; anĂĄlisis y visualizaciĂłn. Dependiendo de las metas estratĂŠgicas, tambiĂŠn puede necesitarse alguna tecnologĂ­a para la gestiĂłn de metadatos.

Descubrimiento y cosecha. Para aquellas fuentes de datos conocidas tales como Twitter, Facebo-


.PRINCIPAL

Como ya se mencionó, las bases de datos relacionales no son del todo adecuadas para el almacenamiento de grandes volúmenes de datos no estructurados. Para ello requerimos utilizar tecnología de almacenamiento específica para Big Data. Sistemas de archivos como Hadoop Distributed File System (HDFS) y bases de datos como HBase son una opción común. Sin embargo, hay que tener en cuenta que la administración de estas tecnologías requiere habilidades y conocimientos distintos al de las bases de datos tradicionales por lo que es muy probable que haya que contratar personal nuevo o entrenar al existente.

Conclusión La analítica social es un área emergente que difiere substancialmente del datawarehousing y BI tradicional. Puede ser un diferenciador clave para las empresas en el futuro. Sin embargo, hay que tener en cuenta que la analítica social representa un cambio de paradigma significativo para los directivos y profesionistas de TI, requiriendo nuevas arquitecturas e infraestructura, estrategias cambiantes, y nuevas habilidades. Posiblemente este artículo despierte más preguntas que respuestas. Mi objetivo es hacerlos conscientes de esta tendencia e invitarlos a explorar estas consideraciones para determinar el rol que la analítica social puede jugar en su organización.

Visualización y análisis El análisis y visualización de big data es un campo joven y en el que las tecnologías apenas comienzan a consolidarse. Algunos tipos de estas tecnologías son: t #BTFT EF EBUPT FTDBMBCMFT entre sus características destacan que son no relacionales, distribuidas y orientadas a escalar horizontalmente. t .BQ3FEVDF el framework de procesamiento distribuido de tareas. t 5FDOPMPHÓBT EF QSPDFTBNJFOUP EF DPSSJFOUFT EF EBUPT diseñadas para el procesamiento con baja latencia de eventos en tiempo real. Un ejemplo es StreamSQL. t "QQMJBODFT QBSB #JH %BUB que integran tecnologías de servidor, redes y almacenamiento en una “caja negra” que está lista para utilizarse y optimizada para procesar grandes cantidades de datos.

.BIO Ken Collier es Director de las prácticas de Data Insight y Social Business Intelligence, así como Consultor Senior en la práctica de Agile Product Management en Cutter Consortium. Ken es un líder en la combinación de

Las herramientas y tecnologías que se requieran para cada caso, dependen del tipo de análisis a realizar. Por ejemplo, el análisis de 25

Software Guru

Gestión y retención de datos

sentimientos es una técnica difusa que combina procesamiento de lenguaje natural, lingüistica computacional y análisis de texto para evaluar la actitud de un autor respecto a cierto tópico o conjunto de palabras. Los motores de análisis de sentimientos calculan una calificación de polaridad, la cual indica el grado de positivismo o negatividad sobre un tópico específico. La visualización y presentación de datos no estructurados es un aspecto clave de la analítica social. Dado que los datos son no estructurados y cualitativos, no podemos apoyarnos en las técnicas de visualización de datos cuantitativos. En lugar de esto, la información debe presentarse de formas que incentive el análisis de información. En otras palabras, necesitamos herramientas que destilen grandes volumenes de datos y los presenten de forma que los humanos puedan visualizar y entender fácilmente. Las técnicas de visualización de datos científicos pueden ser una buena opción para aplicarse a la visualización de analítica social, sin embargo al momento de escribir este artículo todavía no conozco herramientas que hagan esto de manera efectiva. Sin duda, en el futuro próximo comenzaremos a ver herramientas que resuelvan esta necesidad.

www.sg.com.mx |

ok, así como blogs y feeds RSS previamente identificados, es esencial utilizar una herramienta que pueda captar y organizar continuamente los datos de estas fuentes. Estas herramientas habilitan crear de forma sencilla “robots” que periódicamente visitan sitios web y extraen información importante. Una arquitectura de analítica social puede tener cientos de estos robots, cada uno para un sitio web específico. Un ejemplo de una herramienta para esto es la plataforma de Kapow Software. Tanto o más importante que conocer los datos generados por fuentes conocidas, es el descubrir fuentes de datos previamente desconocidas. Esto requiere tecnologías de crawling tales como Arachnode.Net, la cual provee la capacidad de navegar sitios desconocidos, regresando información que puede ser de interés. Los crawlers típicamente son sembrados con un sitio web inicial, y de ahí navegan a través de todas sus ligas, y luego las ligas de los sitios a donde llevan, y así. Por medio de los crawlers podemos identificar nuevos sitios con información de nuestro interés, y posteriormente con cosechadores podemos estar extrayendo esos datos. Los motores de búsqueda inteligentes extienden la búsqueda tradicional por palabras clave, con procesamiento de lenguaje natural (NLP), de forma que puedan incorporar contexto, análisis temporal y significado semántico a las búsquedas. El incorporar búsqueda inteligente a una infraestructura de analítica social puede reducir el número de resultados inútiles y aumentar el valor de los datos descubiertos.

métodos ágiles con inteligencia y analítica de negocios.


-

MAPA DEL STACK TECNOLĂ“GICO DE

HADOOP ››Por Pedro Galvån

Conforme la conversaciĂłn sobre Big Data comienza a pasar del â€œÂżquĂŠ esâ€? hacia el â€œÂżcĂłmo se hace?â€? y â€œÂżcuĂĄl es la tecnologĂ­a detrĂĄs?â€?, es inevitable mencionar a Hadoop, ya que es la base sobre la que estĂĄn construidas la mayorĂ­a de las soluciones para anĂĄlisis de Big Data. Hadoop es un proyecto de software open source que provee un framework para habilitar el procesamiento distribuido de grandes conjuntos de datos sobre clusters construidos con hardware genĂŠrico. En esencia, Hadoop consiste de dos elementos base: un sistema de archivos distribuido (Hadoop Distributed File System, HDFS) y un motor de procesamiento de datos que implementa el modelo Map/ Reduce (Hadoop MapReduce). Sin embargo, conforme ha ido ganando adopciĂłn y madurez, tambiĂŠn se han ido creando tecnologĂ­as para complementarlo y ampliar sus escenarios de uso, de tal forma que hoy en dĂ­a el nombre “Hadoopâ€? no se refiere a una sola herramienta sino a una familia de herramientas alrededor de HDFS y MapReduce. En este artĂ­culo brindo un mapa de estas tecnologĂ­as con el objetivo de explicar cĂłmo se conforma —al menos al dĂ­a de hoy— un stack tecnolĂłgico para Big Data basado en Hadoop. Para explicar los distintos componentes, los he clasificado en distintas capas: almacenamiento y acceso a datos, procesamiento, programaciĂłn, serializaciĂłn, gestiĂłn e integraciĂłn de datos. A continuaciĂłn explico el propĂłsito de cada una, y las tecnologĂ­as detrĂĄs de ellas.

Almacenamiento y acceso a datos Como su nombre lo indica, estos componentes son los que proveen la capacidad de almacenar y acceder grandes volĂşmenes de datos. AquĂ­ tenemos dos tecnologĂ­as principalmente: HDFS y HBase. )%'4 )BEPPQ %JTUSJCVUFE 'JMF 4ZTUFN Es un sistema de archivos distribuido que estĂĄ optimizado para almacenar grandes cantidades de datos utilizando un patrĂłn de acceso write-once read-many (escribe una vez, lee muchas). Esto hace que HDFS sea una opciĂłn adecuada cuando es necesario escribir pocos archivos grandes, que son leĂ­dos muchas veces. Un cluster HDFS tiene dos tipos de nodos: un nodo de nombre (namenode) y mĂşltiples nodos de datos (datanodes). El primero es responsable del ĂĄrbol del sistema de archivos y los metadatos, mientras que los segundos son los que realizan el acceso a los datos. )#BTF )BEPPQ %BUBCBTF HBase es una base de datos distribuida, versionada y orientada a columnas, diseĂąada para almacenar tablas muy grandes (millones de registros con millones de columnas). HBase funciona encima de HDFS y usa la misma arquitectura de nodos:

26

un nodo maestro que divide y distribuye los datos, y mĂşltiples nodos de trabajo que realizan las operaciones de acceso a datos. Los datos de HBase tĂ­picamente se acceden por medio de tareas MapReduce, aunque tambiĂŠn ofrece interfaces tipo REST.

Procesamiento de datos Encima de la capa de datos necesitamos frameworks para procesar dichos datos. La herramienta principal en este capa es un motor de procesamiento de tareas MapReduce. t .BQ3FEVDF es un modelo de programaciĂłn creado originalmente por Google para procesar grandes cantidades de datos. EstĂĄ inspirado en las funciones map y reduce de la programaciĂłn funcional, aunque en realidad aquĂ­ funcionan de forma un poco distinta. t .BQ En este paso, un nodo maestro recibe una tarea y la divide en tareas mĂĄs pequeĂąas que distribuye hacia otros nodos para que las procesen. Cada uno de estos nodos puede a su vez volver a dividir y repartir tareas, lo cual lleva a una estructura de ĂĄrbol de varios niveles. Cada nodo de procesamiento, una vez que termina su tarea la regresa a su nodo maestro. Reduce: El nodo maestro colecciona todas las respuestas recibidas y las combina para generar la salida, es decir, la respuesta al problema que originalmente se trata de resolver. Los beneficios principales de MapReduce son su escalabilidad y la variedad de datos que puede procesar tales como archivos, tablas de bases de datos, sitios web (web crawling). Para complementar esta capa de procesamiento de datos, es comĂşn recurrir a otro componente que se encargue de coordinador el flujo de trabajo de las tareas de MapReduce. AĂşn las tareas mĂĄs sencillas de MapReduce consisten de un gran nĂşmero de funciones map y reduce, asĂ­ que es recomendable apoyarse en un coordinador de workflow. Para ello existe Oozie, un coordinador de workflow open source creado por Yahoo que se utiliza frecuentemente para coordinar flujos MapReduce. Los workflows de Oozie se capturan en un lenguaje llamado Hadoo Process Definition Language (hPDL) el cual estĂĄ basado en XML.

ProgramaciĂłn Escribir tareas de MapReduce directamente serĂ­a similar a utilizar lenguaje ensamblador para escribir aplicaciones de escritorio. Es asĂ­


.PRINCIPAL

1JH es un framework para crear programas que envĂ­en tareas MapReduce a Hadoop. Su lenguaje de programaciĂłn se llama Pig Latin. Una de las caracterĂ­sticas principales de Pig Latin es que puede ser extendido utilizando funciones definidas por el usuario (UDF) las cuales pueden programarse en lenguajes como Java, Python y Javascript. Pig fue originalmente creado por Yahoo, pero al igual que Hive ahora tambiĂŠn es un proyecto de Apache. Tanto Hive como Pig buscan resolver el mismo problema: elevar el nivel de abstracciĂłn para crear tareas MapReduce. Hive estĂĄ orientado a crear sentencias declarativas, por lo que puede ser mĂĄs amigable para gente acostumbrada a lidiar con bases de datos, mientras que Pig Latin es un lenguaje de programaciĂłn procedural, por lo que es mĂĄs Ăştil para crear pipelines de datos y empata mejor con la forma de pensar de los programadores. Es muy posible que esta sea un ĂĄrea que tendrĂĄ crecimiento en los prĂłximos aĂąos conforme se crean frameworks para facilitar el desarrollo de aplicaciones sobre Hadoop.

SerializaciĂłn MapReduce lee y escribe datos en formato de pares llave/valor (key/ value). Para convertir estos datos a un stream, es necesario serializarlos. El componente de serializaciĂłn que utiliza Hadoop se llama Avro. Vale la pena mencionar que aunque Avro es el componente que usa Hadoop, existen otros frameworks de serializaciĂłn que se podrĂ­an usar, tales como Protocol Buffers, Thrift o BSON (Binary JSON).

GestiĂłn Coordinar la configuraciĂłn y ejecuciĂłn de aplicaciones distribuidas no es cosa sencilla. Necesitamos herramientas que se encarguen de esto, y la opciĂłn default para Hadoop es Zookeeper (que en significa “guardĂ­an del zoolĂłgicoâ€?). Algunos de los aspectos que resuelve son: t (FTUJĂ˜O EF MB DPOmHVSBDJĂ˜O B USBWĂ?T EF OPEPT Si tienes decenas o cientos de nodos de procesamiento, se complica mantener sincronizada la configuraciĂłn de todos ellos y hacer cambios rĂĄpidamente. Zookeeper se encarga de esto. t .FOTBKFSĂ“B DPOmBCMF Zookeeper permite implementar fĂĄcilmente una cola productor/consumidor que garantiza la entrega de mensajes, aĂşn en caso de que algĂşn nodo falle. t 3FEVOEBODJB Zookeeper puede encargarse de gestionar nodos replicados, direccionando las peticiones a un nodo maestro y en caso de que ĂŠste falle redireccionando las peticiones a un nuevo nodo maestro. t 4JODSPOJ[BDJĂ˜O EF QSPDFTPT Zookeeper puede coordinar el arranque y fin de un grupo de nodos de procesamiento. Esto asegura que cualquier procesamiento posterior se realice hasta que todos los nodos hayan terminado sus cĂĄlculos.

27

Hasta ahora hemos visto cĂłmo funciona Hadoop con datos que ya tiene, pero no hemos visto cĂłmo podemos importar/exportar datos hacia HDFS y HBase. Menciono aquĂ­ 3 opciones: "QBDIF 4RPPQ Es una herramienta para transferir conjuntos de datos entre Hadoop y bases de datos relacionales. "QBDIF 'MVNF Colecciona y organiza datos a partir de las bitĂĄcoras de las aplicaciones (application logs) y los mueve hacia HDFS. %SJWFST +%#$ 0%#$ Ya han comenzado a surgir los primeros drivers que permiten conectar los datos de Hadoop con aplicaciones externas. Esta serĂĄ una de las ĂĄreas donde estaremos viendo mayor actividad de parte de los proveedores, creando drivers y conectores para integrarse a sus sistemas de BI y aplicaciones empresariales.

Otras capas y componentes Tanto Hadoop como tecnologĂ­a, y Big Data como prĂĄctica, son bastante jĂłvenes y apenas comenzamos a ver la punta del iceberg en su desarrollo. Veo dos capas comenzando a formarse pero que no me he atrevido a poner dentro del mapa actual porque creo que todavĂ­a son bastante jĂłvenes: La primera es una capa de aplicaciones, que es donde tendremos aplicaciones de propĂłsito especĂ­fico que utilicen Hadoop. Al dĂ­a de hoy, las organizaciones que utilizan Hadoop han creado sus aplicaciones in-house para esta capa, pero conforme Hadoop madure y tenga una mayor penetraciĂłn en los corporativos, comenzaremos a ver aplicaciones “listas para usarseâ€? sobre Hadoop. Por otro lado, se estĂĄ gestando una capa orientada al testing de Hadoop. Ya existe MRUnit, una librerĂ­a java para realizar pruebas unitarias de tareas MapReduce. TambiĂŠn ya se estĂĄ incubando en Apache el proyecto BigTop, para el empaquetado y pruebas del ecosistema Hadoop. Otra tecnologĂ­a relacionada con Hadoop y Big Data que estĂĄ ganando popularidad y que no he sabido en quĂŠ parte del mapa asignar —posiblemente irĂ­a en la capa de aplicaciones—, es Apache Mahout. Esta es una implementaciĂłn de algoritmos para aprendizaje automatizado (machine learning) y minerĂ­a de datos sobre Hadoop.

ConclusiĂłn Conforme el interĂŠs de las organizaciones por realizar anĂĄlisis de Big Data aumente, las ĂĄreas de TI deberĂĄn crear un stack tecnolĂłgico para soportarlo. Espero que este mapa te ayude a entender mejor como crear tu propio stack, y/o a darle sentido a la oferta de los proveedores de soluciones.

Referencias: [1] “Hadoop Wiki�. http://wiki.apache.org/hadoop [2] D. Engfer. “Intro to the Hadoop Stack.� http://www.slideshare.net/davidengfer/introto-the-hadoop-stack-javamug [3] C. Zedlewski, E. Collins. “Hadoop Stack: Then, now and future�. http://www.slideshare.net/cloudera/the-hadoop-stack-then-now-and-in-the-future-eli-collins-charleszedlewski-cloudera [4] M. Collins. “Hadoop and MapReduce: Big Data Analytics�. Gartner Research, Enero 2011 http://www.gartner.com/id=1521016

.BIO Pedro GalvĂĄn (@pedrogk) es cofundador y director editorial de SG Software Guru.

Software Guru

)JWF es una infraestructura para data warehousing sobre Hadoop que permite hacer consultas, agregaciĂłn de datos y anĂĄlisis. Utiliza un lenguaje similar a SQL llamado HiveQL. Internamente, un compilador transforma las sentencias de HiveQL a un grafo de tareas MapReduce. Hive fue originalmente creado por Facebook y posteriormente pasĂł a ser un proyecto Apache de software libre.

IntegraciĂłn

www.sg.com.mx |

que necesitamos herramientas que nos permitan abstraer la creaciĂłn de tareas MapReduce, para poder hacerlo de forma mĂĄs sencilla y rĂĄpida. Las dos opciones mĂĄs comunes para ello son: Pig y Hive.


Y BIG DATA ››Por Eduardo Rivadeneira

Las organizaciones de hoy enfrentan desafĂ­os crecientes para extraer valor del negocio a partir de los datos. En primer lugar, continĂşa el crecimiento desmedido de los datos que las organizaciones almacenan y pueden acceder. En segundo lugar, la complejidad de los datos aumenta conforme los clientes almacenan no solo datos estructurados en formato relacional, sino tambiĂŠn datos no estructurados tales como archivos Word, PDF, imĂĄgenes, vĂ­deos y datos geoespaciales. De hecho, analistas de la industria indican que mĂĄs del 80% de los datos capturados son no estructurados. Finalmente, los clientes tambiĂŠn se enfrentan a la velocidad de datos: las organizaciones que procesan datos transmitidos en tiempo real por sitios web requieren actualizar los datos en tiempo real para, por ejemplo, ofrecer el anuncio correcto o presentar las ofertas correctas a sus clientes. Microsoft ha estado trabajando con Big Data desde mucho antes de que fuera una megatendencia: Por ejemplo, en Bing analizamos mĂĄs de 100 petabytes de datos para ofrecer resultados de bĂşsqueda de alta calidad. Microsoft proporciona una gama de soluciones para ayudar a los clientes a enfrentar los desafĂ­os de Big Data. Nuestra familia de soluciones de data warehouse cuenta con una amplia gama de productos como Microsoft SQL Server 2008 R2, SQL Server Fast Track Data Warehouse, Business Data Warehouse, Microsoft SQL Server Parallel Data Warehouse, y recientemente con la liberaciĂłn de SQL Server 2012, lo que ofrece una plataforma sĂłlida y escalable para almacenar y analizar datos en sistemas data warehouse. El sistema de Parallel Dataware House (PDW) ofrece a los clientes rendimiento de clase empresarial que maneja volĂşmenes masivos a mĂĄs de 600 TB. TambiĂŠn proporcionamos LINQ para HPC (High Performance Computing) con un tiempo de ejecuciĂłn distribuido y un modelo de programaciĂłn para computaciĂłn tĂŠcnica. AdemĂĄs de nuestras capacidades tradicionales, en Microsoft estamos adoptando Apache Hadoop, como parte de un mapa de soluciĂłn para cumplir con nuestra visiĂłn de ofrecer soluciones de negocios para usuarios de todo tipo mediante la activaciĂłn de nuevos tipos de datos de cualquier tamaĂąo.

Beneficios clave: t "NQMJBS Z GBDJMJUBS FM BDDFTP B )BEPPQ QPS NFEJP EF VOB JOTUBMBciĂłn y configuraciĂłn sencilla, ademĂĄs de programaciĂłn simplificada con JavaScript. t 6OB EJTUSJCVDJĂ˜O )BEPPQ iMJTUB QBSB MB FNQSFTBw DPO NBZPS TFguridad (integrada al Directorio Activo de Microsoft) y facilidad de administraciĂłn (con una consola Ăşnica con System Center). t 'BDJMJEBE QBSB EFTDVCSJS Z BQMJDBS JOGPSNBDJĂ˜O EFM OFHPDJP NFdiante el uso de herramientas conocidas como PowerPivot para Excel, SQL Server Analysis y Reporting Services de SQL server, se puede tener una integraciĂłn y explotaciĂłn de datos en poco tiempo y con grandes resultados.

SoluciĂłn Big Data de Microsoft

Ampliando el acceso a Hadoop

La visiĂłn de Microsoft es proporcionar conocimiento de negocios a partir de cualquier tipo de datos, incluyendo conocimiento previamente escondido en datos no estructurados. Para lograr este objetivo, Microsoft ofrecerĂĄ distribuciones de Windows Server y Windows Azure basadas en Apache Hadoop, acelerando su adopciĂłn en las empresas. Esta nueva distribuciĂłn basada en Hadoop por Microsoft permite a los clientes obtener una visiĂłn de negocios sobre datos estructurados y no estructurados de cualquier tamaĂąo y activar nuevos tipos de datos. Esta informaciĂłn extraida de Hadoop se puede combinar perfectamente con la plataforma de Business Intelligence de Microsoft.

Microsoft estĂĄ comprometido en ampliar la accesibilidad y uso de Hadoop para usuarios, desarrolladores y profesionales de TI. La nueva distribuciĂłn de Windows basada en Hadoop facilita las cosas al personal de TI, simplificando la experiencia de adquisiciĂłn, instalaciĂłn y configuraciĂłn. Las mejoras en el empaquetamiento de Hadoop y sus herramientas permiten instalarlo y desplegarlo en cuestiĂłn de horas en lugar de dĂ­as. Los usuarios finales pueden utilizar el controlador Hive ODBC o Hive Add-in for Excel para analizar los datos de Hadoop usando herramientas conocidas como Microsoft Excel y clientes de BI como PowerPivot para Excel.

28

Nuestra soluciĂłn de Big Data tambiĂŠn ofrece interoperabilidad con otras distribuciones de Hadoop, permitiendo obtener informaciĂłn de varias fuentes. t %PT DPOFDUPSFT EF )BEPPQ 2VF QFSNJUFO B MPT DMJFOUFT NPWFS datos fĂĄcilmente entre Hadoop y SQL Server o SQL Server Parallel Data Warehouse. Estos conectores ya se encuentran disponibles. t $POUSPMBEPS )JWF 0%#$ BEFNĂˆT EF &YDFM )JWF "EE *O 0GSFDFNPT un nuevo controlador de Hive ODBC y un Hive de Excel complementario que permiten a los clientes mover datos directamente en Excel, o herramientas de BI de Microsoft tales como PowerPivot, para anĂĄlisis.


.CONTENIDO PATROCINADO Para los desarrolladores, Microsoft estĂĄ invirtiendo en hacer que JavaScript sea un lenguaje de primera clase para Big Data, permitiendo escribir tareas Map/Reduce de alto desempeĂąo en JavaScript. AdemĂĄs, nuestra consola de JavaScript permitirĂĄ a los usuarios crear con Java Script desde su navegador tareas Map/Reduce, asĂ­ como queries de Pig-Latin y Hive para ejecutarse en Hadoop. Este es el tipo de innovaciĂłn que Microsoft espera contribuir como propuesta a la comunidad.

El controlador Hive ODBC permite a los clientes mover datos desde Hive directamente en Microsoft Excel o Herramientas de BI herramientas como SQL Server Analysis Services, Reporting Services, PowerPivot y PowerView para una visualizaciĂłn de datos enriquecidos. Estas vistas pueden incorporarse paneles de control para los tomadores de decisiones. Ver Figura 1.

En marzo del 2012 estaremos lanzando al mercado SQL Server 2012, ofreciendo tres pilares: MisiĂłn crĂ­tica, Pensamiento creativo y Soluciones en la nube en tus tĂŠrminos. En misiĂłn crĂ­tica, estamos incluyendo la tecnologĂ­a “AlwaysOnâ€?, ofreciendo una soluciĂłn para manejar grupos de alta disponibilidad para clusters, mirroring, log shipping y diagnĂłsticos, ofreciendo mĂşltiples servidores secundarios en modo activo y mĂşltiples bases de datos para tolerancia a fallos, escalabilidad bajo demanda y distribuyendo cargas de trabajo en servidores secundarios. Ofreciendo un performance de mĂĄs de 57,000 transacciones por segundo y 100,000,000 por dĂ­a, con una velocidad mejorada gracias a la tecnologĂ­a de ColumnStore Index Para ayudar a la detecciĂłn y aprovechamiento de informaciĂłn, contamos con una exploraciĂłn y visualizaciĂłn de informes, reportes y datos mejorada agregando nuevas tecnologĂ­as como Power View que permite ver reportes de una forma grĂĄfica y dinĂĄmica, asĂ­ como Power Pivot que permite explotar millones de registros via Excel con BI de autoservicio, permitiendo al usuario un uso efectivo de sus datos en Excel y SharePoint Server. La nube en tus tĂŠrminos es nuestra visiĂłn de crear y escalar soluciones de negocios de forma rĂĄpida y en tus tĂŠrminos: a travĂŠs de servidores, nube privada o pĂşblica. SQL Server ofrece la agilidad necesaria para crear y escalar soluciones de forma rĂĄpida que permitan resolver los desafĂ­os y habilitar nuevas oportunidades de negocio desde el servidor a la nube pĂşblica o privada vinculando herramientas comunes para optimizar la productividad y desarrollo. Una de nuestra ventajas con las herramientas de datos de SQL Server es escribir una vez, ejecutar en cualquier lugar ya sea on premise o en la nube, no hay que reescribir el cĂłdigo. En resumen, SQL Server 2012 estĂĄ diseĂąado para soportar las cargas de trabajo mĂĄs exigentes del mercado, ofreciĂŠndo los mĂĄs altos niveles disponibilidad, desempeĂąo, alta escalabilidad, seguridad y una experiencia mejorada para Inteligencia de Negocios, con herramientas “out of the boxâ€? en una sola licencia sin tener que pagar por cada caracterĂ­stica. Como parte de las actividades de lanzamiento de SQL Server 2012, realizaremos un evento virtual a nivel mundial. Lo invitamos a participar en este evento visitando http://www.sqlserverlaunch.com

Adicionalmente, las opciones de despliegue de Windows Server y Windows Azure ofrecen gran flexibilidad y poder de elecciĂłn: t -JCFSUBE QBSB FMFHJS RVĂ? EBUPT TF NBOUJFOFO JO IPVTF P FO MB OVCF t .FOPS DPTUP UPUBM EF QSPQJFEBE 5$0 BM EFTQMFHBS )BEPPQ en la nube. t &MBTUJDJEBE QBSB TBUJTGBDFS MB EFNBOEB BEFNĂˆT EF UFOFS MB PQDJĂ˜O de ampliar una soluciĂłn de Hadoop in-house con Hadoop en Azure para satisfacer perĂ­odos de alta demanda. t .BZPS EFTFNQFĂ—P ZB RVF OVFTUSB TPMVDJĂ˜O QFSNJUF B MPT DMJFOUFT QSPcesar datos mĂĄs cerca de donde estos nacen, ya sea en sitio o en la nube. Todo esto se hace sin perder la compatibilidad con las herramientas existentes de Hadoop tales como Pig, Hive y Java. Nuestro objetivo es garantizar que las aplicaciones creadas en Apache Hadoop puedan migrar fĂĄcilmente a nuestra distribuciĂłn para ejecutarse en Windows Azure o Windows Server.

DetecciĂłn y aprovechamiento de informaciĂłn La soluciĂłn de Big Data de Microsoft mejora significativamente la detecciĂłn y aprovechamiento de informaciĂłn al permitir combinar datos relacionales de bases de datos con datos no estructurados de Hadoop. Nuestra distribuciĂłn de Windows Server y Windows Azure basada en Hadoop permite: t "OBMJ[BS EBUPT EF )BEPPQ DPO IFSSBNJFOUBT GBNJMJBSFT B MPT VTVBrios como Excel, gracias a su Hive Add-in para Excel. t 3FEVDJS FM UJFNQP EF TPMVDJĂ˜O NFEJBOUF MB JOUFHSBDJĂ˜O EF IFSSBmientas de Hive y Microsoft BI como PowerPivot y PoweView. t $POTUSVJS TPMVDJPOFT DPSQPSBUJWBT EF #* RVF JODMVZFO EBUPT EF )Bdoop, mediante la integraciĂłn de Hive y herramientas lĂ­deres de BI como SQL Server Analysis Services y Reporting Services.

Para mayor informaciĂłn visite: IUUQT XXX NJDSPTPGU DPN CJHEBUB IUUQT XXX IBEPPQPOB[VSF DPN IUUQT XXX NJDSPTPGU DPN TRM .BIO Eduardo Rivadeneira es lĂ­der para la plataforma aplicativa en Microsoft MĂŠxico. eduardo.rivadeneira@microsoft.com Figura 1. Panorama de la soluciĂłn Big Data de Microsoft.

29

www.sg.com.mx |

Para acelerar su adopciĂłn en las empresas, Microsoft alistarĂĄ a Hadoop para la empresa gracias a lo siguiente: t *OUFHSBDJĂ˜O DPO "DUJWF %JSFDUPSZ QBSB NBOFKP EF TFHVSJEBE t .FKPSBT FO EFTFNQFĂ—P QBSB HSBOEFT DBOUJEBEFT EF EBUPT t *OUFHSBDJĂ˜O DPO 4ZTUFN $FOUFS QBSB TJNQMJmDBS MB BENJOJTUSBDJĂ˜O t *OUFHSBDJĂ˜O DPO TPMVDJPOFT EF #VTJOFTT *OUFMMJHFODF

Software Guru

Hadoop listo para la empresa


BIG DATA

Analizando los Datos Precisos en el Momento Correcto ››Por Ricardo Barranco Fragoso

El mundo tecnológico se encuentra en constante cambio, y cada vez los retos relacionados al análisis de la información implican un mayor potencial en la infraestructura. A través de los avances en cuanto a tecnología de comunicaciones, las personas y las cosas se encuentran cada vez más interconectadas la mayor parte del tiempo, además mediante la instrumentación ahora somos capaces de medir y detectar información relevante para nuestras operaciones del día a día. ¿Pero qué sucede cuando las organizaciones se encuentran con información que no puede ser procesada o analizada por procesos o herramientas tradicionales, o bien, no conocen cómo obtener el valor de los datos provenientes de diversas fuentes (que pueden ser estructuradas o no estructuradas), y más aún si la velocidad y cantidad de información es generada a tasas de crecimiento extremadamente altas?, la respuesta a esta problemática está relacionada con el concepto de Big Data. [1]

la información, extendiendo las capacidades analíticas para incluir un gran volumen de datos en constante cambio. Mientras que BigInsights nos permite obtener toda la ventaja competitiva para tratar con aquellos “mares” de información, IBM InfoSphere Streams™ proporciona un mejor entendimiento de aquellas “cascadas” de información que se encuentran fluyendo en constante movimiento (in-motion) permitiendo capturar y actuar sobre aquellos datos de negocio todo el tiempo en el momento preciso. IBM InfoSphere Streams es una plataforma de alto desempeño en la cual las aplicaciones rápidamente pueden obtener, analizar y correlacionar toda la información proveniente de miles de fuentes en tiempo real; todo esto de forma continua en un orden de petabytes al día, ejecutando analíticos complejos de varios tipos de datos como texto, imágenes, audio, video, escáneres, sensores, e-mail, datos GPS, transacciones financieras, datos satelitales y cualquier tipo de información digital relevante para cada organización.

El patrón redes sociales

Figura 1. Retos de Big Data

Datos almacenados y datos en movimiento Basado en el poder de Apache Hadoop, IBM InfoSphere BigInsights™ [2] permite analizar y descubrir efectivamente una nueva perspectiva de la información que se encuentra almacenada de manera estática (at rest) en grandes volúmenes de datos (Terabytes / Petabytes / Zetabytes), tales como bitácoras, rss feeds, blogs, sitios de redes sociales, datos de sensores, e-mails, mensajes instantáneos, etcétera. IBM InfoSphere Big Insights complementa la infraestructura existente de administración de 30

Tal vez el uso más mencionado de Big Data es el análisis de redes sociales y análisis de los sentimientos de los clientes. Big Data puede ser utilizado para analizar lo que sus clientes están hablando sobre su organización (y quizás lo que opinan de la competencia), y de esta manera determinar el impacto en la toma de decisiones empresarial. El análisis de redes sociales es un tema con impacto real en la vida de las organizaciones, al grado que IBM ha construido una solución específicamente para este uso: Cognos Customer Insights (CCI), es una solución que es ejecutada sobre BigInsights que demuestra las tendencias de los medios sociales que son analizados.

Big Data en la nube Una plataforma de Big Data es grandiosa al obtener el valor de grandes volúmenes de información, sin embargo para lograrlo es


.CONTENIDO PATROCINADO

también necesario contar con una infraestructura de cómputo escalable además de disponer de suficiente espacio para su almacenamiento, por lo que a muchas organizaciones les es imposible hacer frente a una inversión de capital en cuanto a recursos, almacenamiento y dispositivos de redes. IBM InfoSphere BigInsights cuenta con la disponibilidad de instalar y desplegar la plataforma en una arquitectura basada en cómputo en la nube sobre IBM SmartCloud Enterprise™ adicional a las nubes privadas.

Liderazgo reconocido Recientemente IBM fue seleccionada como parte de las empresas evaluadas dentro del estudio de Forrester Research sobre soluciones Big Data (The Forrester Wave™: Enterprise Hadoop Solutions, Q1 2012). El estudio reporta que IBM fue posicionada en la categoría de líderes con los más altos resultados en los segmentos de estrategia y presencia en el mercado.

Ventajas de la plataforma IBM Al enfrentar la problemática que representan las “3 V’s” de big data – volumen, velocidad y variedad – la plataforma de IBM ofrece 4 ventajas competitivas:

manera que las organizaciones puedan dedicar su tiempo a analizar y no a implementar. t -B TPMVDJØO EF *#. FTUÈ DPOTUJUVJEB QPS VOB WBTUB MJTUB EF DPOFDUPres hacia componentes principales, de modo que puedan integrarse rápidamente hacia cualquier infraestructura empresarial. Al contrario de lo que muchas personas piensan, Big Data no es un concepto nuevo, lo que si es reciente es la fuerte penetración y atención que está tomando actualmente en el mercado. IBM ha investigado e invertido fuertemente en este campo por varios años, y ha creado una plataforma de Big Data completamente diseñada para ayudar a las organizaciones a adoptar estos cambios y recolectar toda la información crítica mediante su iniciativa “Smarter Planet”, reconociendo que nuestro planeta es ahora más instrumentado, interconectado e inteligente. Si desea más información sobre Big Data y las soluciones de IBM, por favor envíe un correo electrónico a: Ricardo Barranco Fragoso (rbarran@mx1.ibm.com).

Software Guru

#JH EBUB FO UJFNQP SFBM t *OGP4QIFSF 4USFBNT FT EJTUJOUP B DVBMRVJFS QMBUBGPSNB FO TV IBCJlidad de obtener, analizar y actuar sobre datos en movimiento (in motion) —los cuales son procesados y analizados en latencias de submilisegundos.

$MBTF FNQSFTBSJBM t -B QMBUBGPSNB CBTBEB FO )BEPPQ #JH*OTJHIUT QSPWFF EF MB habilidad para analizar y extraer información de una amplia variedad de fuentes de datos, promueve la exploración de datos y el descubrimiento mientras extiende las funciones existentes de su data warehouse. t -B DBQBDJEBE EF JOUFHSBDJØO EF MB JOGPSNBDJØO QSPWFF EF GVODJPOFT de transformación de datos, gobernabilidad y administración de metadatos tanto para datos en movimiento (in motion) como estáticos (at rest). t 5PEBT FTUBT DBQBDJEBEFT FTUÈO EJTF×BEBT QBSB RVF TFBO DPOTVmidas por usuarios finales, administradores y desarrolladores de aplicaciones. *OUFHSBDJØO t &YJTUFO NÈT EF BQMJDBDJPOFT NVFTUSB SFDPMFDUBEBT EFM USBCBKP que se ha realizado en IBM para casos de uso e industrias específicas. Estos aplicativos están implementados dentro de la solución de

www.sg.com.mx |

"NQMJB HBNB EF BOBMÓUJDPT t .PUPSFT BOBMÓUJDPT RVF QFSNJUFO PQFSBS VOB HSBO WBSJFEBE EF BOÈlisis como bitácoras, registros de llamadas telefónicas, redes sociales, sentimiento del cliente, fidelidad del cliente y más. Figura 2. Panorama de la plataforma para Big Data de IBM

Referencias: [1] IBM. “Bringing Big Data to the Enterprise”. http://www-01.ibm.com/software/data/ bigdata [2] IBM. “Infosphere BigInsights”. http://www-01.ibm.com/software/data/infosphere/ biginsights

.BIO Ricardo Barranco (rbarran@mx1.ibm.com) Especialista para Information Management en IBM México.

31



www.sg.com.mx |

Software Guru


.PRÁCTICAS USABILIDAD

Flujos de Interacción

¿QUÉ SON Y CÓMO MODELARLOS?

›› Por Pamela Rodríguez

A

lo largo de las distintas entregas de esta columna, hasta ahora nos hemos enfocado en actividades de análisis que son de una índole principalmente teórica y de investigación. Sin embargo, ya llegamos al punto de lidiar con las interacciones que tendrán nuestros usuarios con nuestra aplicación, y es aquí donde comenzamos a darle mayor solidez a todo lo que se ha hecho anteriormente —y que se ha tratado a detalle en los pasados cuatro artículos.

Diseño de interacción

Lo primero es, por supuesto, tener un entendimiento de lo que el diseño de interacción comprende. Así que, ¿a qué se hace referencia Figura 1. Prototipo de diseño cuando se habla de interacciones dentro de una interfaz? Se trata de todo aquello que tendrá una respuesta a con el mosaico de imágenes aún visible en el fondo, pero oscuuna determinada acción realizada por el usuario. Diseñar inte- recido para no restarle impacto a la noticia desplegada, como se racciones comprende la definición de estos elementos o sectores mostró también en la imagen. de respuesta, la acción que el usuario deberá llevar a cabo para El anterior análisis debe llevarse a cabo para cada acción relevanobtener una respuesta, la respuesta misma y la transición de te dentro del proyecto, considerando no solamente los elementos, estado entre la acción y la obtención de la respuesta. acciones, respuestas y transiciones deseadas, sino también las herraPara esto se puede considerar un ejemplo sencillo: Si el principal mientas con las que éstas serían implementadas y la factibilidad de objetivo es crear una interfaz diferente y llamativa, una sección de las interacciones de acuerdo a eso. Esto quiere decir que, si la aplinoticias no será simplemente un listado de imágenes con el texto cación es para un teléfono Blackberry de sistema operativo versión referente al título de cada una. Por ejemplo, si estamos hablando de 4.0, el diseño de esa pantalla tendrá que ser muy distinto por las una aplicación nativa para iPad, el escenario tiene la oportunidad limitantes en movimientos y espacios. de ser muy distinto. Un diseño posible comprendería un mosaico de imágenes uniformes, sin ningún borde que las separe, a modo de Métodos de documentación collage. Cada imagen puede llevar el título de la noticia encimado Documentar cada paso en el proceso de diseño es sumamente imporcon una pantalla de color negro en opacidad baja para resaltar el tex- tante para el entendimiento total del proyecto, pues nunca se trata de to. La acción de ‘tap’ con el dedo en cada una despliega una ventana un trabajo totalmente individual si se quiere hacer de manera óptimodal con la información más detallada. La figura 1 es un prototipo ma. Para permitir una comunicación eficiente entre los miembros de de este tipo de diseño. un equipo, se requiere documentación de cada decisión tomada en el En la descripción de este escenario se tienen los siguientes proceso y no solamente para el área de diseño ya que posteriormente actores: La imagen con título (que forma parte del mosaico) y la esos diseños serán entregables para un equipo de desarrollo y ésta ventana modal con la noticia. Una acción genera la transición, documentación les será de gran ayuda. que es el ‘tap’ sencillo con el dedo. La respuesta es la aparición de Sin embargo, documentar las decisiones que respectan al diseño la ventana modal y la transición puede ser una aparición gradual, de interacciones de una interfaz no es un proceso tan directo como 34


.PRÁCTICAS

USABILIDAD

“DOCUMENTAR

simplemente teclear párrafos de texto descriptivo. Las maneras ‘amigables’ de hacerlo pueden variar dependiendo de la herramienta con la que se sienta cómodo el equipo. En lo personal hay tres métodos posibles que recomiendo dependiendo de la complejidad y especialización requerida, estos son: diagramas de flujo, casos de uso y matrices de momentos. Tanto los diagramas de flujo como los casos de uso son esquematizaciones sencillas y muy conocidas, por lo que no se detallarán en este artículo. Las matrices de momentos serán el tema principal de ahora en adelante para darle otra perspectiva a la manera en la que son planteadas las interacciones.

Matrices, actores, eventos y momentos

Bill Scott es un consultor reconocido en el diseño de interfaces de usuario, y hace unos años dio a conocer la técnica de la matriz de interacción[1]. Bill propone plasmar un análisis de las interacciones por medio de una matriz de dos dimensiones en donde se conjuntan dos categorías de elementos principales: Actores y eventos. En el cruce de un actor con un evento se crea lo que él llama un ‘momento interesante’, donde se debe definir a detalle todo aquello que conforma ese momento. Como actores definimos todas aquellas acciones que pueden llevarse a cabo en la interfaz. Si tenemos una interfaz en web, algunos de los actores serían: Página, cursor, tool-tip, elemento a arrastrar (de un conjunto de elementos de un componente tipo ‘drag and drop’), la ubicación del elemento a arrastrar, el contenedor de ese elemento y la ubicación válida para colocar el elemento.

Referencias: [1] B. Scott. “Interaction Matrix”. http://swgu.ru/sg35r1

.BIO Pamela Rodríguez (@thepam) es egresada de la Universidad de Monterrey de la carrera de Ingeniería en sistemas computacionales con estudios avanzados en diseño web. Actualmente es Diseñadora de interfaces para aplicaciones móviles en Naranya Apphouse, docente, conferencista y autora de artículos relacionados. http://thepam.blogspot.com

35

www.sg.com.mx |

Figura 2. Definición de matriz de interacción.

Algunos de los eventos, por otro lado, serían: Mouse-over (el puntero sobre el elemento), mouse-down (clic sobre el elemento), carga de página, comenzar a arrastrar, arrastrar sobre una ubicación válida, arrastrar sobre una ubicación no válida, aceptar la nueva ubicación y rechazar la nueva ubicación. Teniendo estas dos listas, se crea una matriz en cuyas intersecciones se definirán las interacciones relevantes o momentos interesantes. No en todas las intersecciones sucede algo, pero sí deben considerarse todas para posteriormente descartarse, lo cual le da validez al uso de una matriz. La figura 2 ilustra este concepto. Si se tiene como ejemplo una página de inicio convencional de un sitio web informativo y se toma en cuenta la matriz que define la interacción con uno de los botones que conforman la navegación principal, el momento se genera con el cursor y su evento de mouse-over. Esta descripción detallaría: ‘Cambio de color para resaltar elemento seleccionado, estilo de botón encendido’. En la intersección de cursor y mouse-down, la descripción podría variar un poco: ‘Cambio de estilos para simular que el elemento se hunde’. En paralelo se puede mencionar la intersección entre la página y el mouse-down: ‘Carga de la siguiente página o sección, reemplazo de contenido’. Dependiendo del ambiente de diseño (web, aplicación para celular, tablet, etc.) y de las necesidades de la interfaz, se considerarán variaciones en la cantidad y tipo de actores y eventos que participan, pero el método siempre será el mismo. Si se pueden plasmar el mayor número de detalles con respecto a las interacciones dentro de una interfaz, se acortará la brecha que muchas veces queda entre la idea del diseño y el desarrollo final por la falta de comunicación efectiva entre los equipos.

Software Guru

DECISIONES DE DISEÑO SERÁN DE GRAN AYÚDA AL EQUIPO DE DESARROLLO”.


.PRÁCTICAS PRUEBA DE SOFTWARE

“whois”

Aprovechando las Bondades de en las Pruebas de Seguridad ››Por Berenice Ruiz Eguino y Miguel Ángel Cortés Dueñas

L

a extracción de información inicial del SUT (System Under Test), tema abordado en la anterior edición de este espacio, es una de las fases más importantes en un proyecto de pruebas de seguridad informática, ya que entre más información tengamos sobre el sistema o aplicación que estaremos probando, mejor será la estrategia a seguir para el diseño y ejecución de dichas pruebas. Al igual que “nslookup”, sobre la cual ya ahondamos en el pasado número, existen muchas otras herramientas disponibles, de las cuales se puede echar mano para acrecentar la base de conocimiento sobre la aplicación a probar. Una de esas herramientas es la conocida “whois”, un programa con ya bastantes años en circulación, pero no por eso menos eficiente. “Whois” no es solamente un programa, es un protocolo que prácticamente nació con la Internet. El primer documento redactado con el objetivo de conformar a “whois” en el servicio y protocolo que es hoy en día, fue el RFC – 812, presentado por Ken Harrenstien y Vic White hace aproximadamente 30 años, el 1 de Marzo de 1982. Eran los días en que la Internet todavía se llamaba ARPANET y se encontraba cerrada solamente a un determinado número de científicos, militares y académicos. Con el paso de los años y la apertura de la Internet al público en general, surgieron nuevos documentos enfocados en el mejoramiento de esta herramienta. El primero de ellos fue el RFC – 954 con fecha de Octubre de 1985 y el cual fue considerado como la especificación oficial del protocolo “NICNAME / WHOIS”. Casi veinte años después, en Septiembre de 2004, fue publicado el .BIO RFC – 3912 con nuevas actualizaciones del protocolo, quedando así como Sandra Berenice Ruiz Eguino es Directora de Operaciones de especificación oficial del mismo hasta e-Quallity, además ha participado como Consultora Senior en proyecel día de hoy. tos de mejora de organizaciones A pesar del transcurrir del tiemde Prueba de Software. Cuenta con certificación internacional en po, la funcionalidad de “whois” sigue Pruebas por el ASTQB. A lo largo de su trayectoria profesional ha acsiendo prácticamente la misma que en tuado también como Ingeniero de Pruebas Senior, Líder de Proyectos, sus primeros días, ya que sigue proveAdministradora de Proyectos nayendo información sobre los usuarios cionales e internacionales, analista y desarrolladora. Ha sido profesora de la red, pero ahora ya no a nivel de de la Universidad Autónoma de Guadalajara (UAG), donde realizó usuario sino a nivel de dominio. sus estudios de Maestría en Cien“Whois” normalmente aparece cias Computacionales. por defecto como parte de las herramientas de los sistemas operativos Miguel Ángel Cortés Dueñas es Líder Técnico de Proyectos de Unix y Linux. En los entornos WinPruebas y Consultor Especialista dows, la herramienta no es incluida en Pruebas de Seguridad en eQuallity. Cuenta con certificación en la distribución de fábrica, sin eminternacional en Pruebas por el ASTQB, así como certificación CEH bargo puede ser descargada de Inter(Certified Ethical Hacker) por el EC net del sitio de Technet de Microsoft. Council. En su trayectoria profesional ha participado también en proLa forma más tradicional de yectos nacionales y en el extranjero como Ingeniero de Pruebas Senior, usar “whois” es a través de la línea de realizando pruebas funcionales manuales y automatizadas. comandos de Unix, Linux o Windows, de la siguiente manera:

> whois dominiodeprueba.com La ejecución de este comando puede obtener como resultado, información similar a la mostrada a continuación:

Whois v1.01 - Domain information lookup utility Registrant: Empresa de Prueba. Please contact juan_perez@empresa_de_prueba.com Dirección de Prueba # 100 México, DF 00000 México dns-admin@empresa_de_prueba.com +5500000000 Fax: +5500000001 Domain Name: Empresa de Prueba S.A. de C.V. Registrar Name: Empresa_Registrante.com Registrar Whois: whois.empresa_registrante.com Registrar Homepage: http://www.empresa_registrante.com Administrative Contact: Alberto H. Calle Madero # 000 Querétaro, Qro 00000 México alberto_h@empresa_de_prueba.com +4420000000 Fax: +4420000001 Technical Contact, Zone Contact: Roberto L. Calzada Zaragoza # 0000 Aguascalientes, Aguascalientes 00000 México roberto_l@empresa_de_prueba.com +4490000000 Fax: +4490000001 Created on..............: 2005-01-01. Expires on..............: 2015-01-01. Record last updated on..: 2012-01-01. Domain servers in listed order: servidor1.empresa_de_prueba.com servidor2.empresa_de_prueba.com servidor3.empresa_de_prueba.com

Como se puede apreciar, la cantidad de información devuelta por “whois” es mucha. Sin embargo, no sólo se trata de información técnica como en el caso de “nslookup”, representada por los servidores de nombres de dominios, sino que también incluye datos personales y de contacto (teléfonos y direcciones de correo electrónico) de personas al interior de la empresa propietaria del dominio consultado. Estos datos fueron proporcionados a la empresa registrante durante el proceso de adquisición de dominio por parte del cliente y es relativamente fácil de obtener. 36


.PRÁCTICAS

por “whois”: una o más direcciones físicas de la empresa. En primera instancia, pudiera parecer que este dato no es importante, ¿a quién le puede importar la dirección física de una empresa? Sin embargo, observando el escenario desde una perspectiva diferente a la tradicional, el conocer la ubicación física de la empresa abre la posibilidad de presentarse en persona a las instalaciones o en los alrededores de la misma e intentar conectarse a la red organizacional directamente (si se obtiene el acceso físico) o a través de la red inalámbrica empresarial desde un lugar aledaño. Actualmente, obtener la dirección física de una empresa puede ser tan fácil como buscar en el directorio del sitio web corporativo, sin embargo, por cuestiones de privacidad, no todos los sitios web tienen un directorio corporativo a la vista y cuando este es el caso, “whois” puede ayudar. Algo importante también a resaltar, es el hecho de que actualmente, no es necesario tener instalado el programa “whois” localmente para ejecutar ese tipo de consultas, ya que también se encuentra disponible en Internet en sitios como www.whois.net y en muchos otros, facilitando aún más el acceso a la información disponible en ese protocolo. Con acciones y evaluaciones de este tipo, el equipo de pruebas puede ayudar al cliente a implementar políticas de seguridad corporativa no sólo a nivel técnico, sino que sea incluyente también con empleados, proveedores y contratistas que en algún momento dado pudieran tener acceso a la red organizacional. En caso de que ya se cuente con una política de seguridad implementada, el mismo equipo de pruebas puede ayudar a mejorarla, reforzarla encontrando puntos ciegos que no se tengan considerados hasta ese momento. Como se mencionó anteriormente, la era de Internet en la que vivimos actualmente nos da la facilidad de obtener información sobre casi cualquier cosa, desde diferentes fuentes donde muchas de ellas son insospechadas como lo es “whois” que puede ser una aplicación y protocolo muchas veces demeritado por su edad, sin embargo, eficiente y eficaz. Después de todo, por algo ha sobrevivido todo este tiempo y hasta nuestros días ¿no es así?

Referencias: [1] SAC 023: Is the WHOIS service a source for email addresses for spammers?, ICANN Security and Stability Advisory Committee, Octubre 2007.

37

www.sg.com.mx |

La importancia de esta información radica en que una vez obtenida, puede facilitar a usuarios malintencionados, el hacerse pasar por representantes de la empresa registrante del dominio y solicitar datos que puedan ser usados posteriormente para la realización de un ataque informático. En otras palabras, los empleados Juan Pérez, Alberto H. y Roberto L. mostrados en los resultados regresados por “whois” podrían llegar a ser engañados mediante técnicas de ingeniería social para revelar datos más técnicos de sus aplicaciones o equipos empresariales que, de ser conseguidos, facilitarían un ataque informático a la red corporativa. Este mismo enfoque es el que puede aplicar el equipo de ingenieros de pruebas que está realizando la evaluación de seguridad de la red empresarial del cliente. En lugar de solamente enfocarse en cuestiones meramente técnicas, el equipo de pruebas puede considerar la información personal obtenida con “whois” para establecer un nuevo vector de ataque a la red y probar lo que por muchos es considerado como el eslabón más débil en el esquema de seguridad de una organización: el ser humano. Mediante llamadas telefónicas o correos electrónicos, el equipo de pruebas puede hacerse pasar por un usuario válido al interior de la empresa y solicitar el “reseteo” de una contraseña, la activación de un servicio o acceso a recursos protegidos a los cuales comúnmente no se podría acceder. Por su parte, la existencia de direcciones de correo electrónico en los resultados retornados por “whois” ha facilitado a lo largo del tiempo, la recolección de datos por parte de “spammers” para el envío de sus correos no deseados. Por lo tanto, si una o más direcciones de correo electrónico tienen ya un tiempo considerable registradas en la base de datos de “whois” es probable que ya hayan sido recolectadas por algún procedimiento automatizado y usadas para envío de “spam” como en su momento lo documentó el ICANN Security and Stability Advisory Committee. Por otro lado, la misma presencia de direcciones de correo electrónico, abre la posibilidad de que usuarios malintencionados hagan uso de programas para envío y rastreo de correos electrónicos (email tracking). Por ejemplo, un lunes cualquiera en la empresa X (potencial víctima), Juan Pérez puede tener esperando en su bandeja corporativa un e-mail con una imagen anexa. Sin embargo, es probable que Juan no se dé cuenta que ese gráfico anexo está especialmente configurado para avisar al remitente, el momento en que se abrió el correo, así como la dirección IP real en la cual se abrió el correo dentro de la empresa. De esta manera, un e-mail especialmente configurado enviado a la dirección correcta, puede descubrir datos más específicos y útiles que a simple vista no son visibles para el ojo no entrenado. Aunado a lo anterior, no podemos dejar de lado un resultado de gran relevancia para el equipo de pruebas regresado también

Software Guru

PRUEBA DE SOFTWARE


.PRĂ CTICAS ARQUITECTURA

Implantando Pråcticas de Arquitectura dentro de la Organización ››Por Humberto Cervantes Dimensión

IntroducciĂłn

Quienes hayan estado siguiendo las distintas entregas de ĂŠsta columna y que laboren en una organizaciĂłn de desarrollo de software en donde actualmente no se sigan prĂĄcticas maduras de arquitectura de software probablemente se preguntarĂĄn Âżde quĂŠ manera se puede introducir esto en mi organizaciĂłn? En esta columna hablarĂŠ de la implantaciĂłn de prĂĄcticas de arquitectura de software dentro de una organizaciĂłn en base a mi propia experiencia.

!-1!.%)%!*0+/ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– +/ĆŤ .%2!./ĆŤ .-1%0! 01. (!/ĆŤ/!ĆŤ% !*0%Ăź *ĆŤ +)+ parte de los requerimientos de los proyectos? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ0%!*!ĆŤ!/,! % (ĆŤ 1% +ĆŤ!*ĆŤ!/0 (! !.ĆŤ mĂŠtricas asociadas con los atributos de calidad del sistema? %/!ÂŚ+ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ/%#1!ĆŤ (#Ă’*ĆŤ,.+ !/+ĆŤ, . ĆŤ.! (%6 .ĆŤ!(ĆŤ diseĂąo de la arquitectura o ĂŠste diseĂąo es “ad-hocâ€?? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ ,01. *ĆŤ !ĆŤ (#1* ĆŤ) *!. ĆŤ( /ĆŤ ! %/%+*!/ĆŤ de diseĂąo?

Etapas del cambio

La introducciĂłn de tĂŠcnicas de arquitectura de software en una organizaciĂłn representa una mejora o cambio organizacional que, dependiendo del tamaĂąo de la organizaciĂłn y el alcance de los cambios, puede llegar a ser complicado. Por lo anterior, es conveniente realizar ĂŠste cambio siguiendo un enfoque disciplinado como el que se plantea en el ĂĄrea de proceso OPM (antes OID) de CMMi [1], particularmente en organizaciones de tamaĂąo medio y grande. De forma general, las etapas que conforman un proyecto de mejora se muestran en la figura1 y se describen a continuaciĂłn:

Preguntas de DiagnĂłstico

+ 1)!*0 %¨*ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ10%(%6 ĆŤ (#Ă’*ĆŤ!/08* .ĆŤ, . ĆŤ + 1)!*0 .ĆŤ!(ĆŤ diseĂąo de la arquitectura? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– ĆŤ + 1)!*0 %¨*ĆŤ/!ĆŤ,.+ 1 !ĆŤ !ĆŤ"+.) ĆŤ)! 8*% Ä• 2 (1 %¨*ĆŤĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– 4%/0!ĆŤ (#Ă’*ĆŤ)! *%/)+ĆŤ !ĆŤ +*0.+(ĆŤ !ĆŤ( ĆŤ calidad del diseĂąo de la arquitectura? 0.+/ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– +/ĆŤ/%/0!) /ĆŤ-1!ĆŤ !/ ..+(( ĆŤ( ĆŤ+.# *%6 %¨*ĆŤ tienen problemas por cuestiones relacionadas con la arquitectura? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ +*/% !. *ĆŤ 0%2% !/ĆŤ !ĆŤ !/ ..+((+ĆŤ !ĆŤ arquitectura como parte del plan del proyecto? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ0%!*!ĆŤ1*ĆŤ.+(ĆŤ !ĆŤ .-1%0! 0+ĆŤ !*0.+ĆŤ de la organizaciĂłn? ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ ĆŤ Ä‘ĆŤÄ– !ĆŤ0%!*!*ĆŤ 0+/ĆŤ !ĆŤ !"! 0+/ĆŤ.!( %+* +/ĆŤ +*ĆŤ la arquitectura de software?

Figura 1.

Tabla 1.

DiagnĂłstico

Propuesta

El diagnóstico permite establecer una línea de base o punto de partida relativo al cambio mediante la identificación del estado actual de la pråctica dentro de la organización. En relación con la arquitectura de software, es conveniente evaluar las siguientes dimensiones (que corresponden a las disciplinas del desarrollo de arquitecturas y al contexto organizacional) .BIO con preguntas como las que se El Dr. Humberto Cervantes es muestran en la tabla 1. profesor-investigador en la UAM-IzLa realización del diagnóstitapalapa. Ha realizado investigación en temas relacionados con arquitecco permite elaborar un plan detura de software desde el aùo 2000 y en aùos recientes se ha enfocado tallado del proyecto de mejora y, en el estudio y la aplicación de con base en este plan, se debe obmÊtodos que apoyen al desarrollo de arquitectura de software dentro tener aprobación y respaldo de la de la industria Mexicana. Estå certificado como ATAM Evaluator y gerencia respecto a su ejecución. Software Architecture Professional por parte del SEI. Ésta aprobación es el punto de www.humbertocervantes.net revisión que permite continuar con el proyecto de mejora.

Esta etapa se enfoca en la definiciĂłn de propuestas de mejora relativa a los procesos de la organizaciĂłn. En relaciĂłn con la arquitectura, se enfoca en establecer mĂŠtodos relacionados con el desarrollo de arquitectura de software especĂ­ficos que estĂŠn alineados al contexto organizacional y partan del diagnĂłstico establecido. Esta etapa es compleja, pues no basta simplemente con retomar mĂŠtodos como los propuestos por el Software Engineering Institute (SEI) y adoptarlos “tal cualâ€?. Un ejemplo de ello es el mĂŠtodo de evaluaciĂłn de arquitectura ATAM, que difĂ­cilmente puede es implantado en una organizaciĂłn relativamente pequeĂąa. La adecuaciĂłn de mĂŠtodos de arquitectura de software debe considerar diversos aspectos que incluyen: t &M UJQP EF QSPZFDUPT RVF TF EFTBSSPMMBO EFOUSP EF MB PSHBOJ[BDJĂ˜O t -B NFUPEPMPHĂ“B EF EFTBSSPMMP RVF TF VTB FO MB PSHBOJ[BDJĂ˜O t &M OJWFM EF NBEVSF[ EF MB PSHBOJ[BDJĂ˜O FO DVFTUJPOFT EF JOHFnierĂ­a de software t -PT SFDVSTPT DPO MPT RVF DVFOUB MB PSHBOJ[BDJĂ˜O 38


.PRÁCTICAS

ARQUITECTURA

“UN

PROYECTO DE MEJORA COMO ÉSTE ES NECESARIO SI SE DESEA QUE LA ORGANIZA CIÓN MADURE RESPECTO A SUS PRÁCTICAS DE DESARROLLO DE ARQUITECTURA .”

Antes de permear una mejora a nivel organizacional, es conveniente realizar pruebas para 1) ver si las propuestas funcionan realmente en el contexto de un proyecto real y 2) corregir la propuesta en base a los resultados de la ejecución. Esta etapa presenta varias dificultades, entre las cuales se encuentran el encontrar un proyecto real en donde se pueda probar algo que puede resultar totalmente nuevo, lo cual puede implicar ciertos riesgos. Otro aspecto relacionado con ésta problemática es que el proyecto de mejora se puede ver detenido pues se está esperando un proyecto para la realización del piloto. Una dificultad adicional es que la realización de un piloto requiere de un seguimiento cercano (o coaching) de los participantes en el proyecto y, principalmente, del arquitecto del equipo. Durante el piloto, el coach debe ser cuidadoso en cuanto a su nivel de involucramiento dentro del proyecto pues lo que se desea es que sea el arquitecto del equipo quien ejecute los métodos de arquitectura y no el coach. Antes de iniciar el piloto se debe considerar la manera en que se realizará la evaluación del mismo. Esto es importante pues al final de esta fase debe haber un nuevo punto de revisión cuyo propósito es decidir si proseguir o no con la implantación de la mejora en base a la experiencia obtenida.

Implantación

En la etapa de implantación, las mejoras que fueron probadas durante el piloto y que han sido corregidas en base a los resultados del mismo, son permeadas a toda la organización. Esta etapa puede ser bastante compleja pues involucra entre otras cosas: t .PEJmDBS MPT QSPDFTPT PSHBOJ[BDJPOBMFT t %FTBSSPMMBS Z FKFDVUBS DBQBDJUBDJPOFT t 1SPQPSDJPOBS TPQPSUF B RVJFOFT IBDFO VTP EF MB NFKPSB La implantación de la mejora es una fase que puede tomar un tiempo considerable. La capacitación de la gente se tiene que hacer de forma gradual conforme la gente vaya arrancando nuevos proyectos en donde se pretenda utilizar la mejora, que en este caso son los métodos de desarrollo de arquitectura de software. Respecto a la arquitectura, es conveniente que dentro de la organización haya un “champion” que esté velando de forma continua que se usen los métodos de desarrollo de arquitectura de software de manera adecuada y que tenga la disposición de resolver dudas. La evaluación de la implantación, que es el punto de revisión

t %FGFDUPT SFMBDJPOBEPT DPO BSRVJUFDUVSB EF TPGUXBSF BOUFT y después de la introducción de los métodos de desarrollo de arquitectura (se esperaría ver un decremento de éste tipo de defectos). t $BNCJPT FO UJFNQPT EF QSVFCBT TF FTQFSBSÓB WFS VOB SFEVDción de tiempo pues se realizan más actividades de diseño). Cabe señalar que para poder medir estos efectos, se requiere que la organización en donde se va a implantar la mejora tenga datos históricos que puedan usarse como punto de referencia.

Seguimiento

El seguimiento se enfoca en mejorar continuamente el cambio que ha sido implantado exitosamente con el fin de corregirlo y adaptarlo a la evolución que existe en la organización. En ésta etapa, el “champion” sigue jugando un papel importante pues debe velar que la mejora no se diluya y que las actividades de desarrollo de arquitectura no comiencen a ser realizadas de forma mecánica como desafortunadamente sucede de forma frecuente con los procesos de desarrollo de software.

En conclusión

La introducción de cambios dentro de una organización, tales como métodos para desarrollar arquitectura de software, es una tarea compleja y particularmente si la organización en donde se pretende realizar este cambio es de tamaño considerable. Un proyecto de mejora como éste es, sin embargo, necesario si se desea que la organización madure respecto a sus prácticas de desarrollo de arquitectura. En organizaciones pequeñas la tarea puede resultar más simple, sin embargo, el reto ahí es lograr adaptar los métodos para trabajar en ambientes ‘reducidos’. Un aspecto importante para lograr la implantación de la mejora es tener apoyo de la gerencia.

Referencias: [1] Chrissis, M. B., Konrad, M. y Shrum, S. “CMMi for Development: Guidelines for Process Integration and Product Improvement”, Addison-Wesley Professional, 3d Edition, 2011

39

Software Guru

Piloto

al final de la fase, se enfoca en medir los efectos de la implantación de una mejora y, en este caso, de los métodos de arquitectura de software. Evaluar éstos efectos no es una tarea simple, sin embargo, algunas métricas que pueden ser interesantes para este efecto son:

www.sg.com.mx |

Al final de ésta etapa se debe contar con una versión preliminar de métodos de desarrollo de arquitectura de software y, posiblemente, algunos artefactos asociados como pueden ser materiales de capacitación.


.PRĂ CTICAS Ă GIL

Aplicando ››Por Manuel Mazån

Kanban

PARA RECUPERAR UN PROYECTO CAĂ“TICO

L

as prĂĄcticas del mĂŠtodo Kanban proveen el contexto para que valores como honestidad, comunicaciĂłn, confianza, respeto y coraje emerjan de manera natural y sin resistencia dentro de un equipo de desarrollo de software. En este caso de estudio se describen situaciones clave durante el proceso de adopciĂłn de Kanban en un proyecto de desarrollo de software caĂłtico. Con Kanban el equipo ha aprendido a convivir inmerso en el cambio y en el arte de mantener equipo y cliente satisfecho bajo estas circunstancias.

La situaciĂłn

El equipo trabajĂł bajo un esquema tĂ­pico en cascada donde las tareas se estimaron y asignaron a recursos de acuerdo a un diagrama de Gantt. SegĂşn el miembro del equipo mĂĄs experimentado, trabajar tarde y los fines de semana era una prĂĄctica aceptable, sobre todo despuĂŠs de llevar a cabo demostraciones de avances de funcionalidad donde por ejemplo una tarea avanzada al 80% (segĂşn el Gantt) podĂ­a bajar al 20% debido a cambios solicitados por el cliente y falta oportuna de retroalimentaciĂłn. La falta de honestidad, confianza y respeto eran evidentes, el equipo no era lo suficientemente honesto para comunicar al cliente el avance real. Para exacerbar la situaciĂłn, el equipo no definiĂł un criterio para considerar terminado cada requerimiento solicitado. Consecuentemente el cliente habĂ­a perdido la confianza en la capacidad del equipo para entregar software, este cĂ­rculo vicioso de deterioro de honestidad y confianza se repitiĂł una y otra vez hasta el punto donde el respeto entre ambas partes se perdiĂł. Fue entonces que me involucrĂŠ en el proyecto y utilizamos tĂŠcnicas de Kanban para recuperarlo.

El ĂĄrbol de alto desempeĂąo

El ĂĄrbol de alto desempeĂąo es una metĂĄfora acuĂąada por Lyssa Adkins [1], que es un buen punto de partida para establecer la visiĂłn de un equipo de alto desempeĂąo. Asumiendo que estĂĄs introduciendo Scrum al equipo, el ĂĄrbol se dibuja desde las raĂ­ces a medida que se van enseĂąando los valores de Scrum. Para este proyecto utilicĂŠ un enfoque distinto acorde con las prĂĄcticas de Kanban y una cultura Kaizen. Establecimos que las siguientes prĂĄcticas de Kanban serĂ­an las raĂ­ces cuya adopciĂłn nos ayudarĂ­an a crear un conjunto de valores inexistentes en el equipo: .BIO Manuel MazĂĄn tiene mĂĄs de 14 aĂąos de experiencia profesional y ha sido Scrum Master, Agile Coach y Kanban coach trabajando en distintos paĂ­ses como PerĂş, EspaĂąa, Irlanda, India y Reino Unido. mmazan@agiland.pe

t 7JTVBMJ[BDJĂ˜O Z USBOTQBSFODJB t .FKPSB DPOUJOVB t &OUSFHBT GSFDVFOUFT t 1SJPSJ[BDJĂ˜O FO CBTF BM WBMPS t -JNJUBS FM USBCBKP B MB DBQBDJEBE del equipo

Si las prĂĄcticas arriba (lo que serĂ­an las raĂ­ces) se ejecutan de forma consistente, gradualmente se harĂĄn mĂĄs fuertes —e inherentes a la cultura— y por lo tanto el ĂĄrbol se fortalece. Las hojas (valores) brotarĂĄn, obtendrĂĄn mĂĄs luz y se volverĂĄn verdes alimentando al ĂĄrbol como un todo. Dependiendo de la situaciĂłn podrĂĄn emerger los valores que necesitamos para lograr el ĂŠxito: t )POFTUJEBE -BT NBMBT OPUJDJBT TPO QSJPSJUBSJBT OBEB TF FTconde al cliente o entre los miembros del equipo t $PNVOJDBDJĂ˜O -B JOGPSNBDJĂ˜O DPSSFDUB FO FM NPNFOUP oportuno con las personas indicadas t $POmBO[B &M DMJFOUF UJFOF RVF DPOmBS FO MB DBQBDJEBE EFM equipo para entregar consistentemente t 3FTQFUP )BDJB MBT DPOUSJCVDJPOFT EF DBEB VOP EF MPT NJFNbros del equipo de acuerdo a su background y habilidades. No hacer perder el tiempo de la gente. t $PSBKF 1BSB BDFQUBS FM DBNCJP Z DBNCJBS DPOUJOVBNFOUF FYperimentar, aprender, fallar y enseĂąar a otros. Tenia claro que despuĂŠs de un tiempo los frutos empezarĂ­an a brotar. Los resultados estarĂ­an directamente relacionados al cambio cultural inspirado por las prĂĄcticas de Kanban y los valores continuamente reforzados en un ciclo positivo. Los frutos buscados eran: predictibilidad, calidad, satisfacciĂłn tanto del equipo como del cliente, auto-organizaciĂłn, crecimiento profesional del equipo y sus miembros. La figura 1 muestra una imagen del ĂĄrbol de desempeĂąo que generamos, y que a partir de su definiciĂłn continuamente referenciamos en las retrospectivas.

Kaikaku

Una vez definida la visiĂłn y teniendo en claro los valores que tenĂ­amos que recuperar se acordĂł con el equipo detener inmediatamente el proceso de desarrollo de software. Dentro de los principios de Lean esto significa “stop the lineâ€?. Acordamos enfocar todos nuestros esfuerzos para crear un backlog del producto con el formato de historias de usuario. Con la priorizaciĂłn de las historias se pudo distinguir los Ă­tems funcionales de alto con los de bajo valor necesarios para lanzar la aplicaciĂłn. Posteriormente definimos polĂ­ticas por cada una de las fases del proceso de desarrollo actual y las hicimos explĂ­citas.

Cultura Kaizen

La auto-organizaciĂłn empezĂł a emerger. Siguiendo nuestro objetivo de recuperar la confianza, organizamos sesiones apenas tuvimos 40


.PRÁCTICAS ÁGIL

Figura 1. Árbol de alto desempeño.

Figura 2. Tablero rudimentario.

Figura 3. Tablero avanzado.

“LOS RESULTADOS ESTARÍAN DIRECTAMENTE

Estimar es desperdicio

Antes de asumir el liderazgo del equipo las estimaciones se basaban en especulaciones acorde con un cronograma que nunca se cumplía, por lo tanto estimar era una pérdida de tiempo. Costó trabajo convencer al cliente de dejar de insistir en fechas de entrega y que la mejor forma de predecir el proyecto era a través de entregas continuas. Se acordaron políticas según la definición de terminado para cada cambio de estado de los requerimientos dentro del flujo de valor en Kanban de acuerdo al ciclo de desarrollo de software existente: análisis, diseño y desarrollo, paquete para QA listo, pruebas en entorno de QA, paquete para preproducción listo y pruebas en entorno de pre-producción.

Evolución de un tablero simple hacia uno avanzado

En cierto punto consideramos que la visibilidad que habíamos logrado no era suficiente por lo que decidimos tener un tablero tipo Scrum externo al kanban para gestionar las tareas de programación de las historias en la fase de desarrollo. Si bien Kanban no sugiere la descomposición de las historias a ese nivel nosotros considera-

mos que este nivel de visibilidad facilitó la auto-organización y el trabajo en equipo. Posteriormente decidimos que este tablero tipo Scrum debía estar embebido dentro del tablero Kanban ante lo cual decidimos incorporarlo evolucionando nuestro tablero hacia un modelo Scrum-Ban (la diferencia es que no evolucionamos a partir de Scrum sino todo lo contrario) pero siempre manteniendo la disciplina de Kanban de limitar el WIP o trabajo en progreso explícitamente a nivel de las historias (más no a nivel de tareas ya que nunca lo consideramos práctico). La figura 3 muestra este tablero.

Conclusiones

Kanban se implementó sin entrenamiento y sin disrupción en el trabajo desde el primer día, tampoco se cambiaron los roles. Luego de 8 meses, como resultado de un cambio cultural profundo el CEO de la compañía finalmente había logrado el nivel de agilidad de negocio que jamás pensó en tener desde que se inició el desarrollo de la primera versión del proyecto (un CRM). Hoy en día el equipo es auto-organizado y autónomo. El método Kanban ha generado una evolución hasta el punto de parecernos a un equipo Scrum, digamos que evolutivamente hemos ido orientándonos hacia un Scrum sin sprints pero de manera muy sutil, en pasos muy pequeños, logrando con cada paso el consenso colectivo y la comprensión del equipo de los principios detrás de las prácticas, la medición continua de datos cuantitivos pero sin descuidar el aspecto cualitativo y humano en el trayecto. El viaje ha sido una experiencia de aprendizaje para el equipo y el coach, sin estresar al equipo al pretender que trabajen por encima de su capacidad. Hemos construido un equipo efectivo que hoy trabaja con un proceso también efectivo y que sigue evolucionando en un entorno donde el cambio ya no asusta ni al cliente ni al equipo de trabajo.

Referencias: [1] L. Adkins. Coaching Agile Teams. Addison-Wesley Professional, 2010.

41

www.sg.com.mx |

algo que mostrar. Para minimizar el costo de coordinación acumulábamos tres historias completas antes de convocar al cliente para llevar a cabo una demo. Éste fue el punto de partida para construir honestidad y confianza. El equipo empezó a ser lo suficientemente honesto en cuanto a lo que podía entregar de acuerdo a un ritmo de trabajo sostenible. Frecuentemente se invitó al cliente a inspeccionar nuestro tablero de kanban para mantener las conversaciones dentro del contexto. La comunicación entre los miembros del equipo y el cliente comenzaron a mejorar, los primeros signos de coraje comenzaron a emerger, el equipo tenia ya el coraje para pedirle retroalimentación al cliente para clarificar el criterio de aceptación, sabían que las prácticas de Kanban (priorización en base a valor) los protegerían de cambios fuera del ámbito del criterio de aceptación acordado en las historias. La figura 2 muestra los primeras tableros kanban rudimentarios que usamos.

Software Guru

RELACIONADOS AL CAMBIO CULTURAL INSPIRADO POR KANBAN”.


.COLUMNA CÓDIGO INNOVARE

Analfabetismo Digital…

Ė .+ (!) ƫ !ƫ/!#1.% ƫ5ƫ/ (1 ƫ,Ò (% ĕ

LA EDUCACIÓN DIGITAL NO SON NUEVOS MODELOS EDUCATIVOS SOLAMENTE

L

a gran penetración que han tenido en años recientes las TIC en las actividades del día a día de millones de personas, sean o no especialistas en tecnologías, ha significado el nacimiento de muchos modelos de negocio de distintos tipos, incluidos las redes sociales y dispositivos inteligentes de telecomunicación, lo cual por supuesto siempre es bueno cuando significa educación, progreso y desarrollo de una comunidad. Tradicionalmente el término “Educación Digital” se ha asociado a nuevos modelos educativos utilizando las ventajas que las tecnologías ofrecen, ampliando el esquema de educación de la escuela a prácticamente cualquier lugar donde se tenga acceso a la www, enfatizando con este enfoque que las tecnologías de comunicación son solo un medio muy eficaz para lograr el desarrollo de habilidades y competencias profesionales, lo cual por supuesto es cierto en el estricto sentido de un modelo educativo. Pero el alcance de estos modelos no debe centrarse exclusivamente en los contenidos y los fines académicos puros de las ciencias que tratan, deben considerarse además los aspectos del uso adecuado de la tecnología desde tres condiciones necesarias:

LSCA.Victor Jesús Hernández Salinas es egresado de la Universidad del Valle de México de la Carrera de Licenciatura en Sistemas de Computación Administrativa cuenta con una Certificación en Foundations ITIL .Desde 2003 colabora en el equipo de Desarrollo y Generación de Modelos Tecnológicos elaborando Servicios alrededor de los mismos. Creador y Coordinador del área de Servicios de Producto y su normatividad en INFOTEC. Impartió Conferencia “Web Semántica, La nueva generación de Portales y Aplicaciones” en SG09. Participó en la Mesa Redonda “Software Libre como Herramienta de Transformación Económica y Social” jesush@ infotec.com.mx

1. La correcta operación técnica de las herramientas tecnológicas. 2. La adecuada utilización funcional de esas herramientas. 3. La consciente y plena responsabilidad del uso y operación de esas herramientas junto con sus consecuencias. En el primer punto podemos enfatizar que los esfuerzos por preparar docentes y profesionales en aspectos técnicos a través de programas formativos han sido intensos por diversas instituciones y han generado una gran cantidad de cursos y materiales de enseñanza de operación de diversos gadgets tecnológicos y los usuarios de estos, tienen un dominio muy alto de la operación de éstas herramientas. El segundo punto por su parte, “la adecuada utilización funcional” implica a las ideas y la explotación de las funcionalidades, así como los beneficios tangibles de la utilización de una herramienta tecnológica. Tomemos por ejemplo el caso de las redes sociales: todos los días encontramos nuevos instrumentos tecnológicos que nos permiten hacer más cosas, por lo que se encuentran en constante expansión y en un proceso de transformación bidireccional, pues así como esos desarrollos se ven influenciados por la reacción y aceptación de los usuarios, también a su vez modifican sus patrones de comportamiento debido a la utilización de dichas herramientas. Esto implica por supuesto que la penetración de instrumentos de comunicación en los últimos años ha modificado por consecuencia la dinámica social, educativa, laboral y mercantil propi-

ciando una vertiginosa transformación del pensamiento humano colectivo a un ritmo que no había ocurrido antes. Debido a lo anterior, las acciones de alfabetización digital se hacen evidentes y se preparan cursos que ayudan al entendimiento y operación de esas herramientas tecnológicas, fomentando en los usuarios una necesidad de aprendizaje constante al encontrar satisfacción por dominar una nueva herramienta, competir por demostrar quién la maneja mejor o le saca más provecho, quién tiene la versión más actual o sofisticada, generando incluso una sensación de estatus social que contribuye a una menor (aunque aún imperceptible en muchos ámbitos) resistencia o temor al cambio, al menos en cuanto a tecnología se refiere. Tocando el tercer punto, “la consiente y plena responsabilidad del uso y operación de la tecnología”, veremos que las cosas cambian drásticamente y que en ese sentido aún tenemos mucho que investigar, desarrollar y difundir. La educación en este sentido implicará ir mas allá de sólo adquirir una habilidad, sino a desarrollar un proceso mental natural respecto del adecuado uso de la tecnología considerando consecuencias y responsabilidades, basados en un instintivo análisis de riesgos. A continuación pondremos algunos ejemplos para ver que el alcance social de las consecuencias del uso indiscriminado de las tecnologías sin una responsabilidad adecuada puede ser más perjudicial que no contar con esa tecnología. Si un paciente acude a un laboratorio a realizarse análisis médicos y consulta los términos de sus resultados en Internet y luego va con un Doctor por un tratamiento, seguramente llegará ya influenciado por lo que leyó en la Web y dudará, criticará y cuestionará el diagnóstico del profesionista debido a un problema de desinformación o información mal dirigida. Un problema común por que no se puede consultar todo el resultado completo en la red, sino solo partes del mismo (coincidencia de palabras) y en consecuencia no se tiene el contexto completo del informe del resultado médico, lo que origina información parcial o mal orientada. Un problema que se pretende resolver con la Web Semántica (pero ese es un tema para tratar en otra ocasión). Otro problema común hoy día es el abuelito o el papá que presumen a sus hijos por que manejan mucho mejor que ellos la computadora y dicen orgullosos que son muy hábiles en la operación de esos “aparatos” que ellos apenas entienden. Cuando nosotros fuimos niños, nuestros padres nos podían advertir sobre los peligros que encontraríamos en el parque o en una fiesta y nos prevenían para poder cuidarnos y defendernos de ello. Hoy día los niños y adolescentes “salen a pasear” por la Web y hacen amigos y socializan en diversos ciber espacios, y ese padre o abuelito orgullosos de que su hijo domina la computadora no son capaces de advertir o preparar al niño sobre los 42


Software Guru

www.sg.com.mx |

peligros que enfrentará porque tampoco conocen esos peligros o cómo identificarlos. Resultado: problemas de seguridad de todo tipo que ya conocemos debido el uso o manejo inadecuado de información que liberamos a la red indiscriminadamente sin ser plenamente conscientes de los peligros a los que nos auto exponemos. Aprender a usar una tecnología por tanto implica no solo aprender a manipular la herramienta en sí y saber obtener resultados específicos por la utilización de ella, sino además tener el cuidado de operarlos adecuadamente sin provocar problemas posteriores por un uso irresponsable de los mismos. Un ejemplo simple es el aprender a conducir un automóvil. Girar el volante, pisar pedales, mover palancas y presionar botones, es una operación mecánica relativamente simple que requiere de cierta coordinación física, pero eso no implica que el aprender a manipular los mandos permita asegurar que una persona sabe “manejar”, pues debe además aprender a respetar y seguir un reglamento de tránsito, además de desarrollar reflejos e instintos para reaccionar ante situaciones no previstas en los procesos de enseñanza de conducción de autos, implica además saber las consecuencias de no respetar ese conjunto de condiciones escritas y no escritas que se encuentran alrededor de operar un vehículo de manera segura y eficiente, además de las medidas de seguridad que debe observar para cuidar y proteger su vehículo. Del mismo modo ocurre hoy día con las tecnologías de comunicación en general, llámense redes sociales, sitios de colaboración, smartphones, etc. Todas sin excepción requieren de una enseñanza técnica que permita operar las herramientas adecuadamente, es necesario saber los requerimientos y posibilidades funcionales que pueden solventarse por el uso de esas tecnologías, pero debe sobre todo comenzar a hacer conciencia sobre las responsabilidades inherentes al uso de esas tecnologías. Las universidades, centros de investigación y gobiernos en general debemos comenzar a poner especial interés en desarrollar modelos de educación digital “responsable” o “consciente” de forma que podamos no solo desarrollar modelos tecnológicos sino “Modelos tecnológicos sociales”, que ayuden a minimizar los riesgos de salud y seguridad pública generados por el mal uso que muchos delincuentes hacen de las herramientas tecnológicas de que disponemos hoy día. Tal como diría Paul Gilster en 1997, “La alfabetización digital tiene que ver con el dominio de las ideas no de las teclas”.


.TECNOLOGÍA INFRAESTRUCTURA

Seguridad Pública Eficiente ALMENA CONTEMPORÁNEA ››Por Fabián Fandiño

D

esde tiempos inmemoriales la seguridad ciudadana ha sido la misión primaria de todo gobierno, aún cuando a través de la historia la percepción de la misma ha evolucionado y se ha adecuado a las condiciones socio/culturales de cada época: desde la defensa a agresiones de carácter militar (guerras e invasiones) hasta problemática como fenómenos sociales, desastres naturales o delincuencia. Pero, a pesar de la diferencia en cuanto a objetivos y percepciones, siempre se le ha combatido de la misma manera: a través de tecnología. Nadie puede negar la superioridad tecnológica de los romanos al expandir su imperio, o la importancia de la tecnología en las ciudades medievales para la defensa de ataques forasteros. La segunda guerra mundial fue marcada por la competencia entre Aliados y Potencias del Eje por dominar la tecnología nuclear, culminando con el trágico incidente de Hiroshima y Nagasaki. En México actualmente vivimos momentos críticos en materia de seguridad, y resulta más necesario que nunca implementar sistemas efectivos para contrarrestar la delincuencia, el narcotráfico, los secuestros y un largo etcétera de calamidades. Como siempre, la tecnología puede ser de gran ayuda si la aprovechamos de forma adecuada. Un ejemplo es la tecnología biométrica, que es un conjunto de mecanismos digitales que utilizan rasgos físicos como un medio de autentificación que usualmente se sirven de la imagen facial y las huellas dactilares. El término proviene de las palabras griegas “bios” de vida y “metron” de medida y tiene muchos usos interesantes. Por ejemplo, hay países que han podido capturar los datos de cada uno de sus ciudadanos y esto ha derivado en el caso de la utilización de pasaportes biométricos los cuales contienen una lámina de policarbonato con un circuito electrónico que usa la biometría para autentificar la ciudadanía de los viajeros. Otro sistema biométrico que ha sido utilizado desde la China del siglo XIV es el reconocimiento de huellas dactilares conocido como AFIS (Automated Fingerprint Identification System) orientado a resolver las necesidades de las agencias de Gobierno y las Fuerzas de Seguridad. Actualmente el uso de estas tecnologías se ha extendido para el desarrollo de aplicaciones no criminalísticas, pero ha logrado un gran nivel de precisión y confiabilidad. Existen en el mercado diversos componentes tecnológicos

para seguridad como control de accesos, circuitos cerrados de televisión (CCTV), detección de incendios, control perimetral, monitoreo de alarmas, etcétera. Sin embargo, el gran reto para lograr soluciones efectivas y eficientes está en la integración. En la conjunción de sistemas diversos de seguridad para cada lugar y cada caso se encuentra la verdadera fortaleza: hay que crear sistemas hechos a la medida para cada espacio y situación y administrarlos de manera eficiente para poder librar la batalla contra los problemas que aquejan a la sociedad contemporánea. Un buen ejemplo es la implementación en la Casa Rosada y la Residencia Presidencial de Los Olivos en Buenos Aires, Argentina de una solución integrada que se maneja desde una única consola de control. Las soluciones que están en funcionamiento desde 2008 son el Sistema de Control de Visitas, Sistema de Tiempo y Asistencia y Sistema de Control de Acceso Biométrico. Otro ejemplo es la implementada en el Country Club de San Eliseo donde después de una desagradable situación donde un grupo de delincuentes armados entraron en el club de campo y afectó a varias familias, las autoridades del lugar decidieron invertir en el campo de seguridad implementando 220 metros de cable microfónico, 10 domos IP y una Red de Comunicación Wi Max con 70 MB bandwidth, un control de accesos biométricos para las entradas y salidas e integraron todo a una única consola de control NECSIS Platform. Al crear un sistema unificado para cada espacio determinado estaremos creando una especie de almena: las almenas eran estructuras arquitectónicas medievales cuya función era la defensa pasiva o activa para los habitantes del feudo. Hoy en día, el primer paso para un plan de seguridad pública eficiente es la prevención de incidentes bélicos a través de la mejor tecnología existente, porque como bien lo dijo el filósofo ingles Thomas Hobbes: El fin último de cada gobierno es la seguridad de sus ciudadanos. .BIO Fabián Fandiño es Director de Desarrollo de Negocios de IT para NEC México. NEC Corporation es líder en la integración de tecnologías de la Información y Redes que benefician a las empresas y las personas alrededor del mundo. http://nec.com

44


www.sg.com.mx |

Software Guru


.COLUMNA TECNO-LÓGICO

Creando los Nuevos Buscadores

B

uscar información se ha vuelto una de las tareas más comunes y recurrentes entre los usuarios de las tecnologías de información: búsquedas locales en un disco duro para encontrar documentos, correos o información, búsquedas en una base de datos empresarial para construir reportes y hacer análisis de información hasta las búsquedas en Internet para localizar información en una red global con información que cambia constantemente y que está distribuida en cientos de servidores en diferentes lugares físicos. Las soluciones actuales son suficientemente buenas pero en vista de la entrada de nuevos dispositivos en la arena de soluciones tecnológicas como la perspectiva de Cómputo en la Nube, la integración de servicios y el creciente número de media para almacenar la información tenemos que repensar la manera en que interactuamos con la tecnología a nuestro alcance para recuperar información que sea relevante, actualizada y de valor, donde y cuando la necesitemos.

De consultas a listas de links

Mauricio Angulo es programador desde 1989 divulgador, ávido escritor y emprendedor. Actualmente es CEO y fundador de Tesseract Space donde realiza funciones de asesor y consultor de innovación tecnológica, mercadotecnia digital y experiencia de usuario.

La necesidad de buenas soluciones de búsqueda no es nueva, sobre todo si el propósito principal de las Tecnologías de Información es precisamente ayudar a sus usuarios lidiar con la complejidad de integrar fuentes de datos bastas y complejas en procesos de consulta sencillos. Desde los orígenes del cómputo como disciplina se diseñaron sistemas para ordenar volúmenes bastos de información y es común que los estudiantes de carreras de ciencias computacionales comiencen a programar algoritmos sencillos de ordenación y clasificación: la búsqueda de datos es una de las tareas claves de las personas que trabajan en áreas orientadas a tecnología, de una manera u otra. En 1970 se creó el lenguaje que ahora conocemos como SQL, pensado en sus inicios como un lenguaje diseñado para que personas de negocios con poco o ningún conocimiento técnico pudieran hacer sus propias consultas desde una terminal usando palabras comunes y algo muy cercano a lenguaje natural. Con este requerimiento casi cualquier base de datos creada después soportó una forma u otra del lenguaje SQL, convirtiéndolo en el estándar para consultas a bases

de datos, pero conforme pasaba el tiempo se hizo más complejo y oscuro y sus usuarios se volvían más sofisticados en su uso, eventualmente volviéndolo poco accesible al público general. Eventualmente las soluciones para búsqueda y recuperación de información empezaron a diversificarse en la forma de máquinas de búsqueda, mapas de links, índices y crawlers. Con el advenimiento de la Red éstas se volvieron públicas, alimentadas tanto por algoritmos como por usuarios interesados en mejorar los resultados de los directorios. El Open Directory Project (www.dmoz.org) creado en 1998 intenta ser el más grande directorio de sitios web mantenido y curado por usuarios humanos. La búsqueda alcanzó su punto más alto cuando Larry Page y Sergey Brin desarrollaron en 1997 el motor de búsqueda de Google como una implementación del algoritmo Pagerank que utiliza las relaciones y enlaces entre sitios web como parámetros para jerarquizar los resultados de una consulta para encontrar contenido en la Web de manera eficiente y sin intervención humana. El propio Page definió en su momento a “la máquina de búsqueda perfecta” como algo que “entiende exactamente lo que necesitas y te entrega exactamente lo que quieres”.

Las Nuevas Búsquedas

Si bien Google redefinió el concepto de búsqueda de información en la Web y la hizo universalmente accesible, hoy en día la situación es muy diferente de como era cuando Google fue creado: a finales del siglo XX existían solo unos cuantos miles de sitios web, cuando actualmente existen decenas de cientos de miles de sitios y uno nuevo es creado aproximadamente cada segundo y medio, sin mencionar que la variedad y la vastedad del contenido también han aumentado de manera exponencial. Eric Schmidt, antiguo CEO de Google ha mencionado que “actualmente cada dos días los habitantes del planeta producen tanta información como toda la que produjo la humanidad entera durante los 20,000 años antes del 2003”. En este sentido, un bus46


.COLUMNA

TECNO-LÓGICO

››“ESTAMOS EN EL MEJOR

Tendencias y necesidades

Dada la tendencia actual en el crecimiento de la producción de información y debido a las nuevas posibilidades de cómputo en la Nube, nos dan para almacenar información sin límites, los nuevos buscadores están dejando atrás el modelo “un solo buscador” y cada vez

››Por Mauricio Angulo 47

Software Guru

vemos más buscadores especializados para nichos específicos de información, desde comparadores de precios como Travelocity (www. travelocity.com.mx) hasta recomendaciones para restaurantes como Yelp (www.yelp.com). Un caso especial es el de los sitios y servicios de redes sociales donde el contenido es gestionado y categorizado por sus usuarios pero debido a políticas de privacidad la información que contienen no siempre está disponible a los buscadores genéricos, como pasa con Foursquare (www.foursquare.com/search). Las redes sociales han creado también muchas formas de gestionar la información que se genera en ellas, como Twitstory (www.twitstori. com), creada por Johan Bollen, un investigador de la Universidad de Indiana, que permite analizar en tiempo real lo que sienten los usuarios de Twitter. Otro acercamiento al análisis y procesamiento de información en la Red es el programa Personas (http://personas.media.mit.edu) desarrollado por un grupo de investigadores sociales del Instituto Tecnológico de Massachusetts que utiliza algoritmos de procesamiento de lenguaje natural y la información disponible en la Web para crear un retrato de información de la identidad digital de una persona, es decir, se le muestra a una persona como es percibida por Internet. La cantidad de información disponible en medios digitales crece cada vez más, no sólo por la información nueva que se genera todos los días, sino porque también información que antes sólo estaba disponible en libros o media desconectada ya empieza a ser procesada y publicada. De la misma manera, la información digital empieza a generar nueva información por si misma al extrapolar las relaciones de datos aparentemente inconexos. Así como cada vez habrá mayor información disponible el verdadero valor de la misma no está sólo en los datos sino en cómo extraemos inteligencia de ellos. Estamos en el mejor momento para crear los nuevos buscadores que nos ayuden a dar sentido y dirección a la inteligencia colectiva mundial.

www.sg.com.mx |

cador que entrega millones de resultados deja de ser útil cuando sus usuarios no pasan del resultado número cincuenta. Las listas de links a sitios web es una herencia de los directorios de primeros días de la Web y aunque Google ha logrado separar y diversificar sus servicios de búsqueda cada día es más evidente que la manera en que se gestionan las búsquedas. En los últimos años ha habido acercamientos novedosos al tema de la búsqueda de datos en Internet. Un ejemplo notable es Blekko (www.blekko.com), creado con la idea de agregar un sentido editorial a la información de búsqueda. Blekko utiliza parámetros llamados “slashtags” para diferenciar u organizar los resultados en una búsqueda. En lugar de utilizar los enlaces a un sitio para calificar su relevancia, su algoritmo utiliza el contenido del sitio y el contexto del contenido de búsqueda en el sitio, además de que es posible para sus usuarios calificar los resultados para mejorarlos utilizando la inteligencia colectiva de su comunidad. Un efecto positivo en este acercamiento es la reducción de los sitios con SPAM y hace irrelevantes las técnicas de optimización para máquinas de búsqueda (SEO) para promover sitios cuyo contenido no sea relevante. Otro acercamiento al tema de la búsqueda el que tomó Stephen Wolfram al crear la máquina de respuestas Wolfram Alpha (www.wolframalpha.com) que en lugar de regresar listados de sitios utiliza algoritmos que analizan las solicitudes de búsqueda en lenguaje natural para darles contexto y en base a la pregunta genera una única página de respuesta con información obtenida de múltiples sitios y páginas en la Web. Wolfram Alpha no sólo analiza, almacena y categoriza resultados sino que les aplica inteligencia y procesa la información para generar resultados a partir de la información en la Web. Por ejemplo, la pregunta “¿Cuál es el país en el lugar 52 con el menor PIB por persona?” regresa como respuesta “Nicaragua, con $1160 dólares al año”. Wolfram Alpha cambia el modelo de búsqueda por palabras (keywords) a uno de lenguaje natural y de hecho es utilizado por Siri en iPhone para responder preguntas factuales.

MOMENTO PARA CREAR LOS NUEVOS BUSCADORES QUE NOS AYUDEN A DAR SENTIDO Y DIRECCIÓN A LA INTELIGENCIA COLECTIVA MUNDIAL.”


.COLUMNA PROGRAMAR ES UN ESTILO DE VIDA

Programación

Funcional ENFRENTA A LA CONCURRENCIA

E

Gunnar Wolf es administrador de sistemas para el Instituto de Investigaciones Económicas de la UNAM y desarrollador del proyecto Debian GNU/Linux. http://gwolf.org

l tema eje de el presente número de SG es el manejo de datos a muy gran escala (y disculparán que no use la frase de moda “Big Data”, habiendo otras igual de descriptivas en nuestro idioma). Al hablar de muy gran escala tenemos que entender que pueden ser juegos de datos mucho mayores —por lo menos tres a seis órdenes de magnitud— de lo que acostumbramos analizar. Dar un salto tan grande nos presenta retos en muy diversas esferas. Para ello tenemos que adecuar nuestros procesos de desarrollo, las herramientas que empleamos, el modelo con el cual solicitamos, procesamos y almacenamos la información, e incluso el hardware mismo. Enfocaré este texto al paradigma de programación funcional, el cual permite enfrentar a la concurrencia de una forma más natural y menos traumática de lo que acostumbramos. Una de las razones por las que este tema ha armado tanto alboroto en el campo del desarrollo de software es que, si bien la capacidad de cómputo a nuestro alcance ha crecido de forma francamente bestial en el tiempo que nos ha tocado vivir como profesionales, nuestra formación sigue estando basada en el modelo de programación secuencial, que es muy difícil de escalar. Vamos, el problema no lo tienen las computadoras, sino nosotros los programadores: no sólo tenemos que explicar a la computadora lo que requerimos que haga, sino que además de ello tenemos que cuidar que no se tropiece —cual si fuera un cienpies— con su propia marcha. Siempre que hablemos de muy gran escala debemos hablar de un alto grado de paralelismo en nuestras aplicaciones. Y por muchos años, el paralelismo fue precisamente algo de lo que buena parte de los programadores buscaban escapar, por las complicaciones que conlleva ante una programación imperativa, necesariamente secuencial. A mediados de la década pasada, los fabricantes de hardware cambiaron su estrategia abandonando la carrera de los megahertz y migrando a una estrategia de multiprocesamiento (CPUs múltiples empaquetados como una sola unidad). Con esto, aventaron la papa caliente hacia el lado de los desarrolladores: tendríamos que adecuarnos a una realidad de concurrencia verdadera y ya no simulada.

Por muchos años, vivimos en un mundo de falsa concurrencia: una computadora sólo podía hacer una cosa a la vez, dado que contaba con un sólo procesador. Por la velocidad de su operación y por el empeño que se puso en que los cambios de contexto fueran tan ágiles como fuese posible, nos daba la impresión de que varias cosas ocurrían al mismo tiempo. El gran reto introducido por el paralelismo real es manejar correctamente escenarios mucho más complejos de condiciones de carrera que antes no se presentaban tan fácilmente. Antes del paralelismo, podíamos indicar al sistema operativo que nuestro programa estaba por entrar a una sección crítica, con lo cual éste podía decidir retirar el control a nuestro programa para entregarlo a otro si estaba cercano a finalizar su tiempo o darle una prórroga hasta que saliera de dicha sección. Cuando hay más de un procesador, la situación se complica: el sistema operativo puede mantener en ejecución a uno de los programas para reducir la probabilidad de conflictos, pero se hizo indispensable hacer la colaboración entre procesos algo explícito. Claro, esto no fue un desarrollo repentino ni algo fundamentalmente novedoso. Los mutexes nos han acompañado por muy largos años y la programación multihilos nos ha regalado dolores de cabeza desde hace muchos años. Sin embargo, en sistemas uniprocesador, la incidencia de condiciones de carrera era suficientemente baja como para que muchos las ignoraran. Una de las razones por las que la concurrencia nos provoca esos dolores de cabeza es porque nos hemos acostumbrado a enfrentarnos a ella con las herramientas equivocadas. Un tornillo puede clavarse a martillazos, y no dudo que haya quien use destornilladores para meter clavos, pero seremos mucho más efectivos si usamos la herramienta correcta. Los lenguajes basados en programación funcional resuelven en buena medida los problemas relacionados con la concurrencia y pueden de manera natural desplegarse en un entorno masivamente paralelo. Sin embargo, requieren un cambio más profundo en la manera de pensar que, por ejemplo, la adopción de la programación orientada a objetos. 48


.COLUMNA

PROGRAMAR ES UN ESTILO DE VIDA

››“APRENDIMOS A PROGRA-

fun fib 0 = 0 | fib 1 = 1 | fib n if (n > 1) = spawn fib(n-1) + fib(n-2); | fib _ = raise Domain

A diferencia de una definición imperativa, la función es definida dependiendo de la entrada recibida y la última línea nos muestra el comportamiento en caso de no estar contemplado por ninguna de las condiciones. Y el puro hecho de indicar la palabra «spawn» indica al intérprete que realice este cálculo en un hilo independiente (que podría ser enviado a otro procesador o incluso a otro nodo para su cálculo). Otra de las propiedades de estos lenguajes son las funciones de orden superior (funciones que toman como argumentos a otras funciones). Por ejemplo, en Haskell: squareList = map (^2) list

Al darle una lista de números a la función squareList, nos entrega otra lista, con el cuadrado de cada uno de los elementos de la lista

››Por Gunnar Wolf 49

Software Guru

original. Y esto se puede generalizar a cualquier transformación que se aplicará iterativamente a cada uno de los elementos de la lista. Hay varios tipos de funciones de orden superior, pero en líneas generales, pueden generalizarse al mapeo (repetir la misma función sobre los elementos de una lista, entregando otra lista como resultado) y la reducción (obtener un resultado único por aplicar la función en cuestión a todos los elementos de la lista). Y es, de hecho, basándose en juegos de mapeo/reducción que se ejecutan la mayor parte de las tareas intensivas en datos en Google. Podemos encontrar frecuentemente otros dos patrones en estos lenguajes, aunque por simplicidad no los incluyo en estos ejemplos: por un lado, al no tener efectos secundarios, tenemos la garantía de que toda llamada a una función con los mismos argumentos tendrá los mismos resultados, por lo que un cálculo ya realizado no tiene que recalcularse, y podemos guardar los resultados de las funciones (especialmente en casos altamente recursivos, como éste). En segundo, la evaluación postergada: podemos indicar al intérprete que guarde un apuntador a un resultado, pero que no lo calcule hasta que éste sea requerido para una operación inmediata, por ejemplo para desplegar un resultado, o para asignarlo a un cálculo no postergable. Una de las grandes desventajas que enfrentó la programación funcional es que los lenguajes funcionales puros crecieron dentro de la burbuja académica, resultando imprácticos para su aplicación en la industria del desarrollo. Esto ha cambiado fuertemente. Hoy en día podemos ver lenguajes que gozan de gran popularidad y han adoptado muchas construcciones derivadas de la programación funcional, como Python, Ruby o Perl. Hay lenguajes funcionales que operan sobre las máquinas virtuales de Java (Clojure) y .NET (F#). Por otro lado, lenguajes como Erlang, OCaml y Scheme se mantienen más claramente adheridos a los principios funcionales, pero con bibliotecas estándar y construcciones más completas para el desarrollo de aplicaciones. El manejo de cantidades masivas de datos están llevando a un pico de interés en la programación funcional. No dejen pasar a esta interesante manera de ver al mundo. Puede costar algo de trabajo ajustar nuestra mente para pensar en términos de este paradigma, pero los resultados seguramente valdrán la pena.

www.sg.com.mx |

¿Cuál es la diferencia? Aprendimos a programar de forma imperativa, con el símil de la lista de instrucciones para una receta de cocina. Los lenguajes puramente funcionales son mucho más parecidos a una definición matemática, en que no hay una secuencia clara de resolución, sino que una definición de cómo se ve el problema una vez resuelto y los datos se encargan de ir marcando el camino de ejecución. Los lenguajes puramente funcionales tienen una larga historia (Lisp fue creado en 1958), pero en la industria nunca han tenido la adopción de los lenguajes imperativos. Sin embargo, hay una tendencia en los últimos años de incorporar muchas de sus características en lenguajes mayormente imperativos. La principal característica que hace diferentes a los lenguajes funcionales es que nos hacen pensar en definiciones matemáticas, ya que la llamada a una función no tiene efectos secundarios — ¿Han depurado alguna vez código multihilos para darse cuenta que el problema venía de una variable que no había sido declarada como exclusiva? Con la programación funcional, este problema simplemente no se presentaría. Esto lleva a que podamos definir (en AliceML) el cálculo de la serie de Fibonacci como:

MAR DE FORMA IMPERATIVA, CON EL SÍMIL DE LA LISTA DE INSTRUCCIONES PARA UNA RECETA DE COCINA.”


.PERSONAS CARRERA

CapacitaciĂłn en LĂ­nea

MANTENIÉNDOSE ACTUALIZADO EN UNA INDUSTRIA DE CONOCIMIENTO

››Por Vanessa Amaya

E

l factor mĂĄs importante que mantiene a un profesionista y a una empresa a la vanguardia es la forma en la que se adaptan al cambio. Lo anterior implica sacarle provecho al cambio, brindar mayores beneficios a los clientes, evitar tener procesos obsoletos y generar modelos guĂ­a para realizar decisiones estratĂŠgicas. El pilar del ĂŠxito para lograr adaptarnos a los cambios que tanto la industria del desarrollo de software como las industrias de nuestros clientes nos demandan es: el aprendizaje. Si no aprendemos, no crecemos. Definitivamente la industria del desarrollo de software es una industria de conocimiento y aunque exista el tĂŠrmino “fĂĄbrica de softwareâ€? sabemos que no hay una producciĂłn en serie en un sentido tradicional, sino que es un proceso intelectual, creativo y artesanal a travĂŠs del cual nos involucramos con conceptos tĂŠcnicos, funcionales, de negocio, usabilidad e imagen con los cuales no sĂłlo nos adentramos en un mundo de bits y bytes sino tambiĂŠn en el mundo de negocios de nuestros clientes. En lo personal nunca me ha agradado que se relacione al verbo “fabricarâ€? con el desarrollo de software ya que aunque se pueden implementar prĂĄcticas y procesos similares en los proyectos asĂ­ como tambiĂŠn reutilizar el cĂłdigo, al final serĂĄ un trabajo estratĂŠgico en el cual juegan diferentes variables de las circunstancias que rodean al desarrollo. Vamos mĂĄs allĂĄ de una fabricaciĂłn: Transformamos la informaciĂłn y el conocimiento, creamos procesos automatizados que hacen mĂĄs ĂĄgiles y rentables a las empresas.

ÂżCĂłmo se fortalece nuestra industria?

Cada experiencia, cada proyecto que sucede dentro de la industria de TI, forma parte de la base de conocimiento que nos permite crecer como profesionistas y como organizaciones. Lo anterior le genera relevancia a mantenernos en un esquema de crecimiento continuo que se refleje en un cambio efectivo en el comportamiento, es decir, “aprendemos, luego cambiamosâ€?. Las fronteras del aprendizaje han sido rotas gracias al Internet, el mundo ahora estĂĄ conectado creando, entre otras cosas, un aprendizaje colectivo y es aquĂ­ en donde la capacitaciĂłn en lĂ­nea permite que sea mucho mĂĄs accesible el bien mĂĄs valioso: el conocimiento. Aunque el Internet en general pone a disposiciĂłn una enormidad de conocimiento, en ĂŠste artĂ­culo me enfocarĂŠ en la capacitaciĂłn en lĂ­nea que incluye sesiones sĂ­ncronas con instructores que resuelven dudas en vivo a los participantes en cuyas respuestas se encuentra

el valor de la experiencia y el enriquecimiento que el instructor o instructora comparten con sus alumnos.

La capacitaciĂłn en lĂ­nea como impulsor

La capacitaciĂłn en lĂ­nea es una respuesta a las demandas de la economĂ­a mundial basadas en el conocimiento y la globalizaciĂłn. En el contexto laboral moderno donde ya es comĂşn que los profesionistas trabajen remotamente y sin un horario fijo, la capacitaciĂłn en lĂ­nea brinda una opciĂłn de actualizaciĂłn y aprendizaje a profesionistas que viven en lugares con pocas opciones de capacitaciĂłn, o que requieren horarios no convencionales. La tendencia de la capacitaciĂłn en lĂ­nea no extingue la capacitaciĂłn presencial tradicional, sino que ofrece una opciĂłn para aquellos que prefieren capacitarse en ĂŠste estilo y ÂżquiĂŠn mejor que los profesionistas de TI?

Estatus en nuestra regiĂłn

En latinoamĂŠrica, donde estamos muy acostumbrados al contacto en persona, la capacitaciĂłn en lĂ­nea ha tenido un ritmo de adopciĂłn un poco lento. En SG Campus nos ha tocado picar piedra siendo uno de los primeros servicios en LatinoamĂŠrica para educaciĂłn colaborativa en lĂ­nea. Pero los Ăşltimos aĂąos hemos visto que ha aumentado tanto el interĂŠs como la seriedad con la que las personas y empresas toman a la capacitaciĂłn en lĂ­nea. Algunos factores a los que atribuimos esto son: t "VNFOUP FO MB DPOGJBO[B IBDJB Ă?TUF NĂ?UPEP Por un lado, ha mejorado la confianza y penetraciĂłn de los pagos en lĂ­nea. Por otro, el hecho de tener al instructor en lĂ­nea dando el tema y resolviendo dudas en vivo, genera confianza en los estudiantes. t 3FEVDDJĂ˜O EF HBTUPT EF WJBKF Cada vez es mĂĄs complicado justificar gastos de viaje para poder tomar una capacitaciĂłn. Las empresas y personas ubicadas en ciudades con poca oferta de servicios educativos presenciales, son usuarios frecuentes de capacitacioĹ„ en lĂ­nea. t 5JFNQP Z EJTUBODJBT AĂşn viviendo en la misma ciudad donde se da un curso presencial, el traslado y tiempo invertido en este puede ser un limitante. t 1SPZFDUPT NVMUJDVMUVSBMFT La globalizaciĂłn y la utilizaciĂłn de la tecnologĂ­a ha permitido que haya diversas culturas dentro de un proyecto, esta mezcla de culturas involucra el acercamiento virtual con expertos alrededor del mundo. 50


“SI NO APRENDEMOS, NO CRECEMOS.�

t &DPOPNĂ“B AdemĂĄs del ahorro en gastos de viaje que ya se vio anteriormente, el costo pagado por la capacitaciĂłn en lĂ­nea tiende a ser menor que el de la presencial, ya que no solo es mĂĄs conveniente para los asistentes sino tambiĂŠn para los instructores, ademĂĄs de que se requiere menor infraestructura fĂ­sica.

.BIO Vanessa Amaya (@vanessa_amaya) es Coordinadora Editorial de SG e instructora en SGCampus. Tiene 11 aĂąos de experiencia en la industria de TI como Consultora, Instructora y Conferencista. Cuenta con experiencia cĂłmo LĂ­der de Proyecto, Consultor de Procesos y ha capacitado a mĂĄs de 2000 profesionistas en temas relacionados a la ingenierĂ­a de software y desarrollo profesional. vanessa@sg.com.mx

www.sg.com.mx |

La capacitaciĂłn, en general, busca cubrir el objetivo inmediato del cambio en el comportamiento, mejorar el desempeĂąo y resolver problemas especĂ­ficos, en ĂŠste sentido la capacitaciĂłn en lĂ­nea encara el desarrollo profesional de una forma innovadora y accesible para todos. En mi experiencia como instructora presencial y en lĂ­nea --en SG Campus-- les comparto que ambos tipos de capacitaciĂłn han sido muy gratificantes, pero he encontrado mayor reto en ser instructora en lĂ­nea debido al ĂŠnfasis en el desarrollo del contenido para poder hacer los cursos dinĂĄmicos y prĂĄcticos para los que me escuchan y lograr que no importe la distancia para que me sientan cerca, con la confianza de compartirme dudas y experiencias. Instructores: los invito a unirse al reto. Profesionistas: los invito a incluir en sus objetivos el utilizar ĂŠste mĂŠtodo para continuar enfrentando los retos que nos demanda nuestra industria.

Software Guru

Conclusiones


.FUNDAMENTOS

Clojure INTRODUCCIÓN PRÁCTICA ››Por Andrés Gómez

C

ontinuando con esta serie de lenguajes para la JVM, en esta ocasión les presentamos Clojure. Clojure (pronunciado “cloushur”) es un dialecto del lenguaje de programación Lisp que utiliza el estilo de programación funcional y es muy adecuado para construir sistemas de procesamiento concurrente (multithreaded). Clojure puede ejecutarse tanto en la máquina virtual de Java (JVM) como en el CLR de .Net, e incluso se puede compilar hacia Javascript. En este artículo jugaremos un poco con Clojure para conocerlo.

Al hacer esto, en la terminal nos debe quedar el prompt ‘user=>’. De aquí en adelante, todos los textos en este tutorial que estén precedidos por ‘=>’ se refieren a instrucciones que deben alimentarse en REPL.

Habilitando el ambiente

Ahora vectores:

Lo primero que necesitamos es tener instalado un ambiente de ejecución de Java (JRE). Una vez teniendo esto, la forma más sencilla para habilitar un ambiente de Clojure es utilizando Leiningen, la herramienta preferida para construcción de proyectos Clojure. Leiningen se puede obtener en https://github.com/technomancy/leiningen. En Linux y OSX, su instalación básicamente consiste en descargar el script lein, ponerlo en un directorio de ejecutables (ej: /usr/bin), darle permisos de ejecución y correrlo. Es decir:

Comencemos

Comencemos introduciendo algunos números y viendo si Clojure los puede interpretar. =>3 =>2/3 =>-5

=>[1 2 2.9] =>[1 “hola”] =>[];vector vacío

Como puedes ver, todo lo que viene después de un ; es un comentario. Ahora hagamos unas listas: =>();lista vacía =>(1 2 3);oooops?

sudo wget http://bit.ly/leinscript -O /bin/lein sudo chmod +x /bin/lein

La primera vez que ejecutemos ‘lein’ instalará las dependencias que necesita. Si utilizas Windows, consulta las instrucciones de instalación en la página github de Leiningen. Teniendo instalado el script lein, podemos utilizar REPL, que es una consola para Clojure. Sé que REPL suena un poco raro, pero son las siglas de “read eval print loop”. Para iniciar REPL tecleamos: lein repl

Esa última instrucción debe haber generado una excepción. Antes de explicar la razón de ésta, notemos que es una excepción java.lang, lo cual nos recuerda que en el fondo estamos corriendo Clojure sobre Java. ¿Y por qué salió la excepción? Bueno, recordemos que Clojure es un dialecto de Lisp (LISt Processing) así que su paradigma consiste en evaluar listas, y el primer elemento de una lista debe ser una función y el resto de los elementos son los argumentos para dicha función. Entonces, al recibir (1 2 3) Clojure trata de interpretar 1 como función, lo cual no es correcto.

Funciones

Ejecutemos nuestras primeras funciones: =>(= 1 2) =>(str “hola mun” 2) =>(map str [1 2 3])

Ahora intentemos lo siguiente: =>(def tres 3) =>tres

Estamos definiendo el símbolo ‘tres’ y asignándolo al objeto 3. Bajo la misma lógica, ahora intentemos: =>(def mastres ( fn [x] (+ x tres))) =>(mastres 1997)

Felicidades, hemos creado nuestra primer función en Clojure. El macro ‘defn’ nos provee una sintaxis un poco más sencilla para definir funciones. Podemos volver a definir nuestra función como: =>(defn mastres [x] (+ x tres))

Map y Reduce

Una función bastante útil es ‘map’, la cual aplica una función a todos los elementos de una colección, tal como una lista, vector o mapa. =>(map #(+ 3 %) [1 2 3 4 5])

¿Qué fue eso de #(+ 3 %)? Es una sintaxis más corta para escribir funciones anónimas, equivalente a (fn [x] (+ x 3)). Con esta sintaxis, cuando quieres agregar más de un argumento lo haces de esta forma: #(* %1 %2) Al definir esta función no utilizamos def o defn para ponerle un nombre porque, como ya se comentó, es una función anónima. Las 52


.FUNDAMENTOS

Noten que estamos usando un ‘&’. Cuando usas el & en el vector de parámetros, todos los parámetros que agregues al ejecutar la función los convierte en una lista. Y luego estamos utilizando esa lista a reduce para que itere a través de ella, sumando sus elementos hasta que se reduzca a un solo elemento.

Documentación como función

La documentación de los elementos de Clojure está disponible por medio de la función ‘doc’. Asímismo, puedes consultar el código fuente de cada uno con la función ‘source’. =>(doc doc) =>(doc source) =>(doc reduce)

Estructuras de datos

Clojure se basa en los tipos de datos básicos de Java. Por ejemplo, los números derivan de java.lang.Number y los strings de java.lang.

=>(if (coll? ()) “la lista vacia es una coll” “la lista vacia no es una coll”) =>(str [1 2 3]) =>(apply str [1 2 3]) =>(re-seq #”[^ ]+” “Hola chicas”);expresiones regulares

Una propiedad interesante de Clojure es que cuenta con estructuras de datos “flojas” (lazy). Esto significa que Clojure no va a hacer muchos procesamientos hasta que pides el resultado. Por ejemplo, la función ‘range’ provee una secuencia de números enteros. Si la utilizas con 1 argumento, te regresa la lista de números desde el 0 hasta llegar al número indicado (no inclusivo). Si la utilizas con 2 argumentos, utiliza el primero como valor de inicio y el segundo como final. Pero si no utilizas argumentos, se irá hasta el infinito y no tendrás otra opción mas que matar tu proceso o cerrar tu terminal.

namespace clojure.java.shell. Así que para usarlo ponemos: =>(use ‘clojure.java.shell) =>(sh “ls”)

Ahora sí funcionó. Como se habrán dado cuenta, nos regresa un mapa de llaves y valores. Si queremos sólamente obtener el valor de “out”, hacemos: =>(:out (sh “ls”))

Conclusión

Bien, ya hemos dado los primeros pasos para comprender la esencia de Clojure. Te invito a que conozcas más sobre este interesante y útil lenguaje. La lista de referencias incluyo los principales sitios con documentación y tutoriales de Clojure. Adicionalmente, puedes enviar un mensaje a la línea de dudas en español vía twitter en @clojure_mexico. Para despedirme, los invito a que creen su primer proyecto de Clojure tecleando lo siguiente desde la línea de comando: lein new proyecto

Namespaces

Durante estos ejercicios hemos tenido el prompt ‘user=>’ así que hemos estado todo este tiempo habitando en el namespace ‘user’. Intentémos invocar un comando de shell, por ejemplo “ls” para que nos de el listado de archivos del directorio que estamos. =>(sh “ls”)

Referencias: [1] http://learn-clojure.com

Seguramente recibiste una excepción porque REPL no entendió a qué te refieres con “sh”. La función sh se encuentra en el

[2] http://clojure.org [3] http://clojure.github.com/clojure [4] http://clojure.org/data_structures

.BIO Andrés Gómez coordina la comunidad de @clojure_mexico y es director de tecnología en Fractal Media, en donde se utiliza clojure para crear soluciones inteligentes para marketing digital. @fractalresearch

53

Software Guru

=>(defn mastres ([x] (+ x 3)) ([x y] (+ x y 3)) ([x y & otrosargs] (+ x y 3 (reduce + otrosargs))))

String. Clojure soporta colecciones tales como listas, mapas, vectores y conjuntos. Para mayor detalle, consulta la documentación de Clojure sobre estructuras de datos [4]. Continuemos con algunos ejemplos. Te recomiendo usar doc y source para entender lo que está pasando.

www.sg.com.mx |

funciones anónimas son muy útiles principalmente al trabajar con funciones de alto orden, es decir, con funciones que tienen como algunos de sus argumentos otra función. Tal es el caso de ‘map’, en donde su primer argumento es la función que le vas a aplicar a la colección que metes como segundo argumento. Otra función que utilizaremos mucho es ‘reduce’, la cual nos permite iterar aplicando una función a una lista de elementos. Para ejemplificar esto regresemos a nuestra función ‘mastres’, si quisiéramos que la aridad (es decir, el número de argumentos que la función acepta) de nuestra función fuera infinita haríamos lo siguiente:


.COLUMNA COLUMNA INVITADA

Trabajo

H

Anibal Gonda es Director de Desarrollo de Negocios de GeneXus Internacional. anibal@genexus. com

Colaborativo

oy, la tecnología nos permite y nos obliga a trabajar en forma colaborativa con perfiles de personas cada vez más diversos. Hace pocos años, un equipo de sistemas estaba compuesto por ingenieros que desarrollaban software manejando distintos lenguajes de programación. Con la llegada de las interfaces gráficas, tuvimos que reconocer una rama de la informática a la cual no dábamos mucho crédito: el diseño, y con ello tuvimos que comenzar a convivir con gente que vivía de la estética. Ya no hablábamos entonces de diferentes lenguajes de programación, sino de distintas formas de ver lo mismo. En una pantalla en la cual un ingeniero ve datos, un diseñador ve pixeles. Así, por ejemplo, en un proyecto en el que trabajaba hace unos años, encontramos que unos datos estaban mal y quise validar el error con alguien del equipo de diseño. Pero cuando le dije : “Tadeo mira: esto está mal, ¿no?”, su respuesta fue: “¡Sí! ¡Está dos pixeles corrido a la derecha!”. En ese momento me di cuenta de que veiamos el mundo desde perspectivas totalmente diferentes. A la larga esto es bueno porque nos enriquece, pero al principio no es sencillo lograr esa colaboración. Si a ello le agregamos nuevas tecnologías y la consabida presión del cliente final, la ecuación se complica aún más, especialmente en grandes organizaciones. ¿Pero por qué resulta tan complejo el trabajo colaborativo? Al fin y al cabo, las organizaciones constan de estructuras, que son válidas y básicas para la operación de las mismas, y que simplemente hay que seguirlas para cumplir con los objetivos del negocio. Sin embargo, muchas veces estas estructuras no resultan tan funcionales a la hora de llevar a cabo los proyectos, generando problemas burocráticos. Esto quizás podría llevarnos a pensar que los proyectos deberían llevarse a cabo en forma totalmente anárquica, pero esta tampoco es la forma correcta. Antes que nada, ante el planteamiento de un proyecto debemos tener claro cuál es el objetivo del mismo. Por lo general, el objetivo de cualquier proyecto informático es obtener en forma eficiente un producto de alta calidad, que cumpla con las expectativas del usuario final. Para cumplirlo, se necesita la mayor eficiencia en todo el ciclo de desarrollo, desde la recopilación de información hasta la puesta en producción del sistema. Es así que cada uno de los actores en las distintas fases tiene la misma importancia en la obtención del objetivo. Uno de los factores de fracaso más comunes en los sistemas es que los usuarios finales tienen un bajo índice de adopción de los sistemas nuevos, no porque se nieguen a usarlos o por falta de voluntad, sino porque el sistema no está adecuado a sus necesidades. ¿Cómo puede suceder esto si se ha involucrado al responsable de área desde el principio?

Este es uno de los puntos donde hay que romper con estructuras jerárquicas tradicionales para obtener el mayor conocimiento. Es imprescindible ir a la fuente correcta para obtenerlo, y esta no es otra que el usuario final, el operativo. Por otra parte, cuando el usuario final colabora en el proyecto, podemos lograr que lo sienta como parte de sí y se comprometa con el mismo. Uno de los grandes beneficios de esta forma de trabajo es que se obtiene información de mayor calidad, ya que al ser el usuario parte activa del proyecto aporta valor, esas pequeñas cosas que suelen perderse en las entrevistas porque al parecerle obvias al entrevistado sin querer las omiten y como el entrevistador las desconoce, no pregunta por ellas. Al trabajar en forma conjunta estos detalles, se puede lograr un gran avance en etapas muy tempranas del proyecto, y conseguir que al final del mismo el usuario ya conozca el sistema. Esto le dará seguridad y confianza para utilizarlo, y para darle apoyo a sus pares. Trabajando de esta manera, si bien existen roles definidos, todos se sienten tanto parte del sistema como que aportan a la construcción del mismo, y no sienten que es una decisión de laboratorio que alguien definió un día y que ahora le imponen. Por el lado de desarrollo, los roles son bastante clásicos: un gerente de proyecto cuyas tareas están relacionadas con la planificación, seguimiento y control del proyecto, y quien debe liderar y administrar los recursos, realizar las estrategias para llegar a los objetivos, cumplir cronogramas, administrar los cambios de requerimientos e interactuar con todos los otros miembros del proyecto. Luego tenemos al referente técnico, cargo cuyo perfil es de un desarrollador de muy alto nivel, que debe ser un referente para el equipo, capaz de marcar pautas sobre distintas tecnologías, y las pautas de desarrollo a utilizar, por lo cual debe ser alguien que está muy actualizado. Adicionalmente debe haber un responsable de desarrollo, que es quien liderea al equipo, se encarga de las estimaciones de tiempo de las funcionalidades a desarrollar, organiza el trabajo de los desarrolladores de cada módulo, le brinda apoyo funcional y técnico a los desarrolladores, le hace seguimiento al cronograma y realiza la validación de lo desarrollado. Y finalmente está el desarrollador, quien aplica las pautas de desarrollo en la implementación del sistema, identifica potencialmente nuevas pautas, realiza el testing unitario y el testing integrado, y colabora también con el seguimiento del cronograma. Con un equipo así, aplicando el trabajo colaborativo, se podrá obtener mejores resultados, ya que cada una de sus visiones enriquecerá el producto final.

››Por Anibal Gonda 54


Directorio Alpha Consultoria

07

www.alpha-consultoria.com

Cutter Consortium

43

www.cutter.com.mx

deeplom

45

www.deeplom.com

Gartner

3F

www.gartner.com

HP

4F

www.hp.com/es

IBM

30

www.ibm.com/mx/es/

IDC Conferencias 2012

51

www.idclatin.com/mexico

Infotec

09

www.infotec.com.mx

Microsoft

28

2F

www.sg.com.mx/sgvirtual/2012/

SG Talento

01

talento.sg.com.mx

SG Conference & Expo 2012

32

www.sg.com.mx/sgce/2012

TENEMOS UN ESPACIO RESERVADO PARA TI SG se distribuye de manera impresa en la República Mexicana, y de manera digital llega a más de 25mil lectores de habla hispana. El anuncio en la revista digital cuenta con hiperliga directa a tu sitio web, lo que te dará la oportunidad de acercarte a nuevos clientes. “Es una gran oportunidad participar con Software Guru, pues comprobamos que es un medio efectivo.” -Novalys Latinoamérica Contáctanos en el (55) 5239.5502 o en publicidad@sg.com.mx

www.sg.com.mx |

SG Virtual Conference

Software Guru

www.microsoft.com.mx


.TECNOLOGÍA GADGETS

Sony

WALKMAN Z Sony nos trae el nuevo Walkman serie Z, un reproductor de música portátil basado en Android 2.3 que combina un diseño elegante y la mejor tecnología en audio para disfrutar horas de música, video o entretenimiento. El Walkman Z provee una gran calidad de audio gracias a un amplificador digital S-Master MX que reduce los niveles de ruido y distorsión, además de Clear Bass para reproducir sonidos graves más profundos y sin distorsión, y VTP para producir sonidos con efecto Surround. Cuenta con una pantalla LCD multitáctil antirreflejo de 4.3 pulgadas, e incorpora WiFi para poder acceder a Android Market, navegar por Internet o reproducir música y videos por streaming. Soporta conectividad por Bluetooth 2.1 + EDR, y es compatible con DLNA (Digital Living Network Aliance) así que es posible transferir directamente contenidos del Walkman a otros dispositivos DLNA como televisores, computadoras y altavoces.

OLPC

XO-3 Después de años de espera, parece ser que la tableta XO-3 del proyecto One Laptop per Child finalmente será lanzada este año. Como posiblemente sepas, OLPC es un proyecto para crear computadores portátiles de bajo costo con fines educativos para niños en todo el mundo. Como es de esperarse, el grueso de las especificaciones de hardware de la XO-3 son de bajo perfil, sin embargo donde destaca con gran innovación es en la pantalla y fuentes de energía. La pantalla de 8 pulgadas con 1024x768 pixeles usa la tecnología 3Qi que le permite tener distintas modalidades: LEDs a color, o tinta reflectiva (e-ink) para menor consumo de energía. En cuanto a las fuentes de energía, la XO-3 soporta como aditamento opcional una manivela que se gira para cargar su batería. Adicionalmente, hay dos opciones de estuche: uno normal y otro con celdas solares que recargan la batería. La XO-3 correrá dos opciones de sistema operativo: Android y Sugar (una distribución de Linux enfocada a niños). Al igual que productos anteriores de OLPC, la XO 3 solo podrá ser adquirida por gobiernos de países.

Modular Robotics

CUBELETS

Probablemente ya estés trabajando en construir tu propio robot en base a lo que aprendiste en la última edición de SG. Bueno, pues ahora te presentamos a los cubelets, la forma más sencilla de construir robots. Cada cubo contiene un procesador preprogramado para ejecutar una función, y al unir distintos cubos se configura la funcionalidad del robot. Por ejemplo, si conectas un bloque sensor de temperatura con un bloque emisor de sonido, tendrías una alarma de temperatura. Dependiendo del tipo de tarea que realizan, cada bloque se clasifica en tres grupos: Sensor (ej. luz, temperatura, distancia); Actuador (ej. desplazarse, girar, emitir luz, emitir sonido) o Pensador/Utilería (ej. energía, establecer umbrales de disparo, invertir señal). Los cubelets se conectan entre sí por medio de imanes, así que realmente solo es cuestión de juntarlos y listo. Actualmente, los cubelets solo están disponibles bajo pedido, con un tiempo de entrega de más de 3 meses y un precio relativamente alto (el kit con 6 bloques cuesta 160 dólares y el de 20 bloques 520 dólares). Pero están ganando popularidad así que esperemos que pronto se comiencen a producir en masa y baje su precio. 56


www.sg.com.mx |

Software Guru



Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.