Está en la página 1de 60

WebSockets

Novedades

CONOCIMIENTO EN PRCTICA
Noviembre 2011-Enero 2012 www.sg.com.mx

Mxico, $65.00

CONOCIMIENTO EN PRCTICA

34
.CONTENIDO
Noviembre 2011-Enero 2012 |

www.sg.com.mx

22

Pg.

En Portada
Cmputo Fsico
22
El mundo es una interfaz! Hemos concentrado diversos artculos con informacin sobre algunos de los aspectos que consideramos ms relevantes sobre el cmputo fsico, desde el fenmeno provocado por Arduino y el open hardware, hasta la construccin y programacin de robots.

Columnas
Tejiendo Nuestra Red
Por Hanna Oktaba

06

Mejora Continua
Por Luis Cuellar

08

Tendencias en Software
Por Luis Daniel Soto

11

Columna invitada
Por Mark Settle

32

Cdigo Innovare
Por Jess Arriola Villarreal

46

Tecno-lgico
Por Mauricio Angulo

48

Programar es un Estilo de Vida


Por Gunnar Wolf

50

02

.CONTENIDO

Herramientas y Novedades
Lo que Viene
Social Analytics, Open Compute Project, GitHub Enterprise, Apache Sqoop

10

Tutorial Versionando con Git


Por Javier Novoa

12

Novedades WebSockets
Por Gonzalo Ayuso

16

Pg.

18

Carrera
Capital Humano en Software
Por Pedro Galvn

52

Emprendiendo
Por Vctor Reyes

Generacin de modelos de negocio

18

En Cada Nmero
Editorial 04 05 54 56 Noticias Publirreportaje Gadgets

Especial

Resea del evento SG Conference & Expo 2011

20

Prcticas
Usabilidad 34 La Navegacin y los Esquemas de Organizacin de la Informacin
Por Pamela Rodrguez

Prueba de Software Un Buen Inicio para las Pruebas de Seguridad


Por Berenice Ruz y Miguel Angel Corts

36

Project Management Estimacin de Costos


Por Hctor Cuesta-Arvizu y Jos Sergio Ruz Castilla

38

Arquitectura Lneas de Productos de Software


Por Humberto Cervantes

40

Gestin de Riesgos Administracin Colaborativa de Riesgos


Por Leonardo G. Mrak

42

03

.EDITORIAL Bienvenida

.
Gracias por todo lo compartido durante el 2011 Nos vemos en el 2012 con ms novedades!.

sta es la ltima edicin del 2011! Cumplimos un ao ms de generar conocimiento sobre la industria de T.I. y agradecemos a todos ustedes, nuestros lectores, que nos sigan eligiendo como el medio de preferencia de habla hispana. En sta ocasin les tenemos como parte del tema principal, diversos artculos sobre cmputo fsico en los cuales se demuestra que el mundo no est an conforme con los tipos de interaccin con la tecnologa que existen al da de hoy. El cmputo fsico fomenta nuevos estilos de interaccin en los que casi cualquier artefacto se puede transformar en una interfaz. Es muy importante conocer ste tipo de tendencias, ya que la historia ha comprobado que toda ficcin tarde o temprano se alcanza y en ste caso, seguramente est sucediendo ms temprano que tarde. Tambin queremos compartirles que este ao constatamos, una vez ms, que hemos logrado junto con ustedes formar una verdadera comunidad de especialistas de software, comunidad que durante ste ao comparti momentos en la Conferencia Virtual, los espacios de aprendizaje colaborativo de SGCampus y en el evento SG Conference & Expo 2011.

Alcanzando a la ficcin

Equipo Editorial
SOFTWARE GURU

DIRECTORIO SG
Direccin Editorial Pedro Galvn / Direccin de Operaciones Mara Ruvalcaba Coordinacin Editorial Vanessa Amaya / Arte y Diseo Oscar Smano / Suscripciones Denise Aguilar Consejo Editorial Jorge Valds - PMI / Luis Cullar - Softtek / Luis D. Soto - Microsoft / Hanna Oktaba - UNAM /
Emilio Osorio - Sistemas Humanos / Luis Vinicio Len - e-Quallity / Mauricio Angulo - Tesseract Space

Colaboradores Antonio Toriz, Berenice Ruiz, Gonzalo Ayuso, Gunnar Wolf, Hctor Cuesta, Hugo Fernndez, Humberto Cervantes, Javier Novoa,
Jess Arriola Villareal, Jos Sergio Ruz Castilla, Leonardo G. Mrak, Mark Settle, Mauricio Angulo, Miguel Angel Corts, Miguel Angel Ramrez, Pamela Rodrguez, Vctor Reyes

Ventas Claudia Perea / Alianzas Montserrat Ramrez / Webmaster Karen Rodrguez / Educacin contnua Ana Karen Rosales Contacto info@sg.com.mx
SG Software Guru es una publicacin trimestral editada por Brainworx, S.A. de C.V., Temstocles 34 piso 3, Mxico DF 11560. Los contenidos de esta publicacin son propiedad intelectual de los autores y estn licenciados bajo Creative Commons Atribucin-No comercial 2.5 Mxico. Todos los artculos son responsabilidad de sus propios autores y no necesariamente reflejan el punto de vista de la editorial. Reserva de Derechos al Uso Exclusivo: En trmite. ISSN: 1870-0888. Registro Postal: PP15-5106. Distribuido por Sepomex. Se imprimi en noviembre de 2011 en 4Press.

04

.NOTICIAS

.Adobe Max 2011

Adobe Max, la conferencia anual para usuarios y desarrolladores de Adobe, se realiz en Los Angeles del 2 al 5 de octubre. Entre las notas principales de este evento est el prximo lanzamiento del Adobe Creative Cloud, un espacio colaborativo en la nube donde los profesionistas pueden almacenar y organizar sus activos digitales, y compartir avances con sus clientes para que stos puedan visualizarlos desde la nube. La agenda incluy un buen nmero de sesiones relacionadas con HTML5, lo cual muestra el compromiso e inters que tiene Adobe en esta tecnologa. De hecho, uno de los anuncios realizado durante estos das fue que Adobe compr a Nitobi, creadores de la plataforma PhoneGap para desarrollar aplicaciones mviles con Javascript y HTML. Los videos de los keynotes estn disponibles en http://swgu.ru/adobemax2011

Estudiantes, empresarios, docentes, y pblico interesado en la tecnologa, acudieron el 3 y 4 de noviembre al congreso El Futuro en Tus Manos 2011 organizado por CITI Tabasco en la ciudad de Villahermosa. El evento cont con la participacin de importantes figuras en el mundo de la tecnologa tales como Juliano Tubino (Microsoft), Adelina Filigrana (@wera_supernova), Claudio Cosso (AppCircus), Engel Fonseca (Neurona Digital), Jorge Soto (Citivox), Andrs Barreto (OnSwipe), Juan Lozada (Microsoft) y el investigador Ruy Cervantes, quien coment sobre el ecosistema de emprendimiento en Mxico y su naciente industria de internet.

.El Futuro en Tus Manos 2011

.Alpha Consultora reconocida como Empresa de Capacitacin del Ao por el PMI


El evento Best of the Best in Project Management 2011 fu celebrado el pasado 22 de Octubre durante el Congreso Global del PMI en Grapevine, Texas. Celebramos que lo mejor de lo mejor ahora se qued en Mxico, ya que la empresa Alpha Consultora fue premiada como Proveedor de Capacitacin del Ao 2011, siendo la primera empresa latinoamericana honrada con esta distincin. El objetivo de este premio en especial, es reconocer y honrar al proveedor que hubiera demostrado capacidades excepcionales para la implementacin y presentacin de un programa en direccin de proyectos, en esta ocasin reconociendo los programas de capacitacin de vanguardia en Administracin de Proyectos impartidos por Alpha Consultora.
Software Guru

Dell comparti su visin sobre el impacto de las principales tendencias en la industria de tecnologas de informacin durante la primera edicin de su evento Dell World, realizado en la ciudad de Austin. Entre las personas que presentaron en Dell World estuvieron los CEOs de varias de las empresas ms importantes de la industria como Steve Ballmer (Microsoft), Paul Maritz (VMware), Marc Benioff (salesforce.com), Paul Otellini (Intel). Los temas que dominaron la agenda fueron el cmputo en la nube, cmputo mvil en las empresas y aprovechamiento de redes sociales en las empresas. Los videos de las sesiones estn disponibles en http://swgu.ru/dellworld2011

.Gartner - The Future of IT

Gartner celebr su 14va Conferencia Anual The Future of IT del 4 al 6 de octubre en el Centro Banamex de la Ciudad de Mxico. En dicho evento participaron 12 destacados analistas que platicaron con los asistentes sobre estrategias tecnolgicas para transformar los negocios, con el objetivo de ayudar a los CIOs y altos ejecutivos de la TI a llevar sus negocios hacia nuevos niveles de expansin y rentabilidad. El evento incorpor gran variedad de sesiones, workshops, mesas redondas, casos de estudio, sesiones sobre cuadrantes mgicos, sesiones por solucin de proveedor, foro de demostracin de productos y las ya tradicionales one-on-one con los analistas.
Para mayor informacin, noticias al da y actualizaciones de la industria visita: www.sg.com.mx

05

www.sg.com.mx |

.Dell World

.COLUMNA Tejiendo nuesTra red

Entre Medelln, Rio de Janeiro y Miahuatln

Hanna Oktaba, Ivar Jacobson y Magdalena Dvila

Medelln, Colombia, agosto de 2011

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

n mi columna de mayo-junio de este ao les coment sobre la iniciativa del SEMAT (Software Engineering Method and Theory) promovida por Ivar Jacobson, entre otras personalidades. En agosto tuve la oportunidad de escucharlo en persona en Medelln, Colombia. El Dr. Carlos Mario Zapata de la Universidad Nacional de Colombia logr que Ivar aceptara visitar este pas. Carlos aprovech la oportunidad para convocar a varios colegas acadmicos de Amrica Latina para dos cosas. Lo primero que nos pidi fue que escribiramos un captulo cada quien para un libro que refleje el estado de investigacin en Ingeniera de Software en esta zona geogrfica y lo segundo fue para constituir el captulo Latinoamericano del SEMAT. As, entre el 11 y 12 de agosto de 2011 nos encontramos con Jacobson en

Medelln escuchando un llamado a evolucionar la forma en que desarrollamos software identificando lo esencial de lo que ha servido de los mtodos tradicionales y agregando lo ms til de las propuestas de mtodos giles. Lo que deberamos buscar es: Hacer mejor software til, extensible y confiable Hacerlo ms rpido y ms barato- aplicando reusabilidad a gran escala Hacerlo con equipos ms felices gente competente y motivada Parece tan sencillo y a la vez tan difcil. Ivar estaba acompaado de una mujer joven, de origen chino, Shihong Huang quien nos cont la experiencia de la creacin del primer captulo de apoyo al

06

.COLUMNA Tejiendo nuesTra red

Las reservas de PeTrLeo, Por mayores que sean, un da se acaBan. Las coPas deL
SEMAT constituido en China. Su servidora y Magdalena Dvila, mi alumna de doctorado, presentamos una propuesta de la estructura de prcticas indispensables para desarrollar un proyecto de software (Software Development Project Kernel), la cual qued incluida en el libro Software Engineering Methods, Modeling and Teaching, editado por la Universidad de Medelln. Tambin qued constituido el captulo Latinoamericano del SEMAT (www.sematla.org), coordinado por Carlos Mario Zapata y con Ivar Jacobson como testigo de honor. Durante el evento Ivar mencion que est preparando un nuevo libro, que presentar la propuesta de Casos de Uso 2.0. A principio de octubre ya lo dio a conocer con mayor detalle y probablemente se publicar en forma electrnica en noviembre. A los interesados les sugiero visitar el sitio de Ivar Jacobson International.

mundo y Las oLimPiadas Pasan. eL conocimienTo Permanece.

- BeniTo PareT

de los mtodos giles para integrar las bondades de ambos enfoques. Encontramos un entusiasmo e inters de trabajar de manera conjunta en este tema con los brasileos. La leccin que aprend en este evento resumo citando al Coordinador General de RIOINFO 2011, Benito Paret: Las reservas de petrleo, por mayores que sean, un da se acaban. Las copas del mundo y las olimpiadas pasan. El conocimiento permanece.

_ Minahuatln, Oaxaca, octubre de 2011


Cuando me invitaron a dar una pltica en la 4ta Jornada de Informtica en la Universidad de la Sierra del Sur ubicada cerca de Miahuatln, Oax., yo ni saba que exista una ciudad con este nombre. La encontr a medio camino (psimo por cierto) entre la ciudad de Oaxaca y Huatulco. Cuando me enter de que esta universidad es la hermana de la Universidad Tecnolgica de la Mixteca, saba que me espera un viaje muy aleccionador y muy agradable. Hace aos ya visit a la Mixteca fundada por el rector Modesto Seara Vzquez en un espacio rural y me impresion su organizacin y el nivel acadmico. Uno de mis mejores alumnos de la maestra es egresado de all. El proyecto tuvo tanto xito que hoy el mismo rector dirige y coordina toda una red de universidades pblicas estatales en Oaxaca. En Miahuatln me encontr con un campus muy bonito para 1500 alumnos, con reas verdes bien cuidadas y con un grupo de jvenes profesores de la carrera de Informtica muy entusiastas y muy bien preparados. La Ingeniera de Software no es desconocida ni para los profesores ni para los alumnos y ya estn desarrollando proyectos muy interesantes. El rector me estuvo presumiendo que en los ltimos aos los egresados de estas universidades salen muy bien en las evaluaciones de CENEVAL, pero que normalmente tienen que migrar a grandes ciudades para conseguir trabajo. Generar espacios de trabajo locales para elevar el nivel de aprovechamiento de TI en poblaciones marginadas podra ser una solucin, pero quin va a invertir? Este es un reto para todos y no slo en Oaxaca.

_ Ro de Janeiro, Brasil, septiembre de 2011


RIOINFO es un evento anual en el cual se encuentran los empresarios de la industria de TI con los representantes del gobierno para discutir los temas de inters y buscar caminos para fortalecer la industria brasilea. El evento dura tres das y est ms enfocado a mesas de discusin que a las conferencias tcnicas. En este evento me enter de que la industria brasilea de software y de servicios est formada por cerca de 75 mil empresas, lo que me pareci desorbitante en comparacin con alrededor de 2800 de las mexicanas, mencionadas en agosto en la reunin de la constitucin del Consejo Nacional de Clusters de Software y TICs. Los brasileos estiman que en sus empresas trabajan alrededor de 600 mil personas, que sumados a las 370 mil involucradas en empresas usuarias forman casi un milln. Dos eventos de RIOINFO me llamaron mucho la atencin. Los empresarios invitaron en dos sesiones separadas a los representantes de PETROBRAS (la homloga de PEMEX) y del Ejrcito y la Armada para convencerlos de que estas instituciones pblicas deberan de comprar el software y sus servicios a las empresas brasileas. El Secretario de Ciencia y Tecnologa (ellos si lo tienen en ese rango) habl de convertir los resultados de estas discusiones en polticas pblicas. Y en Mxico cando? Con Claude Laport, editor del ISO/IEC 29110, nos toc promover el nuevo estndar internacional en este foro. Tuvimos oportunidad de discutir la necesidad de combinar el Perfil Bsico con las prcticas
07

Por Hanna Oktaba

www.sg.com.mx |

Software Guru

.COLUMNA mejora conTinua

La

Estrategia de Mejora de Software


de confianza lo cual normalmente surge a travs del tiempo. Las compaas que son ms exitosas con el manejo de proveedores generan una estrategia de socios con sus proveedores, se genera una seleccin de proveedores enfocada principalmente en las habilidades, conocimiento, valores y cultura de las organizaciones para elegir un grupo limitado que puede participar en mis licitaciones, generalmente llamados proveedores preferentes. Es cierto que esto implica que muchas compaas que pueden ayudar a problemas particulares se quedan fuera, pero la idea es que la seleccin est diseada para asegurar que a largo plazo el desempeo y afinidad ayude a tener proyectos exitosos.

e encuentro leyendo un libro en el que se define a la estrategia como: El arte de encontrar formas de cooperar aun cuando las diferentes partes estn motivadas por intereses personales. La industria de subcontratistas de servicios de sistemas est basada precisamente en esta idea, lograr una cooperacin entre diferentes compaas, a veces hasta competidoras, para lograr un fin en comn que beneficie a todas las partes. Por lo que veamos si podemos aplicar la teora de juegos a nuestros problemas.

Uno de los ejercicios ms comunes en teora de juegos es el dilema del prisionero, el ejemplo clsico de este problema es el siguiente: dos hombres son arrestados por la polica, pero esta no cuenta con informacin suficiente para una condena. Tras la separacin de los dos hombres, la polica ofrece un trato a ambos, si uno declara en contra de su pareja y el otro permanece en silencio, el traidor queda libre y el otro hombre recibe una condena de cinco aos de prisin. Si ambos permanecen en silencio, ambos son condenados a seis meses de carcel por un cargo menor y si ambos se traicionan mutuamente, cada uno recibe una sentencia de un ao de prisin. Cada prisionero debe elegir entre traicionar o permanecer en silencio, qu deben hacer? Lo importante en este juego es que ambos estn separados y no saben lo que el otro har y aunque lo mejor para ambos es no decir nada, la pregunta es si confas en tu compaero lo suficiente como para no hacerlo. Este problema ilustra cmo en ocasiones estamos en circunstancias que motivan a apoyar una decisin contraproducente. Qu haran ustedes? Ahora veamos este juego desde otro punto de vista: Yo estoy contratando a un proveedor para que desarrolle una aplicacin critica para mi organizacin, de la cual depende mi futuro en la misma. S que tengo que trabajar en conjunto con mi proveedor para lograr el xito del proyecto, pero por otro lado quiero asegurarme de que el proveedor est tan comprometido como yo, por lo que coloco en el contrato una penalizacin alta en caso de que los niveles de servicio no se cumplan. De esta manera, al menos si el proyecto fracasa recuperamos parte de la inversin. El proveedor sabe que en ocasiones los niveles de servicio no se cumplen por razones ajenas a l, como: cambios de alcance, problemas con los entregables de entrada, falta de definicin por parte del usuario, etc. El contrato no previene nada de esto y aunque lo hiciera no es posible pensar en todos las posibles fallas, por lo que se infla la propuesta y se busca hacer los objetivos ms holgados. El resultado: El proyecto est inflado y estamos ms preocupados en cmo defendernos de nuestra contraparte que en sacar el proyecto exitosamente. El dilema del prisionero es un problema de confianza, en donde la duda realmente es si confo en que la otra parte har lo correcto Luis R. Cuellar es director de calidad o no. En teora de juegos, existen varias formas de resolver a nivel mundial de Softtek. Es recoel dilema del prisionero, estos son algunos ejemplos que he nocido por la ASQ como Certified experimentado con organizaciones exitosas.
Quality Manager, Certified Software Engineer y Six Sigma Black Belt. @lcuellar

El dilema del prisionero

Aprendizaje y crecimiento mutuo

En compaas excelentes se desecha la nocin de que el cliente lo sabe todo y se busca un modelo de cooperacin en donde tanto cliente como proveedor estn aprendiendo a hacer un mejor trabajo. La principal herramienta de aprendizaje en estos proyectos son las mtricas, por lo que son de suma importancia. Estas mtricas son primero utilizadas para controlar el proyecto y despus para mejorar continuamente el trabajo del equipo logrando no solamente un proyecto exitoso, sino en muchas ocasiones mejor de lo esperado. Muchos de los clientes que conozco, s generan penalidades en los proyectos, pero estos no estn ligadas a mtricas u objetivos especficos sino ms bien a la falta de accin y proactividad para corregir problemas. Por ejemplo, la primera vez que no se alcanza un objetivo se espera un plan de accin. Si la siguiente ocasin no se ha corregido, cliente y proveedor buscan soluciones en conjunto. Si las mtricas no mejoran entonces si surge una penalizacin. De forma similar, si las mtricas se cumplen arriba de lo esperado varios meses continuos se puede manejar un bono al proyecto. Lo importante es que una penalizacin es un ltimo recurso para asegurar que estamos en el mismo canal. El dilema del prisionero es muy difcil de resolver pero estudios indican que las personas tienden a escoger cooperar especialmente en relaciones a largo plazo. La industria de software est en constante crecimiento y definitivamente en la era de la informacin necesitamos cada vez ms de sistemas rpidos y de mejor calidad, por lo que la cooperacin es indispensable para todos. Hagamos de la industria del software algo de que sentirnos orgullosos en nuestro pas, y no una batalla campal. Primera llamada, primera.

Generar una relacin a largo plazo

Todas las soluciones del problema del prisionero tienden a ser a largo plazo. Lo que se busca es generar una relacin

Por Luis Cuellar

08

.HERRAMIENTAS Y TECNOLOGAS Lo que viene

Social Analytics

Anlisis de datos sociales

Microsoft est experimentando un nuevo servicio llamado Social Analytics que facilitar integrar en aplicaciones de negocio la capacidad de analizar corrientes de datos (data streams) de sitios sociales como Twitter, Facebook, YouTube, y obtener inteligencia. Esto permite que las empresas puedan obtener y analizar inmediatamente la respuesta de los clientes hacia las decisiones de negocio que se toman. Microsoft provee dos mecanismos para consumir servicios de Social Analytics. El primero es por medio de una herramienta llamada Engagement Client, y el segundo es directamente accediendo su API basado en REST y OData. http://www.microsoft.com/en-us/sqlazurelabs/labs/socialanalytics.aspx

OCP es una iniciativa creada por Facebook para compartir abiertamente diseos de data centers, con el objetivo de mejorar la estandarizacin y eficiencia en la industria. Facebook ha abierto como parte de OCP los detalles de diseo y construccin de su nuevo data center, para el cual construyeron sus propios servidores, racks y fuentes de poder, logrando superar en 38% la eficiencia de su data center previo, a un costo de construccin 24% menor. Recientemente se form una fundacin que manejar OCP, y en ella estn involucradas empresas como ASUS, Dell, Huawei, Red Hat, Cloudera, Rackspace y Netflix, por nombrar a algunas. http://opencompute.org

Open Compute Project

Data centers abiertos

GitHub Enterprise
Hospeda GitHub en tus servidores

Como muchos de ustedes saben, GitHub es un servicio en internet para hospedar proyectos de software que utilizan el sistema de control de versiones Git, rpidamente GitHub se ha convertido en el mecanismo default entre desarrolladores para compartir cdigo. GitHub recientemente anunci la disponibilidad de GitHub Enterprise, el cual permite que organizaciones hospeden instancias de GitHub en sus propios servidores. De esta forma, las empresas pueden fcilmente establecer repositorios de cdigo fuente versionado para sus proyectos y empleados, manteniendo todo dentro de su firewall. http://enterprise.github.com

Apache Sqoop es una herramienta para transferir datos de forma eficiente y confiable entre clusters basados en Apache Hadoop, y fuentes de datos estructuradas tales como bases de datos relacionales, data warehouses empresariales y almacenes NoSQL. Con Scoop, puedes importar datos hacia el Hadoop Distributed File System (HDFS) o hacia sistemas relacionados como Hive y HBase. De forma similar, con Sqoop puedes extraer datos de Hadoop y exportarlos a bases de datos estructuradas. Sqoop hace todo esto de forma sencilla y eficiente, ya que a partir de los metadatos puede inferir su estructura y guardarla en un metaalmacenamiento Hive, y utilizar MapReduce para transferir los datos en paralelo. http://incubator.apache.org/sqoop
10

Apache Sqoop

Mejora tu transferencia de datos a Hadoop

Tendencias en sofTware

.COLUMNA

Datos como Plataforma


l costo de la captura manual de un petabyte de informacin en la dcada pasada rebasaba, dependiendo de la precisin, varios millones de dlares. Gracias a los avances tecnolgicos, hoy el gran volumen de informacin nace de forma digital. Al ritmo actual de compresin y depuracin automtica de datos, el costo de almacenar un petabyte al final de la dcada ser menor a cinco dlares estadounidenses. El valor de la informacin ser mayor que el costo de almacenarlo. Las implicaciones son enormes. Todos debemos estar entusiasmados con las nuevas oportunidades que se abren: Mashup de datos. La capacidad de mejorar el diagnstico mdico ANTES de llegar a la sala de urgencias se est volviendo una realidad en los pases desarrollados y no me refiero a temas altamente relacionados con la privacidad como los productos que compramos en el supermercado y hbitos de ejercicio que podran ser extrados de nuestra estela transaccional, o el almacenamiento del registro mdico en la nube. Expongo un ejemplo: Con los sensores de ubicacin de las ambulancias unido a los patrones de trnsito en las ciudades es posible optimizar el movimiento para atender urgencias. Enriquecimiento de informacin. Hasta hoy, la inteligencia de negocios se ha centrado al interior de la organizacin, pero la capacidad de conectar los datos con el resto de los que existen en el mundo abre nuevas puertas a realizar preguntas ms sofisticadas, que antes era imposible contestar. Seguramente veremos el nacimiento de mercados de datos privados como una primer etapa y la creacin de un nuevo ecosistema de datos pblicos enriquecidos. RealtyTrac es un ejemplo real de empresa que revende informacin pblica enriquecida por analistas financieros sobre compra de propiedades. Nuevas posibilidades. Para generar ms utilidades, un analista desea poner a prueba un nuevo modelo con datos histricos de la bolsa de valores. Para que el modelo funcione es necesario analizar pocas de auge y de crisis, digamos 30 aos. Se desea incluir mercados internacionales y por supuesto, tomar la fuente con actualizaciones en tiempo real. Hasta recientemente
11

rumbo a la autntica economa de la informacin

es TaL La canTidad de daTos


que eL aPrendizaje Basado en mquinas ser fundamenTaL.
esto era viable para organizaciones con recursos de cmputo masivos. Con tecnologas como Hadoop para Windows y el conector Hive de Excel, hoy esto es mucho ms accesible. El diluvio de datos se tendr que enfrentar con nuevas herramientas interactivas para explorar cantidades masivas de informacin la visualizacin continuar siendo muy relevante. Las plataformas de datos tendrn que evolucionar para administrar cualquier tipo de datos, gigantes o pequeos, desde cualquier lugar. La informacin deber ser consumida desde cualquier dispositivo porttil y en un contexto que haga sentido al usuario. Los metadatos son fundamentales para habilitar los mercados de datos descritos. Big Data se refiere al procesamiento de informacin no estructurada (video, audio) o semi-estructurada (bitcoras del web). Es tal la cantidad de datos que es impensable que un humano pueda realizar el anlisis, por lo que el aprendizaje basado en mquinas ser fundamental. En el nuevo mundo de datos hay una variedad de nuevas tecnologas. Por ejemplo, hoy en da la respuesta a una bsqueda en sitios de bsqueda como Bing es distinta para cada usuario, las recomendaciones son especficas para el usuario de entre millones de combinaciones. Mediante Bing ser posible extender aplicaciones de negocio, por ejemplo obtener el sentimiento de medios sociales de un producto en una zona geogrfica. IntoNow me parece un interesante ejemplo del nuevo conjunto de tecnologas que hacen posible la magia de mejorar en tiempo real nuestro entendimiento. Sugiero leer http://swgu.ru/sg3408 En los aos por delante, un rea de gran accin ser la de los datos como plataforma y tecnologas asociadas. Aunque la privacidad de datos continuar siendo tema de discusin, eventualmente las empresas explorarn la venta de datos. Emprendamos pues una conversacin al rumbo de la autntica economa de la informacin.

Luis Daniel Soto Maldonado es Director de Technical Product Management para SQL Server en Microsoft Corporation. @luisdans

>> Por Luis Daniel Soto

www.sg.com.mx |

Software Guru

.HERRAMIENTAS Y TECNOLOGAS TuToriaL

Versionando con Git


comprendiendo los comandos bsicos
n este artculo explico los aspectos bsicos para aprender a usar el sistema de control de versiones (VCS) Git. Para explicar mejor el funcionamiento de Git, estaremos usando la lnea de comandos. Mi recomendacin para entender Git es entender los conceptos con los comandos asociados, y despus si as se desea, buscar alguna interfaz diferente ms acorde a los gustos personales.

Por Javier Novoa

El modo Git

Muy al contrario de como se maneja un VCS tradicional (como Subversion), Git maneja los repositorios, y los conceptos mismos de un VCS de una manera particular. Mientras que para Subversion, el control de versiones se hace archivo por archivo, sobre cada directorio que integra un proyecto, para Git el control de versiones se hace sobre los distintos snapshots que se tomen de todo el proyecto. La diferencia radica en que para sistemas como Subversion, cada versin del proyecto incluye la versin de cada uno de los archivos del mismo. Mientras tanto, para Git cada versin del proyecto incluye solamente un manifiesto con las diferencias de cada archivo, es decir de cmo se ve el proyecto en su totalidad en determinado momento. Entendiendo Git as, ser fcil adaptarse a su modo de funcionamiento, e incluso salir de usar un VCS centralizado y comenzar a usar la genial idea que representan los VCS distribuidos.

tener su cdigo fuente para compilarlo y usarlo, o para mirarlo - y admirarlo. Para esto, lo que debemos hacer es clonar el repositorio origen del proyecto para as tenerlo como un repositorio local. Los repositorios git tienen una URL, y con ella se utiliza el comando: git clone [url] para clonar el repositorio remoto a un repositorio local sobre el cual trabajar. Para los ejercicios de este artculo utilizaremos un repositorio que ya he creado, as que para clonarlo hay que ejecutar lo siguiente desde lnea de comandos:
$ git clone git://github.com/jstitch/masterm.git

Esto clonar el repositorio remoto y crear un repositorio local bajo el directorio masterm. De tal forma que ahora podemos entrar a nuestro directorio local y ver los archivos. Si se observa el contenido de los archivos ocultos de este directorio, se podr notar un directorio .git. Si no se ha hecho an, es necesario indicarle a Git los datos que utilizar el sistema para saber qu usuario ser el responsable de los cambios hechos. De otra manera no tendra sentido usar un VCS, sin tener a quin echarle la culpa, perdn digo darle gracias, por los cambios hechos al cdigo. Esto se logra con los siguientes comandos:
$ git config --global user.name Tu nombre $ git config --global user.email tu@dominio.com

Generando un repositorio

El primer paso para utilizar Git es tener un repositorio. El repositorio Git se representa por un directorio especial llamado .git y que reside en el directorio raz del proyecto mismo. Git slo genera un nico directorio para todo el repositorio, en donde almacena toda la informacin del mismo (versiones, historial, etc.). Hay dos maneras de generar un repositorio para trabajar con Git sobre un proyecto: a) Inicializando un directorio como repositorio Git. Suponiendo que se tiene un directorio en el que reside el proyecto a versionar, el comando git init crea el repositorio para el proyecto dado. Esta generacin del repositorio es completamente local a la mquina y el directorio donde reside el proyecto.
$ cd proyecto $ git init

Usando el repositorio local

b) Copiando un repositorio Git. Ahora supongamos que deseamos colaborar en algn proyecto (o simplemente queremos ob12

El funcionamiento bsico de Git consiste en trabajar de forma local lo ms posible: modificando archivos, generando branches, haciendo merges entre branches, agregando los archivos con cambios que se deseen versionar, versionndolos y as sucesivamente. Solamente cuando ya se tiene un conjunto de cdigo y cambios hechos y probados se procede a mandarlos al repositorio origen desde el cul se clon (o a solicitar que se integren los cambios hechos al mismo en caso de no tener los permisos adecuados). En resumen, se utiliza git add para agregar los cambios a los archivos que se desea que Git tome en cuenta para la siguiente versin del cdigo, git status y git diff para observar los cambios puntuales que se realizarn para la siguiente versin y git commit para almacenar dicha versin en el historial del repositorio. Este es el flujo principal que se sigue al trabajar con Git, y hay que destacar que todo se hace de manera local, sin interaccin con repositorios remotos: recurdese que se est trabajando sobre un repositorio local y que precisamente ste es el sentido de los VCS distribuidos.

.HERRAMIENTAS Y TECNOLOGAS TuToriaL

git add. Inicialmente, ningn cambio a ningn archivo sobre el que trabajemos, es considerado por Git para versionar. Es necesario hacer un git add para que Git sepa en particular qu archivos con cambios sern versionados. Esto proporciona un control muy fino del proceso de versionado. En sistemas como SVN si un archivo es considerado para versionar, lo es desde que es agregado al repositorio y hasta siempre. Si deseamos modificar este archivo an cuando esa modificacin no tenga nada que ver con las modificaciones a otros archivos, el proceso de commit se llevar de una sola vez a todos los archivos versionados. En Git sin embargo tenemos la opcin de elegir puntualmente qu archivos con cambios se van a versionar. As, si hacemos una modificacin que sea una correccin de un bug en varios archivos, y a la vez modificamos otros archivos para corregir errores de tipografa en la documentacin, Git nos permite versionar cada una de estas modificaciones por separado, permitiendo identificar ms fcilmente qu archivos cambiaron como parte de qu modificacin, sin confundir con otros archivos relacionados a otras modificaciones. Por ejemplo:
$ touch new_file $ echo >> README.md $ git status

Git utiliza diff para esto mismo, como puede verse en el siguiente ejemplo:
$ echo hola mundo >> new_file $ git diff

El mensaje de resultado nos indica que Git detecta cambios que no han sido marcados para versionarse en el archivo new_file. Si se deseara ver las diferencias que Git detecta tomando en cuenta los cambios en los archivos que ya fueron marcados para versionar, aunque todava no se les haya hecho commit, se utiliza el parmetro --cached. Por ltimo, si lo que se desea es ver todos los cambios, tanto de lo marcado para versionar como lo que no, se le pasa a git diff como parmetro la versin contra la cual se quiere comparar el cdigo actual. El nombre HEAD se refiere a justamente la ltima versin que se tiene almacenada el repositorio.
$ git diff HEAD

$ git commit -m cambios al README y creando new_file

$ git add README new_file $ git status

Branches y Merges

Y ahora s, Git sabe que ambos archivos deben ser versionados. git status. El comando git status, que ya utilizamos, nos permite conocer el estatus con el que Git tiene identificado a los archivos del proyecto. Se puede agregar la opcin -s para que nos entregue una respuesta resumida. En dicho caso, el estatus aparece en dos columnas: la primer columna indica los cambios que har Git en la siguiente versin del cdigo, y la segunda columna indica cambios que Git reconoce como tales pero que no versionar. git diff. Otra operacin muy comn al trabajar con archivos versionados es la de observar y analizar los cambios hechos, as como las diferencias entre la nueva versin y la que se tiene en una versin anterior.
13

Para los provenientes de VCS centralizados como SVN, muy probablemente el nombre Branch ya dibuj en su mente la idea de una pesadilla dantesca. La realidad es que el manejo de branches en versionadores centralizados suele convertirse en una molestia ms que en una herramienta til. Tan es as que muchos proyectos renuncian a su uso y se dedican nicamente a versionar sobre un rbol principal de cdigo, dejando de lado una de las ventajas esenciales que proporciona un versionador. Pero la buena noticia es que en los versionadores distribuidos, y en Git en particular, el manejo de branches es, dicho llanamente, maravilloso. Una manera de entender los branches en Git es verlos como contextos en los que se trabaja una versin especfica del cdigo. Digamos que bajamos el cdigo fuente de un software que utilizamos mucho y detectamos un bug. El modo Git de afrontarlo sera, luego de clonar el repositorio, crear un branch y ah trabajar la correccin del bug.

www.sg.com.mx |

El resultado que obtendremos ser el estatus de git, reconociendo que se modific un archivo existente (README.md) y se agreg uno nuevo (new_file), pero ninguno de los dos est contemplado para incluirse en el prximo commit. Para que sean considerados debemos agregarlos:

Como se puede observar, con el argumento -m indicamos un mensaje descriptivo de esta versin. Este es obligatorio. Si ahora verificamos el estatus con git status, veremos que slo queda un cambio detectado por Git: aquel que hicimos posterior al git add, y por lo tanto no est marcado todava para ser versionado.

Software Guru

git commit. Finalmente, una vez hechos los cambios deseados y agregando a los archivos que se desea sean incluidos en esta versin, se realiza el commit al repositorio (recurdese: es local, no hay necesidad de conexin a la red todava!):

.HERRAMIENTAS Y TECNOLOGAS TuToriaL

Si adems resulta que tenemos una propuesta de mejora al software, lo correcto desde el punto de vista del modo Git de trabajarlo sera crear otro branch a partir del original (o maestro) y ah trabajar los cambios. Finalmente cuando el bug est corregido, se integran (va merge) con el branch maestro. Y cuando nuestros cambios estn hechos y probados tambin, se hace lo mismo desde aquel otro branch al maestro de nuevo. As, al final, se tiene un cdigo limpio, probado y bien versionado, todo gracias al uso de branches. Los comandos principales para el manejo de branches son: git branch para crear branches git checkout para hacer cambio de contextos git merge para unir branches Otra caracterstica notable del manejo de branches de Git es que los branches no se creados como subdirectorios separados como en SVN. Ms bien, el directorio .git contiene toda la informacin (en forma de snapshots o diferencias entre cada archivo y sus branches), y as en un slo directorio de trabajo del proyecto, al cambiar de contexto, todo el cdigo del mismo directorio pasa a ese nuevo estado. Se puede cambiar entre contextos libremente y sin prdida de informacin, y sin el estorbo de un directorio dedicado a cada branch del proyecto. git branch y git checkout. Al crear un nuevo repositorio en Git, por defecto se tiene un nico branch, el inicial o principal del proyecto. Se le llama master por default. El comando git branch lista todos los branches existentes actualmente en un proyecto. En caso de haber varios, uno de ellos ser marcado con un asterisco, para indicar cual es el branch o contexto actual. Para crear un nuevo branch, se utiliza el comando git branch [nombre_del_branch].
$ git branch testing $ git branch

Si hacemos un git status, nos indica que los cambios que no se han marcado para versionar (recuerden que new_file an tiene cambios sin marcar) pasan entre contextos de manera transparente. Si ahora marcamos algn cambio para versionar en uno de los contextos:
$ git add new_file $ git status -s $ git checkout testing $ git status -s

Como se puede observar, aqu tambin los cambios marcados para versionar pasan transparentes entre contextos. Git no puede saber si la marca agregada para versionar es para uno u otro contexto, y slo sabr informacin ms concreta hasta hacer un commit:
$ git commit -m agrego texto a new_file, como prueba

Y ahora s, los cambios hechos a new_file quedan en el branch testing, no en la rama principal. Si vemos el contenido de new_file, veremos que tiene el texto hola mundo que agregamos. Pero si nos regresamos al branch masterm_lang, veremos que new_file aqu no tiene el texto hola mundo. Solamente est en el branch testing, que es donde se hizo el commit de ese cambio.
$ git checkout masterm_lang $ cat new_file

git merge. Supongamos que ahora deseamos que el cambio en testing quede reflejado tambin en masterm_lang. Lo que debe hacerse es un merge, una operacin que la mayora de las veces Git puede hacer por su propia cuenta.
$ git branch $ git merge testing $ cat new_file

Como se puede observar, ya existe un nuevo branch en el proyecto (testing). Este branch est hecho a partir del cdigo en su ltimo estado: tanto los ltimos commits como los archivos con cambios que han y no han sido aadidos para versionar. Y para pasar a ese nuevo contexto y trabajar sobre l, se utiliza git checkout [nombre_ del_branch]:
$ git checkout testing $ git branch

Ahora es testing el contexto actual sobre el que se trabajar en el proyecto. Si hacemos algunos cambios en un archivo, y luego regresamos al contexto original (masterm_lang), como no se le indic a Git que los cambios se iran a versionar en ese contexto, los cambios pasan transparentes entre contextos:
$ echo hola README >> README.md $ git checkout masterm_lang

Pero qu pasara si otro usuario hubiera hecho cambios a new_ file sobre masterm_lang antes que nosotros hubiramos hecho el commit? Entonces Git generara lo que se conoce como un conflicto, que no es otra cosa sino la forma en que Git indica que no sabe como hacer el merge por s solo y necesita de la ayuda externa de los usuarios. Los conflictos no ocurren siempre, incluso aunque muchos usuarios hagan cambios al mismo archivo muchas veces. Bsicamente si los cambios se hacen sobre lneas diferentes del dicho archivo, Git sabr hacer el merge sin problemas. Es cuando se hacen cambios que inmiscuyen lneas iguales en el archivo cuando Git puede verse en problemas... vemoslo con un ejemplo, recordando que an hay un cambio sin versionar en README:
$ git checkout testing $ git add README.md $ git commit -m agrego cambio a README esperando generar conflicto en master

14

.HERRAMIENTAS Y TECNOLOGAS TuToriaL

Hasta aqu versionamos el cambio al branch testing...


$ git checkout masterm_lang $ echo hello README >> README.md $ git add README.md $ git commit -m agrego cambio a README esperando conflicto en merge

do los branches y los posibles merge hechos entre ellos. git tag. Para terminar con este asunto de los branches, vamos a mencionar los tags. Casi cualquier versionador permite manejar este concepto (unos ms fcilmente que otros). La idea detrs de un tag es tener una especie de fotografa fija del proyecto en cierto momento. De esa forma, cuando se quiera tener el cdigo del proyecto justo como se tuvo en el momento de tomar la fotografa, simplemente uno va al tag y lo recupera. Esto es sumamente til cuando, por ejemplo, se tiene el proyecto en un estado listo para liberar a un entorno de produccin, digamos que ya tenemos la versin 1.1.2 y queremos liberarla. Entonces se genera un tag del momento del proyecto deseado, se le etiqueta como versin 1.1.2 y listo. Git tiene la informacin que nosotros podemos usar cuando deseemos, por ejemplo regresamos el cdigo al estado de ese tag y luego empaquetamos o compilamos o lo que fuera necesario...
$ git tag -a v1.1.2 $ git log --oneline --decorate --graph

Ahora regresamos a masterm_lang y ah hicimos un cambio diferente sobre el mismo archivo, en la misma lnea (la ltima) que el cambio que se version en testing. Todo eso antes del merge. Y ahora a ver que pasa:
$ git merge testing $ git status -s $ tail README.md

git log. Un sistema que maneja tan eficientemente tanta informacin como Git no sera nada til si no permitiera tambin mostrar de manera ordenada dicha informacin al usuario, de forma que l pueda saber con exactitud algn pedazo que le sea realmente til. Para eso existe git log. Este comando tiene en realidad muchos usos y muchas formas diferentes de generar y reportar la informacin con que cuenta Git, por lo que veremos solamente algunos ejemplos que podran ser tiles:
$ git log

$ git tag -l

Conclusin

git log muestra en bloques cada uno de los commits que se han hecho dentro del branch actual. Se puede observar que entre la informacin mostrada para cada commit, adems del mensaje, autor y fecha, se da una cadena de identificacin. Este identificador de los commit se puede usar como parmetro a comandos como git diff para comparar el estado actual del proyecto contra alguna versin especfica. git log puede usar algunos parametros opcionales. Con el parmetro --oneline se muestra solamente el identificador corto y la descripcin del mismo, para un resumen breve. Con el parmetro --graph se puede ver incluso de manera visual cmo han evoluciona15

En este tutorial aprendimos los aspectos bsicos para manejar un repositorio git local. El siguiente paso es aprender a interactuar con un repositorio remoto. Por razones de espacio no se ha incluido esa seccin aqu, pero pueden consultarlo en la versin original y completa de este artculo, que est disponible en http://swgu.ru/sg3407
.BIO
Javier Novoa es ingeniero en sistemas con maestra en ciencias de la computacin con preferencia por la administracin de servidores GNU/Linux y el desarrollo en Python/PHP/Java/C++. Radica en la Ciudad de Mxico y es fantico de la literatura fantstica, la astronoma amateur, el ajedrez y la msica rock. jstitch@gmail.com @JaviStitch

www.sg.com.mx |

Software Guru

Qu sucedi? Pues que Git no supo qu hacer y gener un conflicto al hacer el merge. Este conflicto queda marcado para Git (segn el resultado de git status -s, y tambin dentro del mismo archivo README, como puede verse por los marcadores que se agregaron automticamente al archivo en los lugares en donde ocurri el conflicto. Para resolver el conflicto, se necesita la intervencin humana. Normalmente aqu es donde los desarrolladores responsables de los cambios que ocasionaron el conflicto se baten en duelo y se ponen de acuerdo para decidir cmo resolver el conflicto. Al final, uno de los desarrolladores deber editar el archivo con conflicto, dejar el cambio adecuado y retirar las marcas de conflicto (<<<< y >>>>) que coloc Git. Esto lo puede hacer editando manualmente el archivo o con alguna herramienta de resolucin de conflictos, invocando git mergetool.

Como se puede observar, al usar el parmetro --decorate de git log (que muestra ms informacin sobre los branches), tambin se muestra ahora el tag que acabamos de generar para el HEAD del repositorio. Obviamente, tambin se puede dar tag a alguna versin diferente al HEAD, para lo cual al comando git tag simplemente se le agregara el identificador del commit al que deseemos ponerle el tag. Para pasar el cdigo de un tag a otro, se puede usar el mismo comando git checkout, pero en lugar de usar el nombre de un branch como parmetro, se usa el nombre dado al tag (tambin se puede usar el identificador de un commit cualquiera). El parmetro -l nos informa de todos los tags que tenga creados el repositorio:

.HERRAMIENTAS Y TECNOLOGAS novedades

WebSockets
eventos a tiempo real en nuestro navegador

Por Gonzalo Ayuso

HTML5

ha llegado. La quinta revisin de HTML nos trae muchas novedades y los WebSockets es una de ellas, que tendr un gran impacto en la forma en que desarrollamos aplicaciones web. Los WebSockets son dos estndares en uno: el estndar del protocolo de comunicaciones desarrollado por el IETF; y el estndar de la API JavaScript para utilizarlos en nuestras pginas Web. En este artculo vamos a ver qu son y cmo funcionan.

En el navegador. Los navegadores tampoco estn preparados para mantener conexiones abiertas con el servidor durante un tiempo indefinido. En teora funciona, pero en la prctica las conexiones terminan muriendo. En resumen, tenemos un modelo de aplicacin web llamado COMET que en teora nos permite hacer notificaciones a tiempo real en el navegador, pero en la prctica tenemos problemas con los servidores y con los navegadores. Para resolver los problemas en el lado del servidor podemos usar servidores alternativos a los tradicionales. Por ejemplo, un servidor hecho con Node (node.js) puede funcionar muy bien para manejar conexiones de este tipo, gracias a la naturaleza no-bloqueante de Node. Resolviendo el problema del servidor, ahora enfoqumonos en el navegador. Aqu normalmente usamos tcnicas para simular eventos en tiempo real. Lo ms comn es hacer ShortPolling, que bsicamente consiste en preguntar al servidor cada x segundos si ha habido algn evento, para ello se usa un timer con JavaScript (setInterval o setTimeout) o la histrica etiqueta meta http-equiv=refresh. Es como cuando viajamos con nios en coche y nos preguntan cada 5 segundos si falta mucho para llegar. Esta tcnica cumple el propsito, pero no es escalable. Por otro lado tenemos el Long-Polling que consiste en dejar abierta una conexin hasta que haya informacin nueva para enviar al navegador. Tampoco es una solucin ideal porque sobrecargamos los recursos de nuestro servidor, y podemos encontrarnos con timeouts.

Antecedentes

Antes de comenzar, hagamos un poco de historia y remontemos unos aos atrs. Imaginemos que queremos hacer una aplicacin con comunicacin a tiempo real, como por ejemplo un chat. La aplicacin es muy simple. Un cuadro de texto donde el usuario introduce un mensaje, un botn para enviar y un listado con los mensajes del chat. Si nos planteamos hacer esta aplicacin en un cliente pesado, el desarrollo es trivial. Abrimos un puerto y lo ponemos a la escucha para que actualice la lista de mensajes cuando alguien crea un mensaje nuevo. El problema est cuando queremos hacer esta misma aplicacin en el navegador web. Bsicamente, el dilema est en que no podemos abrir un puerto en el navegador y ponerlo a la escucha, tal y como lo haramos con una aplicacin de escritorio. Podemos hacer algo usando tecnologas como Flash o Java Applets, pero no es el escenario ideal y es muy probable que tengamos problemas con firewalls. Si nos centramos en el protocolo HTTP, vemos que podemos mantener abierta la conexin e ir enviado informacin poco a poco usando tecnologa Push, este nuevo modelo de aplicacin Web se denomina COMET. En teora es perfecto, pero en la prctica tiene algunos inconvenientes: En el servidor. Los servidores web tradicionales no estn diseados para este tipo de cosas. Nos encontramos directivas del tipo keep-alive y MaxClients. Los servidores Web, en sus configuraciones por default, interpretan que estas conexiones que mantenemos abiertas mucho tiempo, son scripts que se nos han quedado colgados, y las cierran.
16

WebSockets

Afortunadamente, con la llegada de HTML5 nos llegan los flamantes WebSockets. Bsicamente es la solucin a todos los problemas mencionados con anterioridad. Los nuevos WebSockets nos dan una interface JavaScript para manejar conexiones no bloqueantes con el servidor. El listado 1 muestra un ejemplo de uso de WebSockets en el navegador.

.HERRAMIENTAS Y TECNOLOGAS novedades

var ws = new WebSocket(url); ws.onopen = function() { // When the connection opens }; ws.onmessage = function() { // When the server sends data }; ws.onclose = function() { // When the connection is closed }; ws.send(Hi all); // later... ws.close();
Listado 1. Uso directo de WebSockets en el navegador.

Como podemos ver, el interface es similar al de los WebSocket. Esto viene acompaado de la parte del servidor, que socket.io la implementa por medio de node.js:
var io = require(socket.io).listen(80); io.sockets.on(connection, function (socket) { socket.emit(news, { hello: world }); socket.on(my other event, function (data) { console.log(data); }); });
Listado 3. Implementacin de servidor en Socket IO.

Genial, no? Entonces, del lado del servidor resolvemos nuestros problemas implementando un servidor en Node y del lado del cliente utilizamos WebSockets. Asunto resuelto ... bueno, no en realidad, no cantemos victoria todava. Desgraciadamente, los WebSockets no estn soportados en todos los navegadores. Nuestro gozo en un pozo. Tenemos la tecnologa, pero tenemos que esperar a que todos nuestros usuarios usen navegadores de ltima generacin (incluso que los navegadores incorporen esta nueva especificacin a sus versiones estables).

Socket IO soporta los siguientes modos de transporte: WebSocket Adobe Flash Socket AJAX long polling AJAX multipart streaming Forever Iframe JSONP Polling Esto le permite soportar una amplia lista de navegadores y versiones, que incluye: Internet Explorer 5.5+, Safari 3+, Google Chrome 4+, Firefox 3+, Opera 10.61+, iPhone Safari, Android WebKit. As es, incluso IE 5.5 es soportado, y todo esto usando el mismo interface para el desarrollador.
Software Guru

Socket IO al rescate

Entonces Podemos usar WebSockets hoy? Pues la respuesta es s. Y digo s con rotundidad gracias a una gran libreria llamada Socket IO (socket.io). Socket IO es, por decirlo de alguna manera, el jQuery de los WebSockets. La gracia de esta genial librera es que no necesita un navegador que soporte WebSockets. Si nuestro navegador los soporta, los usar. Si por lo contrario usamos un navegador ms viejo, socket.io emular el comportamiento de los WebSockets usando el mejor modo de transporte soportado por ese navegador, y todo esto de una forma transparente para nosotros. El listado 2 contiene un cdigo en javascript que ejemplifica como podemos usar socket.io en el navegador.
<script src=/socket.io/socket.io.js></script> <script> var socket = io.connect(http://localhost); socket.on(news, function (data) { console.log(data); socket.emit(my other event, { my: data }); }); </script>
Listado 2. Cdigo para cliente con Socket IO.

Por donde empezar

Gracias a Socket IO podemos tener notificaciones a tiempo real de forma sencilla y soportada por prcticamente todos los navegadores. Un sueo imposible hace unos aos, al alcance de nuestra mano a da de hoy. Merece la pena echarle un vistazo.

Referencias
[1] Socket IO. http:/ /socket.io [2] WebSocket. http:/ /websocket.org [3] D. Zavala. Introduccin a Node.js. http:/ /swgu.ru/intro_node

.BIO
Gonzalo Ayuso es Desarrollador y arquitecto web con ms de 10 aos de experiencia, especializado en tecnologas open source. Puedes leerle en su blog http://gonzalo123.wordpress.com y seguirle en @gonzalo123.

17

www.sg.com.mx |

Fotografa cortesa de Santiago Zavala.

Generacin de Modelos de Negocio pilar del emprendimiento


onstantemente le pregunto a mis alumnos de la Maestra de Negocios del ITESO en Guadalajara, a los participantes del Bootcamp en TechBA Silicon Valley y en los Startup Weekends qu es ms importante: un excelente producto o un excelente modelo de negocio? Y normalmente llegamos a la misma conclusin, es ms importante tener un buen modelo de negocio. Tal y como menciona Henry Chesbrough: A mediocre technology pursued with a great Business Model may be more valuable that a great technology exploited via a mediocre Business Model. Del artculo de Reinventing your Business Model de Harvard Business Review [1] destacar dos cifras que dan una idea de la importancia del concepto. 1. 11 de las 27 compaas nacidas en los ltimos 25 aos y que han crecido hasta estar dentro de las Fortune 500 en los ltimos diez aos, lo hicieron a travs de la innovacin en sus modelos de negocio. 2. Una encuesta del 2005 practicada por la Unidad de Inteligencia de The Economist, report que ms del 50% de los ejecutivos creen que la innovacin en el Modelo de Negocio llegar a ser ms importante para el xito que la innovacin en productos y servicios. Con el propsito de generar un entendimiento comn sobre el concepto de Modelo de Negocio les pido hacer una reflexin, pregunten a la gente que tengan alrededor, qu es un Modelo de Negocio? Apuesto a que una gran parte de ustedes obtuvieron la siguiente respuesta es la
18

Por Vctor Reyes

manera en que hacemos dinero. Esta respuesta es parcialmente correcta, ya que la corriente de ingresos es uno de los nueve elementos del modelo, al igual que la frmula de rentabilidad, pero no lo es todo. El Modelo de Negocio es cmo la compaa crea, entrega y captura valor. Alexander Osterwalder es un renombrado consultor en innovacin y modelos de negocio que se dio a la tarea de crear algo que haca mucha falta: un texto metodolgico completo sobre modelos de negocio. Es as que en 2010 en conjunto con Yves Pigneur public el libro Business Model Generation: A Handbook for Visionaries, Game Changers, and Challengers [2]. La metodologa planteada por Osterwalder plantea de forma simple y puntual los elementos bsicos pero suficientes para integrar el negocio. No se necesita un extenso documento con decenas o cientos de pginas que diga cmo se quieren generar los ingresos para la compaa. Debemos ser capaces de mostrar en una sola imagen todos los elementos que le dan viabilidad y sustentabilidad a nuestro negocio.

Los nueve bloques constructores

El modelo se describe a travs de nueve dimensiones o bloques que muestran la lgica de cmo una compaa pretende ganar dinero y la interaccin entre cada uno de los bloques. Dichos bloques se ilustran en la figura 1. Obviamente, la definicin de modelo tendr que ver con la necesaria interconexin o interrelacin entre todos los bloques, los cuales

.EMPRENDIENDO indusTria

El ModElo dE NEgocio Es cMo la coMpaa crEa, ENtrEga y captura valor.

ingresos llegarn a la compaa si esta entiende bien cul es el valor por el cual los clientes realmente estn dispuestos a pagar. Aqu encontramos varias maneras en cmo se pueden generar esos ingresos: por la venta de un producto, cobrar suscripciones, renta, licenciar propiedad intelectual, publicidad, etc. Actividades clave. Este bloque describe las actividades ms importantes que una compaa debe hacer para que su modelo de negocio funcione. Dichas actividades pueden ser divididas en produccin, que tiene que ver con la entrega fsica de un producto; de solucin de problemas o de creacin de una plataforma. Recursos clave. Este bloque incluye a los recursos o activos que se requieren para desempear dichas actividades clave. Los recursos pueden ser materiales, financieros, humanos y ms importante an, intelectuales como patentes, marcas, etc. Alianzas clave. Describe la red de proveedores y socios que se requieren para que el modelo funcione adecuadamente, creando dichas alianzas sobre todo para optimizar el modelo por economas de escala, la reduccin de riesgo e incertidumbre o la adquisicin de recursos para el desempeo de ciertas actividades. Pueden ir desde una simple relacin proveedor-comprador hasta una alianza estratgica. Estructura de costos. Cules son los costos que se generan a propsito de las actividades y los recursos necesarios para desempearlos. Las estructuras de costos se pueden basar en dos enfoques principalmente: aquellos guiados por el costo y aquellos guiados por el valor. El primer enfoque se basa en minimizar el costo al mximo posible, mientras que el segundo se centra en el costo que sea necesario para crear el valor necesario para entregar. La expresin grfica del modelo se lleva a cabo en lo que se llama el Business Model Canvas que proviene y recuerda al lienzo de un pintor. Normalmente lo desarrollamos a travs de talleres con expertos en los temas dentro de una empresa, y es una actividad colaborativa que busca fomentar el entendimiento, discusin, creatividad y anlisis. Se puede desarrollar de manera fsica en un poster en donde podemos pintar o pegar notas o de manera electrnica en donde ya existe la aplicacin para iPad creada por el propio Osterwalder.
.BIO
Vctor Reyes ha tenido una trayectoria de ms de 20 aos en puestos gerenciales y directivos en los sectores privado y pblico. Es ex Director de Negocios de Innovacin del CONACYT y actualmente es fundador, cofundador y/o participante activo de varias iniciativas que buscan impulsar el emprendimiento e innovacin tecnolgica como MexicoInnova, INPROTEC, Startup Dojo, Mexican VC, Startup Weekend, TechBA Silicon Valley. @vmreyesp

Figura 1. Los 9 bloques del modelo de negocio.

no se pueden ver de manera aislada; unos son consecuencia de otros y por lo tanto se trata de poder construir un flujo basado en ellos. En el centro est la propuesta de valor, hacia el lado derecho a quin se entrega y cunto nos genera y en el lado izquierdo cmo se construye y cunto nos cuesta. Siguiendo la lgica anterior explicaremos brevemente a qu se refiere cada bloque. Segmento de clientes. Este es el primero de los bloques con el cual se debe iniciar la lgica del modelo, debiendo entender cul es el racional en base al cul vamos a segmentar al grupo de personas u organizaciones que vamos a servir, cul es su necesidad a satisfacer y una vez entendida, se puede disear el modelo de negocio. Propuesta de valor. Describe cul es el paquete de productos y servicios que crean valor para esos segmentos especficos de clientes. Es lo que hace a las compaas nicas y diferentes y por lo cual sus clientes van a preferirlos por sobre otras empresas. Se basa en la satisfaccin de problemas o necesidades de los clientes entregndoles beneficios valiosos. Algunos de los elementos que crean valor para los clientes pueden ser la novedad, la mejora en desempeo, la individualizacin, el precio, la reduccin de riesgos, la conveniencia, etc. Canales. Cmo una compaa se comunica y llega a sus segmentos de clientes para entregar la propuesta de valor. Son los puntos de contacto que juegan un papel importante en la experiencia de usuario del cliente. Aqu la principal definicin es si los canales sern directos o indirectos, lo que obviamente tiene una afectacin en margen pero puede potenciar el alcance. El balance adecuado ser el que maximice los ingresos. Relaciones con clientes. El tipo de relaciones que se mantengan con los clientes es fundamental para la adquisicin, retencin y crecimiento de los clientes y obviamente tendr una relacin directa con el canal que se haya elegido. Flujos de ingresos. Representa el efectivo que la empresa genera de cada segmento de clientes. Bsicamente los ingresos pueden ser de dos tipos, transaccionales, de nica ocasin, o recurrentes. Los
19

Referencias:
[1] M. W. Johnson, et al. Reinventing your Business Model. Harvard Business Review, December 2008. http:/ /swgu.ru/sg3405 [2] A. Osterwalder & Y. Pigneur. Business Model Generation. http:/ /swgu.ru/r3406

www.sg.com.mx |

Software Guru

SG Conference & Expo 2011


Por Equipo organizador

Integrando la comunidad de Profesionistas de TI

a sexta edicin del evento insignia de Software Gur se llev a cabo exitosamente el pasado 7 y 8 de septiembre en la Cd. de Mxico. A lo largo de dos das, el evento logr reunir a ms de 800 dignos representantes de la industria de TI, as como a reconocidos ponentes nacionales e internacionales, contando con la participacin de prestigiadas empresas de la industria de software a nivel global. Como ya es costumbre este evento fu el punto de reunin de los ms destacados profesionistas, hackers y emprendedores de TI, que compartieron su experiencia y conocimiento fomentando una excelente dinmica de networking. Con gran gusto nos encontramos con asistentes que nos acompaan y colaboran con SG desde el primer congreso, y es un orgullo saber que de alguna manera hemos apoyado al desarrollo de estos profesionistas.
20

.ESPECIAL resea

La entrada
La inauguracin se llev a cabo por el Director y socio fundador de Software Gur, Pedro Galvn, quien adems de reconocer el esfuerzo de los participantes por asistir al evento, comparti con la audiencia el futuro y visin de SG, presentando nuevos productos como SG Talento y Nearshore Link. El evento fu moderado por la coordinadora editorial de la Revista SG, Vanessa Amaya, y cont con la participacin de Elizabeth Argello, Directora de Economa Digital de la Secretara de Economa, quien nos comparti su visin de la industria de TI, as como los avances que han tenido los diversos Programas que la apoyan.

Alcanza para todos: La Feria de Reclutamiento


Acompaando al lanzamiento de SG Talento, se realiz la feria de reclutamiento Buscando Talento, organizada en conjunto con la empresa Empleos TI, durante la cual las empresas participantes contactaron con diversos profesionistas. Las empresas participantes fueron: Kelly IT Resources, 4thSource, Neoris, Porto Mx, Adecco, Congnizant, Tacit Knowledge, Softtek, IDS, Hildebrando, ABS, ScreenIT, Randstad, e-global Consultores, Nearsoft, IBM, Oracle, Alpha Consultoria, App Studios, Global Lynx, Extend Solutions, Infotec, Ironbit y Ultrasist.

El plato fuerte
Y de la entrada nos fuimos directo al plato fuerte, ya que los conferencistas magistrales nos compartieron una diversa gama de interesantes temas. Iniciamos con el keynote Fact and Fallacies of Software Development presentado por Venkat Subramaniam, fundador de Agile Developer, Inc. quien demostr su experiencia de haber entrenado y asesorado a miles de desarrolladores de software y con una ponencia sumamente amena logr la participacin activa de la audiencia. Finalizando el primer da, contamos con la pltica de Brad Hipps, Gerente de Soluciones de software en HP, quien comparti su experiencia en el ciclo de vida de las aplicaciones, y su implementacin en diversas organizaciones a nivel mundial. No poda faltar la participacin de expertos y apasionados desarrolladores de software Mexicanos, como fu el caso de Ral Guerrero, quien nos platic sobre la Gestin del Proceso de Desarrollo utilizando Scrum, donde comparti experiencias de su trabajo actual en Microsoft como Especialista en Herramientas de Desarrollo, as como recomendaciones gracias a su participacin activa en Comunidades. Ash Maurya inici las conferencias del segundo da, con el tema Running Lead, creador del libro que lleva el mismo nombre, material de referencia esencial para los emprendedores en la web, demostrando la razn por la cual es una de las figuras ms reconocidas en el mbito de los nuevos emprendimientos basados en tecnologa. Gustavo Garnica, fue el encargado de dar el toque final al plato fuerte, quien gracias a su amplia experiencia como Arquitecto Senior de Middleware, en proyectos para clientes en Mxico y LA, nos comparti la visin altamente esperada sobre el futuro de la plataforma Java.

La cereza del pastel: AppCircus


AppCircus es una feria itinerante, escaparate de las aplicaciones mviles ms creativas e innovadoras, que en esta ocasin se present en SG Conference & Expo. Durante esta dinmica 10 emprendedores presentaron sus aplicaciones. El ganador fue Jos Balczar de la empresa Huawei, quien ahora tiene la oportunidad de pertenecer a las apps nominadas para los Mobile Premiere Awards (MPA) 2012 en Barcelona. AppCircus fue patrocinado por BlueVia.

La Charla
Todo momento fue aprovechado para networking, visitas a Expo, las comidas, y los deliciosos startup-waffles, que fomentaron la convivencia entre los participantes, quienes crearon nuevas relaciones y se reencontraron con colegas.

El Postre: La Expo
La Expo cont con la participacin de diversas empresas y organismos, a quienes reconocemos su compromiso con la industria y agradecemos su apoyo: Oracle, HP, Infotec, Pronatura, Microsoft, Global Lynx, Mxico First, Blackberry, Qualtop, Alpha Consultora, Vinkos, Fumec, Ironbit, Ultrasist, AppStudios, CIAPEM, CANIETI, AMITI, emprende.la, CITI Tabasco, IJALTI y al Consejo de Software de Nuevo Len. En especial agradecemos a Secretara de Economa por apoyar al evento mediante el programa Prosoft 2.0.

El Digestivo: La Noche de casino


Siendo un evento tan esperado, quisimos celebrarlo en grande jugando y apostando, donde los asistentes vivieron una noche divertida, con baile, bocadillos y brindis. Y para los que no les late el casino, jugaron como nios con el Kinect. El ambiente era de total algaraba y esta se agrand al participar en la subasta de grandes premios. La preparacin y realizacin del evento fueron una ardua labor, que finalmente gracias a la mezcla de contenidos de alta calidad, entusiastas asistentes, y una logstica excepcional, logramos un delicioso men, consolidando una vez ms a SG Conference & Expo como un evento de clase mundial.

Una variada ensalada: Ignite sobre emprendimiento


Con una combinacin de mltiples ponentes, quienes en 5 minutos nos compartieron sus ideas, perspectivas, propuestas relacionadas a la creacin y ejecucin de startups en Mxico, se present el Ignite dedicado al emprendimiento tecnolgico.

Para acompaar: Ms de 20 sesiones


Para compartir el conocimiento y la prctica real, contamos con la participacin de los expertos locales, combinando una interesante agenda de conferencias.
21

El Despertar del

Cmputo Fsico
significativamente, y hoy en da contamos con herramientas ms sencillas, materiales accesibles, mayor estandarizacin y mucho mayor apertura. Todo esto ha provocado que el inters y popularidad del cmputo fsico est explotando. En las siguientes pginas hemos concentrado diversos artculos con informacin sobre algunos de los aspectos que consideramos ms relevantes sobre el cmputo fsico, desde el fenmeno provocado por Arduino y el open hardware, hasta la construccin y programacin de robots. Pero antes de continuar, les recordamos un pasaje del libro The Tao of Programming the Geoffrey James. Sin el viento, el pasto no se mueve. Sin software, el hardware es intil.

La mayora de nosotros, los profesionistas de software contemporneos, llevamos toda nuestra vida profesional programando software cuya interaccin con el mundo fsico se limita a recibir comandos de un teclado o mouse y entregar resultados desplegndolos en una pantalla. Ciertamente, esta modalidad de cmputo ha generado un mercado muy grande, y nos ha dado empleo, alegras, tristezas y muchas ancdotas.
Sin embargo, no debemos olvidar que hay un mundo all afuera, un mundo fsico con distancia, peso, luz, sonido, tacto. Y en ese mundo tambin hay infinidad de oportunidades donde los sistemas de cmputo pueden aportar valor. El cmputo fsico se refiere a la utilizacin de dispositivos electrnicos para crear objetos interactivos que pueden interactuar con el mundo fsico utilizando sensores y accionadores controlados por el comportamiento programado en un microcontrolador. Anteriormente, crear sistemas de cmputo fsico era algo reservado para unos cuantos, no solo por la complejidad y diversidad de conocimientos requeridos, sino por la poca accesibilidad y alto precio de los materiales necesarios, as como la falta de estandarizacin. Pero en los ltimos aos esta situacin ha mejorado

22

23

.PRINCIPAL

www.sg.com.mx |

Software Guru

.PRINCIPAL

El ABC de la Programacin de un
Por Miguel ngel Ramrez

Robot Humanoide

ms fcil de lo que crees

Abrir la puerta, jugar futbol, recordarle a una persona que tiene que tomar sus medicinas, leer correos electrnicos o bailar, son algunas de las funciones que los robots humanoides pueden realizar actualmente. Para lograrlo, existe software que permite simular comportamientos en un robot, aplicaciones para programar actividades complejas y herramientas de monitoreo. Esto se hace por medio de los ambientes de desarrollo y Kits de Desarrollo de Software (SDK) de los robots.
La finalidad es tener bien claro qu quieres que tu robot haga, porque no slo para movimientos est hecho, sino tambin para sentir, interactuar, e incluso pensar por medio de inteligencia artificial. como su nombre lo indica es un lenguaje tipo Basic, pero especializado y orientado a robots. Este lenguaje te proporcionar comandos especficos para controlar al humanoide. Por medio de los simuladores de los ambientes de desarrollo, puedes probar fcilmente los nuevos comportamientos y comprobar que haces correctamente tu trabajo. Otra posibilidad consiste en crear nueva funcionalidad utilizando informacin de lo que el robot est viendo y sintiendo por medio de sus sensores. Este tipo de programacin tpicamente se hace en lenguajes como Python o C++, y aprovecha los SDKs que ofrecen los robots (la gran mayora de los robots actuales cuenta con SDKs). Quienes estn acostumbrados a desarrollar aplicaciones con tecnologas de Microsoft tal vez se sientan en casa usando Microsoft Robotics Developer Studio, la cual aprovecha las plataformas .NET y XNA adems de soportar el sensor Kinect. Adicionalmente, ya hay quienes estn experimentando con programar y controlar robots en tiempo real. Por ejemplo, la Universidad del Norte de Carolina lo est haciendo con xito, y han logrado que un robot NAO sirva azcar en una taza de caf con una cuchara, incluso sorteando obstculos inesperados. El campo de la programacin de robots humanoides se est desarrollando muchsimo. Tan es as, que la competencia RoboCup tiene como objetivo que para el ao 2050 un equipo de robots pueda competir en un juego de futbol contra los campeones de la FIFA. Por otro lado, algunas empresas ya han comenzado a crear app stores para aplicaciones robticas, de forma que usuarios de todo el mundo puedan descargar los desarrollos de otros.

Los robots

Existen distintas opciones de robots humanoides en el mercado. Posiblemente el ms popular es el robot NAO fabricado por la empresa francesa Aldebaran Robotics, y que es el utilizado en la competencia internacional Robocup, donde equipos de todo el mundo programan equipos de robot autnomos que compiten jugando futbol.

Herramientas y tecnologas de programacin

Antes, programar un robot era una tarea complicada. Sin embargo, hoy en da se cuenta con herramientas poderosas y bastante amigables. Generalmente, la programacin de robots se clasifica en varios niveles de complejidad con la finalidad de que los usuarios puedan ir escalando sus conocimientos y cada vez tener un mayor control sobre el comportamiento del robot y realizar actividades ms avanzadas. En el nivel bsico est la programacin visual utilizando ambientes de desarrollo como Choregraphe. En estas herramientas se cuenta con libreras de bloques de comportamiento predefinidos y se programa visualmente el comportamiento del robot al arrastrar y conectar dichos bloques, creando as una secuencia de actividades o coreografa. La figura 1 muestra una pantalla de Choreographe.

Robtica humanoide en Mxico

En Mxico tambin se realiza investigacin en el campo de la robtica. Universidades como el ITAM, UNAM, INAOE e ITESM cuenta con humanoides para que los alumnos puedan programarlos. En el caso del ITAM, cuentan con robots NAO desde el 2008 que participaron en RoboCup en la Liga de Plataforma Estndar (esta primera versin se entreg nicamente a 20 instituciones del mundo). Una excelente noticia es que la edicin 2012 de RoboCup se llevar a cabo en la ciudad de Mxico en junio del 2012. Esto seguramente impulsar el inters en nuestro pas por la robtica.
Referencias:
Figura 1. El ambiente de desarrollo Choreographe

[1] Configuracin de NAO. http:/ /www.naomexico.mx/html/config.html [2] Canal de videos de Aldebaran Robotics. http:/ /www.youtube.com/aldebaranrobotics [3] RoboCup. http:/ /www.robocup.org

El siguiente paso es poder programar tus propios bloques de comportamiento, para integrarlos en tus coreografas. Esto tpicamente se hace un lenguaje de programacin de alto nivel. En el caso de Choregraphe, se puede hacer en Python o urbiscript (un lenguaje de scripting para robtica). Otras herramientas utilizan el lenguaje RoboBasic, que
24

.BIO
Miguel ngel Ramrez es Director de Tecnologa en GRE, empresa mexicana dedicada a la comercializacin de soluciones robticas. Miguel es egresado de la Universidad La Salle como Ingeniero en Ciberntica. www.naomexico.mx

.PRINCIPAL

Open Hardware
el hardware tambin puede ser libre
Por Antonio Toriz

El trmino open hardware, u open source hardware, se refiere al hardware cuyo diseo se hace publicamente disponible para que cualquiera pueda estudiarlo, modificarlo y distribuirlo, adems de poder producir y vender hardware basado en ese diseo. Tanto el hardware como el software que lo habilita, siguen la filosofa del software libre. Hoy en da, el trmino hgalo usted mismo (DIY por sus siglas en ingls) se est popularizando en el hardware gracias a proyectos como Arduino que es una fuente abierta de prototipos electrnicos, una plataforma basada en hardware flexible y fcil de utilizar que naci en Italia en el ao 2005.
El movimiento de hardware abierto o libre, busca crear una gran librera accesible para todo el mundo, lo que ayudara a las compaas a reducir en millones de dlares en trabajos de diseo redundantes. Ya que es ms fcil tener una lluvia de ideas propuesta por miles o millones de personas, que por solo una compaa propietaria del hardware, tratando as de que la gente interesada entienda cmo funciona un dispositivo electrnico, pueda fabricarlo, programarlo y poner en prctica esas ideas en alianza con las empresas fabricantes, adems se reducira considerablemente la obsolencia programada y en consecuencia evitaramos tanta basura electrnica que contamina el medio ambiente. Al hablar de open hardware hay que especificar de qu tipo de hardware se est hablando, ya que est clasificado en dos tipos; Hardware esttico. Se refiere al conjunto de elementos materiales de los sistemas electrnicos (tarjetas de circuito impreso, resistencias, capacitores, LEDs, sensores, etctera). Hardware reconfigurable. Es aqul que es descrito mediante un HDL (Hardware Description Language). Se desarrolla de manera similar a como se hace software. Los diseos son archivos de texto que contienen el cdigo fuente. Para tener hardware reconfigurable debemos usar algn lenguaje de programacin con licencia GPL (General Public License). La licencia GPL, al ser un documento que cede ciertos derechos al usuario, asume la forma de un contrato, por lo que usualmente se la denomina contrato de licencia o acuerdo de licencia. La Organizacin Europea para la investigacin Nuclear (CERN) public el 8 de julio de 2011 la versin 1.1 de la Licencia de Hardware Abierto. Existen programas para disear circuitos electrnicos y aprender de la electrnica como EDA (Electronic Design Automation) y GEDA (GPL Electronic Design Automation), son aplicaciones de software libre que permitan poner en prctica las ideas basadas en electrnica. Es posible realizar el ciclo completo de diseo de hardware re25

Evolucin digital

La idea del open hardware no solo es importante en la aplicacin del modelo comunitario y colaborativo para el crecimiento intelectual libre sobre los sistemas electrnicos digitales, sino tambin para impulsar a nuevos talentos y desarrollo tecnolgico en Mxico, evitar la fuga de cerebros e incentivar la creacin de empresas de hardware para no depender tanto de tecnologas extranjeras. El principal desafo es lograr que ms gente se interese en el Open Hardware para crear grupos de trabajo y pasar del primer problema que es la iniciativa, para posteriormente interesarse por la investigacin y fabricacin de los componentes. Sabemos que esto no ser fcil, pero confo plenamente en que poco a poco podremos lograrlo.
.BIO
Antonio Toriz Cureo (@ingbruxo) es egresado de la Universidad Autnoma del Estado de Mxico, Campus Valle de Chalco. Actualmente trabaja como profesor de Preparatoria. Sus reas de especialidad incluyen ingeniera inversa de computadoras, hardware libre y seguridad informtica. Lee su blog en http://antoniotoriz.blogspot.com

www.sg.com.mx |

Software Guru

configurable desde una mquina con GNU/Linux, realizndose la compilacin, simulacin, sntesis y descarga en una FPGA. Para la compilacin y simulacin se puede usar GHDL (http://ghdl.free. fr) junto con GTKWave (http://gtkwave.sourceforge.net), y para la sntesis el entorno ISE de Xilinx. Este ltimo es software comercial pero existe una versin gratuita con algunas restricciones. Sabemos que tanto en el caso del software como el hardware, libre no es lo mismo que gratis. Especficamente, en el caso del hardware, como estamos hablando de componentes fsicos que son fabricados, la adquisicin de componentes electrnicos puede ser costosa. Aun as, es un campo que no solo es apasionante sino que tambin tiene mucho futuro y representa grandes oportunidades.

.PRINCIPAL

Hola Mundo
Por Hugo Fernndez

Kinect

obteniendo datos de las cmaras de kinect

Como muchos de ustedes saben, Kinect es un accesorio para el Microsoft XBox 360 que consiste en una cmara sensible a la profundidad, lo que le permite identificar lo que ve en un contexto de 3 dimensiones. En principio fue pensado como accesorio para videojuegos, pero sus capacidades permiten que tambin sea un dispositivo til para otros fines. De hecho, apenas algunos das despus de su lanzamiento, comenzaron a aparecer drivers de Kinect creados por desarrolladores independientes. Reconociendo este potencial, Microsoft liber posteriormente un SDK oficial.
En este artculo vamos a explicar como utilizar el SDK de Kinect para inicializar y mostrar las diferentes cmaras y funciones de reconocimiento de gestos. la parte superior de nuestro cdigo donde estn los using y agregamos Microsoft.Research.Kinect.Nui.
using Microsoft.Research.Kinect.Nui;

Prerrequisitos

Para poder realizar este tutorial es necesario contar con lo siguiente: Sensor Microsoft Kinect. Cable conversor de puerto KINECT a USB (este cable esta incluido cuando compras el KINECT por separado, para la versin que viene con el Xbox 360 no viene con esta extensin, pero se puede conseguir fcilmente en tiendas de electrnicos). Computadora con Microsoft Windows 7 (en sus diferentes versiones) compatible con tarjetas grficas con Direct X 9.0c Microsoft Visual Studio 2010 Express o cualquier edicin Microsoft .NET Framework 4. Adicionalmente necesitamos instalar el Kinect SDK, el cual se puede descargar en http://swgu.ru/r3401

Para poder manejar el dispositivo, haremos referencia a este desde una variable de tipo Runtime. As que debemos declarar dicha variable.
Runtime runtime = new Runtime();

A continuacin registramos mtodos para manejar los eventos Loaded y Unloaded del control MainWindow, y tambin registramos mtodos para manejar la seal de las dos cmaras de Kinect: la de video y la de profundidad. El listado 1 muestra esto.

Comencemos

public MainWindow() { InitializeComponent(); this.Loaded += new RoutedEventHandler(MainWindow_Loaded); this.Unloaded += new RoutedEventHandler(MainWindow_Unloaded); runtime.VideoFrameReady += new EventHandler <Microsoft.Research.Kinect.Nui.ImageFrameReadyEventArgs> (runtime_VideoFrameReady); runtime.DepthFrameReady += new EventHandler <ImageFrameReadyEventArgs>(runtime_DepthFrameReady); }

Lo primero que hacemos es crear un nuevo proyecto en Visual Studio, el tipo de proyecto que necesitamos es Aplicacin WPF, nombraremos este proyecto HelloWorldKinect. Posteriormente, en la vista de diseo nos situamos en el cdigo XAML y colocamos dos controles de tipo imagen. El primer control, de preferencia que abarque toda la ventana, lo llamaremos depthImagen y lo utilizaremos para la cmara de profundidad. El segundo control, que llamaremos videoImage, mostrar el contenido de la cmara de video. ste ltimo podemos hacerlo ms pequeo y ser ms pequeo y lo posicionaremos en la esquina superior derecha. Para poder utilizar las libreras de Kinect en nuestro proyecto debemos agregar la referencia correspondiente. Para ello, en la pestaa del Explorador de Soluciones hacemos click derecho en la carpeta References, seleccionamos Add Reference y seleccionamos la referencia Microsoft.Research.Kinect.

Listado 1.

El cdigo

Para agregar la referencia desde el cdigo de nuestro formulario, vamos a


26

En el mtodo MainWindow_Loaded que es la que llamamos cuando se carga el dispositivo, vamos a inicializar el dispositivo y llamar dos rutinas, una para el stream de video (cmara RGB) y otra para el stream de profundidad. El listado 2 muestra esto.

.PRINCIPAL

void MainWindow_Loaded(object sender, RoutedEventArgs e) { runtime.Initialize(Microsoft.Research.Kinect.Nui.RuntimeOptions.UseColor | Microsoft.Research.Kinect.Nui.RuntimeOptions.UseDepth); runtime.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color); runtime.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution640x480, ImageType.Depth); }
Listado 2.

PlanarImage image = e.ImageFrame.Image; BitmapSource source = BitmapSource.Create(image.Width, image.Height, 96, 96, PixelFormats.Bgr32, null, image.Bits, image.Width * image.BytesPerPixel); videoImage.Source = source; } void runtime_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) { PlanarImage image = e.ImageFrame.Image;

En el mtodo para manejar el evento unloaded, simplemente nos limitamos a cerrar el dispositivo.

void MainWindow_Unloaded(object sender, RoutedEventArgs e) { runtime.Uninitialize();

BitmapSource source = BitmapSource.Create(image.Width, image.Height, 96, 96, PixelFormats.Gray16, null, image.Bits, image.Width * image.BytesPerPixel); depthImage.Source = source; }
Listado 4. Mtodos VideoFrameReady y DepthFrameReady.

Listado 3. Cdigo para cerrar el dispositivo.

Como ltimo cdigo vamos definir los mtodos VideoFrameReady y DepthFrameReady que manejan la recepcin del video y la profundidad respectivamente. El contenido de ambos mtodos es muy similar, con muy ligeras variaciones. Comenzamos creando una variable de tipo PlanarImage y asignndole el valor del atributo ImageFrame.Image de nuestro argumento, el cual siempre tiene la imagen que est tomando la cmara en ese momento. Despus definimos una variable de tipo BitmapSource cuyo valor es construido a partir del stream correspondiente, pasndole como parmetros, el ancho, el alto, los DPI de cada imagen (por defecto son 96), el formato de sus pixeles en lo que la diferencia de que una es RGB o BGR32 para el video y para profundidad dar una paleta de colores gris de 16 bits o Gray16, luego los bits en memoria a partir de la variable image. Por ltimo, en cada mtodo se asigna el BitmapSource que definimos, como valor del atributo del control de imgen que definimos en un inicio, videoImage para el control de video y depthImage para el control de profundidad.

La versin original de este artculo se encuentra publicada en http://swgu.ru/ sg3403 Fue editada y publicada en Software Guru con permiso del autor.

Referencias:
[1] Kinect for Windows SDK. http:/ /swgu.ru/sg3402 [2] The Kinnect Effect. http:/ /swgu.ru/sg3404

.BIO
Hugo Fernndez es cofundador y director de CIACOM Systems en Venezuela. Es Microsoft Certified Technology Specialist y se especializa en el desarrollo de aplicaciones web. @hughfernandez

void runtime_VideoFrameReady(object sender, Microsoft.Research.Kinect.Nui.ImageFrameReadyEventArgs e) {

27

www.sg.com.mx |

Nuestro cdigo est listo, ahora solo corremos la aplicacin presionando F5 y podremos ver en nuestra pantalla la seal capturada por el Kinect. No se incluye aqu el screenshot de la imagen generada por el sensor de profundidad porque son tonalidades muy obscuras que no se distinguen en la revista impresa, pero te invito a que lo intentes, es algo bastante sencillo. El cdigo utilizado en este artculo est disponible en http://swgu.ru/ sg3400 Este cdigo prcticamente es el mnimo esencial preestablecido por Microsoft para comenzar a trabajar con el Kinect.

Software Guru

.PRINCIPAL

Diseo de un Robot Compatible con


Por Pedro Galvn

conoce a

RDS
mark

Microsoft Robotics Developer Studio (RDS) es una plataforma para el desarrollo de aplicaciones robticas. RDS provee un framework de programacin, ambiente de ejecucin (runtime), herramientas para creacin y simulacin de aplicaciones, ejemplos de cdigo, plantillas y tutoriales entre otras cosas. En este artculo veremos los aspectos fundamentales de un robot diseado para operar aplicaciones creadas con RDS.
Las personas que desean construir aplicaciones robticas se encuentran con que existe una gran variedad de robots disponibles en el mercado, con poca estandarizacin entre ellos y gran variedad en capacidades y precios. Ante esta problemtica, el equipo de Microsoft Robotics se dio a la tarea de definir las caractersticas esenciales de un robot que aproveche los servicios de RDS. El objetivo es que las personas puedan facilmente construir su propio robot, o que terceros construyan y vendan robots listos para usarse, de manera que los desarrolladores pueden concentrarse ms en construir las aplicaciones del robot, que en construir el robot en s. El resultado de este esfuerzo es la RDS Reference Platform. Esta plataforma de referencia es una gua que describe el diseo recomendado para crear un robot real (es decir, un robot fsico) que pueda operarse con RDS.

Arquitectura de hardware.

La figura 1 muestra el ejemplo de una implementacin de un robot MARK.

MARK

El diseo robtico de referencia utiliza al sensor Microsoft Kinect, el cual provee una cmara de video, sensor de profundidad 3D y micrfono. Este diseo fue bautizado como MARK (Mobile Autonomous Robot using Kinect). El diseo del MARK se basa en cuatro principios: mobilidad, autonoma, interactividad y extensibilidad. La mobilidad es provista por una traccin diferencial, la cual es fcil de controlar y permite que el robot gire en su mismo lugar. Para ser autnomo, el robot recurre a una computadora a bordo. Las capacidades avanzadas como visin computarizada, reconocimiento de voz, o conectividad a redes, requieren capacidad de procesamiento mucho mayor a la que proveen los microcontroladores de bajo rango. Incorporar una PC en el diseo tambin permite comunicacin inalmbrica con otras PCS y/o robots por medio de WiFi. La interactividad considera dos aspectos: la interaccin humano-robot, y la interaccin del robot con el ambiente. El campo de la robtica personal tiene la necesidad de interfaces de usuario sencillas y confiables. La interactividad es facilitada por la inclusin del sensor Kinect, lo cual puede simplificar dramticamente la programacin de la interfaz de usuario, proporcionando datos 3D e informacin esqueletal. Los datos 3D tambin son muy tiles para que el robot pueda desplazarse exitosamente a travs de obstculos. La extensibilidad es inherente al diseo de referencia ya que no especifica detalles de bajo nivel, por lo que no est restringido a una construccin en particular. Este permite que los usuarios y partners de Microsoft Robotics puedan cambiar piezas o variar el diseo siempre y cuando se respeten los aspectos fundamentales.
28

Figura 1. Ejemplo de implementacin de un robot MARK.

A continuacin se describe de forma general el hardware de este robot. Bases. Se requiere un mnimo de dos bases o plataformas en el robot. En la base inferior va el sistema de traccin y en la superior va la computadora y el Kinect. La base de mayor tamao (tpicamente la inferior) debe ser circular y ningn componente debe rebasar su circunferencia, esto permitir que el robot pueda girar en su lugar sin golpear objetos externos. Se recomienda que las bases tengan un dimetro menor a 60 cm para que puedan pasar por las puertas de una casa. La base superior debe tener un soporte para montar la cmara del Kinect. Para maximizar el campo de visin del Kinect, la altura ideal a la que se debe montar es a 60 centmetros del suelo. Sistema de traccin. La traccin diferencial consiste en dos ruedas cuya velocidad puede variar de manera independiente. Los motores tpicamente se controlan utilizando circuitos de tipo puente H (H-brid-

.PRINCIPAL
ge). El sistema de traccin considera: las ruedas, el eje de las ruedas, los motores que las mueven, los sensores de rotacin de las ruedas (wheel encoder), los puentes H, y los accesorios de montaje. Se recomienda utilizar motores silenciosos, no solo para evitar la molestia del ruido, sino tambin porque afecta la capacidad de reconocimiento de voz. Dado que la traccin diferencial consiste de solamente dos ruedas, para que el robot tenga estabilidad se recomienda agregar ruedas (una al frente y otra atrs) para que den estabilidad. Estas ruedas deben ser giratorias para no obstruir el desplazamiento y rotacin del robot. Sensores de proximidad. A pesar de que podramos utilizar el sensor de profundidad del Kinect para detectar obstculos y evadirlos, se recomienda tener sensores de proximidad dedicados para la evasin de obstculos. Se debe incluir al menos dos tipos distintos de sensores, ya que combinar distintos tipos incrementa la probabilidad de detectar obstculos. Por ejemplo los sensores infrarrojos no detectan vidrio pero los de sonar s, asmismo hay objetos que no son bien detectados por los de sonar pero s por los infrarrojos. Controlador de I/O. El controlador de I/O, conocido como brick (ladrillo) es una tarjeta de circuitos que acta como interfaz entre el hardware del robot y la PC. Sistema de energa. La energa para el robot debe ser provista por una o ms bateras recargables. Se recomienda utilizar bateras de 12V tipo SLA (Sealed Lead Acid). Los componentes del robot que requieren energa incluyen: Kinect (12V a 1.1A), motores y controladores, sensores de proximidad, controlador IO. Por simplicidad, la computadora a bordo puede utilizarse con su batera por lo que no es necesario contemplarla en la lista de componentes soportados por el sistema de energa. En la capa superior tenemos servicios de alto nivel que pueden ser provistos por RDS, terceros, o creados por el desarrollador. Un servicio en esta capa que ya est incluido como parte del RDS es el Robot Dashboard, un aplicativo que funciona como consola maestra para permitir al usuario controlar al robot y consultar su estatus. Otro servicio de esta capa que ya es provisto por RDS es el de evasin de obstculos. Los servicios de bajo nivel son una capa de abstraccin de hardware. Proveen servicios para interactuar con el hardware (Kinect, sistema de traccin, sensores) mediante el controlador de I/O. Los servicios de esta capa son programados por el fabricante del robot, o el usuario en caso de estar construyendo su propio robot. El CCR (Concurrency and Coordination Runtime) y DSS (Decentralized Software Services) son componentes de RDS. Todos los servicios se ejecutan en el contexto de un nodo DSS, y varios nodos DSS se pueden comunicar entre s a travs de una red. RDS est basado en .NET, el cual a su vez opera sobre el sistema operativo Windows. En la capa ms baja est el hardware. Algunos dispositivos, como el control de Xbox estn directamente soportados por drivers para Windows. El controlador de I/O contiene firmware que se comunica via Windows utilizando un puerto serial, USB, red u otro medio. Para crear aplicaciones robticas que funcionen con RDS se requiere una computadora con el siguiente software: Windows 7 (32bit o 64-bit), Visual Studio 2010 Express o superior, Kinect for Windows SDK (y prerrequisitos asociados), Robotics Developer Studio 4 (y prerrequisitos asociados).

Conclusin

La figura 2 ilustra a grandes rasgos la arquitectura de software de la plataforma de referencia del RDS.

Figura 3. Ambiente de simulacin de RDS.

Referencias:
[1] Microsoft Robotics. http:/ /www.microsoft.com/robotics

Figura 2. Arquitectura de software de la plataforma de referencia.

[2] RDS: Reference Platform Design Specification. http:/ /swgu.ru/sg3409

29

www.sg.com.mx |

Software Guru

Arquitectura de software

Hemos visto algunos aspectos fundamentales para el diseo de un robot con RDS. Te invito a que consultes la especificacin completa [2] y que comiences a desarrollar aplicaciones robticas. Te comento que RDS incluye una versin simulada de esta plataforma de referencia, de modo que puedes comenzar a desarrollar aplicaciones robticas en un ambiente simulado sin necesidad de contar con el robot fsico. La figura 3 muestra este ambiente de simulacin.

.PRINCIPAL

Conociendo a
Por Pedro Galvn

Arduino

hola mundo con

leds

Arduino es una plataforma abierta para cmputo fsico que se basa en hardware y software sencillo y libre. Los sistemas Arduino pueden sondear el ambiente al recibir informacin de una gran variedad de sensores, y pueden afectar al ambiente al controlar luces, motores u otros actores.
En este artculo veremos como se hace un Hola Mundo en Arduino. Nota: La pata larga es el nodo, el cual va al pin, y la pata corta es el ctodo que va a tierra. El listado 1 muestra el cdigo que necesitamos.

El hardware

Dado que Arduino es open hardware, t mismo puedes construir tarjetas guindote en los esquemas de diseo, o puedes comprar tarjetas preconstruidas. Para este ejercicio nos basaremos en una tarjeta Arduino Uno, que es la ms bsica y se puede adquirir por alrededor de 40 dlares. La figura 1 muestra una imagen.

const int LED = 13; void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, HIGH); delay(1000); digitalWrite(LED, LOW); delay(1000); }
Listado 1. Cdigo para prender y apagar LED

Figura 1. Una tarjeta Arduino Uno

El software

Las tarjetas Arduino se programan en un ambiente de desarrollo (IDE) basado en el lenguaje Processing, que es un lenguaje bastante sencillo. Ya que tienes tu programa listo, el IDE lo convierte a C, compila un binario y lo carga al microprocesador. El ciclo de programacin es bsicamente el siguiente: 1. Conecta la tarjeta a tu computadora via USB 2. Escribe el programa en el IDE. 3. Enva el programa a la tarjeta y espera a que se reinicie. 4. La tarjeta ejecuta el programa.

El cdigo es bastante sencillo. Primero definimos una constante para indicar el nmero de pin donde tenemos el LED. Luego tenemos el mtodo obligatorio setup() que es donde hacemos las configuraciones necesarias para ejecutar un programa. En nuestro caso, estamos indicando que queremos usar el pin 13 como salida (los pines digitales pueden usarse ya sea como entrada o salida). Posteriormente tenemos el mtodo obligatorio loop() el cual ejecuta el ciclo maestro del programa. En nuestro ciclo lo que estamos haciendo es prender el voltaje del LED al enviarle una seal HIGH, esperar mil milisegundos, bajar el voltaje del LED al enviar una seal LOW, y esperar. Este ciclo se ejecutar de forma continua mientras el sistema se encuentre encendido. Como has podido constatar, Arduino es muy sencillo. Te recomiendo que le hagas caso a ese gusanito curioso dentro de ti y consigas cuanto antes una tarjeta y empieces a jugar.

El cdigo

Nuestro hola mundo consistir en hacer que un LED (diodo de luz) se prenda y apague. Para ello, conectamos nuestra tarjeta a la computadora, y conectamos un LED en el pin digital #13.
30

Referencias:
[1] Arduino Homepage. http:/ /www.arduino.cc [2] M. Banzi. Getting Started with Arduino, 2nd edition. Make Books, 2011.

.COLUMNA coLumna inviTada

Cmputo en la

Nube

retrospectiva desde el

2015

Mark Settle es CIO en BMC Software, y anteriormente fue CIO en cuatro compaas de la lista de las Fortune 300: Corporate Express, Arrow Electronics, Visa International, y Occidental Petroleum.

oy que estoy en el ao 2015 y miro hacia atrs, me pregunto como es que yo al igual que la mayora de los CIOs vivimos durante tantos aos bajo la falsa nocin de que el hardware era barato. En ese entonces permitamos que la mayora de las aplicaciones corrieran sobre hardware dedicado. Adicionalmente, acostumbrbamos comprar hardware con capacidad de sobra, para disminuir el riesgo de problemas de desempeo. Para ser francos, tampoco hacamos planeacin de la capacidad, porque no queramos conocer la respuesta. Cuando los proveedores de nubes pblicas comenzaron a ofrecer infraestructura de TI bajo demanda en un esquema de paga lo que usas, todos despertamos y nos dimos cuenta de que estas opciones desplazaran nuestros centros de datos internos. Fue as que comenzamos a actuar como proveedores de cmputo en la nube dentro de nuestra propia organizacin, estableciendo las llamadas nubes privadas. Metimos en cintura a nuestros clientes y les dijimos que solo soportaramos determinadas arquitecturas y middleware. Convencimos a nuestros CFOs de que si nos permitan hacer grandes adquisiciones de infraestructura anticipando demanda futura, y de esta forma eliminar las compras incrementales, podramos lograr mayores tasas de retorno sobre el hardware. Para que esta poltica fuera aceptada, aceptamos comenzar a medir y reportar el nivel de utilizacin del hardware. Y llego entonces el da en que tuvimos que rendir cuentas ante los CFOs, admitiendo que todo el hardware que nos haban permitido comprar en los ltimos aos, estaba sentado en el data center con utilizaciones menores al 50%. Es increible cuantas excusas pusimos en ese entonces sobre la seguridad en nubes pblicas. Ahora, continuamente seleccionamos a proveedores de nube pblica para manejar tipos especficos de cargas de trabajo. Definimos los requerimientos de seguridad de cada carga y utilizamos las tcnicas apropiadas de encripcin y aliasing para asegurar la confidencialidad de los datos enviados a proveedores externos. Aunque algunos tipos de informacin son muy sensibles y no pueden salir de nuestro data center, esta decisin ya se toma por un proceso automatizado. Ya no tenemos debates filosficos sobre que s puede o no pasar por el firewall. Hace diez aos, el simple hecho de aprovisionar un servidor poda tomar de 3 a 6 semanas de juntas, emails, evaluaciones de hardware y negociaciones de precio. En el 2010, gracias a la utilizacin de configuraciones estndar y scripts de automatizacin en ambientes virtualizados, esta tarea se redujo a medio da. Hoy, podemos hacerlo en minutos. Esto no solo nos ahorra costo de staff, sino que
32

sustenta la agilidad que requiere el negocio. Qu bueno que en el 2011 tomamos la decisin de comenzar a adoptar agresivamente el cmputo en la nube. De no haberlo hecho no hubieramos tenido la flexibilidad y recursos requeridos para soportar la explosin que han tenido las aplicaciones mviles en los ltimos aos. Antes, si en un ao lograbamos poner en produccin 2 o 3 aplicaciones de negocio importantes, adems de sostener los sistemas legados, era todo un logro. Para nuestros clientes internos, que nos comparaban con las app stores de Apple y Android donde tenan miles de aplicaciones nuevas cada trimestre, eramos demasiado lentos. Entre el 2005 y el 2010 aumentamos significativamente el uso de versiones SaaS de varias de nuestras aplicaciones y servicios de comunicacin. Los usuarios estaban fascinados por la rpida introduccin de nueva funcionalidad provista por los proveedores Saas, mientras que nosotros notamos que el costo era menor en comparacin de mantener sistemas legados internos. A travs de los ltimos aos, nosotros mismos nos hemos convertido en proveedores SaaS para la empresa. La mayora de las aplicaciones que ofrecemos en realidad solo son mash-ups que combinan servicios de negocio granulares. La mayora de nuestros usuarios no sabe si un servicio est siendo provisto por un ERP, el sistema de comercio electrnico o una fuente de datos externa. Simplemente se suscriben a los servicios que necesitan para hacer su trabajo. Otro de los grandes beneficios del cmputo en la nube en nuestra organizacin es que liber mucho del tiempo que usabamos para administrar la infraestructura. Hemos redireccionado ese tiempo a administrar la informacin y alimentarla a nuestras aplicaciones, lo cual ha tenido un gran impacto en el negocio. Vivimos en un mundo radicalmente diferente al que exista en el 2010. Ya no dedicamos el 60% de nuestro presupuesto a simplemente mantener funcionando los sistemas legados. Ahora dedicamos ese mismo porcentaje a entregar nuevos servicios aplicativos y datos limpios a nuestros usuarios. El staff est mucho ms contento ya que estn conscientes de que generan valor real para el negocio. Tambin estamos mucho ms cerca de ese estado mtico de alineacin de TI y negocio. Este artculo fue originalmente publicado en Cloudbook.net y se encuentra disponible en http://swgu. ru/sg3410. Esta versin fue traducida y editada por SG con el permiso del autor.

Por Mark Settle

.PRCTICAS usaBiLidad

La Navegacin y los Esquemas de Organizacin de la Informacin Por Pamela Rodrguez


a definicin de una arquitectura de informacin slida es quiz el paso ms importante a realizar en cualquier proyecto. Una vez que ha sido establecida, es momento de pasar a otros aspectos estructurales como lo son la navegacin y la organizacin de la informacin, dos factores muy importantes de los cuales depender el que la arquitectura previamente definida sea asimilada por el usuario. La arquitectura establecida ya define las principales rutas de navegacin que se manejarn, mas no define la manera en la que estas sern presentadas para el usuario. Tambin es importante mantener en mente que no existe una nica manera de llegar a un destino dentro del proyecto, sobre todo si su contenido es de alta relevancia.

Organizacin del contenido

Antes de comenzar a pensar en los tipos de navegacin y en las presentaciones de los mismos, es necesario establecer los esquemas para organizar el contenido que, aunque puede no estar completado en su totalidad, ya fue definido de manera general en la arquitectura de informacin. El mayor seccionamiento de la informacin se lleva a cabo por medio de esquemas de navegacin subjetivos, los cuales dependen de la ndole del proyecto. Uno de estos esquemas comprende una organizacin por temas o categoras definidos con base en caractersticas o clasificaciones en comn del contenido. Un ejemplo claro de este esquema es prcticamente cualquier sitio web de comercio electrnico asociado a una tienda departamental. La amplia gama de productos es clasificada por categoras (libros, discos, ropa, accesorios, entre otros). Otra manera de organizar contenido es por tareas, es decir, actividades posibles a realizar por el usuario dentro del sistema. Google Docs, la aplicacin web de manejo de documentos auspiciada por Google, tiene un men de opciones dividiendo la creacin de los diferentes tipos de documentos existentes (crear hoja de estilo, crear documento de texto, entre otros). Sin embargo, y aunque los mtodos anteriores son de gran utilidad, tambin es importante tener en cuenta que la presentacin de la informacin (sobre todo en web, donde la atencin del usuario es limitada) debe seguir un flujo comn al usuario, de modo que este
34

encuentre lo que busca con el menor esfuerzo posible. Este mtodo de organizacin es el de flujo conversacional que se asegura de que la informacin se presente respondiendo a tiempo las preguntas que el usuario puede ir generando a travs de su experiencia. El sitio de Mint.com lleva a cabo esta clasificacin de manera muy efectiva. Al entrar al sitio, la primera opcin del men responde a una pregunta que cualquier lector que no haya escuchado hablar de Mint antes debe estar hacindose en este momento, y est etiquetada como tal: Qu es Mint? Una vez que ya se conoce esto, la siguiente interrogante es Cmo funciona?, la cual corresponde a la segunda opcin del men. Existen otras maneras de clasificar la informacin cuando se manejan grandes volmenes de la misma, las cuales resultan ms objetivas. El esquema alfabtico, por ejemplo, debe ser utilizado con cuidado pues no siempre resulta efectivo. Funciona cuando, por ejemplo, se presenta un listado de autores de novelas mas no funciona para un listado de pases de nacionalidad de un usuario, puesto que un estudio de mercado podra arrojar que el mayor porcentaje de usuarios es proveniente de Mxico y por ello poner este pas al principio resultara ms congruente. Otro ejemplo de organizacin objetiva es el esquema cronolgico, utilizado comnmente para archivar los artculos de un blog, presentados por orden de publicacin del ms reciente al ms antiguo.

Los distintos tipos de navegacin

Trabajando en conjunto con los esquemas de organizacin de la informacin, existen distintas maneras de manejar la navegacin dentro de un proyecto de desarrollo, considerando la relevancia de los destinos comprendidos por cada sistema de navegacin a utilizar. En primera instancia est el sistema global de navegacin, el cual no solo es el ms relevante si no tambin el ms sencillo de comprender. Esta navegacin incluye las ligas que estarn presentes en todas las pginas o pantallas dentro de nuestro proyecto. Por esta razn se encuentra siempre claramente separado del resto del contenido, formando parte de la plantilla general del diseo de las pantallas. Adicionalmente est el sistema de navegacin local, el cual tambin suele formar parte de la plantilla de diseo (es decir, visualmen-

a vEcEs los sistEMas dE NavEgaciN soN coMo los arMarios. Hay cosas colgaNdo dENtro quE No Nos sirvEN y NuNca ENcoNtraMos lo quE EstaMos buscaNdo.

te separado del contenido cambiante de la pgina o pantalla), pero las ligas que lo conforman varan dependiendo de la seccin. Ilustrando este punto, las opciones locales dentro de la seccin de Quines Somos? dentro de un sitio web (Historia, Visin, Misin, entre otras similares) no sern las mismas que aquellas de la seccin de Qu Hacemos? (Proceso, Metodologa, Herramientas, entre otras). Es importante definir qu secciones necesitarn manejar navegacin local por su complejidad o robustez y qu ligas comprender esta navegacin en cada una de ellas. Otro sistema de navegacin de apoyo es el sistema de navegacin de cortesa, cuya representacin es fcil de localizar dentro de los sitios web existentes en la actualidad. Se trata del conjunto de ligas que aparece en la parte inferior de todas las pantallas, comnmente fijo en todo el sitio al igual que la navegacin global. Comprende ligas a informacin adicional o de cortesa como lo son los trminos y condiciones de uso, contacto de la empresa, avisos legales, etctera. Por otra parte, todas las ligas dentro del resto del contenido (entre los prrafos, botones, etc.) forman parte del sistema de navegacin contextual. Y existen tambin los sistemas de navegacin adicionales, que proveen alternativas organizacionales del contenido de un proyecto. Estos son los mapas de sitio, los glosarios y los ndices de conceptos, dependiendo del tipo de contenido que se est manejando. Posteriormente, al avanzar ms en el proceso de diseo de una interfaz, la navegacin traer a la mesa consideraciones que involucrarn principalmente la correcta aplicacin de la primera heurstica de Nielsen que tiene que ver con la visibilidad de estado del sistema: en todo momento, el usuario debe tener muy claro qu camino fue el que sigui para llegar hasta donde se encuentra y saber exactamente dnde se encuentra.

Resumiendo

Existen muchos argumentos que ayudaran a resumir la importancia real de tener un buen diseo de navegacin, pero quiz uno de los ms efectivos se resume en una actualizacin reciente de Twitter del consultor estadounidense Jared M. Spool: A veces los sistemas de navegacin son como los armarios. Hay cosas colgando dentro que no nos sirven y nunca encontramos lo que estamos buscando. Lo principal de trabajar a conciencia en el diseo de la navegacin de un proyecto es, precisamente, hacer todo lo posible por no terminar diseando un armario convencional.
.BIO
Pamela Rodrguez es egresada de la Universidad de Monterrey de la carrera de Ingeniera en sistemas computacionales con estudios avanzados en diseo web. Actualmente es Diseadora de interfaces para aplicaciones mviles en Naranya Apphouse, docente, conferencista y autora de artculos relacionados. @thepam http://thepam.blogspot.com

.PRCTICAS PrueBa de sofTware

Un Buen Inicio para las

Pruebas de Seguridad
Por Sandra Berenice Ruiz Eguino y Miguel ngel Corts Dueas

uso de nslookup para extraccin de informacin inicial del

l rpido crecimiento que en aos recientes ha tenido el uso de las aplicaciones web, ha trado como consecuencia que cada vez ms informacin de vital importancia sea almacenada y procesada por dichos sistemas. Las transacciones a travs de Internet que hoy en da se realizan dentro de estas aplicaciones pueden incluir desde informacin personal, datos laborales, nmeros de tarjetas de crdito hasta informacin empresarial o gubernamental de carcter confidencial. En este contexto, la realizacin de pruebas seguridad a estas aplicaciones adquiere una gran relevancia, ya que nos ayudan a identificar vulnerabilidades en las mismas y que en un momento dado pudieran permitir la explotacin de informacin de manera malintencionada, como por ejemplo SQL Injection, Crosssite Scripting XSS-, Directory Traversal, software con versiones no actualizadas, desbordamientos de bfer, ataque de denegacin de servicio, pginas con informacin tcnica sensible/datos sensibles sin cifrar, etc. Si no se atienden dichas vulnerabilidades pueden derivar en accesos no autorizados, filtraciones no deseadas de datos confidenciales o incluso prdida en la integridad de los mismos, entre otras implicaciones mayores. Una de las actividades que se recomienda llevar a cabo en primera instancia cuando nos es asignado un proyecto de Pruebas de Seguridad, es recabar la mayor cantidad de informacin posible sobre los .BIO objetivos con que estaremos trabaSandra Berenice Ruiz Eguino es Directora de Operaciones de jando. Esta recopilacin inicial nos e-Quallity, adems ha participado como Consultora Senior en proyecayuda a tener datos ms concisos sotos de mejora de organizaciones bre el SUT (System Under Test) con de Prueba de Software. Cuenta con certificacin internacional en Prueel cual interactuaremos. En otras pabas por el ASTQB. Se ha desempeado tambin como Ingeniero de labras, entre ms informacin tenPruebas Senior, Lder de Proyectos, gamos sobre el sistema o aplicacin Administradora de Proyectos nacionales e internacionales, analista que estaremos probando, mejor ser y desarrolladora. Ha sido profesora de la Universidad Autnoma de la estrategia que definamos para Guadalajara (UAG), donde realiz sus estudios de Maestra en Ciendisear y ejecutar nuestras Pruebas cias Computacionales. de Seguridad. Como resultado de lo anterior, se incrementarn susMiguel ngel Corts Dueas es tancialmente las probabilidades de Lder Tcnico de Proyectos de encontrar un mayor nmero de vulPruebas y Consultor Especialista en Pruebas de Seguridad en enerabilidades en el SUT. La era de Quallity. Cuenta con certificacin internacional en Pruebas por el Internet en la que actualmente viviASTQB, as como certificacin CEH (Certified Ethical Hacker) por el EC mos nos otorga la facilidad de obteCouncil. En su trayectoria profesioner pequeos trozos de informacin nal ha participado tambin en proyectos nacionales y en el extranjero sobre casi cualquier cosa, desde difecomo Ingeniero de Pruebas Senior, realizando pruebas funcionales rentes y muchas veces insospechadas manuales y automatizadas. fuentes. Es posible que en un principio, dichos trozos de informacin

sut

carezcan de sentido pero, al igual que en un rompecabezas, conforme se van juntando pueden ir adquiriendo relevancia como un todo. Por ejemplo, una muy buena herramienta con la que podemos iniciar recabando informacin sobre el sistema objetivo, es Nslookup (Name Server Lookup), tcnicamente es una herramienta administrativa que permite diagnosticar y solucionar problemas que se pueden presentar con los servidores DNS. Es por lo anterior, que nslookup puede ser una muy buena fuente de informacin inicial sobre un objetivo ya que, como veremos a continuacin, nos permite resolver nombres de host o dominios a direcciones IP y viceversa, pero adems nos ayuda a identificar otros elementos importantes dentro de una red como lo son servidores de correo, servidores de nombres de dominio, etc. En los entornos Windows, Unix y Linux, nslookup normalmente se encuentra disponible a travs de la lnea de comando, ya que se instala por defecto junto con la pila de protocolos TCP / IP. Esto nos facilita un poco ms las cosas, ya que no es necesario realizar la descarga e instalacin de ningn software adicional al que ya tenemos instalado en nuestra computadora. Cuando lo usamos sin ningn parmetro, nslookup nos devuelve en primera instancia tanto el nombre como la direccin IP del servidor DNS al que nos encontramos conectados localmente. Despus de que nos muestra dicha informacin, se despliega en pantalla el prompt del programa, representado por el signo de mayor que (>). Cuando este prompt aparece, nos indica que estamos en el modo de ejecucin interactivo de nslookup. Si deseramos trabajar con el modo no interactivo, bastara solamente con utilizar el comando acompaado de los parmetros correspondientes, por ejemplo: nslookup [- opciones] [nombre_de_ host] [nombre_de_servidor]. Esto, slo nos regresara la respuesta a dicha solicitud. Sin embargo, para mayor comodidad y conveniencia, normalmente se usa el modo interactivo. Una vez que estamos en el modo interactivo, podemos simplemente teclear despus del prompt, el nombre del host o dominio sobre el cual queremos solicitar informacin. Por ejemplo, www.dominiodeprueba.com, como se muestra a continuacin: > www.dominiodeprueba.com Servidor: UnKnown Address: 192.168.1.254 Respuesta no autoritativa: Nombre: www.l.dominiodeprueba.com Addresses: 192.168.1.99, 192.168.1.104, 192.168.1.103, 192.168.1.147, 192.168.1.106, 192.168.1.105 Aliases: www.dominiodeprueba.com

36

PrueBa de sofTware

.PRCTICAS

Como podemos ver, nslookup nos devuelve las distintas direcciones IP asociadas al host o dominio capturado, en este caso www. dominiodeprueba.com. En otras palabras, se realiza una sencilla resolucin de nombre a direccin IP. De esta manera, contando solamente con la URL del sistema, podemos resolver su IP o rango de direcciones. De manera inversa, si al comando nslookup lo acompaamos con una direccin IP en lugar del nombre del host o un dominio, nos devolver como resultado el nombre del host o dominio asociado a la direccin IP ingresada. Ahora bien, en el resultado obtenido, el servidor DNS local (192.168.1.254) es el servidor que por defecto nos est respondiendo nuestras solicitudes. Esto debido a que no hemos realizado ninguna modificacin a la configuracin inicial del programa. Sin embargo, esto puede ser modificado de manera muy sencilla utilizando el comando server como lo muestra el siguiente extracto en el cual asignamos como nuevo servidor DNS, al ubicado en la direccin 192.168.100.1 para que sea l quien ahora atienda nuestras solicitudes de informacin: > server 192.168.100.1 Servidor predeterminado: dns-publico-prueba.com Address: 192.168.100.1

Adicional a los registros de recursos DNS con valor MX existen ms valores que pueden ser asignados con los comandos set type que nos permiten obtener informacin especfica sobre otros elementos tal y como lo muestra la siguiente tabla:
Valor Modo de Uso Descripcin

>set type=A

Obtiene Informacin de un host de la red. Es el modo de bsqueda que viene predeterminado en nslookup.

ANY

>set type=ANY

Especifica que se regresan resultados de todos los tipos de datos, no de uno en particular.

CNAME

>set type=CNAME

Permite obtener informacin relacionada con los nombres cannicos de un alias.

MX

>set type=MX

Como se explic arriba, permite obtener informacin relacionada con l o los servidores de correo de un dominio.

NS

>set type=NS

Especifica que se regresen resultados sobre l o los servidores de nombres relacionados

>set type=MX Las bsquedas que se lleven a cabo despus de que se estableci el valor MX, retornarn solamente los servidores de correo (si es que existen) que se localicen en el dominio ingresado. Por ejemplo, la siguiente combinacin de comandos, devolver los servidores de correo que existan dentro del dominio dominiodeprueba.com como se muestra a continuacin: >set type=MX >dominiodeprueba.com dominiodeprueba.com MX preference m1.mx.dominiodeprueba.com dominiodeprueba.com MX preference m2.mx.dominiodeprueba.com dominiodeprueba.com MX preference m3.mx.dominiodeprueba.com dominiodeprueba.com MX preference mx.dominiodeprueba.com

= 20, mail exchanger = = 30, mail exchanger = = 40, mail exchanger = = 10, mail exchanger =

Una vez obtenida la informacin anterior, estaremos en posibilidades de definir con mayor claridad los objetivos sobre los cuales enfocaremos nuestro mayor esfuerzo de pruebas. A pesar de ser una herramienta que ha estado disponible desde hace un tiempo considerable, de carecer de una interfaz grfica que haga ms amigable su uso y de la existencia de muchas nuevas aplicaciones que pueden reemplazarla fcilmente, nslookup cumple su cometido de ayudar, en muy buena manera, a obtener informacin inicial importante que puede ser empleada para la planeacin y posterior ejecucin de nuestras Pruebas de Seguridad. Despus de todo, es muy probable que muchas de las aplicaciones que actualmente estn en el mercado destinadas al escaneo de vulnerabilidades o pruebas de penetracin, en algn punto de su estructura interna contengan la funcionalidad del discreto pero efectivo nslookup.

37

www.sg.com.mx |

A pesar de lo anterior, las funciones que nos ofrece nslookup no se limitan a la resolucin de dominios. Las combinaciones de comandos set type nos permiten realizar bsquedas sobre ciertos registros de recursos DNS en especfico. Por ejemplo, un registro de recursos DNS que puede ser de particular inters, es el representado por el valor MX el cual corresponde a un servidor de correo (Mail eXchange). La sintaxis de uso es la siguiente:

SOA

>set type=SOA

Especifica que se obtengan resultados relacionados con el campo SOA (Start of Authority) de un dominio.

Software Guru

al dominio seleccionado.

.PRCTICAS ProjecT managemenT

Estimacin de Costos:
un vistazo a

cocomo ii

Por Hctor Cuesta-Arvizu y Jos Sergio Ruz Castilla

Ese argumento es muy comn en el desarrollo de software y el hecho de fijar la fecha de entrega antes de establecer los requisitos, es el problema ms antiguo de la ingeniera de software, pero si ya estamos consientes de todo esto por qu la improvisacin parece ser el estndar? y por qu no se tienen procesos de estimacin bien definidos? Hoy en da existen diversas herramientas y metodologas que nos permiten estimar costos como SPR KnowledgePlan de Capers Jones o COCOMO II de Barry Boehm, por comentar algunos. Sin embargo fenmenos como el Proyecto interminable y la Marcha de la muerte siguen siendo comunes en muchos desarrollos. Existen muchos factores que afectan las estimaciones de costo como: Incertidumbre en los requerimientos. Trminos contractuales rgidos. Salud financiera (ganar licitaciones sacrificando costo y tiempo). Falta de experiencia con X tecnologa. No existe una forma simple de calcular el esfuerzo requerido para desarrollar un proyecto de software. Las estimaciones iniciales se hacen bajo la base a la definicin de requisitos que el cliente provee a un alto nivel (funcionalidades o pantallas). Los pasos tpicos en una estimacin son: 1.Anlisis de los requisitos. 2.Prediccin del tamao. 3.Descripcin de las Actividades. 4.Estimacin de fallas potenciales y mtodos de eliminacin de defectos en el software. 5.Estimacin de requisitos del personal. 6.Ajuste de suposiciones basadas en capacidades y experiencia. 7.Estimacin del esfuerzo y fechas lmite. 8.Estimacin de costos del desarrollo. 9.Estimacin de costos de mantenimiento y mejora. A medida de que los proyectos de software aumentan en complejidad, se observa que no existe una relacin simple entre el precio de software al cliente y los costos involucrados en el desarrollo, as como la falsa creencia que hay una relacin entre el nmero de desarrolladores contra el nmero de funcionalidades del proyecto. Por eso y para facilitar el proceso de estimacin se han establecido a lo largo del tiempo, mtricas que ayudan a dar una idea aproximada del tamao del software:

l Cliente dice: Te damos tiempos lmite razonables! Por qu no puedes cumplirlos?

Medidas relacionadas con el tamao del cdigo ( LOC - Lines of code). Esta forma de medir el tamao de un software era utilizado cuando los lenguajes de programacin, patrones de desarrollo y entornos de desarrollo (IDE), no estaban ampliamente desarrollados. Hoy en da es imprctico tratar de estimar el software a travs de sus lneas de cdigo ya que depende de la experiencia de los programadores o si hablamos de lenguajes de programacin dinmicos como Ruby, Scala y Groovy o herramientas e IDEs que facilitan gran parte del trabajo de programacin. Medidas relacionadas con la funcin (UFC Puntos de Funcin). El total de puntos de funcin no es una caracterstica simple sino que es una combinacin de caractersticas del software a las cuales se les asigna un valor que cambia dependiendo de su complejidad.UFC es igual a la suma de los n elementos evaluados por el peso asignado al tipo de funcin. Sin embargo a lo largo del proyecto las funciones cambian, las mtricas de puntos de funcin tienen en cuenta esto y multiplican los UFC iniciales por un factor de complejidad (asignndoles un factor de peso que va desde 3 a 15 puntos). Una desventaja de los puntos de funcin se presenta cuando el sistema est orientado por eventos. Por eso algunos autores piensan que UFC no es muy til para medir productividad. Los Puntos de Objeto (PO). Los PO se utilizan en el modelo de estimacin Cocomo II con el nombre de Puntos de Aplicacin. Estos son una alternativa a los UFC, y son usados en los lenguajes orientados a objetos y de scripts. Dan valor a cada pantalla dependiendo de su complejidad: simples = 1, medianamente complejas = 2, muy complejas = 3. Los reportes van de 2 a 8 dependiendo del nivel de complejidad, y los mdulos en lenguaje imperativo como Java o C++ se contabilizan como 10. Esto puede ser relacionado directamente a las historias de usuario de algunas metodologas agiles con lo cual facilita la estimacin de la iteracin.

Modelo Constructivo de Costo: COCOMO II

Uno de los modelos de estimacin ms usados es COCOMO (Constructive Cost Model) creado por el Dr. Barry Boehm. COCOMO apareci por primera vez en su libro Software Engineering Economics [1] en 1981. En 1999 se defini la segunda versin del modelo que toma en cuenta el proyecto, el producto, el hardware y la experiencia del equipo de desarrollo en sus frmulas de estimacin de costo, incluyendo mecanismos de prediccin de tiempo. Cocomo II provee niveles que nos permiten hacer estimaciones en diferentes momentos del desarrollo ya que la estimacin de costos debe
38

.PRCTICAS ProjecT managemenT

El

softwarE tiENE uNa tasa dE crEciMiENto dE los rEquEriMiENtos dEl sistEMa ENtrE El 2 y El 5 por ciENto MENsual

de ser un proceso dinmico a lo largo del desarrollo, actualizando constantemente las variables, la evolucin del equipo de desarrollo, las herramientas y lenguajes involucrados. Los distintos niveles son: 1. Construccin de prototipos. Las estimaciones de tamao estn basadas en puntos de aplicacin con base en componentes reutilizables, prototipos y la frmula para estimar el esfuerzo requerido es muy simple: tamao / productividad. 2. Diseo inicial. Est basado en los requerimientos originales del sistema a un alto nivel (pantallas, reportes, procesos, transacciones) lo que son traducidos a puntos de aplicacin, esto nos sirve para hacer una prediccin temprana del costo. 3. Reutilizacin. Este nivel se utiliza para calcular el esfuerzo requerido para integrar el cdigo generado por los IDEs o herramientas de generacin de cdigo reutilizable como Spring Roo o Genexus por ejemplo, tomando en cuenta componentes reutilizables que facilitan el desarrollo como Apache Commons. 4. Post-arquitectura. Ya diseado el sistema se pueden hacer estimaciones ms precisas del tamao del software, aqu es importante sealar que el software tiene una tasa de crecimiento de los requerimientos del sistema entre el 2 y el 5 por ciento mensual, por lo cual no es posible hacer una estimacin exacta pero las predicciones de costo se pueden acercar mucho a la realidad gracias a la aplicacin de mtricas que nos permiten tener una variacin muy pequea con respecto al producto final. Cocomo est basado en frmulas para hacer las estimaciones, vase la figura 1 donde se estima el esfuerzo del personal por mes (PM), despus se hace la estimacin del tamao del proyecto (SIZE) y finalmente se obtiene una proyeccin del esfuerzo requerido (B) contemplando los factores involucrados (SF).

Obviamente el realizar los clculos manualmente es una tarea lenta y tediosa por lo cual existen muchas aplicaciones que se encargan de realizar todas las frmulas, como USC COCOMO II que es la aplicacin de la pgina oficial de COCOMO. Podemos descargar gratuitamente el software en http://swgu.ru/sg3414

Conclusin

Referencias:
[1] B. Boehm. Software Engineering Economics. Prentice Hall, 1981. [2] C. Jones. Estimating Software Costs. McGraw-Hill, 2007. [3] COCOMO II Model Definition Manual. Center for Software Engineering, USC. [4] B. Boehm, C. Abts, et al. Software Cost Estimation with COCOMO II. Prentice Hall, 2000.

.BIO
Hctor Cuesta-Arvizu es Lic. en Informtica y actualmente cursa la maestra en ciencias de la computacin en la UAEM Texcoco. Cuenta con seis aos de experiencia desarrollando y administrando proyectos de software en el mbito de manufactura y recursos humanos. Adicionalmente se desempea como instructor de TI para Nyce en el rea de base de datos e ingeniera de software. @hmcuesta M. en C. Jos Sergio Ruz Castilla es Profesor Investigador de la Universidad Autnoma del Estado de Mxico, estudia el Doctorado en Ingeniera de Software y trabaja en proyectos de Ingeniera de Software y Sistemas de Gestin del Conocimiento. Figura 1 Estimacin de esfuerzo [3]

39

www.sg.com.mx |

La estimacin de costos es una actividad muy importante en el desarrollo de software. Esta actividad no es esttica sino que cambia en diferentes puntos del ciclo de vida del desarrollo. Se tienen que hacer estimaciones desde diferentes puntos de vista, desde la prediccin de costos hasta la retrospectiva de comportamiento del costo, para lo cual las herramientas de estimacin nos ayudan a agilizar la tarea. Sin duda el poder hacer predicciones con respecto al costo del software nos da ventajas que facilitan el xito de un proyecto, sin embargo esto no debe de ser exhaustivo ya que se tienen variables que el modelo no contempla totalmente como la incertidumbre, la complejidad o factores humanos de los cuales no se puede tener control, por lo cual se deben tomar en cuenta los riesgos del proceso de desarrollo de software. Una de las ventajas de COCOMO es el poder medir el comportamiento de costo de un proyecto de software de forma interna para la empresa de desarrollo. Lo que nos permite tener un referente en diferentes puntos del proyecto y as poder comprobar que las proyecciones de costo originales se cumplan.

Software Guru

.PRCTICAS arquiTecTura

Lneas de Productos de Software


a arquitectura de software es el resultado de un esfuerzo importante y su desarrollo puede representar una parte considerable del trabajo que se realiza en un proyecto de desarrollo. De lo anterior surge la pregunta, habr manera de aprovechar el esfuerzo que se hace respecto al desarrollo de la arquitectura de un sistema en el desarrollo de otros sistemas similares? Las lneas de productos de software buscan justamente lograr promover la reutilizacin sistemtica de artefactos de los cuales la arquitectura es uno de los ms importantes. Este enfoque busca tener distintos beneficios asociados a la reutilizacin como pueden ser la reduccin del tiempo de desarrollo (pues ya no se tienen que desarrollar ciertas partes del sistema), y la mejora de la calidad (pues se incorporan partes que ya han sido verificadas previamente). En esta ocasin hablaremos al respecto de ste tema.

Por Humberto Cervantes

temtica. Dada su naturaleza, la reutilizacin oportunista presenta beneficios muy variables, pues todo depende de que en un momento dado se identifiquen posibles artefactos que puedan ser reutilizados. A nivel de una organizacin, lo deseable es lograr un enfoque de reutilizacin sistemtica con el fin de lograr diversos beneficios asociados con retomar artefactos previamente construidos en cada desarrollo nuevo que se realiza.

Lneas de productos

Reutilizacin

En el desarrollo de software, la reutilizacin se refiere a tomar uno o ms artefactos realizados como parte de un desarrollo y utilizarlos nuevamente en el desarrollo de otro sistema. La reutilizacin no es un concepto nuevo y a lo largo de la historia del desarrollo de sistemas, han aparecido distintas tcnicas que han facilitado de alguna manera la reutilizacin de artefactos de desarrollo de granularidad cada vez mayor, como lo muestra la figura 1:

El concepto de lneas de productos busca justamente lograr un enfoque de reutilizacin sistemtico dentro de una organizacin de desarrollo. ste es un concepto que se origin, y que se usa frecuentemente, en industrias distintas al software. En la industria automotriz, por ejemplo, es comn que un fabricante produzca distintas variantes de un vehculo (o productos) a partir de una base comn que se reutiliza en todas estas variantes. De acuerdo al SEI (Software Engineer Institute), una lnea de productos de software se refiere a un conjunto de sistemas de software que comparten caractersticas y que son desarrollados a partir de un conjunto comn de bienes ncleo (core assets). De la anterior definicin es importante subrayar que los productos dentro de la lnea de productos son los distintos sistemas y que los bienes ncleo son las partes reutilizables que permitirn desarrollar los productos. Los bienes ncleo son la base de la lnea de productos e incluyen entre otros la arquitectura, componentes reutilizables, modelos de dominio, requerimientos, documentacin, planes de prueba, etc. Un aspecto importante a considerar dentro de la lnea de productos es que se debe establecer un alcance en donde se describe qu productos son parte de la lnea.

Actividades del desarrollo de lneas de producto

Figura1.

Tambin de acuerdo al SEI, el desarrollo de lneas de productos involucra tres actividades principales: el desarrollo de los bienes ncleo, el desarrollo de los productos y la administracin, y estas actividades estn ntimamente ligadas entre ellas, como se muestra en la figura 2:
.BIO

El Dr. Humberto Cervantes es profesor-investigador en la UAM-Iztapalapa. Ha realizado investigacin en temas relacionados con arquitectura de software desde el ao 2000 y en aos recientes se ha enfocado en el estudio y la aplicacin de mtodos que apoyen al desarrollo de arquitectura de software dentro de la industria Mexicana. www.humbertocervantes.net

An con las tcnicas antes mencionadas, de manera general, la reutilizacin frecuentemente se realiza de manera oportunista, esto es que si durante el desarrollo los miembros del equipo de desarrollo ven la posibilidad de reutilizar algn artefacto entonces lo hacen, pero eso no ocurre de manera sis40

Figura 2.

arquiTecTura

.PRCTICAS

Habr

MaNEra dE aprovEcHar El EsfuErzo quE sE HacE rEspEcto al dEsarrollo dE la arquitEctura dE uN sistEMa EN El dEsarrollo dE otros sistEMas siMilarEs?

A continuacin se describen estas actividades en mayor detalle: El desarrollo de bienes ncleo se refiere al establecimiento de las partes que sern reutilizadas. Cada uno de estos bienes debe ir acompaado de un proceso que explique la manera en que cada parte se usa al momento de incorporarla en un producto especfico. Por otra parte, se establecen planes de produccin que describen la manera en que los productos especficos son generados a partir de los bienes ncleo. El desarrollo de productos cubre el objetivo ltimo de la lnea de producto: producir sistemas especficos dentro del alcance definido a partir de los bienes ncleo. Los insumos para esta actividad son los bienes ncleo, los procesos asociados a los bienes, los planes de produccin y los requerimientos especficos a cada producto. La administracin juega un papel fundamental en la implantacin de una lnea de productos. La administracin ocurre a un nivel tcnico y organizacional. A nivel tcnico, cubre tanto la supervisin del desarrollo de bienes ncleo como de productos especficos. A nivel organizacional orquesta el esfuerzo general de la lnea de productos.

retomados para construir una gran variedad de productos especficos. Los productos especficos se construyen a partir de plug-ins que son conectados a la plataforma. Un aspecto interesante de Eclipse es que los plug-ins pueden, a su vez, definir puntos de extensin por lo cual un producto especfico, conformado por la plataforma Eclipse y una serie de plug-ins, puede volverse a su vez un conjunto de bienes ncleo para una lnea de productos ms especializada. Un ejemplo de esto se puede observar en un producto como EclipseUML, una herramienta UML construida por encima de la plataforma Eclipse (http://www.ejb3.org/). De la lnea de producto particular de EclipseUML se derivan dos productos especficos: el Viewer y el Editor. La parte administrativa de la lnea de producto que establece la plataforma Eclipse se puede apreciar en la administracin individual tanto del proyecto, que corresponde al desarrollo de la plataforma Eclipse, como la administracin de los productos especficos que se producen por encima de la plataforma. La enorme variedad de aplicaciones sofisticadas construidas sobre la plataforma Eclipse que existen hoy en da sirven de testimonio del xito de este enfoque.
Software Guru

En conclusin

Arquitectura y lneas de producto

La arquitectura es un elemento clave dentro de la coleccin de bienes ncleo pues ser compartida por los distintos productos de una lnea particular. La arquitectura de una lnea de productos es distinta a una arquitectura tpica pues para permitir la construccin de distintos productos por encima de ella, debe definirse una serie de puntos de variacin que son necesarios para poder crear los distintos productos. En este tipo de arquitecturas, uno de los atributos de calidad ms influyentes es entonces el que sea modificable.

Un ejemplo

Un ejemplo prctico de lnea de productos puede observarse en la plataforma Eclipse que sirve de base al popular entorno de desarrollo (IDE) del mismo nombre (http://www.eclipse.org/platform/). La plataforma Eclipse est basada en una arquitectura extensible a base de plug-ins y la plataforma establece una serie de puntos de extensin en los cuales se conectan dichos plug-ins. Los puntos de extensin que provee la plataforma representan los puntos de variacin de la arquitectura. Los bienes ncleo son los distintos elementos que conforman a la plataforma Eclipse y son

En Ingeniera de Software frecuentemente se habla de reutilizacin y los avances tecnolgicos de las ltimas dcadas indudablemente han logrado que hoy en da se reutilicen partes con un nivel de granularidad cada vez mayor. Lograr realizar una reutilizacin sistemtica dentro de una organizacin requiere un enfoque especfico y es ah donde las lneas de productos pueden ser de mucha ayuda. La implantacin de un esquema de lnea de productos dentro de una organizacin requiere de un esfuerzo importante, sin embargo los beneficios que puede aportar pueden hacer que realmente valga la pena. Un aspecto central de las lneas de productos es la arquitectura que soporta los distintos productos y sta debe ser realizada tomando en cuenta las posibles variaciones que permitirn generar los productos especficos. Por ltimo, es importante recalcar que al desarrollar una arquitectura para una lnea de producto, es muy conveniente aplicar todas las actividades de desarrollo de arquitectura que hemos tratado en ediciones previas de sta columna.

Referencias
[1] P. Clements y L. Northrop, Software Product Lines: Practices and Patterns, SEI Series in Software Engineering, 2002.

41

www.sg.com.mx |

.PRCTICAS gesTin de riesgos

Administracin Colaborativa de Riesgos


Introduccin
Despus de varios aos trabajando y dando consultora en empresas de diferentes giros, llego a la conclusin de que la administracin de los riesgos es un asunto nicamente de los Project Managers. Son los nicos preocupados por la deteccin y seguimiento de los riesgos de sus proyectos. Esta situacin crea una falta de preocupacin por parte del resto del equipo respecto a los riesgos de su proyecto e imposibilita el anlisis colaborativo y las ventajas que con ste podemos lograr. Esta tcnica surge enfocada en atender esta problemtica, la cual consiste en administrar los riesgos de una manera Colaborativa para que de esta forma todos los miembros del equipo se sientan involucrados y puedan aportar a la identificacin y monitoreo de los riesgos de su proyecto.

Por Leonardo G. Mrak

Figura 1.

Figura 2.

Administracin Colaborativa de Riesgos

Es necesario que el Project Manager coordine la dinmica asumiendo el rol de Facilitador. l ser el encargado de definir los asistentes para las sesiones de identificacin y seguimiento de los riesgos, establecer un lugar con el tamao adecuado para las sesiones, enviar las invitaciones y obtener los recursos necesarios para las sesiones (tarjetas, marcadores, plumas, proyector, etc.). Si existieran asistentes virtuales, ocuparse de que las herramientas de teleconferencia estn disponibles al momento de las sesiones. 1.Identificando Riesgos Propsito: detectar los riesgos por el EQUIPO del proyecto y otros invitados. Consiste en los siguientes pasos: a. Dividir a la audiencia en grupos (si es menor a 6 personas, consi.BIO derar a cada uno de los asistentes Leonardo G. Mrak es consultor en Qualtop, tiene ms de 12 aos de por separado), segn el contexto experiencia dirigiendo proyectos de distinta ndole y apoyando a empresas invitar a otros stakeholders como a mejorar sus procesos de entrega de por ejemplo: gerentes del rea servicios e ingeniera de software. Logr acreditar a la primer empresa en tcnica, representantes del rea Mxico en CMMI for Services Nivel 3 de Madurez. Es ITIL, PMP, form parusuaria, directores y/o gerentes te del primer grupo de habla hispana del rea usuaria, etc. certificado como Kanban Professional y tiene un MBA realizado en Madrid b. Entregar tarjetas a cada uno y Espaa. lmrak@qualtop.com pedir que escriban los riesgos que

detectan, uno por tarjeta. c. Pedir a cada miembro o grupo que peguen los riesgos en una pizarra y los expliquen (ver figura 1). A travs de este ejercicio obtendremos una mayor participacin, una mejor cobertura y una comprensin compartida de las preocupaciones de todos. 2. Agrupando Riesgos Propsito: evitar tener riesgos repetidos o muy parecidos, para eso se utilizar la tcnica de Agrupacin por Afinidad. a. El facilitador leer cada uno de los riesgos y los asistentes indicarn si est relacionado con algn otro colocando la tarjeta del riesgo junto con la del que se relaciona. b. Repetir ste paso con cada uno de los riesgos y lograr el consenso de la agrupacin de ellos. 3. Categorizando Riesgos Propsito: priorizar los riesgos identificados, tener una representacin grfica que proporcione informacin visual clara de los riesgos identificados y evaluados colectivamente por el equipo. a. Dibujar los ejes de Probabilidad/Impacto, considerando en el eje de las y la Probabilidad de ocurrencia del riesgo y en el eje de las x el Impacto del mismo (ver figura 2). b. Pedir a uno de los grupos o asistentes que coloque un riesgo entre los ejes y pasarle la posibilidad de ocurrencia al siguiente. Los riesgos ms graves quedarn en el extremo superior derecho, los riesgos menos crticos en el extremo inferior izquierdo, probablemente no vale la pena preocuparse por ellos (ver figura 3).
42

Figura 3.

c. Los siguientes pueden mover el riesgo anterior, colocar un nuevo riesgo o no hacer nada. d. Repetir ste paso hasta que todos hayan participado y no se necesiten ms movimientos de los riesgos. 4. Monitoreando Riesgos a. Una vez categorizados los riesgos, establecer en conjunto con los asistentes un responsable para cada uno. b. Cada uno de los responsables tomar su riesgo y lo colocar en el Tablero de Amenazas (ver figura 3) segn la estrategia de respuesta que seleccione. c. Cada uno de los responsables establecer en una tarjeta las acciones que se llevarn a cabo de acuerdo a la estrategia de respuesta seleccionada. d. Los riesgos podrn ser cambiados de lugar y sus actividades podrn ser tachadas o alteradas por el responsable de ellos. e. El tablero deber estar en una parte donde mnimamente el equipo pueda observarlo (si existieran miembros que participan de manera remota, utilizar algn software que permita establecer el tablero y el eje cartesiano, para poder administrar los riesgos de manera virtual).

.PRCTICAS gesTin de riesgos

los

projEct MaNagErs soN los Ni cos prEocupados por la dEtEcciN y sEguiMiENto dE los riEsgos dE sus proyEctos .

f. Establecer reuniones regulares en las que se monitorearn los riesgos con el grupo que particip en la identificacin inicial. Durante este monitoreo se revisarn los riesgos que fueron detectados anteriormente y quedaron en el eje de Prioridad/ Impacto como no crticos, ya que pueden cambiar su prioridad en el transcurso del proyecto. Luego se comienza con el paso 1 nuevamente.

las acciones a realizar se utilizan las rosadas y para registrar las acciones que se fueron realizando las verdes. b. Establecer las secciones que contendrn cada una de ellas por ejemplo: Considerar escribir las reglas a un costado del tablero para que estn siempre visibles y cualquiera que vea el tablero lo pueda entender.

Recomendaciones sobre el uso del Tablero de Amenazas

Consideraciones para el facilitador

El Tablero de Amenazas (ver figura 3) consiste en dos filas horizontales aparte de la de Ttulos, una de Por Hacer y otra de Hecho. Tambin contiene una columna por cada estrategia de respuesta a riesgos: Evitar: realizar acciones para remover por completo el riesgo. Transferir: realizar acciones para traspasar el riesgo a otra persona o entidad. Esta estrategia presupone una inversin importante para poder hacer esta transferencia, obviamente que este gasto debera ser mucho menor al que se incurrira si el riesgo se transformara en problema. Uno de los ejemplos ms claros de acciones para esta estrategia es la contratacin de seguros. Aceptar/Contener: el responsable del riesgo no ha identificado otra estrategia adecuada, esto se debe a que no siempre se pueden eliminar todas las amenazas de un proyecto. Esta estrategia de aceptacin puede ser Activa o Pasiva, para el caso de la primera estrategia se establecen actividades de contingencia, mientras que para la segunda el riesgo directamente puede pasar a la fila de Hecho ya que no se llevarn a cabo actividades. Mitigar/Contener: se establecen actividades para disminuir la probabilidad de ocurrencia y/o el impacto del riesgo. Tambin se pueden establecer actividades para la Contingencia, es por eso que en el riesgo 4 de la figura 3 (ver rectngulo con lnea de punto) existen dos tarjetas de acciones asociadas al riesgo, uno relacionada a las actividades de Mitigacin (marcada con una M en el extremo superior derecho) y otro relacionada a las actividades de Contingencia (marcada con una C en el extremo superior derecho). Establecer reglas bsicas: a. El color de las tarjetas pueden indicar algo, por ejemplo para identificar los riesgos se utilizan las amarillas, para establecer

Si hay una gran cantidad de movimiento que puede tomar un tiempo para que los riesgos se estabilicen, sea paciente, deje que el equipo sienta la divergencia en el grupo y permtales decidir cundo es hora de dejar de mover los riesgos. Si hay participantes remotos, dividir los ejes (ver figura 2) en una rejilla de 4x4 y enumere cada celda, pida a cada participante remoto que le diga en qu celda colocar los riesgos. Lo mejor es que lo visual sea compartido, considere el uso de una herramienta de conferencia web y una herramienta que pueda mostrar los ejes de riesgos. Es bueno permitir debates sobre el movimiento que se realizan de los riesgos, siempre que contribuyan a comprender mejor el riesgo y su respuesta. Evite discusiones que no tengan este espritu y obstruyan la dinmica. Busque que todos los participantes colaboren, en grupos grandes preste atencin a los debates internos de los grupos y considere las expresiones de los miembros.

Conclusiones

Para terminar me gustara recordar el significado de la palabra Riesgo, es un evento incierto que puede provocar una prdida, dao o perjuicio. Esto quiere decir que un riesgo no es un problema, ya que el problema es un evento cierto, algo que ya sucedi y que tenemos que solucionar. Esto es lo que hace tan importante desde mi punto de vista a la administracin de riesgos y es por eso que si la ejecutamos de manera correcta y oportuna, nos puede evitar grandes dolores de cabeza. Para lograr esto es necesario que todos los involucrados en el proyecto tengan las capacidades necesarias para realizar una administracin de riesgos eficiente. El contar con diferentes puntos de vista debido a la colaboracin de involucrados con diferentes habilidades, nos permitir aportar mayor valor, construyendo equipos de proyectos altamente proactivos.
44

.COLUMNA cdigo innovare

Desarrollando un Sistema operativo

GNU/Linux
nalizado a la computadora donde se desarroll, sin embargo, cuando se intenta instalar este sistema en otros equipos (laptops, pcs, servidores), se pueden descubrir multitud de problemas que nunca se pensaron encontrar derivado de las siguientes razones: LFS no proporciona desde un principio un mecanismo de administracin de paquetes (rpm, deb, tgz, etc), esto provoca que el mantenimiento del software resulte sumamente complicado de gestionar. La compilacin de los paquetes base del sistema slo incluyen la incorporacin de los soportes mas esenciales del sistema, por lo que posteriormente es probable que se requiera recompilar algn software. Se sugiere en LFS el mecanismo de kernel huge, esto hace que la imagen del ncleo contenga todos los soportes que son requeridos para bootear un sistema, lo anterior resulta prctico para que el sistema bootee rpidamente, pero para distribuir el sistema en otras computadoras no es lo ms recomendable. Se sugiere un ambiente para construir el sistema, pero dicho modelo puede ser mejorado para asegurar el xito de la construccin. Estas son algunas razones de las ms poderosas que me orillaron a disear una metodologa que permita construir un sistema basado en GNU/Linux distribuible , trmino que obedece a la idea de que forme parte de los Sistemas GNU, que pueda ser instalado en una gran variedad de Sistemas y tambin con amplia variedad de Hardware. El resultado de este proceso adems de tener un sistema distribuible hecho desde cero, es tener un sistema igual de confiable que otras distribuciones e incluso con mayor rendimiento en tiempos de respuesta. Retomando parte del mtodo de LFS, el sistema GNU se desarrollar en las siguientes fases, donde se est agregando y modificando la metodologa original de LFS con la experiencia propia para lograr que el sistema sea distribuible:
46

Ing. Jess Arriola Villarreal Coordinador de la Unidad de Desarrollo de Software Libre de INFOTEC. Licenciado en Sistemas de Computacin Administrativa por la UVM titulado con el trabajo Desarrollo Integral Bajo Estndares de Calidad. Cuenta con Certificacin en Foundations ITIL. Desde 2003 colabora en el equipo de Desarrollo y Generacin de Modelos Tecnolgicos elaborando Servicios alrededor de los mismos. jesus.arriola@ infotec.com.mx jesus.arriola@ beakos.org.mx

entro de mi experiencia como especialista y arquitecto en soluciones de seguridad, centro de datos con base tecnolgica en Software libre y GNU/Linux, he conocido diversas distribuciones con muy variadas ideologas y esquemas de negocio. He recorrido desde RedHat desde los aos 90s, pasando por Fedora, Mandrake, Mandriva, Debian, Suse, Slackware, Puppy. He observado maravillosas funcionalidades, ventajas, as como el aprendizaje que un sistema basado en GNU, cobijado por las cuatro libertades del software libre tiene. La simple idea de tener disponible miles de proyectos basados en Software Libre de los cuales he aprendido lo inimaginable me motivo a pensar en la idea de crear una distribucin con sabor propio. Desde que instal mi primer sistema GNU en una computadora he observado que de forma predeterminada mucho software es instalado sin consentimiento del usuario, lo cual pienso que es muy til, ejecutando un simple comando top se puede observar gran nmero de procesos que se estn ejecutando, pero Por qu, qu hacen, se necesitan realmente? Y de aqu se derivan algunas preguntas ms. Cmo est construido el sistema?, con qu soportes se incorpora?, Por qu no puedo tener un sistema que yo mismo construya desde sus herramientas ms indispensables? Aunado a lo anterior ha existido siempre la posibilidad de crear una distribucion tropicalizada, es decir basndose en una distribucin ya hecha, modificar los componentes adecundolos y dndoles un toque personal. Lo anterior es un debate fuerte, ya que desde un principio supe que el desarrollar una distribucin desde cero, involucra un fuerte trabajo posterior debido al mantenimiento que se debe dar a todos los paquetes que integran el sistema. Buscando dentro de internet existe un proyecto llamado Linux From Scratch el cual consiste en una serie de documentos en formato html o pdf. Contiene una metodologa para desarrollar un sistema gnu/linux desde cero. El resultado de esto es un sistema muy perso-

.COLUMNA cdigo innovare

eL resuLTado de esTe
Proceso es Tener un sisTema iguaL de confiaBLe que oTras disTriBuciones e incLuso con mayor rendimienTo en TiemPos de resPuesTa.
1. Implementar el ambiente de desarrollo, donde se prepara un sistema ideal para parchar, adecuar y compilar diversos paquetes de software libre. Este incluye un Sistema anfitrin, o un ambiente virtualizado con un kit de software para desarrollo, una particin, la obtencin de Software y la adecuacin de las variables del sistema. 2. Preparacin de las herramientas indispensables para construccin, lo cual involucra: la biblioteca de Desarrollo GlibC, el compilador GCC, las herramientas GNU bintutils y la incorporacin de los headers del kernel. 3. La construccin de un rbol de dependencias, el cual resultar muy til para la siguiente etapa y para el usuario final. 4. La incorporacin de un sistema de administracin de paquetes, la cual es sumamente importante. Este paso resulta complejo e involucra trabajo extra que al final del desarrollo genera documentacin y un repositorio de software. 5. Se proceder posteriormente a la preparacin (parches/adecuaciones), configuracin, compilacin, creacin de paquetes y su instalacin correspondiente, esto genera al final un sistema base con las herramientas de espacio de usuario ms indispensables. 6. Instalacin de los Scripts de Arranque. En este punto se decidir el tipo de sistema: System V o BSD. Dichos scripts son necesarios para el arranque del sistema. 7. Hacer el sistema booteable, en esta etapa se incorpora el esquema para agregar el mecanismo Disco en RAM as como la configuracin correcta del kernel, esto es importante porque asegura que el sistema pueda ser instalado en una mayor cantidad de computadoras sin necesidad de hacer adecuaciones sumamente complejas a los componentes del sistema. 8. Se implementa un programa hecho en Script Bash y un conjunto de Scripts del mismo lenguaje, para que el sistema pueda recuperarse creando un LiveCD y un sistema Setup para instalar la distribucin GNU/Linux en otras computadoras. Las metodologas de desarrollo que han utilizado los desarrolladores de sistemas operativos no ha sido publicado en su mayora. Infotec como participe activo en la Sociedad del Conocimiento ha proporcionado los medios necesarios para que se desarrolle por mi parte esta metodologa con el apoyo de otros ingenieros Mexicanos muy talentosos. El resultado es crear sistemas basados en GNU/Linux con funcionalidades equivalentes a otros sistemas y de excelente calidad. Considero que esta metodologa debe ser tomada en cuenta como parte de la formacin de los profesionales en TI, ya que es una carencia que existe dentro de algunas instituciones de educacin superior y esto reforzara fuertemente la preparacin acadmica. Esta metodologa genera un conocimiento impresionante dentro del lector al conocer la forma en la cual un sistema se integra, las funciones de cada uno de sus componentes, las etapas por las cuales una simple llamada del sistema es procesada, y un amplio campo de reas de oportunidad para otros proyectos de Software Libre. El sistema que se genera con esta metodologa es bsico, se describe como Un sistema base, con las herramientas de espacio de usuario bsicas, y con las herramientas ms importantes para el desarrollador, en este momento se puede considerar al sistema obtenido como una metadistribucin porque es una plataforma base, que posteriormente puede ser utilizada como un sistema para usuario final (con ambiente grfico), un sistema de servidor u otro tipo de sistema. Lo que sugiero a partir de este momento es continuar con el desarrollo o construccin de aplicativos de Software Libre, pequeos, de los cuales existe documentacin muy desarrollada, sin olvidar la gestin de paquetes con el mtodo seleccionado.

Por Ing. Jess Arriola Villarreal

47

www.sg.com.mx |

Software Guru

.COLUMNA Tecno-Lgico

La Muerte del

Botn
ficas (Graphical User Interface o GUI), en el que imgenes y metforas del mundo offline como un escritorio, carpetas, archiveros y documentos sustituyen los comandos por un acercamiento ms humano e intuitivo. Los sistemas grficos se basan en el reconocimiento de estas metforas por parte del usuario y de la interaccin basada en suposiciones, en prueba y error as como tambin de controles virtuales como mens, botones y ventanas. El problema con los entornos grficos es que no hay consenso sobre su diseo e implementacin y el usuario se ve forzado a aprender los cambios entre diferentes sistemas, aplicaciones e incluso en las diferentes versiones de los mismos. En los ltimos aos las llamadas Interfaces Naturales (NUI: Natural User Interfaces) se han colocado como las preferidas de la industria de tecnologas de informacin porque favorecen la interaccin de un usuario con la tecnologa sin intermediarios fsicos, como el mouse o el teclado. La idea es hacer la interaccin con la tecnologa lo ms natural y simple posible, reemplazando los acercamientos tradicionales que vienen de las GUI como lo es la idea del botn.

isear interfaces grficas requiere ms trabajo de lo que los desarrolladores y lderes de proyecto les gusta pensar, no nicamente por el tiempo que requiere la produccin de estas interfaces sino porque tambin necesitan pasar un proceso de revisin y pruebas de manera similar al software, pero con criterios y lineamientos completamente diferentes a los que los ingenieros y arquitectos de software estn acostumbrados. Adicional a esto, las formas y maneras en que los usuarios utilizan tanto software como la tecnologa estn cambiando y se estn diversificando: lejos estn los das en que los botones y las teclas eran los puntos focales de interaccin humano-mquina y hoy en da podemos afirmar sin duda que el botn, como concepto, es una especie en peligro de extincin.

Tres tipos de interaccin

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 innovacin tecnolgica, mercadotecnia digital y experiencia de usuario.

El trmino interfaz se utiliza para describir los instrumentos de comunicacin e interaccin entre un sistema y los usuarios que los manejan. El ratn, el teclado y el monitor de una PC son interfaces fsicas, y los elementos que estn en la pantalla, desde ventanas, cajas de dilogo o de texto, iconos y dems son interfaces visuales. Los programas y servicios que corren en una computadora, un mvil o en la web realmente no necesitan interfaces, stas existen para hacer el trabajo de sus usuarios ms sencillo y para que no tengan que invertir demasiado tiempo aprendiendo comandos o realizando operaciones mecnicas una y otra vez. La interfaz es un puente que comunica al sistema con su usuario. Las interfaces de sistemas se han hecho ms sofisticadas con el tiempo, pasando de las incomprensibles tarjetas perforadas de los setentas a las sofisticados ambientes grficos que utilizamos hoy en da, no slo en las computadoras personales sino tambin en las televisiones, en dispositivos mviles y prcticamente en cualquier otro dispositivo digital. En la historia de la computacin hemos visto tres tipos de modelos generales de interaccin conforme la tcnica evoluciona y los usuarios no tecnolgicos se vuelven ms relevantes para la industria: el primero fue aquel de las Interfaces de Lnea de Comando (Command Line Interface o CLI) donde el modelo de interaccin estaba basado en la escritura de comandos en una consola que disparaban acciones en una aplicacin. Este modelo es eficiente pero completamente desconectado del usuario y su buen funcionamiento depende de que tan bien el usuario conozca los comandos o palabras mgicas que lo hacen funcionar. Aunque es un entorno til para un usuario con experiencia tcnica, no es un buen punto de entrada a la tecnologa en trminos de una experiencia positiva o ldica y es percibido ms como una barrera que como una ayuda en la adopcin tecnolgica. El siguiente modelo fue el de las Interfaces de Usuario Gr-

El botn, como lo conocemos, es una abstraccin humana desarrollada durante la revolucin industrial que representa el disparo o ejecucin de una accin: al presionar el botn se activa un proceso y diferentes botones estn asociados con distintos procesos. En las interfaces digitales, desde telfonos inteligentes hasta pginas web, los botones son representados por grficas de diferentes formas para que el usuario tenga opciones de navegacin y accin. El problema con el botn es que, por comn que se haya vuelto, no es un control natural! Los botones y todos sus parientes, los conos, los switches, los links y los banners son solo una aproximacin mental para resolver un problema pero por mucho no es la solucin ms ptima. La enorme cantidad de sistemas, dispositivos y herramientas que usamos hoy en da nos exigen mayor atencin a las interfaces y entre ms botones haya que tocar ms difcil de manejar es un sistema. Un experimento interesante al respecto es el que propone el Institute for Interactive Research con su sitio Dont Click It (www.dontclick.it) en el que se proponen diferentes acercamientos acerca de cmo sustituir el clic en el ratn con gestos y movimientos simples sobre objetivos grficos. El sitio ya tiene buen tiempo publicado -unos 7 aos- y se ha ido enriqueciendo con la interaccin y prueba de miles de usuarios que han experimentado con las interfaces del sitio. Las nuevas interfaces tctiles en computadoras touch y en mviles inteligentes reemplazan el clic por el tap, el flicking, el pinch y otras maneras de interaccin que resultan ms naturales para las personas.
48

Controles Naturales y No-Naturales

El Usuario y su Experiencia Digital

El diseo de interfaces digitales es un punto crucial en la aceptacin o rechazo de un sistema, ya que si este es muy complicado de manejar, lo ms probable es que sus usuarios no lo utilicen porque desde su punto de vista les ocasiona ms problemas que soluciones. La bsqueda de esta experiencia positiva es el motor principal detrs de la evolucin de las interfaces como las conocemos, conforme la tecnologa se democratiza y cada vez ms usuarios que no son expertos en computacin la adoptan, la industria siempre est buscando crear interfaces ms simples, intuitivas y sencillas de utilizar. Llevando el concepto de interfaces naturales al extremo, el usuario ya no necesitar tocar siquiera sus computadoras: estas respondern a la presencia del usuario, a su voz y a sus movimientos. Este tipo de interaccin ir eliminando otros conceptos de las interfaces como las conocemos hoy tales como las contraseas alfanumricas, las identidades basadas en correo electrnico o el uso de mltiples identidades en la Red, volviendo nuestra interaccin con nuestros dispositivos y tambin con la informacin, software y servicios en la Nube mucho ms dinmica y personal. La finalidad del desarrollo de NUI es, por un lado, volver ms accesible la tecnologa a las personas que las estn conociendo por primera vez (personas muy jvenes, mayores o muy pobres) para cerrar la Brecha Digital y por otro lado, eliminar de nuestros procesos mentales la complejidad asociada con utilizar un sistema y permitirnos concentrarnos en simplemente utilizarlos. La siguiente gran brecha digital existir entre los Power Users que tienen aos usando interfaces mecnicas basadas en palancas o botones y las personas que, siendo nativos digitales, aprendieron a utilizar las herramientas tecnolgicas del siglo XXI de manera natural. El reto est, evidentemente, en que las empresas y personas que desarrollan software y sitios web puedan conocer e integrar los elementos de NUI a sus desarrollos para acercarnos cada vez m a una autntica vida digital.

Por Mauricio Angulo

.COLUMNA Programar es un esTiLo de vida

Repensando las

Certificaciones
cosa. Lo cual, claro, no es ningn pecado, pero s es un punto a considerar al evaluarlas. Consideremos dos perfiles en particular Los dos antiperfiles donde, a mi forma de ver, las certificaciones juegan en contra de la mayor parte tanto de individuos como de empresas.

iversas personas me han preguntado qu certificaciones deberan buscar para afianzar su carrera o posicin o cul conviene a una empresa buscar en un prospecto de contratacin. Me llama la atencin principalmente el que asuman la respuesta a un cuestionamiento previo y condicionante a ste: Vale la pena buscar certificaciones? Esta pregunta me puso a pensar en lo relativo a quin las pide (tanto desde el punto de vista del individuo que las persigue como del contratante que las vala), dado el pblico alcanzado por esta revista, creo que puede ser de inters enfocar la columna hacia este tema.

Antiperfil 1: El recin egresado

quien Busca conTraTar a un


ProfesionaL con TrayecToria no Puede LimiTarse a evaLuar en Base a Los cerTificados PresenTados.
Qu es una certificacin?
Para el presente anlisis me centro en las certificaciones como un documento emitido por una entidad comercial no dedicada principalmente a la educacin superior, validando que el sustentante posee el dominio de un conjunto especfico de herramientas o tecnologas (tpicamente, aunque no necesariamente, limitadas a las generadas por la organizacin certificadora). Las certificaciones difieren de otros mtodos de calificacin en que normalmente son otorgadas ante la presentacin y aprobacin de un examen; comnmente no requieren que el sustentante siga un curso. Adems de lo anterior, las certificaciones frecuentemente tienen a diferencia de prcticamente cualquier programa acadmico una validez determinada, ya sea por un tiempo preestablecido, o por estar atadas a tecnologas especficas, con un ciclo de vida y obsolescencia planificado. Y un punto adicional: Las certificaciones, si bien se presentan a sus clientes potenciales como una oportunidad de obtener mejores calificaciones para aumentar sus evaluaciones (redundando directamente en beneficios econmicos), en ningn momento buscan ocultar que son para sus promotores un negocio antes que ninguna otra

El argumento para buscar certificaciones es simple: Si cuando un postulante es evaluado para un puesto laboral, el entrevistador de primer contacto no tiene un perfil tcnico, sino que busca descartar a quien no cumpla con las caractersticas bsicas que busca la empresa, en realidad la primer entrevista real se presenta una vez pasado ese filtro. El Can Cerbero corporativo no permitir el paso del postulante si no cuenta con el altero completo de papeles. Este punto de vista apunta a un postulante novato, probablemente recin egresado de la universidad, sin experiencia laboral en el mundo real, que no ha tejido an redes profesionales y no encuentra una mejor va de acceso. Este punto crece especialmente cuando estos nuevos integrantes de la fuerza laboral buscan emplearse en una de las relativamente pocas grandes empresas consultoras de desarrollo que hay en nuestro pas. Las certificaciones que estn al alcance de un recin egresado, sin experiencia en el campo, son relativamente pocas Y el peso econmico de perseguirlas resulta respectivamente elevado. Muchas universidades han incorporado a los servicios que ofrecen a los alumnos el prepararlos para alguna certificacin bsica y reducir el precio a pagar por ella. Esto, en mi opinin, equivale a que dicha universidad se reconozca incapaz de ofrecer una formacin suficiente para que sus egresados encuentren un puesto de trabajo adecuado y al impulsar una tecnologa especfica demerita la universalidad de la formacin que dio nombre a las universidades desde un principio.

Antiperfil 2: El experto en certificaciones

Gunnar Wolf es administrador de sistemas para el Instituto de Investigaciones Econmicas de la UNAM y desarrollador del proyecto Debian GNU/Linux. www.gwolf.org

Un perfil que nace como consecuencia lgica del anterior es el del experto en certificaciones. Si por cada examen que presento crece mi elegibilidad laboral, por qu no acumularlos? Aprender el material necesario para presentar un examen es, a fin de cuentas, una habilidad que puede ser aprendida y dominada. Si bien muchas certificaciones incluyen la resolucin de problemas prcticos, siguen presentndose en un entorno donde, hasta cierto punto, las situaciones son muy distintas a las de la vida real.
50

Programar es un esTiLo de vida

.COLUMNA

Por otro lado, una persona altamente calificada no necesariamente sabr presentar un examen, cosa que a ninguno de ustedes debe sorprender los ejemplos abundan, traigo ante ustedes a uno en particular, aunque sea slo como evidencia anecdtica: He tenido oportunidad de trabajar con algunas personas verdaderamente talentosas, referencia en el campo de la seguridad y administracin de sistemas, que frecuentemente asesoran a los tcnicos de empresas transnacionales. Uno de ellos intent certificarse en uno de los temas en que es pionero en nuestro pas y no logr aprobarlo. Significa esto acaso que su conocimiento de la tecnologa, las herramientas y los procesos es menor que el de quien s aprob el curso? Definitivamente no. Solamente significa que los procesos mentales que sta persona sigue no se alinean con los que la empresa certificadora sugiere. Y es precisamente esto lo que le ha permitido convertirse en su asesor: El seguir procesos creativos, no buscar dentro de lo predecible y tener un verdadero conocimiento profundo del sistema como un todo.

Alternativas

Y pasando de la crtica a la propuesta, qu puedo aportar tras mi crtica a este modelo? Para un recin egresado, enfrentarse al monstruo corporativo sin experiencia real previa no da espacio a la negociacin. Mientras las empresas sigan imponiendo estos filtros previos a la entrevista real, qu puede hacer quien inicia su carrera profesional? Ser recin egresado no significa no tener experiencia real. Entrar a estudiar una carrera relacionada con la computacin debera indicar una genuina aficin al pensamiento analtico. En nuestro campo, tenemos la gran fortuna de que un aficionado sin estudios, sin equipo profesional y sin cualificaciones formales, puede desarrollar proyectos en casi cualquier mbito del campo. En el cmputo, todos ustedes podrn citar numerosos ejemplos que han contribuido al campo de forma decisiva, sin formacin profesional. Claro, sera iluso pensar que todos coordinramos proyectos de gran envergadura siendo an adolescentes o que impulsar una idea exitosa nos lleve a abandonar los estudios profesionales y saltar a la fama como estrellas de la programacin. S podemos, sin embargo, ir haciendo pblicos los pequeos proyectitos que hacemos, los retos interesantes que vamos resolviendo, los programas que escribimos por gusto. Publicar cdigo, especialmente como software libre, es una muy buena manera de demostrar capacidad profesional, compromiso, capacidad de documentar y de brindar soporte a los usuarios. Es ms, si nuestro proyecto juguete fue adoptado por una distribucin de Linux, esto resulta clara muestra de que otros expertos juzgan nuestro trabajo digno de ser promovido. Respecto al segundo antiperfil, el caso presentado ilustra que las competencias laborales de un profesional con trayectoria no pueden ser juzgadas de manera meramente cuantitativa Los diversos campos relacionados con el cmputo requieren de una gran creatividad, y no pueden ser juzgados como una materia de la escuela, en que el desarrollo del resultado debe ser idntico al que nos fue impartido en clase.

Quien busca contratar a un profesional con trayectoria no puede limitarse a evaluar en base a los certificados presentados. En mi experiencia, las veces que mi recomendacin ha sido requerida para un proceso de seleccin de personal, coloco en ltimo lugar todos los currculos que presentan certificaciones de forma destacada. Nunca me he arrepentido de hacerlo ya que estos tienden a ser los que menos conocimiento real tienen del campo. El que una entrevista laboral para un puesto que requiere conocimientos especializados (sean de un estudiante recin graduado o de un experto) tenga que pasar por un filtro no conocedor de la materia es sntoma de un problema estructural: La tercerizacin a los corporativos de desarrollo de software ha crecido en detrimento de la capacidad de las entidades que las contratan. No con esto digo que deban desaparecer Si bien debe ampliarse la capacidad de respuesta de los departamentos de sistemas de quienes tpicamente contratan a estas empresas (entindase: Ampliarse su tamao, sus reas de especializacin y la seguridad laboral brindada a sus integrantes), muchos de los proyectos podran perfectamente ser encargados ya sea a empresas de escala ms humana (PyMEs) o contratar a grandes empresas verdaderamente especializadas en un ramo especfico. Esto, claro, reducira el tamao de las consultoras Pero aumentara su calidad as como tambin las oportunidades laborales con una justa comparacin basada en mritos reales, ms cerca de quien verdaderamente requiera del servicio. Por otro lado, no todos los proyectos en que participamos por hobby o por encargo puede ser publicado. Sin embargo, permtanme insistir en que la mejor carta de presentacin es el trabajo realizado. En otras reas laborales es comn incluso en algunos pases, obligatoria la pertenencia a colegios de profesionales Cuerpos que establecen las normas mnimas de operacin, calidad y cobro en el campo, y guardan registro de la actividad de sus agremiados. De tal suerte, en vez de requerir un certificado emitido por una empresa claramente parcial y con innegables intereses econmicos en el rea, habra una entidad a la cual preguntar acerca de la experiencia comprobable de un postulante. Los colegios citados nacieron dada la necesidad de una entidad que validara, y asumiera responsabilidad ante dicha validacin, a profesiones en las que puede haber amplia responsabilidad civil, como la medicina o la arquitectura. La importancia que van adquiriendo los desarrollos hoy en da nos lleva a plantear si no es momento de una reglamentacin similar en nuestra rea. Hay lugar para las certificaciones. Hay trabajos en que hace falta contratar a alguien que domine una tecnologa especfica, an sin ser un experto en el ramo entero. La distorsin, a mi opinin, est ms en la escala que han adquirido. No pueden ser requeridas como carta de presentacin, no puede drselas un peso comparable al de un estudio prolongado y general (como un ttulo universitario) o al de las capacidades demostradas con trabajo.

Por Gunnar Wolf


51

www.sg.com.mx |

Software Guru

.PERSONAS carrera

Capital Humano en Software y perspectivas reflexiones


Por Pedro Galvn

n SG tenemos ya 7 aos contribuyendo al desarrollo de capital humano de software por medio de la revista, eventos y SG Campus. Conforme estuvimos desarrollando nuestro nuevo servicio llamado SG Talento, he estado reflexionando sobre este tema y considero pertinente compartir con ustedes algunas perspectivas. Las he dividido en secciones dependiendo de a quin van dirigidas.

Profesionistas

La revaloracin del desarrollador


Tradicionalmente en nuestra regin los desarrolladores han sido obligados a moverse a otros roles para poder mejorar su compensacin econmica. Todos hemos conocido excelentes programadores que se hicieron malos gerentes. Sin embargo, hoy la profesin del desarrollador se est revalorando y cada vez ms los desarrolladores se pueden mantener en su rol sin necesidad de renunciar a sus expectativas econmicas. Para crecer no necesitan cambiar de rol, sino ser mejores desarrolladores profundizando sus conocimientos, aprendiendo nuevas herramientas e incorporando una mayor variedad de skills (por ejemplo DevOps). Uno de los factores que ha contribuido a esta tendencia es el renacimiento de los lenguajes de programacin, sobre el cual reportamos en la edicin de Mayo 2008 de SG. Otro factor es la popularidad de los mtodos giles, donde la estructura organizacional es ms plana y por lo tanto los miembros del equipo tienen mayor responsabilidad y visibilidad.

universitaria te ayudar a conocerte mejor a ti mismo, relacionarte con otras personas, y sobre todo te ensear a aprender. Lo ms importante no son los conocimientos duros que obtengas, sino el desarrollar la habilidad de aprender. En el caso de pases como Estados Unidos donde el costo de una carrera de cuatro aos fcilmente supera los 150 mil dlares en colegiatura, es comprensible que cada vez sea ms popular la recomendacin de no estudiar y mejor utilizar ese dinero para emprender. Incluso, Peter Thiel est dando 100 mil dlares a jvenes para que dejen la escuela [1]. Pero en el caso de pases como Mxico donde el costo de la educacin universitaria es mucho menor, recomiendo que si tienes la posibilidad de estudiar, no la desaproveches. En el caso particular de Mxico hay otro beneficio de graduarte de una carrera universitaria: la visa TN. Esta es una visa de trabajo temporal en Estados Unidos especial para ciudadanos mexicanos que se desempean en profesiones especializadas. Es la forma ms rpida y sencilla de conseguir visa de trabajo en EU, pero requiere que ests titulado y tengas tu cdula profesional.

Conocimientos requeridos
Una queja comn de los alumnos es que en sus universidades les ensean tecnologas muy viejas. Yo creo que en la universidad es ms importante que aprendas bien los principios a que aprendas las tecnologas ms modernas. Por ejemplo, si te ensean Lisp, que es un lenguaje de 1958, te permitir entender la programacin funcional y as utilizar bien lenguajes modernos como Clojure o F#. Habiendo dicho esto, es necesario que s conozcas lenguajes y tecnologas modernas, ya que cuando busques trabajo dudo mucho que les interese que sepas Lisp. Mi recomendacin de los 10 lenguajes/tecnologas que un buen desarrollador debe conocer actualmente son: Python, C#, Scala, Javascript, Node, HTML5+CSS3, git, gradle, NoSQL (Couch o Mongo), Hadoop. Lo ms probable es que en la escuela te enseen muy poco, o nada de ellos, as que t tendrs que aprenderlos por tu lado. No te preocupes, si entiendes los principios ser fcil. Adicionalmente, tu conocimiento con estas tecnologas debe ser comprobable con aplicaciones publicadas en algn lado. Ya te dars cuenta de que tener una aplicacin publicada en un app store te servir mucho ms para conseguir empleo que un 10 final en el curso de compiladores. Y entonces para qu aprender algebra lineal o compiladores, si no sirven para conseguir empleo? Los aprendes por dos razones: 1) Para desarrollar tu cerebro, y 2) Porque aunque lo ms probable es que no te ayudarn a conseguir tu primer empleo, definitivamente son herramientas que te ayudarn a hacer mejor las cosas y por lo tanto potenciarn tu carrera profesional.
52

Desarrolladores independientes
Otra tendencia es la creciente inclinacin de los profesionistas por ser independientes. Antes, freelancer era sinnimo de desempleado. Hoy cada vez me encuentro con ms personas que son independientes no por necesidad sino por eleccin, porque quieren poder escoger los proyectos, clientes, tecnologas, tiempos y tarifas con los que trabajan. Si te interesa tomar este camino debes construir una buena reputacin. Algunas formas de lograr esto incluyen escribir artculos (ya sea para alguna publicacin externa o tu propio blog), participar en foros especializados y participar en proyectos de software libre (o crear el tuyo propio). Adicionalmente, github cada vez se posiciona ms como herramienta no solo para guardar sino para presumir tu cdigo.

Estudiantes

El valor de la educacin universitaria


Para qu estudiar? Despus de todo ni Steve Jobs, ni Bill Gates ni Mark Zuckerberg terminaron la escuela. Mi recomendacin es que si tienes la posibilidad de estudiar una carrera universitaria sin endeudarte significativamente, lo hagas. El periodo universitario es una experiencia formativa en muchos sentidos ms all de los conocimientos duros. Una buena educacin

.PERSONAS carrera

los dEsarrolladorEs soN curiosos por NaturalEza. si No dEjas quE aliMENtEN su curiosidad, dEjarN tu EMprEsa.

Universidades

Prepara ingenieros de software, no IT Pros


Un problema comn que encuentro en los planes de estudio de las universidades en nuestra regin es que estn orientados a formar tcnicos en informtica (IT Pros) en lugar de ingenieros de software. El trabajo del IT Pro consiste en administrar infraestructura de TI tal como computadoras y redes; pero su preparacin dista mucho de lo que se requiere para desarrollar software profesionalmente, y es para esto ltimo para lo que hay trabajo. Entonces, no es ninguna sorpresa que anualmente miles de graduados salen a buscar trabajo y se dan cuenta que no saben hacer lo que la industria demanda desarrollar aplicaciones. Recomiendo a las universidades que busquen formar ingenieros de software a que obliguen a sus alumnos a desarrollar aplicaciones desde los primeros semestres. Existen universidades donde se pasan 4 aos estudiando teora pero sin haber construido una aplicacin de software de principio a fin. Creo que es mucho mejor que los alumnos comiencen a desarrollar aplicaciones completas (sencillas, pero completas) desde los primeros semestres y conforme vayan avanzando en su carrera vayan aprendiendo aspectos como configuration management, testing, distintos paradigmas de programacin, que apliquen en sus proyectos para hacer mejor software. El objetivo es que cuando se graden lleven 4 aos desarrollando software, no 4 aos estudiando tcnicas que nunca han aplicado.

Alimenta la curiosidad de tus devs


Los desarrolladores son curiosos por naturaleza. Si no dejas que alimenten su curiosidad, dejarn tu empresa. Hay distintas cosas que puedes hacer, por ejemplo hay empresas donde por poltica los empleados deben dedicar cierto porcentaje de su tiempo a actividades que no estn relacionadas con el proyecto al que estn asignados. Otra prctica que un colega de India me coment que aplicaban en su empresa era que las personas no podan durar ms de 12 meses en el mismo proyecto, y que al terminar un proyecto deban tomar 2 semanas de entrenamiento en nuevas tecnologas antes de entrar a un nuevo proyecto. Otra posibilidad es la de donar tiempo de nuestros empleados para participar en proyectos de software libre. De esta forma, pueden estar dedicando tiempo a algo que los apasione, al mismo tiempo que aprenden, contribuyen a la comunidad y dan un buen nombre a tu empresa.

S Flexibe
Los profesionistas cada vez valoran ms su libertad, incluso sobre el dinero. Un estudio recientemente realizado por Cisco [3] entre estudiantes y jvenes profesionistas arroj que este segmento valora la libertad ms que el salario. Libertad de qu? Principalmente la libertad de usar redes sociales, escoger tu computadora/telfono o de trabajar fuera de la oficina.
Software Guru

Empresas

Conclusin

Menos tweets y ms branding


No importa cuantos tweets enves con urge y please RT, si tu empresa no tiene un buen nombre entre los profesionistas de software no vas a atraer talento. Y si logras atraer talento, solo lo vas a lograr a billetazos, y as como lleg, se va a ir al prximo mejor postor. Una de las cosas que puedes hacer para mejorar tu branding hacia desarrolladores es participar en eventos dirigidos a esta audiencia. Dependiendo del tipo de evento, as como presupuesto que tengas, hay distintas opciones desde poner un stand hasta patrocinar las cervezas o rifar libros. Algo ms que te recomiendo es fomentar que tus empleados compartan conocimiento con el exterior, ya sea escribiendo artculos, dando plticas en eventos, o simplemente blogueando. No se trata de que explcitamente promuevan tu empresa, sino que compartan con colegas conocimiento tcnico adquirido en proyectos reales de la empresa. El efecto que buscas es que la gente piense aqu hacen proyectos interesantes y valoran el talento.

Referencias:
[1] S. Ludwig. Peter Thiel pays kids to drop out of college, Venture Beat. http:/ /swgu.ru/sg3411 [2] E. Camacho. Y dnde est el talento?. http:/ /swgu.ru/sg3412 [3] Cisco Connected World Technology Report. http:/ /swgu.ru/sg3413 [4] SG Talento. http:/ /talento.sg.com.mx

.BIO
Pedro Galvn Kondo es director y socio fundador de Software Guru, y es un apasionado del desarrollo de capital humano. @pedrogk

53

www.sg.com.mx |

Como bien comenta Erick Camacho en su post Y donde est el talento?[2], los desarrolladores de software experimentados no estn buscando ofertas de empleo en bolsas de trabajo. Las bolsas de trabajo tradicionales son un buen mecanismo para promover posiciones entry level donde buscas recin graduados, o personas que buscan un cambio de carrera, pero si buscas perfiles con mayor especializacin, debes utilizar otras herramientas.

La situacin no es sencilla. El reto de los candidatos es desarrollar los conocimientos prcticos que busca la industria, sin descuidar las habilidades y aptitudes fundamentales que lo ayudarn a ser un mejor profesionista a lo largo de su carrera. Por su parte, las empresas requieren poder atraer y retener al capital humano que necesitan, y para ello necesitan cambiar muchas de sus prcticas actuales de RH. En SG estamos conscientes de las necesidades en este rubro, es por ello que creamos un nuevo servicio llamado SG Talento [4] con el que buscamos que los profesionistas de software puedan evaluar y reflejar sus habilidades de forma sencilla, facilitando as a los reclutadores encontrar el talento que buscan.

.CONTENIDO PATROCINADO

SoftMTY 2011
se lleva a cabo con gran xito

on el tema central de: TI como habilitador de la Agilidad Empresarial, los das 26 y 27 de octubre se llev a cabo con gran xito el congreso SoftMty 2011 en la ciudad de Monterrey, Nuevo Len. Este fue un evento dirigido a directivos de reas de Tecnologas de Informacin, con el objetivo de difundir tendencias y mejores prcticas internacionales para mejorar la competitividad tanto de los corporativos usuarios de tecnologas de informacin, como de las empresas locales proveedoras de estos servicios. SoftMty 2011 fue presentado por el Consejo de Software de Nuevo Len (CSoftMty) y coorganizado por Software Guru. CsoftMty es una alianza entre universidades, empresas y gobierno, que busca el crecimiento econmico con calidad de vida va la innovacin. Los participantes de SoftMty 2011 tuvieron oportunidad de asistir a plticas de destacados conferencistas y analistas internacionales, tales como: Khalid Kark, Director de Investigacin en Forrester Research, Gabe Piccoli, Consultor Senior en Cutter Consortium; Bob Benson, Fellow en Cutter Consortium; y David Chappell, uno de los conferencistas independientes ms reconocidos en el mbito de las TI. Los paneles de discusin brindaron una excelente oportunidad para que algunos de los CIOs ms experimentados y respetados de nuestro pas pudieran compartir su experiencia y perspectiva. En estos pneles se cont con la participacin de: Claudio Vivin (Grupo ICA), Felipe Villegas (DHL Express), Daniel Ortega (Merck), Alejandro Ramos (Actinver), Guillermo Gmez (Banorte), Vctor Lpez (Homex) quienes fueron complementados con moderadores y analistas de lujo: Ricardo Zermeo, Director de Select; Edgar Fierro, Director en Mxico de IDC; y Luke Bujarski, Analista Sr. en Nearshore Americas. Adems de los valiosos contenidos de las conferencias, SoftMty 2011 contribuy a generar relaciones de negocios entre los asistentes que potenciarn el crecimiento de nuestra industria, ya que reuni tanto a CIOs y lderes de organizaciones de TI, como a importantes proveedores y representantes clave de la industria.

En SoftMty estuvieron presentes como patrocinadores algunas de las empresas ms importantes del ecosistema de las TI en esta regin, tales como: Softtek Grupo Assa Huawei IBM Mexico IT EISEI MexicoFirst Protektnet NYCE Consiss RedIT Dimtec Tambin qued claro el compromiso con el desarrollo de capital humano que tienen las principales instituciones educativas de Monterrey, tales como: Universidad Regiomontana Universidad Autnoma de Nuevo Len Tecnolgico de Monterrey SoftMty 2011 fue posible gracias al apoyo de Secretara de Economa, por medio del programa Prosoft, as como al apoyo del Gobierno del Estado de Nuevo Len. El Consejo de Software de Nuevo Len ya est planeando la edicin 2012 de este congreso, el cual sin duda continuar con el xito obtenido en esta ocasin. Encuentra mayor informacin sobre el Consejo de Software de Nuevo Len en www.csoftmty.org
54

Directorio
Alpha Consultora
http://www.alpha-consultoria.com Pg. 43

App Studios
http://appstudios.mx

Pg. 33

CsoftMty
http://www.csoftmty.org

Pg. 54

Extend Solutions
http://www.extend.com.mx

Pg. 49

Huawei
http://www.huawei.com/enterprise

Pg. 4F

Infotec
http://infotec.com.mx

Pg. 09

Microsoft
http://msdn.microsoft.com/es-mx

Pg. 2F

ProNatura
http://www.pronatura.org.mx

Pg. 3F

Qualtop
http://www.qualtop.com

Pg. 35

SG Talento
http://talento.sg.com.mx

Pg. 01

SG Campus
http://www.sgcampus.com.mx

Pg. 31

TENEMOS UN ESPACIO RESERVADO PARA TI


SG se distribuye de manera impresa en la Repblica Mexicana, y de manera digital llega a ms 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 Latinoamrica Contctanos en el (55) 5239.5502 o en publicidad@sg.com.mx

.TECNOLOGA gadgeTs

SPHERO

Pelota robtica
Para continuar con la temtica de esta edicin de SG les presentamos Sphero, una pelota robtica que puedes controlar desde tu smartphone. As es, simplemente lo prendes y puedes jugar con el desde apps en tu smartphone. Entre las opciones de juegos est un simulador de manejo y un juego de golf virtual. Prximamente tambin se abrir la posibilidad a terceros de desarrollar apps que interacten con Sphero. Un buen detalle es que el Sphero puede cambiar de color, lo cual es til cuando ests jugando con varias personas. Se puede controlar desde iPhone, iPod touch y Android. http://gosphero.com

LIBRATONE LIVE
Sonido con estilo
La compaa danesa Libratone lanz la lnea de bocinas Live. stas son bocinas porttiles e inalmbricas que funcionan con la tecnologa AirPlay. Adems de su elegante y vistoso diseo, estas bocinas ofrecen un gran desempeo en sonido. Utilizan una tecnologa denominada FullRoom para que el sonido no rebote en las paredes. Adicionalmente, por medio de una app para iPhone/iPod puedes proveer informacin sobre la ubicacin de las bocinas y la app las calibra va AirPlay para optimizar el sonido. http://libratone.com/live

JAWBONE UP

Asistente para mejorar tu salud


UP es un sistema que consiste de una pulsera acompaada de una app para iPhone, que registra tu actividad fsica, patrones de sueo y hbitos alimenticios para ayudarte a tener una vida ms saludable. El sensor de movimiento est en la pulsera, que es resistente al agua, as que puedes traerla puesta todo el da, incluso para baarte. UP monitorea tu actividad fsica (pasos, distancia recorrida, ritmo de movimiento), patrones de sueo (horas dormidas, profundidad del sueo, calidad del descanso) y alimentacin registrando qu y cuando comes. http://jawbone.com/up

SONY

Nuevos modelos VAIO


Para cerrar el ao, Sony VAIO actualiza su lnea de computadoras personales, con modelos dirigidos a distintas audiencias. A los lectores de SG posiblemente les atraigan los modelos de la serie S que est dirigida a profesionistas, brindando alto desempeo y confiabilidad. O si lo que buscas es una laptop muy ligera sin escatimar desempeo, est la serie Z con pantalla de 13.1 pulgadas, procesador i5-2410M, 6 GB de RAM y disco de estado slido. www.sonystyle.com.mx

56

También podría gustarte