SG27 (Febrero-Abril 2010)

Page 1

Arquitectura de Software

Estrategia Corporativa de Seguridad P.34

P.32

COLUMNA: INDUSTRIA Lean + Agile P.44

No.

27

HOLA MUNDO API

oAuth

CONOCIMIENTO EN PRテ,TICA | Febrero-Abril 2010 www.sg.com.mx

EMPRENDIENDO

Cテウmo entrar al

Mercado Norteamericano de Software

ADN

UN VISTAZO AL

de la Industria del Software en Mテゥxico

Mテゥxico, $65.00


SG Software Guru mucho más que una revista… conocimiento sg.com.mx difusión SGGuía consulta publicidad colaboración perfiles revista digital herramientas educación SG Campus espacio virtual especialización sgcampus.com.mx publicidad aplicaciones interacción capacitación Investigación estadísticas información actualización evaluación Eventos estrategia perfiles promoción evaluación organización



27

CONOCIMIENTO EN PRÁCTICA

Pág.

20

.CONTENIDO Febrero-Abril 2010 |

www.sg.com.mx

En Portada El ADN de la Industria de Software en México

20

Echamos un vistazo a los programas, organizaciones y proyectos que están detrás del desarrollo que ha tenido nuestra industria en los últimos años.

Columnas Tejiendo Nuestra Red

06

por Hanna Oktaba

Mejora Continua

08

por Luis Cuellar

Tendencias en Software

41

por Luis Daniel Soto

Columna Invitada

46

por Marco Dorantes

Prueba de Software

56

por Luis Vinicio León

Programar es un Modo de Vida

58

por Gunnar Wolf

Entregando Valor por Gloria Quintanilla

02

60


.CONTENIDO

SG 27

Pág.

10

Emprendiendo Productos Cómo Entrar al Mercado de Software Norteamericano 10 5 pasos para implementar una campaña efectiva para entrar al mercado de software en los Estados Unidos.

Lo que Viene

14

Rails 3, Amazon Virtual Private Cloud, Apache Maven 3 y Silverlight 4.

Hola Mundo API

16

Introducción a oAuth.

Herramientas

18

Documentación de Scrum con Google Wave.

32

Entrando en materia sobre qué es la arquitectura de software, su importancia y el ciclo de vida de una arquitectura.

Seguridad Estrategia Corporativa de Seguridad

04

Noticias

05

Carrera

48

Fundamentos

52

Gadgets

62

Biblioteca

64

34

Analizamos los 3 aspectos fundamentales para proteger tus sistemas de una manera estratégica: procesos, herramientas y capacitación.

Diseño Modularización Efectiva en Java

Editorial

36

Principios, patrones, prácticas y tecnologías para lograr que tus aplicaciones utilicen una modularización efectiva.

PM Corner Reduce la Complejidad de tus Proyectos de Software

42

Recomendaciones y tips para tener proyectos de software más sencillos de administrar.

Agilidad Lean-Agile Lean y Agile son muy efectivos por sí solos, pero juntos hacen una combinación fabulosa.

03

44

Pág.

48

www.sg.com.mx |

Arquitectura Arquitectura de Software

Software Guru

En Cada Número

Prácticas


.EDITORIAL Bienvenida

El esfuerzo más importante para desarrollar esta industria es el que realizan los profesionistas y empresarios como tú.

.

¿Qué pasó aquí?

D

espués de cinco años, ya nos tocaba un rediseño, ¿no creen? Más allá del rediseño gráfico de la revista (el cual no pueden negar que quedó magnífico), estamos haciendo algunos cambios en la estructura editorial para reflejar mejor lo que está sucediendo allá afuera. Es así que tenemos una nueva sección dedicada al uso de APIs públicos en Internet, y otra nueva sección dedicada al emprendimiento tecnológico. También estamos realizando ajustes en la forma en la que se desarrollan y publican los contenidos. De hecho, como se podrán dar cuenta si revisan el texto pequeño al pie de esta página, todo el contenido de SG ahora estará licenciado bajo Creative Commons; siempre habíamos fomentado que compartieran los contenidos de SG, pero ahora lo estamos haciendo oficial. Para iniciar este 2010 decidimos dedicar el tema de portada a un análisis sobre los principales actores que están detrás del crecimiento de la industria de software en México. Más allá de querer resaltar a personas u organizaciones en específico, lo que buscamos es compartir información sobre los distintos frentes que conforman dicho esfuerzo, lo que está haciendo cada uno y cómo se relacionan entre sí. Pero a pesar de la importancia de estos programas, todos sabemos que el esfuerzo más importante para desarrollar esta industria es el que realizan los profesionistas y empresarios como tú. Gracias y felicidades.

››Equipo Editorial Software Guru

DIRECTORIO SG Dirección Editorial Pedro Galván / Dirección de Operaciones Mara Ruvalcaba Coordinación Editorial Alejandro Escamilla / Arte y Diseño Oscar Sámano, David Gutiérrez / Fotografía Julio Muñoz Consejo Editorial Jorge Valdés - PMI / Luis Cuéllar - Softtek / Luis D. Soto - Microsoft / Hanna Oktaba - UNAM / Emilio Osorio - Sistemas Humanos / Luis Vinicio León - e-Quallity / Gloria Quintanilla

Colaboradores María Dolores Montes, Fernando Labastida, Arturo Garrido, Pedro Ávila, Harvey Alférez, Humberto Cervantes, Raúl Achoy, Ariel Sucari, Agustín Ramos, Gunnar Wolf, Masa Maeda, Marco Dorantes, Oscar Rodríguez, Ricardo Rangel, Mario Chávez, Javier Castañón.

Ventas Claudia Perea / Circulación y Atención a Clientes Lacendi Calderón / Desarrollo Web Nathanael Gutiérrez Contacto info@sg.com.mx SG Software Guru es una publicación trimestral editada por Brainworx, S.A. de C.V., Temístocles 34 piso 3, México DF 11560. Los contenidos de esta publicación son propiedad intelectual de los autores y están licenciados bajo Creative Commons Atribución-No comercial 2.5 México. Todos los artículos son responsabilidad de sus propios autores y no necesariamente reflejan el punto de vista de la editorial. Reserva de Derechos al Uso Exclusivo: En trámite. ISSN: 1870-0888. Registro Postal: PP15-5106. Distribuido por Sepomex. Se imprimió en febrero de 2010 en Preprensa Digital.

04


.NOTICIAS

.México Ingresa a la SPICE Academy

.Dreamforce 2009

Dreamforce 2009, la conferencia anual para usuarios y desarrolladores de salesforce.com, se llevó a cabo en la ciudad de San Francisco reuniendo a más de 19 mil asistentes, haciendo ver la relevancia que ha cobrado esta empresa. Entre las novedades que se dieron a conocer destacó Chatter, una herramienta que permite a las empresas crear sus redes sociales privadas y facilitar la colaboración entre sus empleados. Chatter no solo es un producto final, sino una tecnología que puede agregarse a aplicaciones desarrolladas sobre la plataforma Force.com para darles capacidades sociales. Vale la pena notar que existen más de 140 mil aplicaciones desarrolladas sobre la plataforma Force.com, líder en el segmento de Platform as a Service.

En reconocimiento a la labor en la definición de estándares para ingeniería de software, el pasado 10 de Noviembre se entregó a la Dra. Hanna Oktaba el asiento no. 19 de esta academia. La SPICE Academy (SA) busca promover la implementación consistente de estándares, la transferencia de tecnología de evaluación de procesos a la industria, así como la definición y el mantenimiento de las competencias y capacitación requerida para ser evaluador de capacidad de estándares ISO para este campo. La SA está integrada por un grupo de expertos cuyo conocimiento y autoridad preside este campo, y cuenta con solo 20 asientos. Con esto México ingresa a este selecto grupo de especialistas en promover los estándares de madurez de los procesos en las organizaciones a nivel mundial.

.Segundo Foro de Gobierno

Oracle presentó el Segundo Foro de Gobierno “Celebrando el Bicentenario”, evento que reunió a expertos de TI del sector público con el objetivo de profundizar en los retos a los que se enfrenta dicho sector, aportando soluciones para ganar eficiencia operacional, reforzar el cumplimiento de las regulaciones, reducir costos operativos y mejorar la atención ciudadana. El evento fue inaugurado por Horacio Fernández, Director General de Oracle de México, y contó con la participación de reconocidos ponentes como Jesús Silva-Herzog.

.Semana de Inducción TechBA SV 2010

Del 25 al 29 de enero se llevó a cabo la Semana de Inducción al Programa de Preaceleración TechBA 2010 en Silicon Valley, donde representantes de las empresas seleccionadas atendieron pláticas, recibieron consultoría y asistieron a eventos locales. Los temas abarcaron introducción al mercado norteamericano, propiedad intelectual, mercadotecnia, y aspectos legales y migratorios entre otros. Los eventos externos incluyeron una conferencia de Geoffrey Moore, un panel sobre negocios organizado por la comunidad de emprendedores de India y una sesión del Software Development Forum, donde por cierto el tema presentado fue el SuperHappyDevHouse en México.

Para mayor Información, Noticias al Día y Updates de la industria visita: www.sg.com.mx

05

www.sg.com.mx |

El 7 y 8 de enero se llevó acabo el 2do Foro Innovación para la Competitividad en México organizado por el CONACYT. El objetivo del evento fue reunir al sector empresarial, académico y gubernamental para compartir conocimiento, experiencia y estrategias. El Secretario de Economía, Gerardo Ruiz Mateos apuntó que pese a que “México está retomando su marcha hacia el crecimiento, es necesario producir más con los mismos recursos.” Agregó que sobre la base del nuevo marco jurídico de la Ley de Ciencia, Tecnología e Innovación, todos los sectores están sumando esfuerzos para crear un Sistema Nacional de Innovación sólido, que fomente la innovación, proteja la propiedad industrial y ahora, se alinee una agenda verde.

Software Guru

.México Innova: 2do Foro de Innovación para la Competitividad en México


.COLUMNA Tejiendo nuestra red

Reflexiones sobre la Industria Mexicana de Software análisis al inicio del 2010

E

mpieza una nueva década, empieza un año nuevo. Es una buena época de reflexionar y trazar nuevos objetivos. ¿Qué hemos logrado y qué hace falta hacer para fortalecer la industria de software en México? Para empezar a contestar esta pregunta les presento un intento personal de análisis FODA sobre la situación de la industria de software mexicana.

››La emisión del estándar ISO/IEC 29110 con prácticas basadas en MoProSoft, puede colocar a México como el país con mayor número de empresas que lo tienen adoptado.

• CMMI y MoProSoft bien empleados ayudan a mejorar el negocio y a hacer más competitivas a las empresas. • Primeras empresas consultoras y capacitadoras ayudan a las empresas en los esfuerzos de mejora. • Primeros evaluadores nacionales ayudan en la autosuficiencia y creación de capacidades. • Apoyos gubernamentales promueven la masificación de la adopción de los estándares.

Debilidades

Organización empresarial

• Falta de una visión integral causa la dispersión de iniciativas y poca coordinación de esfuerzos. • Falta de colaboración entre empresas causa la pérdida de oportunidades para afrontar proyectos de gran escala.

Recursos humanos

• Programas de estudio no compatibles con la demanda de la industria causan costos adicionales en capacitación. • Poca disponibilidad de recursos especializados causa alta rotación. • Poco conocimiento en Ingeniería de Software de los profesionistas se refleja en precarios niveles de madurez de capacidades de las empresas.

Organización empresarial

Adopción de prácticas

• “Clusters”- agrupaciones de empresas, presentes en casi todos los estados, que adquieren la representatividad de la industria de software en su región. • Parques tecnológicos que dan la visibilidad a la misma. • Apoyos decididos de algunos gobiernos estatales como Jalisco, Nuevo León, Baja California, Sinaloa y otros. • Nichos de mercado interesantes, como multimedia, juegos, animación, software embebido, que ayudan a identificar la oferta. • Empresas mexicanas con una proyección internacional fuerte, como Softtek, son un ejemplo a seguir.

• Difícil adopción de estándares se debe principalmente al bajo nivel del conocimiento en Ingeniería de Software. • Muy bajo porcentaje de la industria cuenta con alguna evaluación en CMMI o MoProSoft lo que significa baja competitividad de la industria en su conjunto.

Recursos humanos

• Los proyectos locales importantes son atendidos principalmente por empresas de otros países.Las empresas de países

• Primeras carreras y maestrías en Ingeniería de Software 06

Adopción de prácticas

Desde el punto de vista interno México ha tenido un gran impulso en el área de desarrollo y servicios de software. PROSOFT fue un motor muy importante. En mi opinión personal, las siguientes son las mayores fortalezas y debilidades de la industria de software mexicana para finales de 2009.

Fortalezas

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

empiezan a ayudar en la profesionalización de la industria. • Certificaciones tecnológicas de individuos dan certeza a los empleadores y mejoran salarios de los empleados. • Oferta de capacitación especializada en las diferentes prácticas de Ingeniería de Software permite la superación.

El entorno internacional con respecto a la industria de software mexicana presenta varias amenazas pero, afortunadamente, también oportunidades.

Amenazas

Mercado local


iberoamericanos aprovechan el idioma para entrar a nuestro mercado.

Recursos humanos

• Nuestros mejores especialistas emigran por falta de oportunidades y salarios competitivos.

Oportunidades

Mercado local e internacional

• Existe en el mercado local una necesidad enorme, no reconocida, de aplicaciones de software en todos los ámbitos. • Existe posibilidad de colaboración regional para ganar el mercado de países iberoamericanos aprovechando el idioma. • Nichos específicos pueden ayudar a colocar a México en el mercado global.

Recursos humanos

• Está bajando la matrícula de especialistas en computación en todo el mundo lo que significará buenas oportunidades de trabajo con buenos sueldos a los que se dediquen a esta área.

Adopción de prácticas

• Emisión del estándar ISO/IEC 29110 con Perfil Básico de prácticas basadas en los procesos de operación de MoProSoft puede colocar a México como el país con mayor número de empresas que lo tienen adoptado. Estoy consciente de que en este análisis estoy tocando apenas algunos temas y que existen muchos más factores que no he tomado en cuenta. Los invito a que lo discutamos aprovechando los foros de Software Guru. En temas que a mí personalmente me interesan considero que uno de los mayores retos que tenemos a futuro es integrar los esfuerzos nacionales de adopción de estándares de Ingeniería de Software para profesionalizar la industria mexicana con la finalidad de incrementar su competitividad en el mercado interno y externo. A ese tema voy a dedicar mis esfuerzos e invito a los que quieren sumarse.

››Por Hanna Oktaba


.COLUMNA Mejora Continua

¿Planear la Venta vs. Planear el

F

Implementación de Proyectos de Calidad

eliz año a todos. Les deseo lo mejor en este 2010, espero que todos los planes del 2009 se hayan cumplido y que estén listos para tomar el 2010 por los cuernos. Estas semanas han sido muy ajetreadas, como siempre el inicio del año trae nuevos retos y nuevos planes para crecer y mejorar. Dentro de las múltiples juntas de planeación que he tenido ha surgido una temática interesante, que de hecho hemos mencionado en forma indirecta en el pasado pero ahora veremos en particular. Me ha sorprendido últimamente como la mayoría de las personas en software vemos la implementación de un proceso equivalente a un proyecto de desarrollo de software. Es decir, se debe de ver el problema de la organización (el cliente), diseñar una solución, programarla, probarla y liberarla. De la misma manera se debe desarrollar un plan claro con todas las actividades necesarias, fechas, responsables, llegado el momento todos harán lo que tienen que hacer y el proyecto terminará. El problema es que una implementación de un proceso es más parecido a un proyecto de ventas que a un desarrollo de software. Es importante entender el problema, escuchar a los diferentes participantes, definir una estrategia para vender a los diferentes interesados la solución, escuchar a los clientes, modificar la solución de acuerdo a sus necesidades, y a lo mejor puedes aspirar a aproximar el tiempo que te tomará lograrlo. Una implementación de procesos de calidad se puede dividir en cuatro partes básicas: definición del proceso, venta del proceso, infraestructura e implementación, y mejora continua.

Luis R. Cuellar es director de calidad a nivel mundial de Softtek. Es reconocido por la ASQ como Certified Quality Manager, Certified Sofware Engineer y Six Sigma Black Belt. @lcuellar

08

Proyecto?

• Definición del proceso. En la mayoría de las organizaciones que conozco la definición es la parte favorita, llena de aventura y aprendizaje, durante este proceso nos absorbemos, muchas veces en forma individual, en un mundo lleno de libros, ideas y ejemplos de cómo se deben hacer las cosas, cómo otros han logrado lo que no tenemos y cómo podemos seguir sus pasos. Este paso está lleno de nuevas ideas y no tiene las complicaciones del día con día. Adicionalmente este mundo de definición se vuelve nuestro lugar secreto, el lugar a donde se regresa cuando la implementación no funciona y sentimos que nadie nos aprecia. En la definición ¡TENEMOS EL PODER! Ok, ok, quizá exagero un poco, pero créanme he visto casos no muy lejanos de esta situación.

• Venta del proceso. Esta parte rara vez existe y definitivamente es la más importante. A veces siento que estamos tanto tiempo rodeados de computadoras que asumimos que todo es tan fácil como programarlo y que suceda. El jefe asume que dado que todos son sus subalternos, la implantación será tan fácil como decir a las personas lo que tiene que hacerse, y que se haga. Los procesos no son productos que simplemente usamos, son acuerdos entre varias personas, por lo que existen muchas formas de justificar el no utilizarlos.

››El éxito está en cómo combinar las diferentes necesidades en una solución común. Si queremos ser exitosos al implementar un proceso, es crucial generar un análisis de stakeholders (en nuestro próximo número hablare más de esta herramienta) y en base a esto definir la estrategia que se va seguir para lograr un acuerdo entre todos los involucrados. Actualmente se están publicando una gran cantidad de libros de psicología de compras y todos ellos tienen la misma conclusión: los seres humanos tomamos decisiones emocionales y utilizamos la razón para justificar la decisión que ya tomamos. Es muy importante que nuestros procesos y metodologías a implementar sean robustos y que logren los objetivos; pero también es de vital importancia considerar la pasión que genera el cambio, que todos los involucrados en la definición del proceso se sientan partícipes de lo que está pasando. No siempre es justo, pero al final de cuentas el cliente siempre tiene la razón y el éxito está en cómo combinar las diferentes necesidades en una solución común. • Infraestructura y operación. Básicamente es el reflejo de la calidad de la venta que se hizo. Si la venta fue buena, generar la infraestructura necesaria e iniciar la operación del proceso es sencillo.


En la operación es donde realmente se pone el proceso a prueba, aquí es donde se mide no solo si los objetivos que se pretendían se lograron, sino también el costo que tiene implementar y mantener a través del tiempo los procesos. No es lo mismo aprender a hacer algo bien mientras definimos el proceso, que enseñar a muchas personas a hacer el proceso bien en el estrés del día con día. El plan de control es un paso crítico de esta parte del proceso. Este plan especifica cómo se va a auditar en forma continua el seguimiento del proceso, quién se va encargar del entrenamiento de las nuevas personas, y quién va a asegurar que el entrenamiento se lleve a cabo. Aquí es cuando un cambio trasnacional se vuelve institucional. Finalmente es importante recordar que este punto y el anterior son cíclicos, el implementar en un punto nos da información de qué funcionó y qué no, lo cual nos sirve para revisar nuestra estrategia de venta y nuestro producto (la metodología y/o proceso) para así vender más adelante. • Mejora continua. Este tema es sumamente amplio y por supuesto no lo pienso cubrir en el poco espacio que nos queda. Lo que sí considero importante establecer: “Mejora” no significa tira lo que existe y vuelve a empezar, y “Continua” significa por el resto de la vida siempre hay algo que mejorar. El llegar a este punto implica que ahora sí podemos empezar a aprender como organización y ser continuamente mejores. Aquí es donde, como lo menciona Peter Senge en su libro “La Quinta Disciplina”, nos convertimos en una ”Organización de Aprendizaje”.

››Por Luis Cuellar


.EMPRENDIENDO

Mercado Cómo entrar al

Norteamericano de Software conviértete en gurú de marketing ››Por Fernando Labastida

10


.EMPRENDIENDO

Mercadotecnia: la clave del éxito

El ingrediente principal con el que debe contar una empresa de software que desea tener éxito en el mercado norteamericano, es 11

una estrategia integral de mercadotecnia. Deja de ser un software gurú (¡perdón SG!) y conviértete en gurú de mercadotecnia. ¿Por qué mercadotecnia? Porque el mercado más grande del mundo también es el más competido. Entrar con un vendedor y cruzar los dedos no es suficiente. ¿Parece difícil? En realidad no lo es tanto, es solo que son conceptos de marketing y no de tecnología. Los tecnólogos se tienen que convertir en mercadólogos. John Jantsch, el creador del sistema Duct Tape Marketing (www.ducttapemarketing.com), un sistema integral de mercadotecnia para pequeñas empresas, comenta que cada dueño de negocio tiene que convertirse en un experto en mercadotecnia. Para ayudarte, aquí presento un resumen de los 5 pasos para implementar una campaña efectiva de mercadotecnia para entrar al mercado de software en los Estados Unidos.

››El verdadero reto que enfrentamos es lograr que cientos, o miles, de pequeñas empresas de software en nuestra región penetren el mercado global

1. Establece un mensaje atractivo

Uno de los pecados más grandes al entrar al mercado estadounidense es entrar con un mensaje genérico, blando, orientado hacia tus productos o servicios, y un mensaje que no ofrece nada de valor ni un diferenciador. A través de tu mensaje debes comunicar claramente: el beneficio que ofreces, tu nicho de mercado, tu diferenciador, y la razón para que te crean. Estamos hablando de beneficios de negocio, un nicho específico, un diferenciador relevante para tu mercado meta, y evidencia que muestra que no estás mintiendo. No es válido decir que tu beneficio es “somos muy confiables”, ¡eso es lo mínimo que se espera de ti! .BIO Fernando Labastida es el presiTampoco vas a lograr mucho didente de Latin IT Marketing (latinitmarketing.com) una consultociendo que “tenemos el mismo ría de mercadotecnia que ayuda a empresa de software de América horario que los americanos”, toLatina entrar al mercado estadodos dicen lo mismo. unidense por medio del marketing de contenidos. Ha trabajando Finalmente, tu nicho no es durante más de quince años como ejecutivo de ventas, tanto en el “todos los que tienen dinero”. mercado Norteamericano como Enfócate realmente en un nien el mercado Latinoamericano. Está felizmente casado y tiene cho muy específico, recuerda lo cuatro hijos. fernando@labastida.com que comenté sobre Kashmoo al @flabastida principio de este artículo.

Software Guru

l mercado estadounidense ofrece un mercado muy tentador para los cientos de proveedores de desarrollo de software a la medida que hay en América Latina. Según Wikipedia, el mercado mundial de software en 2008 fue de poco más de 300 mil millones de dólares, de los cuales Estados Unidos representó el 42.6%. De acuerdo con Hoovers, en este país existen más de 1 millón de empresas que tienen entre 15 y 5,000 empleados. Tan solo para darse una idea del tamaño de este mercado consideremos el caso de Kashmoo, un proveedor especializado de software dedicado a atender empresas americanas que instalan alfombras, azulejos y pisos. Sería fácil pensar que este es un nicho demasiado pequeño y limitado, pero resulta que Kashmoo cuenta con más de 23 mil clientes potenciales. El grueso de los proveedores de software que han tenido éxito en este mercado durante los últimos 15 años han sido empresas de la India. Sin embargo, esta tendencia empieza a disminuir. Por un lado, últimamente han habido noticias sobre escándalos en la industria de outsourcing de desarrollo de software de la India, como por ejemplo el escándalo de fraude contable de Satyam, así como historias de clientes insatisfechos por la alta rotación de personal, barreras culturales, malos entendidos y diferencias de horarios. Las empresas latinoamericanas están perfectamente posicionadas para explotar esa situación. De hecho, empresas de nuestra región como Hildebrando, Softtek, Neoris y Globant han aprovechado esta oportunidad y han crecido substancialmente en los últimos años. Aun así, la industria de outsourcing de servicios de TI en América Latina todavía tiene mucho terreno que ganar. Mientras que las empresas de nuestra región están logrando ingresos en cientos de millones de dolares anuales, las empresas más importantes de la India como Infosys, Wipro y Tata tienen ingresos anuales en los miles de millones de dolares –la mayoria de outsourcing a los Estados Unidos. Más allá de los resultados que han tenido las grandes empresas de servicios de outsourcing, el verdadero reto que enfrentamos es lograr que cientos, o miles, de pequeñas empresas de software en nuestra región, desde México hasta Argentina, penetren el mercado de los Estados Unidos, y así el mercado global. Al preguntar a proveedores de países latinoamericanos por qué no hay más empresas de sus países entrando al mercado de Estados Unidos, típicamente me responden que es por miedo: miedo de no conocer el mercado, de su falta inglés, de su falta de certificaciones, de no saber como obtener clientes.

www.sg.com.mx |

E


.EMPRENDIENDO

››El Director General debe ser el primer vendedor, pero si es alérgico a las ventas entonces contrata un

Vicepresidente de ventas

2. Crea un sitio web que vende

Una vez que definiste tu mensaje, debes crear tu sitio especializado para el mercado estadounidense. El error más grave que encuentro en los sitios orientados hacia el mercado estadounidense es el mal inglés. Un sitio con mal inglés queda descartado de inmediato. Otro error común es no tener un propósito claro para el sitio web. La mayoría de las empresas que ofrecen software o servicios de desarrollo de software no están seguros de por qué quieren un sitio web (más allá de “porque debo tenerlo”). El resultado son sitios con mucha información sobre su empresa, sus productos, sus servicios, su misión, su visión, su propósito; eso no atrae clientes. Tu sitio debe ser una herramienta para mostrar tu beneficio, diferenciador y razón para creer, con el propósito de convertir visitantes a posibles clientes y vender por ti cuando no estés. Cuando la gente llega a tu sitio web, tienes que presentarles un mensaje muy sencillo que describe exactamente como tú los puedes ayudar, qué pasos tienen que tomar para aprender más de ti, y qué tienen que hacer para hacer negocios contigo. Lo inverso a tener un vendedor que “empuja” tu mensaje a gente que no quiere recibir una llamada de otro vendedor entre decenas que les habló ese día, es tener un sitio que sirva para atraer clientes. Esto es lo que se conoce como inbound marketing; es el concepto de que tu conocimiento específico de una solución de negocios orientado hacia un nicho de mercado lo compartes por medio de contenido valioso y educativo en tu sitio web.

3. Usa el contenido para conseguir tus primeros clientes

Obviamente tarda un tiempo para que tu presencia en Internet empiece a atraer clientes. ¿Qué puedes hacer para atraer clientes este mes? Con un whitepaper o eBook, de entre 5 y 15 páginas, tú puedes empezar a crear oportunidades de negocio inmediatamente. Este tipo de documentos son reportes que describen un problema que enfrenta tu cliente ideal, o un problema común en la industria de tu cliente, y después presenta una solución genérica, finalmente presentando a tu empresa como una alternativa. La clave de estos reportes es que presentan el argumento de una manera amigable y educativa. Según un 12

estudio hecho por Eccolo Media, en 2009 el 77% de los tomadores de decisiones leyeron whitepapers, comparado con 68% en 2008.

4. Mantén una estrategia de crecimiento

Conseguir tus clientes iniciales es un buen comienzo, pero debes tener una estrategia para el largo plazo si quieres seguir creciendo. De preferencia, dicha estrategia debe crear oportunidades de forma automatizada y escalable. Publica casos de éxito de tus clientes, lanza una campaña de inbound marketing, relaciónate con tu industria y clientes potenciales tanto en persona como por medio de redes sociales. No olvides que debes seguir vendiendo. El Director General debe ser el primer vendedor, pero si es alérgico a las ventas entonces contrata un Vicepresidente de Ventas.

5. Mantén tu compromiso

He visto muchos casos de empresas que entran al mercado de los Estados Unidos y un año después regresan sin haber logrado nada. ¿Qué pasó? Estaban distraídos con la situación de las ventas en su país de origen; contrataron a alguien que les manejara las ventas en los Estados Unidos pero no les dieron el apoyo necesario para triunfar; hicieron su campaña de ventas a medías y no dieron seguimiento a los prospectos. Todo esto es resultado de falta de compromiso. Pensaban que iban a poder entrar al mercado de los Estados Unidos, pero no lo hicieron con pasión, no se comprometieron al 100 por ciento.

Conclusión

Para tener éxito en el mercado de software de Estados Unidos debes dejar de ser gurú de software y convertirte en gurú de mercadotecnia. ¿Estás listo?

Este artículo está basado en el reporte “Los 5 pasos para entrar exitósamente al mercado de software de los Estados Unidos”. Puedes descargar la versión completa de este reporte en http://latinitmarketing.com



.productos Lo Que Viene

1

A poco más de un año de que se anunciara la integración de Rails con el Framework Merb, se ha liberado la versión beta de Rails 3. Como consecuencia de dicha integración, Rails ahora es más modular, extensible y agnóstico a subframeworks. Tal vez el principal cambio conceptual que introduce Rails 3 es que ahora todo es manejado como extensiones reemplazables. Esto permite que por ejemplo ActiveRecord pueda ser reemplazado por DataMapper. Rails 3 está basado 100% en Rack middleware, lo que le permite convivir con otras aplicaciones Rack como Sinatra. Entre las nuevas características destacan: Un nuevo sistema de rutas con énfasis en REST; nueva API para Action Mailer basada en Action Controller; Active Record con soporte para álgebra relacional, gracias a esto es posible usar métodos enlazados para realizar queries; objetos de ayuda (helpers) para JavaScript no obstrusivos y con soporte para Prototype y jQuery; manejo explícito de dependencias con la nueva herramienta Bundler.

Rails 3.0

Rails+Merb

2

Amazon Virtual Private Cloud (Amazon VPC) provee un puente entre el centro de datos de una empresa y la nube de Amazon Web Services. Amazon VPC permite que las empresas puedan conectar su infraestructura existente con nodos de cómputo en AWS por medio de una VPN. De esta forma, se puede extender hacia los nodos de AWS las capacidades de gestión existentes en la infraestructura interna de la empresa tales como servicios de seguridad, firewalls, y sistemas de detección de intrusos. Los nodos de AWS que se integran a la VPN están aislados del resto de la nube de AWS para evitar riesgos de seguridad. Amazon VPC se integra actualmente con Amazon EC2 y en el futuro se integrará con otros servicios de AWS. La visión de Amazon VPC es habilitar arquitecturas híbridas que permitan combinar lo mejor de dos mundos: la elasticidad y economía del cómputo en la nube con las capacidades de seguridad y administración de un data center propio. Actualmente Amazon VPC se encuentra disponible como beta.

Amazon Virtual Private Cloud

Lo mejor de dos mundos

3

La gente de Sonatype y desarrolladores de la Fundación Apache están trabajando en la siguiente versión de la popular herramienta de construcción de proyectos Maven. Por el momento ya se encuentra disponible la versión 3.0-alpha-6 y se espera que durante este año tengamos una versión final de Maven 3.

Apache Maven 3

Construcción de proyectos incremental

Esta próxima versión trae mejoras significativas entre las que destacan: soporte a builds incrementales; ciclo de vida consultable (queryable lifecycle); capacidad de usar anotaciones de Java 5 para configurar plugins; soporte a lenguajes de scripting como Groovy y Scala para configuración. Los desarrolladores de esta tecnología aseguran que Maven 3 será 100% compatible con los proyectos creados en Maven 2.x. Sin duda hay mucho trabajo en esta próxima versión. Es resultado de la presión que han ejercido últimamente otras herramientas para construcción de proyectos como Apache Ant + Ivy, Gradle, y Gant.

4

A tan solo unos meses de que haya sido liberada la versión 3, ya está disponible el beta de Silverlight 4, y trae suficientes novedades como para ser considerada una versión mayor. El enfoque principal en Silverlight 4 es incorporar funcionalidad que haga a esta tecnología viable y atractiva para escenarios de aplicaciones de negocio. Entre las nuevas capacidades de Silverlight 4 destacan: Soporte a impresión, capacidades avanzadas para reportes y graficación de datos, mejoras en la interacción con Windows Communication Foundation, integración con software de backend y software de servidor como Microsoft SharePoint. 14

Silverlight 4

Ahora para aplicaciones de negocio



.productos Hola Mundo

API

Introducción a

oAuth APIs autorización para

en internet

››Por Arturo Garrido

C

››Actualmente existen varias implementaciones de oAuth en múltiples lenguajes

on el crecimiento de servicios en línea que exponen APIs para su consumo desde servicios o productos de terceros, se presenta el problema de cómo otorgar acceso seguro a la cuenta del usuario por parte del desarrollador al mismo tiempo que se mantengan confidenciales las credenciales del usuario. Ante este problema, a finales de 2006 Blaine Cook, Chris Messina, David Recordon y Larry Halff entre otros, discutían la posible solución que en ese entonces se basaba en el uso de OpenID, y al analizarlo llegaron a la conclusión de que no existía una forma práctica y estandarizada para delegar el acceso a APIs. Fue así que en abril de 2007 crearon un grupo de discusión para generar una solución a esta necesidad, y el 3 de octubre de 2007 finalmente fue liberada la versión 1.0 de la especificación de oAuth. oAuth es un estándar abierto y simple para la autenticación segura de APIs. Permite al usuario final otorgar acceso a sus recursos privados en un sitio (llamado Proveedor de Servicio) a otro sitio (llamado Consumidor, no confundir con el Usuario). Una analogía con el mundo real es el escenario de la llave de auto especial para valet parking la cual dejamos al chofer del valet. A diferencia de la llave normal, con la llave de valet solo es posible manejar el auto una cierta distancia e inclusive tampoco es posible abrir la cajuela o guantera. oAuth no es un concepto nuevo, únicamente reúne los conocimientos y mejores prácticas de protocolos existentes en la industria dentro de una única especificación bien definida y abierta. oAuth es similar a otros protocolos usados en la actualidad tales como: Flickr API, Amazon Web Services API, Google AuthSub y Yahoo BBAuth entre otros. Actualmente existen ya varios servicios que utilizan oAuth, siendo los más populares Digg, Jaiku, Flickr, Plaxo, y Twitter entre otros. La lista aumenta continuamente, y rápidamente oAuth se está convirtiendo en el mecanismo default para que dos .BIO Arturo Garrido de la Rosa es servicios en Internet puedan Ingeniero en Cibernética y Sistemas Computacionales por la Universidad compartir información o recurLa Salle. Cuenta con más de 12 años de experiencia profesional enfocánsos sobre un usuario. dose en arquitectura y desarrollo de aplicaciones web. Conductor del podcast “Emprende.la”, confundador de DojoMX, fundador y director de Twitea.me. @arturogarrido

¿Cómo funciona?

Para entender como funciona oAuth primero necesitamos definir algunos conceptos fundamentales:

Referencias: [1] Sitio Oficial oAuth. http://oauth.net/ [2] Bibliotecas de Código http://oauth.net/code [3] E. Hammer-Lahav, “The oAuth Core 1.0 Protocol Draft”, Internet Engineering Task Force (IETF). http://bit.ly/sg27r3

16

• Proveedor de Servicio. Controla todos los aspectos de una implementación de oAuth. El Proveedor de Servicio es el término empleado para describir al

de programación lo cual facilita aún más su integración.

sitio web o servicio web donde están localizados los recursos restringidos. Puede ser un sitio para compartir fotografías, un servicio de banca en línea, un servicio de microblogging o cualquier otro donde se almacene información privada de los usuarios. oAuth no obliga que el Proveedor de Servicio también sea el proveedor de identidad, lo que significa que el Proveedor de Servicio puede usar sus propios nombres de usuario y contraseñas para autenticar a sus usuarios o bien utilizar otros sistemas como OpenID. • Usuario. Los usuarios tienen información y recursos que no quieren que sean públicos en el Proveedor de Servicio pero que quieren compartir con otro sitio. En oAuth el protocolo se detiene requiriendo interacción manual del usuario por lo menos una vez para recibir la autorización explícita de acceso. • Consumidor. Es el término otorgado a la aplicación que trata de acceder a los recursos privados del Usuario, tal vez sería más adecuado llamarlo Consumidor de Servicio para ser consistentes y evitar confusiones. Puede ser un sitio web, una aplicación de escritorio, un dispositivo móvil o cualquier otro dispositivo conectado a Internet. El Consumidor es el que obtiene el permiso para acceder a los recursos y donde se realiza la mayor parte del proceso de oAuth. El Proveedor de Servicio genera para el Consumidor información técnica para realizar la implementación como el Consumer Key (llave del consumidor) y el Consumer Secret (secreto del consumidor). • Recursos Protegidos. Todo lo que oAuth protege y a lo que permite el acceso. Puede ser información (fotografías, documentos, contactos, etc.), acciones (publicar en un blog, transferir fondos, agregar contactos, enviar mensajes, etc.) o cualquier URL con la necesidad de restringir su acceso. • Tokens. oAuth utiliza tokens en lugar de credenciales de usuario para acceder a los recursos. Un token generalmente es una cadena aleatoria alfanumérica que es única, difícil de adivinar, y que tiene que usarse en par con el Consumer Secret para evitar el abuso del token. oAuth define dos tipos de tokens: Request (petición) y Access (acceso). Para iniciar cualquier flujo de oAuth es necesario que existan un Proveedor de Servicios y un Consumidor, por lo que desde el punto de vista del desarrollador lo primero que hay que hacer es registrar una aplicación de Consumidor ante un Proveedor de Servicio existente. El Proveedor de Servicio nos solicitará datos sobre nuestra aplicación (nombre, autor, URL, etc.) y al registrarnos nos asignará dos datos importantes: Consumer Key y Consumer Secret, los cuales son únicos y debemos de mantener privados. Adicionalmente, el Proveedor de Servicio provee documentación sobre las URLs y métodos de autorización.


.productos

Hola Mundo API

Flujo de trabajo

Una vez que se ha implementado satisfactoriamente oAuth en la aplicación Consumidor, el Usuario puede iniciar el proceso de autorización para utilizar la aplicación consumidor y que ésta tenga acceso a los recursos en el Proveedor de Servicio. La figura 1 muestra este proceso de autorización.

Los parámetros de oAuth que son enviados con cada solicitud son: • oauth_consumer_key - El identificador del consumidor. • oauth_signature - Firma generada por el consumidor para que el proveedor autentique la operación. • oauth_signature_method - El método utilizado para la firma (HMAC_SHA1, RSA-SHA1, PLAINTEXT). • oauth_token - El valor del token que asocia la petición del usuario con el proveedor de servicio. • oauth_timestamp - Timestamp de la operación. • oauth_nonce - Cadena única generada por el consumidor para que el proveedor de servicio verifique que esta operación no se ha hecho anteriormente, y así proteger contra ataques de repetición de operaciones. Estos parámetros se transmiten mediante el header de autorización HTTP, el HTTP POST Request Body o como parámetros del Query String en el URL. 17

Mediante oauth_timestamp y oauth_nonce se verifica que los requests sean únicos además que con los parámetros encriptados utilizados para firmar los request es posible identificar al Consumidor. oAuth está diseñado para comunicaciones no seguras (HTTP) y soporta los métodos HMAC-SHA1 y RSA-SHA1 aunque también soporta PLAINTEXT el cual únicamente debe ser usado bajo comunicaciones seguras (HTTPS).

Implementaciones y librerías de referencia

Actualmente existen varias implementaciones de oAuth en múltiples lenguajes de programación lo cual facilita aún más su integración en nuestras aplicaciones. En el sitio oficial de oAuth podemos encontrar un listado de bibliotecas de código para los lenguajes más populares.

oAuth y OpenID

Una de las principales confusiones que existe es en cuanto a la relación entre oAuth y OpenID. oAuth no sustituye a OpenID, sino que son complementarios. oAuth no es tampoco una extensión de OpenID. OpenID se enfoca en la autenticación, utilizando una única identidad para firmarse en varios sitios. Por otro lado, oAuth se enfoca en la autorización, permitiendo acceder a información privada sin compartir por completo la identidad.

Software Guru

Figura 1. Proceso de autorización con oAuth.

www.sg.com.mx |

1 El usuario ingresa a la aplicación Consumidor y al momento de intentar acceder los recursos privados se dispara el proceso con la solicitud de un Request Token por parte del Consumidor hacia el Proveedor de Servicio quien verificará que sea una solicitud válida y entonces generará el Request Token solicitado para el Consumidor. 2 Al recibir el Request Token el Consumidor redireccionará al Usuario hasta el sitio web del Proveedor de Servicio para que manualmente el usuario se autentique con sus credenciales y autorice explícitamente la solicitud de acceso del Consumidor. Una vez hecho esto el Proveedor de Servicio redirige al usuario nuevamente hacia la aplicación Consumidor. Es importante hacer notar que las credenciales son ingresadas por el Usuario dentro del sitio del Proveedor de Servicio y no en la aplicación Consumidor, por lo que este último nunca tiene acceso a ellas. 3 El Consumidor una vez autorizado procede a realizar el intercambio del Request Token por el Access Token. El Request Token únicamente sirve para la aprobación de acceso por parte del Usuario mientras que el Access Token es el que se utiliza para acceder a los Recursos Protegidos. 4 Finalmente utilizando el Access Token el Consumidor accede a los Recursos Protegidos, pudiéndolo hacer en una o más solicitudes subsecuentes sin necesidad de volver a solicitar la autorización del Usuario.


.productos Herramientas

Documentando en ››Por Harvey Alférez, Pedro Ávila

C

Scrumposibilidades

un vistazo a algunas

omo ya se ha visto en artículos anteriores de SG [1], Scrum es un conjunto de prácticas de desarrollo de software ágil, iterativo e incremental. La estructura de los proyectos en Scrum se basa en ciclos de trabajo llamados sprints que son iteraciones de 1 a 4 semanas. Scrum es ideal en proyectos con entornos complejos, en donde se necesita obtener resultados pronto, se cuenta con requisitos cambiantes o poco definidos, y la productividad es fundamental. En organizaciones desarrolladoras de software donde apenas se está empezando a implementar Scrum se cuenta con el inconveniente de tener muy corto tiempo en cada sprint para realizar la documentación de artefactos tales como el product backlog (lista con toda la funcionalidad del producto), sprint backlog (lista de tareas que el equipo se compromete a terminar en el sprint) y burndown chart (representación grafica del trabajo por hacer contra el tiempo). Por eso es importante contar con herramientas de soporte al desarrollo ágil que sean económicas y fáciles de usar. El objetivo del presente artículo es mostrar que Google Wave [2] es una herramienta que puede apoyar la construcción y manejo de documentación en procesos ágiles colaborativos tales como Scrum. Google Wave es una nueva herramienta de comunicación en línea que permite a grupos de personas editar y discutir información de forma simultánea en la web. Cada wave presenta un solo ejemplar de una conversación que todos los participantes pueden

Figura 1. Ejemplo de Wave por Sprint

con Google Wave

“Google Wave apoya la construcción y manejo de documentación en procesos ágiles colaborativos tales como Scrum.”

editar y modificar en tiempo real, incluso cuando la información se está cambiando. Aunque Google Wave se encuentra en etapa de “vista previa”, hemos hecho experimentos en donde encontramos que ésta puede servir como una excelente herramienta de documentación al usar Scrum. A continuación se presentan los resultados.

Escenario base

La estructura que recomendamos es la de crear un wave por cada sprint estableciendo una nomenclatura consecutiva, por ejemplo: Sprint1_ProyectoXYZ, Sprint 2_ProyectoXYZ, y así sucesivamente. Cada uno de los waves debe contener información del product backlog, el sprint backlog, y el burndown chart. Una gran ventaja de usar Google Wave es que cada miembro del equipo puede observar en tiempo real la documentación que está siendo construida y modificada por otros miembros. Además, cada miembro puede complementar el trabajo de otros mediante comentarios, correcciones, adición de nuevos diagramas, etc. La Figura 1 muestra un ejemplo en donde se puede observar el product backlog del primer sprint de un proyecto.

Figura 2. Ejemplo de Una lluvia de ideas

18


.productos

Herramientas

• Traducción en tiempo real. Aunt Rosie [3] es un robot de traducción automática a varios idiomas en tiempo real construido sobre Google Translate y Google Wave. Equipos de desarrollo, por ejemplo en Latinoamérica, que no tienen mucha fluidez en el idioma inglés pueden trabajar sin problema en tiempo real con otros equipos distribuidos de Scrum en otros países; Google Wave traduce automáticamente de español a inglés y viceversa. • Agregar voz y video. Los miembros del equipo de Scrum pueden colaborar con personas distribuidas geográficamente usando voz y video en sesiones de conferencia en vivo con los gadgets de Ribbit y 6rounds respectivamente. • Lluvia de ideas. El gadget de brainstorming sirve para hacer sesiones de lluvia de ideas en tiempo real dentro del wave que corresponde a cada sprint. En la figura 2 se muestra un ejemplo. • Lenguaje natural. Por la rapidez con la que se debe hacer cada sprint, se puede caer en errores ortográficos en la documentación. Google Wave corrige automáticamente la ortografía a partir de un contexto lingüístico específico. • Lista de tareas. Uno de los gadgets más interesantes que puedes

››Una gran ventaja de Google Wave

es que cada miembro del equipo puede observar en tiempo real los cambios en la documentación.

Conclusión

Aunque Google Wave aún se encuentra en periodo de pruebas, desde ya se perfila como una excelente herramienta de apoyo a la documentación de metodologías ágiles tales como Scrum. Por ejemplo, el product backlog, sprint backlog, y burndown chart pueden ser documentados de manera rápida, completa, y distribuida en cada sprint. Además, la comunicación entre los miembros del equipo y de éstos con otros equipos se puede mejorar con las herramientas que Google Wave provee, especialmente cuando existen equipos de desarrollo en lugares remotos.

.BIO Germán Harvey Alférez Salinas es Coordinador del Departamento de Investigación de la Facultad de Ingeniería y Tecnología en la Universidad de Montemorelos, e investigador asociado en Asia-Pacific International University, Tailandia. Es graduado con honores del Master of Science in Information and Communication Technology en Assumption University, Tailandia. http://fit.um.edu.mx/harvey Pedro David Ávila Muñoz es graduado en Computación Administrativa en la Universidad del Valle de Puebla. Actualmente cursa la Maestría en Ciencias Computacionales con acentuación en Ingeniería del Software en la Universidad de Montemorelos. pedro.avila@um.edu.mx

Figura 3. Lista de tareas

19

Referencias: [1] O. Soto,, & H. Alférez. “Scrum, ¿un paradigma de administración de proyectos que cumple lo que promete?”, Software Guru. No. 25, 2009. [2] Google Wave. http://wave.google.com [3] “Aunt Rosie - Google Wave Translation Robot” http://bit.ly/sg27r4 [4] G. Trapani, & A. Pash. “The Complete Guide to Google Wave”. http://bit.ly/sg27r5

Software Guru

Existen diversas extensiones y gadgets para Google Wave que permiten ampliar su funcionalidad y casos de uso. Compartimos aquí algunos escenarios posibles:

instalar en Google Wave es la lista de tareas. Se puede utilizar en cada sprint con el fin de controlar el avance del mismo de una manera gráfica y sencilla. Un ejemplo de esto se puede observar en la Figura 3 en donde se tienen tres tareas con su respectiva prioridad y porcentaje completado.

www.sg.com.mx |

Posibilidades adicionales


El ADN de la Industria de Software en MĂŠxico

20


.EN PORTada

Industria

¿Y cómo se ha logrado esto?

Tanto en SG como en otros medios se ha hablado en repetidas ocasiones sobre el PROSOFT (Programa para el Desarrollo de la Industria de Software). Sin embargo, pocas veces se habla sobre lo que hay abajo de PROSOFT. Es decir, qué organizaciones y proyectos específicos son los que se encargan de hacer realidad las estrategias que marca PROSOFT. A lo largo de las siguientes páginas hacemos un inventario de lo que consideramos son las principales organizaciones y proyectos que están contribuyendo al desarrollo de esta industria. * Fuente: SNIITI. http://www.edigital.economia.gob.mx

21

www.sg.com.mx |

Hoy, México se ha posicionado como un jugador importante en la industria de TI a nivel mundial. Aunque todavía dista de tener el tamaño o capacidad de los países líderes a nivel mundial, México cada vez es considerado como una mejor opción. Estos son algunos datos que reflejan este avance*: La exportación de servicios de TI y BPO (Business Process Outsourcing) desde México ya está generando ingresos cercanos a los 4 mil millones de dólares anuales, y mantiene ritmos de crecimiento de doble dígito. Existen en el país 223 organizaciones desarrolladoras de software certificadas en un modelo de calidad. México es uno de los países donde se está generando una mayor cantidad de profesionistas de TI certificados internacionalmente. De hecho, en el caso específico de PSP (Personal Software Process), México es líder mundial en personas certificadas.

Software Guru

A principios de la década pasada México tomó la decisión de convertirse en un jugador clave a nivel mundial en la industria de software y servicios de TI.


.EN PORTada

Entrevista

22


Omar Ibarra Nakamichi

A cinco años del inicio de PROSOFT, ¿cuáles son los resultados? Creo que el principal logro de Prosoft ha sido contribuir a que haya una industria de TI. Es decir, hace seis años había empresas de TI con esfuerzos aislados, pero no había una industria como tal. Ahora México ya es visto como un líder en servicios de TI en América Latina, y nos hemos posicionado como un país atractivo para la inversión en este sector. ¿A qué se debe que PROSOFT ahora forme parte de la subsecretaría PyME? Prosoft pasó de ser un programa específico para el sector de empresas de TI a ser una estrategia de fomento empresarial. Es por eso que de estar en una subsecretaría que es de Industria y Comercio, pasó a una subsecretaría que es de apoyo a las empresas. Ahora, el alcance no solamente son las empresas de TI, sino que la estrategia va dirigida a las más de 4.2 millones de PyMEs del país. Aquí lo que buscamos es que no solamente se apoye con los recursos de Prosoft, sino todos los que se tienen dentro de una estrategia de apoyo empresarial. Bajo esta visión, lo importante no solo es hacer que crezcan las empresas de TI, sino también el mercado local, es decir, que las empresas de TI crezcan debido a que hay una mayor demanda de mercado, mejores circunstancias y mejores jugadores. ¿Cómo funciona esta estrategia de fomento empresarial? En esta estrategia se trabajan cinco segmentos: emprendedores, microempresas, PyMEs, empresas gacela (las que basan su negocio en tecnología e innovación), y empresas tractoras (negocios grandes que generan cadenas de valor). Para cada uno de estos segmentos manejamos cinco ejes o líneas de apoyo que son: consultoría especializada, que básicamente se trata de formar empresarios; apoyo en 23

¿Qué avances hay en cuanto a financiamiento para empresas de TI? El tema de financiamiento para empresas de TI no es fácil, ya que en el mercado no existen servicios financieros diseñados para las características y necesidades de esta industria. Pero hemos avanzado mucho y este año vamos a salir muy fuerte para que haya crédito para empresas de TI. También habrá mucho apoyo financiero para que empresas que no son del sector puedan adquirir o implementar TI. Un ejemplo es el fondo de garantías que manejamos en Fondo PyME; por medio de éste aportamos las garantías para respaldar financiamiento a una empresa, y gracias a eso, las empresas pueden acceder a financiamiento sin tener que hipotecar nada y a tasas preferenciales, porque tienen cubierto el riesgo. Adicionalmente, está el tema del capital de riesgo; para las empresas de TI esto es más importante que el financiamiento tradicional. La buena noticias es que ya generamos un fondo de capital de riesgo para empresas gacela tecnológicas, y estamos saliendo este año con 500 millones de pesos. ¿Cuáles son los retos que enfrenta hoy la industria de TI? Las circunstancias hoy son distintas a las que había cuando inició Prosoft. Hoy lo que se requiere en TI a nivel mundial es tener una especialización o incluso una subespecialización. En el caso de México, la mayor plataforma instalada la tenemos en temas generales. Hay muchas empresas certificadas, pero no hay especialización. Tenemos que escoger ciertas áreas de especialización y ser los mejores en ellas. ¿Cuáles son las áreas de especialización en las que nos enfocaremos? Consideramos que la vocación de la industria de TI del país debe enfocarse a multimedia, contenidos educativos, y servicios de TI de alto valor agregado para los sectores financiero, salud y seguridad. Nosotros no queremos que México se convierta en un buen maquilador, queremos ser una economía de servicios de alto valor agregado en TI. ¿Cuál es tu perspectiva sobre el mercado interno de TI? Definitivamente debemos enfocarnos en desarrollar el mercado interno de TI. El mercado internacional ciertamente es muy grande pero también muy competido. Por otro lado, en el mercado interno tenemos más de cuatro millones y medio de empresas en el país que requieren de servicios relacionados con las TI; es un mercado virgen. Entre nuestras metas está que, en un plazo de tres años lleguemos a un millón de PyMEs y las transformemos por medio de hardware, software y servicios de TI. No estamos hablando de que tengan computadoras, estamos hablando de transformar a estas empresas a través de tecnologías de información, es decir, que puedan mejorar sus procesos operativos.

Software Guru

“Lo que estamos buscando es que las empresas de TI sean un detonador del resto de las empresas del país, no que las empresas de TI crezcan aisladas.”

financiamiento; apoyo para la comercialización, donde ayudamos a las empresas para que promuevan sus productos nacional e internacionalmente; innovación y tecnología; y gestión.

www.sg.com.mx |

A cargo de la Dirección General de Desarrollo Empresarial y Oportunidades de Negocios de la Secretaría de Economía, el Lic. Omar Ibarra Nakamichi tiene claro que el papel de las compañías de TI tiene que ser el de detonadoras de otras empresas, es decir, que generen una reacción en cadena que beneficie a sectores más allá del de las tecnologías de la información. En entrevista con SG, Omar habló sobre los retos y ventajas que tiene PROSOFT ahora que ha pasado a formar parte de la Subsecretaría PyME, sobre la vocación del país en el terreno tecnológico y los pasos a seguir.


.EN PORTada

Industria

Resulta de suma im-

Operación e iniciativas en curso

portancia que todos los involucrados en la industra de software conozcamos dónde estaremos como país en los próximos años, por esta razón es indispensable conocer la estrategia que la industria mexicana tiene para impulsar su crecimiento a nivel internacional, con el objetivo de sumar esfuerzos y trabajar orientados en la misma meta.

Gracias al consejo de asesores internacionales, MexicoIT ha creado una estrategia de comunicación integral de mercadotecnia y relaciones públicas en EU, para dar a conocer las capacidades del país como destino. La idea es que con ello, las empresas afiliadas a MexicoIT entren en el radar de analistas como Gartner, IDC, NeoIT, entre otros, lo que potencia su visibilidad ante posibles clientes. Para asegurar que estas empresas son candidatos ideales, se han establecido programas de evaluación de calidad y de habilitación para la exportación de servicios. Antes de que termine el primer semestre del año, MexicoIT planea tener un representante permanente en Estados Unidos para seguir generando leads. Otro objetivo del programa es presentar a México como un país atractivo para la inversión extranjera, propiciando así la creación de empresas de TI.

››Gartner proyecta que para 2013 México será el

segundo país proveedor de servicios IT en el mundo.

MéxicoIT es el programa de promoción de la iniciativa privada de Tecnologías de la Información (TI) de México, cuyo objetivo es impulsar el crecimiento de esta industria, así como promover, fortalecer y posicionar su presencia en el mercado internacional. El programa es ejecutado por la Cámara Nacional de la Industria Electrónica, de Telecomunicaciones y de Tecnologías de la Información (CANIETI), y es apoyado por el programa PROSOFT de la Secretaría de Economía (SE). Aunque las estrategias del programa se dirigen al mercado global, hay un especial interés en el mercado de Estados Unidos, debido a su gran demanda en servicios de IT. De igual manera México IT promueve la alternativa nearshore, aprovechando la cercanía geográfica que nuestro país tiene con EU. “Queremos que se considere a México como una opción de alta calidad y costo competitivo para invertir en la creación de empresas de tecnología, o adquirir servicios de IT”, señala Alfredo Pacheco Vásquez, director ejecutivo del programa.

Que resultados ha tenido y que metas tiene

Los indicadores más recientes del programa (2008), señalan que se ha logrado presencia en más de 30 publicaciones de medios impresos y online. Actualmente, hay más de 12 empresas que aprovechan los servicios del programa, pero existen más de 150 empresas mexicanas que tienen potencial para exportar. Un reporte de la consultora AT Kearney posicionó a México en el lugar 11, de entre los 50 países del mundo con mejores ofertas en servicios de outsourcing de TI. En el reporte de 2009 de Gartner, se proyecta que para 2013 México va a ser el segundo país proveedor de servicios IT en el mundo, sólo detrás de la India. 24

INFOMIT es una herramienta desarrollada por MexicoIT para el área de Inteligencia de los Negocios de las empresas. En el portal InfoMIT se concentra toda la información de la industria de las TICs en México y el mundo. Además, se pueden encontrar indicadores de la industria como reportes, encuestas, opiniones, casos de estudio y opiniones de líderes de TI. Para acceder a esta información es indispensable contar con membresía. www.mexico-it.net/infomit

Capital humano y especialización

India y China tienen muchas ventajas, especialmente la de recursos humanos. No obstante, “en México nos hemos quedado con bajo volumen y alta mezcla, es decir, que nos especializamos en un nicho de mercado que podía generar mayor valor agregado y más empleos de salarios altos”, señala Pacheco. Desde hace dos años, MexicoIT trabaja con México First, y con acciones conjuntas planean enfocarse al tema de las certificaciones y capacitación del talento mexicano para realizar actividades de TI y Business Process Outsourcing (BPO). Por otro lado, MexicoIT tiene proyectado empezar a trabajar en industrias verticales. “Por ejemplo, Jalisco está enfocado a multimedia y es un caso de buen trabajo entre empresas, gobierno y cámaras”, detalla el director ejecutivo de MexicoIT.

Beneficios de participar con Mexico IT

Para ser parte del programa es indispensable tener capacidad para comercializar en EU, dominio del idioma inglés, contar con certificación de modelo de calidad, y contar con capacidad de crecimiento. Mexico IT apoya a los estados que forman parte de este programa, promoviendo las capacidades de TI y la industria en general de la entidad. Algunos estados que actualmente forman parte son: Baja California, Estado de México, Jalisco, Nuevo León, Querétaro, Sinaloa y Sonora.


.EN PORTada

Industria

Lineamientos de operación

MexicoFIRST trabaja en base a tres elementos principales: • Proveer direccionamiento al sector sobre las tendencias globales y sus implicaciones en el desarrollo del capital humano. • Promover la disponibilidad de suficiente capital humano con las habilidades y capacidades necesarias para ofrecer servicios de offshoring de alto valor agregado. • Facilitar el acceso a la capacitación y certificación de personas y empresas a través de alianzas estratégicas. Para este último propósito, MexicoFIRST trabaja en dos sentidos. Por un lado establece alianzas con las marcas líderes para acordar tarifas preferenciales en servicios de capacitación y certificación; el apoyo recibido de parte de las empresas ha sido fantástico, actualmente se cuenta con un catálogo de más de 120 ofertas de certificación con un descuento promedio de 50%. Por otro lado, MexicoFIRST canaliza apoyos económicos de parte del Gobierno Federal y Estatal para poder cubrir una parte significativa del costo, de forma que los beneficiarios terminan pagando un precio mucho menor al original.

Metas

De acuerdo con un estudio realizado por la empresa de consultoría AT Kearney se determinó que México requiere generar para el año 2013 a 100 mil nuevos profesionistas de Business Process Outsourcing (BPO) y 50 mil nuevos profesionistas de tecnologías de información.

Adicionalmente, 61 mil de estos profesionistas deben contar con un alto grado de especialización avalado por certificaciones internacionales. Es así que la meta de MexicoFIRST es lograr certificar a 61 mil profesionistas de TI y BPO para el año 2013.

Resultados

MexicoFIRST inició operaciones formalmente en el tercer trimestre del 2008. Es un programa joven, pero que inmediatamente ha dado resultados. Durante su primer año de operaciones se logró certificar a cerca de 4 mil profesionistas en diez estados diferentes del país. En el segundo año, que actualmente se está cerrando, se tiene proyectado certificar a poco más de 7 mil. Este crecimiento nos permite pensar que durante los próximos años se estarán certificando anualmente a más de 15 mil profesionistas. Hasta el momento, los estados de la República donde ha habido un mayor esfuerzo de capacitación y certificación por medio de MexicoFIRST son Jalisco, Nuevo León y Aguascalientes. La tabla 1 muestra un desglose de los proyectos que se manejaron durante el 2009.

Tipos de certificación

Ciertamente, el grueso de las certificaciones que se apoyan desde el programa MexicoFIRST tienen que ver con temas tecnológicas como sería la programación con alguna tecnología específica (Java, .Net, PHP, etc). Sin embargo, el catá-

logo de certificaciones también considera otras habilidades y conocimientos como procesos de software, dirección de proyectos y consultoría de negocios. El dominio del idioma inglés también forma parte del catálogo de MexicoFIRST. Raúl González, Director Operativo de MexicoFIRST nos comenta que “la visión es generar profesionistas que puedan proveer servicios de alto valor agregado. Por ejemplo, una opción sería alguien que cuente con una certificación técnica, un soft skill (ej. Dirección de proyectos), e inglés; eso sería un profesionista de TI completo. O si quiere especializarse técnicamente, que lo haga en un nicho muy específico como por ejemplo desarrollo de videojuegos para dispositivos móviles”.

Retos y perspectivas

Para poder llegar a un mayor número de beneficiarios, MexicoFIRST está buscando dar mayor flexibilidad a sus reglas de operación, de forma que se puedan realizar proyectos directamente con organismos y grupos de empresas. Por otro lado, se ha contratado un estudio para determinar las áreas de especialización que son más convenientes para cada región del país. Con esta información se fomentará que en cada región del país se desarrolle una masa crítica de capital humano especializado en un tema específico de alta relevancia para el mercado global. Mayor información en www.mexico-first.org

Secretaria de Gobierno del IP y/o Academia Total Persona Economía Estado Certificadas Aguascalientes Baja California Jalisco Estado de México Nayarit Nuevo León Querétaro Sonora Zacatecas Otros Proyectos*

$5,000,000 $5,000,000 $700,000 $700,000 $22,000,000 $22,000,000 $2,501,505 $2,501,505 $3,000,000 $3,000,000 $12,300,000 $6,158,583 $402,696 $402,696 $1,500,000 $1,500,000 $3,000,000 $3,000,000 $14,595,799

Totales $65,000,000

$2,500,000 $600,000 $11,000,000 $1,250,752 $1,500,000 $12,300,000 $201,348 $1,285,000 $1,500,000 $21,800,000

$12,500,000 $2,000,000 $55,000,000 $6,253,762 $7,500,000 $30,758,583 $1,006,740 $4,285,000 $7,500,000 $36,395,799

$44,262,784 $53,937,100 $163,199,884 7,058

40% 27% 33% 100% Tabla 1. Proyectos 2009 por estado

25

543 84 2092 226 240 1906 65 142 316 1442

Software Guru

Federal Institute for Remote Services and Technology A.C. (MexicoFIRST) es una iniciativa respaldada por Secretaría de Economía y el Banco Mundial, cuyo objetivo principal es la generación de capital humano con el fin de fortalecer la oferta laboral tanto en cantidad como en calidad. La visión de este programa es posicionar a México como destino preferido de offshoring por su capital humano como elemento diferenciador.

www.sg.com.mx |

Mexico


.EN PORTada

Asociaciones

Organismos

Parte fundamental de la indus-

tria de tecnologías de información en México son los organismos que forman parte de ella. A través de ellos se busca generar sinergia entre las empresas y establecer representatividad para interactuar con agentes tales como el Gobierno, Academia y otros organismos nacionales e internacionales. A continuación presentamos una breve semblanza de los principales organismos relacionados con la industria de TI en México, con un énfasis en las actividades e iniciativas que tienen en curso.

CANIETI. Cámara Nacional de la Industria Electrónica, de Telecomunicaciones y Tecnologías de la Información www.canieti.org

CANIETI cuenta con más de 70 años de existencia y más de 1,000 empresas afiliadas en todo México, distribuidas a lo largo de 10 oficinas en el país; convirtiéndose en la entidad representativa del Sector en México. Su propósito principal es lograr el desarrollo competitivo de la Industria con sentido gremial y responsabilidad social. Uno de los principales focos de atención de CANIETI es el trabajo de cabildeo a favor de los sectores que orgullosamente son representados. Esta relación estrecha se centra en el Gobierno Federal, tanto Poder Ejecutivo como Legislativo; los diversos Gobiernos Estatales y la amplia gama de organismos empresariales que existen en el mundo. CANIETI es el organismo operador del programa MexicoIT, respaldado por el Gobierno Federal y los Estatales, así como por diversos organismos empresariales; desplegando una campaña de posicionamiento de nuestra marca país en el mercado global de tecnologías de la información y en particular en los Estados Unidos de Norteamérica, lo cual ha permitido concientizar a las audiencias meta acerca de la existencia, las capacidades, beneficios y oferta diferenciada que existe en México. De igual forma, la Cámara también opera el programa Mexico FIRST, apoyado por el Gobierno Federal y los Estatales, además del Banco Mundial, cuyo objetivo principal es la generación de capital humano tanto en cantidad como en calidad, de manera tal que nos permita estar a la altura del recurso humano de países competidores en el ámbito global. La Cámara es reconocida –para beneficio de sus empresas miembro-, como el organismo empresarial que más recursos obtiene de los diversos programas de fomento que ofrece el Gobierno Federal y los Estatales.

26

AMITI. Asociación Mexicana de la Industria de Tecnologías de Información www.amiti.org.mx

Actualmente la AMITI cuenta con más de 230 socios en 19 estados del país, además de convenios de colaboración y relaciones con universidades, embajadas, dependencias gubernamentales, asociaciones y cámaras para promover el desarrollo de la industria de tecnologías de información. El principal objetivo de la AMITI es promover el crecimiento de la industria de TI en beneficio del país, la industria y los miembros de AMITI. Las principales iniciativas que impulsa son: • Incrementar la inversión de TIC en el sector público y privado. • Fomentar la exportación de servicios de TI. • Formación de Capital Humano en las TI. • Gobierno como un serio promotor de las TI. AMITI se encarga de operar el programa IT-LINK, que es un esfuerzo conjunto con la Secretaría de Economía, con el apoyo del Banco Mundial, con el cual se busca generar diferentes tipos de enlace entre los actores de la industria de TI (clusters y PyMEs de TI, academia, organismos empresariales, etc.) con multinacionales del sector. Los beneficios serán para la industria local, tales como la generación de ventajas competitivas, el desarrollo de nuevos productos y servicios, la apertura del mercado internacional, así como la transferencia tecnológica entre las empresas.

AnadicSoft.

www.anadicsoft.com.mx AnadicSoft es la marca de software mexicano que ofrece variadas soluciones enfocadas a satisfacer las necesidades de administración y control en los diversos sectores productivos y de servicios tanto para la micro, pequeña y mediana empresa, como para corporativos y gobierno. Las empresas que forman parte de AnadicSoft son aquellas que desarrollan software y que tienen ganado un importante sector de su mercado y aquellas que desarrollan a la medida del usuario final con herramientas y normas de calidad. AnadicSoft conjunta una gran cantidad de empresas proveedoras de soluciones de software, consultoras e integradoras, listas para desarrollar cualquier tipo de solución a la medida de las necesidades del usuario. En este momento AnadicSoft está llevando a cabo la instalación de soluciones de TI para 500 empresas apoyadas con los Fondos Pyme de la Secretaria de Economía. En esta primera fase se está atendiendo a 200 empresas del sector comercio, 200 del sector salud y 100 del sector turismo (hoteles). Una vez concluida esta primera fase se iniciará una segunda donde estarán incluidos todos los sectores


AMESOL es una organización que reúne principalmente a empresas cuyo modelo de negocio involucra o está basado en el open source. La función principal de AMESOL es apoyar los planes estratégicos, operativos y de marketing de sus socios. AMESOL se identifica como parte de una comunidad más grande de interesados en el software libre; pero no la representa. AMESOL está consciente de que al apoyar a dicha comunidad, se beneficia todo el ecosistema que incluye a las empresas. Las acciones de AMESOL están divididas en los siguientes temas: • Conocer el mercado mexicano y encontrar nichos de oportunidad para las soluciones y productos de nuestros socios. Realizaremos estudios de mercado e investigaciones que nos permitan conocer exactamente la penetración del open source en el ecosistema de TI en México y las áreas de oportunidad. • Actividades de divulgación acerca de los beneficios del paradigma FLOSS (Free Libre Open Source Software) y específicamente de los productos de nuestros socios. • Cursos, seminarios y pláticas a los sectores interesados en el tema: periodistas, estudiantes, académicos, empresarios, investigadores y sector gobierno. • Mayor acercamiento con los principales actores de la industria de TI en el país: cámaras, otras asociaciones, secretarías, poder legislativo y medios de comunicación.

ANIEI. Asociación Nacional de Instituciones

de Educación en Tecnologías de la Información www.aniei.org.mx

La ANIEI se dedica a contribuir a la formación de profesionales en informática y computación. Entre sus objetivos permanentes están: • Orientar, proponer y difundir las actividades que en materia de docencia, investigación y extensión educativa se realizan en el área de informática. • Contribuir a la integración, actualización y superación de la educación en informática, en todos sus niveles. • Analizar los problemas relacionados con la enseñanza de la informática, proponer soluciones y colaborar en su implantación.

27

ANIEI organiza anualmente la Reunión de Directores de Escuelas y Facultades de Informática y Computación, la cual este año se llevará a cabo del 9 al 11 de junio en Manzanillo. Asimismo, se realizará el Congreso de Informática y Computación ANIEI 2010 organizado colegiadamente por la Secretaría de Educación Jalisco, las instituciones de nivel medio superior y superior del Estado de Jalisco, y como coordinador el Instituto Tecnológico Superior de Puerto Vallarta, éste se llevará a cabo del 13 al 15 octubre en Puerto Vallarta.

IMPULSA-TI. Sociedad Academia Industria Gobierno en Tecnologías de Información IMPULSA-TI es una instancia que profesionaliza el proceso de vinculación entre la academia, la industria y el gobierno con el propósito de formar el capital humano en cantidad y calidad conveniente que requiere la industria de TI. Esto la hace a través del desarrollo de modelos de formación y certificación basados en competencias laborales del capital humano los cuales son creados a partir de la vinculación entre la academia y la industria y el apoyo y reconocimiento del gobierno. IMPULSA-TI desarrolló el proyecto rector denominado “Talento en TI”, cuyo objetivo es desarrollar un modelo que permita alinear las capacidades de capital humano, entre los requerimientos de la industria y la oferta académica. Actualmente se están desarrollando los cincuenta contenidos de los cinco perfiles del Modelo Paracurricular en línea, los cuales son diseñados y construidos por la Universidad Autónoma de Aguascalientes, la Universidad Veracruzana y la Universidad Politécnica de Aguascalientes. Se espera que estos contenidos estén terminados en un plazo no mayor a seis meses. Estos contenidos estarán disponibles al público en general a través de la plataforma Capacinet. También se ha iniciado la definición de requerimientos para la construcción del Sistema Inteligente de Capital Humano en Tecnologías de la Información (SICAPH-TI), el cual servirá como base de datos para proveer inteligencia acerca de los estudiantes y graduados en carreras de Tecnologías de Información de forma que se puedan conocer las capacidades reales del país en términos de capital humano.

Software Guru

AMESOL. Asociación Mexicana Empresarial de Software Libre www.amesol.org.mx

Con este fin, entre las actividades para el 2010 destacan: • Continuar con los trabajos de alineación de los planes y programas de estudio a las necesidades actuales de las tecnologías de la información, estas acciones se implementarán a través del Modelo Curricular y Paracurricular. • Vincular a las instituciones educativas con el proyecto “Talento en TI” y la Asociación Academia Industria Gobierno en Tecnologías de la Información (IMPULSA-TI). • Fortalecer el intercambio de proyectos con la comunidad de Latinoamérica.

www.sg.com.mx |

económicos para los que AnadicSoft tiene soluciones probadas, donde el numero será al menos 10 veces mayor. La principal meta de AnadicSoft es que con el paso del tiempo sea una referencia obligada cuando de software nacional se trate, tanto para distribuidores como para el usuario final. Finalmente se tiene como objetivo llegar a otros mercados, siempre con la marca mexicana de software, AnadicSoft


.EN PORTada

Industria

Parques Tecnológicos Los parques científicos

tienen una historia de más de 60 años, cuando en Silicon Valley se fundó el primer modelo en 1948. Posteriormente en la época de los 60’s las universidades estadounidenses empezaron a crear más parques de este tipo. Conforme se documentaron sus éxitos, muchas otras regiones y países han tratado de acelerar su economía por medio de la construcción de parques con actividades intensivas en ciencia, tecnología e innovación. México no es la excepción, y en los últimos años hemos visto una explosión de parques tecnológicos en distintas regiones del país, especialmente orientados a las tecnologías de información.

¿Qué propósito tienen los parques tecnológicos?

El modelo de parques tecnológicos se ha reinventado varias veces para adecuarse a los cambios requeridos por el mercado y la sociedad. Se reconoce que el modelo ha pasado por tres generaciones y que se encuentra ahora en una cuarta generación, en donde hay un reposicionamiento hacia la importancia de la globalización, las actividades de alto valor agregado, nuevas formas de alianzas publicoprivadas, una mayor integración entre los inquilinos, el fomento y desarrollo de la innovación “abierta”, utilizando la colaboración

28

internacional para la investigación, de manera virtual y presencial, además de facilitar el acceso a fondos para emprendedores. En base a esta visión, la International Association of Science and Technology Parks (IASP) define un parque científico como una organización gestionada por profesionales especializados con el objetivo fundamental de incrementar la riqueza de su región y de promover la cultura de la innovación. Así mismo, también tiene como finalidad fomentar la competitividad de las empresas y las instituciones generadoras de conocimiento instaladas o asociadas al parque. Con este objetivo, un parque científico estimula y gestiona el flujo de conocimiento y tecnología entre universidades, instituciones de investigación, empresas y mercados; impulsa la creación y el crecimiento de empresas innovadoras mediante mecanismos de incubación y generación centrífuga (spin-off), y proporciona otros servicios de valor añadido así como espacios e instalaciones de gran calidad.

Parques tecnológicos en México

Varios estados en México han empezado a planear su sistema regional de innovación en base a la instalación de parques científicos y tecnológicos. Entre ellos destacan Nuevo León, Sonora, Jalisco, Tamaulipas, Querétaro, Baja California y Estado de México, entre otros. En las siguientes páginas los invitamos a conocer algunos de los principales parques tecnológicos de nuestro país.


.EN PORTada

Industria jalisco

Chapala Media Park

Centro del Software Apertura: 28 de septiembre de 2006 -----------------------------------------------------------------------------------------Ramas de especialización: aplicaciones de negocio y servicios de TI, educación y consultoría especializadas, consultoría para modelos de calidad de software; consultoría para prueba de software; modelo de sinergia productiva en aplicaciones web. -----------------------------------------------------------------------------------------Capacidad: 10,000 m2 de instalaciones. -----------------------------------------------------------------------------------------Inversión: el gobierno del estado de Jalisco, a través del COECYTJAL y la Secretaría de Economía aportaron de manera conjunta con las empresas un poco más de 60 millones de pesos en 2006 vía el Prosoft. -----------------------------------------------------------------------------------------Convenios: El IJALTI cuenta con un convenio con el Task Force IPV6 México para realizar I+D con las empresas del Centro. También se desarrollan acuerdos con empresas internacionales, como con Intel para promover la tecnología multicore y la programación en paralelo; o RIM (Research In Motion) para el desarrollo de aplicaciones compatibles con equipos Black Berry® a través de la integradora Aportia. -----------------------------------------------------------------------------------------Logros: ofrece 700 empleos de valor agregado y ha generado 15 millones de pesos en nuevos empleos. Genera empleos indirectos a proveedores y comercios aledaños. Algunas empresas establecidas registran un alza de facturación a más del doble. -----------------------------------------------------------------------------------------Contacto: Marco Manjarrez (33) 3030-6903 www.centrodelsoftware.com.mx

Cd. Guzmán Green IT Park Apertura: mayo de 2008 -----------------------------------------------------------------------------------------Ramas de especialización: servicios de outsourcing de TI y de procesos de negocio, así como desarrollo de tecnología verde (energía). -----------------------------------------------------------------------------------------Capacidad actual: 4 módulos de 200 m2 con capacidad para 40 empleados cada uno, oficinas completamente equipadas con voz y datos, salas de junta, servicios generales; en proceso un nuevo edificio de 2,400 m2. -----------------------------------------------------------------------------------------Inversión: 50 millones de pesos invertidos por el estado de Jalisco y 5 millones de pesos del municipio. -----------------------------------------------------------------------------------------Metas: Se espera la generación de 350 empleos. El objetivo es incrementar la dinámica de negocios de Cd. Guzmán, que cuenta con el 10% de población universitaria de Jalisco. -----------------------------------------------------------------------------------------Contacto: rcanton@ijalti.org.mx

29

www.sg.com.mx |

La industria TIC en Jalisco ofrece un entorno de colaboración totalmente integrado que surge sobre la reconversión industrial del sector de electrónica y tras la definición de determinados nichos de especialización de alta tecnología. Jalisco ofrece un ecosistema local, con vocación global que involucra a proveedores, usuarios intermedios y usuarios finales, la academia y el gobierno. El Estado cuenta con uno de los acervos de capital humano más importantes del país, con altos niveles de especialización, además de tener infraestructura de operación en crecimiento. Los parques tecnológicos de Jalisco forman parte del área de articulación productiva del Instituto Jalisciense de Tecnologías de la Información (IJALTI). De acuerdo con Margarita Solís Hernández, directora general del IJALTI, en el plan de trabajo 2010-2012 destaca lograr la autosuficiencia de los parques. Al apuntar las necesidades más urgentes de los parques tecnológicos de todo el país, Solís Hernández indicó que “nos falta capital, es una necesidad de esta industria que no presenta esquemas de garantías tradicionales. Nos falta tener capital de trabajo, capital de riesgo y capital ángel”. Adelantó que el IJALTI está trabajando en un proyecto para dar soluciones al tema de financiamiento.

Software Guru

Apertura: marzo de 2010. -----------------------------------------------------------------------------------------Perfil de empresas: desarrolladores de animación 2D y 3D, postproducción cinematográfica, efectos especiales, multimedia, videojuegos. -----------------------------------------------------------------------------------------Capacidad: 2 edificios con capacidad para más de 200 diseñadores de arte digital, foro especial para el uso de tecnologías multimedia, capacidad instalada para post-producción, cabina de audio de alta definición. Cuenta con el equipo de animación más grande de Latinoamérica además de oficinas, salas de juntas y servicios generales. -----------------------------------------------------------------------------------------Inversión: el gobierno estatal aportó 30 millones de pesos, el gobierno municipal de Chapala donó 4 hectáreas para el proyecto y el Conacyt dio recursos por 25.8 millones de pesos. Además, se prevé un plan maestro con costo de 20 millones de dólares para buscarlos con inversión mixta los próximos años. -----------------------------------------------------------------------------------------Metas: diseñar, instalar y organizar el funcionamiento de un Consorcio Internacional de Arte Digital y Medios Interactivos (CIADIM) en la región de Chapala, Jalisco. -----------------------------------------------------------------------------------------Contacto: lmartinez@ijalti.org.mx


.EN PORTada

Industria sonora

SonoraSoft Parque Tecnológico de Desarrollo de Software

Sonora ha logrado ser reconocida como una de las regiones pioneras en la búsqueda de la competitividad internacional en la industria de TI. El parque tecnológico SonoraSoft no solo es una obra de infraestructura disponible que permite que las empresas de tecnología locales y foráneas puedan desplegar sus estrategias de operaciones y desarrollo, sino que ha sido clave para dar a conocer a México y al mundo la estrategia y el compromiso que el estado de Sonora tiene respecto al desarrollo de las tecnologías de información. SonoraSoft ha contado desde su diseño operativo con la participación de la industria, el Instituto Tecnológico de Sonora y otras universidades, el Gobierno del Estado y el Municipio de Cajeme. Gobierno, sector privado e instituciones de educación en el Estado de Sonora han trabajado arduamente para desarrollar la industria de software y fomentar la generación de empleos de alta calidad. El parque tecnológico es el resultado de estos esfuerzos ya que es un complejo tecnológico

Ubicación: Ciudad Obregón, Sonora. ---------------------------------------------------------------------------------------------------------------------------Fecha de apertura: 15 de noviembre de 2007. ---------------------------------------------------------------------------------------------------------------------------Ramas de especialización: Mercado nearshore de software y servicios de TI, especialmente del suroeste de EUA. ---------------------------------------------------------------------------------------------------------------------------Capacidad: 18 hectáreas donde hay un edificio de 6,327 m2 productivo de servicios, estacionamiento y áreas verdes. Actualmente se construye un segundo edificio productivo de 8,000 m2 que incluye área de capacitación, salas de juntas, servicios público y locales para renta. ---------------------------------------------------------------------------------------------------------------------------Inversión: Para la etapa 1, el Instituto Tecnológico de Sonora (ITSON) invirtió 41 millones de pesos , el gobierno del estado aportó 22 millones, el gobierno federal 36 millones y el gobierno local otros 6 millones para dar un total de 105 millones de pesos. Para la 2da etapa se están invirtiendo otros 57 millones de pesos. ---------------------------------------------------------------------------------------------------------------------------Servicios que ofrece: Administración, programa de actualización y capacitación, contratación de servicios, incubación de empresas, programa de aceleración de empresas. ---------------------------------------------------------------------------------------------------------------------------Mas información: www.sonorasoft.net

que ofrece servicios de alto valor agregado al mercado internacional de software. Actualmente se encuentra en operación el primer edificio productivo y ya se encuentra en construcción un segundo edificio productivo de 8,000 m2, el cual incluye áreas para capacitación, salas de juntas, servicios público y locales para renta. El parque ha sido sede de eventos importantes como el Foro de Inducción a la Innovación 2009, organizado por la Secretaría de Economía Estatal y el Conacyt. Las organizaciones instaladas hasta el momento son: SourceCorp, Novutec, GoNet, Pinnacle Aerospace, Infemov, Incubadora ITESCA e Incubadora ITSON. Algo que llama la atención sobre este parque es que es un proyecto integral que atien30

de distintas necesidades más allá del área de trabajo. Por ejemplo, el proyecto contempla dormitorios, guardería, área deportiva y locales comerciales. La visión de SonoraSoft no es ser tan solo un proyecto inmobiliario, sino una plataforma de desarrollo para las empresas de Sonora. Es por ello que se ofrece a las empresas albergadas servicios de soporte tales como reclutamiento, capacitación, gestión de infraestructura tecnológica, administración, contabilidad, entre otros. La intención es que las empresas puedan concentrarse por completo en su negocio, que es desarrollar software. Al contar con este parque, empresas y estrategas de distintas partes del mundo han puesto sus ojos en Sonora como un lugar en donde se puede pensar a corto, mediano y largo plazo.


.EN PORTada

Industria nuevo león

PIIT Monterrey Parque de Inversión e Investigación Tecnológica

El Dr. Jaime Parada Ávila, director general del PIIT, platicó con nosotros y nos comentó sobre los proyectos para este 2010: “se pretende comprar terreno adicional e introducir infraestructura urbana y servicios. Asimismo, se espera ejecutar al menos 10 proyectos de desarrollo de aplicaciones y nuevos productos para la industria de NL. También se trabajará en la construcción de una incubadora de biotecnología con laboratorios, planta piloto y espacio para empresas; una incubadora de vivienda sustentable y energías alternativas, y se buscará apoyo para la construcción de 5 nuevos centros en el PIIT”. El Dr. Parada expuso que en 2009, Nuevo León fue la entidad que mayores recursos recibió de los programas de estímulos a la innovación de Conacyt, presentando 387 proyectos, con 70% de los proyectos en vinculación con universidades, centros de investigación y empresas. Recomendó a quienes quieran aprovechar los programas que el gobierno ofrece para 31

el sector de TI que inscriban proyectos de I+D tecnológico, “de preferencia desarrollados en vinculación con los centros de investigación e instituciones universitarias, donde se demuestre la ventaja competitiva que se obtendrá y la posible apropiación de la propiedad intelectual por parte de la empresa”. El director hizo hincapié en que el gobierno estatal ha asignado un presupuesto de 300 millones de pesos para 2010 a los proyectos de inversión del instituto, cantidad cercana al 1% del presupuesto total fiscal del Estado, establecido como meta en la ley del Impulso al conocimiento. Añadió que “la inversión del Gobierno Estatal atrae al menos la misma cantidad de fondos para inversión del gobierno federal y la iniciativa privada”. Respecto al apoyo a proyectos de investigación básica y aplicada en áreas estratégicas, señaló que este año el Instituto de Innovación y Transferencia de Tecnología (I2T2) aportará 80 millones al Fondo Mixto Nuevo León-Conacyt.

Software Guru

del Estado, a través del proyecto Monterrey Ciudad Internacional del Conocimiento, tiene el objetivo de transformar la economía de una basada en manufactura, a una basada en el conocimiento. Para ello, se ha trazado como estrategia el desarrollar “clusters” en sectores estratégicos como el de tecnologías de información y software, aeroespacial, biotecnología, nanotecnología y el sector salud. Debido a sus numerosas ventajas competitivas, Nuevo León se ha consolidado como destino ideal para la inversión extranjera. Su ubicación estratégica, una red de telecomunicaciones y transporte de calidad, una fuerza laboral estable y altamente calificada, han posicionado a Nuevo León como el segundo Estado de la República más importante en captación de capital extranjero. Con el objetivo de impulsar la investigación tecnológica y la transferencia de tecnología entre el sector académico y el sector empresarial, así como el desarrollo del capital intelectual de Nuevo León, el PIIT es una de las estrategias claves del Programa Monterrey Ciudad Internacional del Conocimiento.

www.sg.com.mx |

El Gobierno

Ubicación: Apodaca, Nuevo León. ---------------------------------------------------------------------------------------------------------------------------Fecha de apertura: 23 de septiembre de 2009. ---------------------------------------------------------------------------------------------------------------------------Ramas de especialización: biotecnología, nanotecnología, mecatrónica, tecnologías de información y salud. ---------------------------------------------------------------------------------------------------------------------------Tipo de organizaciones que va a hospedar: 11 centros de 7 universidades (UANL, ITESM, UT, Texas A&M, UDEM, UNAM, University of Arizona); 8 centros públicos en I+D (CINVESTAV, IIE, IANL, CIDESI, CIMAV, CICESE, CIMAT, CIATEJ); 11 centros privados de I+D (Motorola, Pepsico, Sigma Alimentos, Viakable, Qualtia, Prolec-GE, CYDSA, Metalsa, Asociación de Fabricantes de Muebles, Asociación de la Industria del Plástico, MTYITCluster-LANIA); 40 empresas de software; 3 incubadoras de negocios con plantas piloto en nanotecnología, biotecnología y energías alternativas. ---------------------------------------------------------------------------------------------------------------------------Capacidad: en este terreno de 70 hectáreas también se albergan hotel, salones de conferencias, restaurantes y áreas comerciales y de servicios. sus inquilinos son 43% empresas, 25% universidades, 25% centros públicos y 7% gobierno e incubadoras. ---------------------------------------------------------------------------------------------------------------------------Inversión: 100 millones de dólares de recursos públicos federales y estatales, y cerca de 200 millones de dólares en inversión aportados por universidades y centros de tecnología públicos y privados. ---------------------------------------------------------------------------------------------------------------------------Metas o logros a partir de la apertura del parque: se estima que en los próximos 5 años se hayan creado 3,500 nuevos empleos para investigadores, ingenieros y personal de apoyo. (ej. nuevos empleos, nuevas empresas, ingresos económicos). ---------------------------------------------------------------------------------------------------------------------------Mas información: www.piit.com.mx


.Prácticas Arquitectura

Arquitectura de Software materia entrando en

››Por Humberto Cervantes

Nota del Editor: Hemos abierto este espacio dedicado al tema de arquitectura de software. El objetivo es ayudar a los lectores a tener una visión más clara del concepto de arquitectura de software, que los ilustre en los principios que la sustentan, y que motive en la adopción de prácticas relacionadas con ella.

E

n el ámbito del software cada vez es más común escuchar el término “arquitectura de software”, y encontrar oportunidades de empleo para “arquitectos de software”. Aún así, este concepto tiende a ser malentendido y la falta de comprensión al respecto de sus principios frecuentemente repercute de manera negativa en la construcción de sistemas de software. El concepto de arquitectura de software se refiere a la estructuración del sistema que, idealmente, se crea en etapas tempranas del desarrollo. Esta estructuración representa un diseño de alto nivel del sistema que tiene dos propósitos primarios: satisfacer los atributos de calidad (desempeño, seguridad, modificabilidad), y servir como guía en el desarrollo. Al igual que en la ingeniería civil, las decisiones críticas relativas al diseño general de un sistema de software complejo deben de hacerse desde un principio. El no crear este diseño desde etapas tempranas del desarrollo puede limitar severamente el que el producto final satisfaga las necesidades de los clientes. Además, el costo de las correcciones relacionadas con problemas en la arquitectura es muy elevado. Es así que la arquitectura de software juega un papel fundamental dentro del desarrollo.

¿Qué es la arquitectura de software?

Antes de elaborar sobre el tema, es conveniente definir el concepto ya que hoy en día el término de arquitectura se usa para referirse a varios aspectos relacionados con las TI. De acuerdo al Software Engineering Institute (SEI), la Arquitectura de Software se refiere a “las estructuras de un sistema, compuestas de elementos con propiedades visibles de forma externa y las relaciones que existen entre ellos.”[1] El término “elementos” dentro de la definición del SEI es vago a propósito, pues puede referirse a distintas entidades relacionadas con el sistema. Los elementos pueden ser entidades que existen en tiempo de ejecución (objetos, hilos), entidades lógicas que existen en tiempo de desarrollo (clases, componentes) y entidades físicas (nodos, directorios). Por otro lado, las relaciones entre elementos dependen de propiedades visibles (o públicas) de los elementos, quedando ocultos los detalles de implementación. Finalmente, cada conjunto de elementos relacionados de un tipo particular corresponde a una estructura distinta, de ahí que la arquitectura esta compuesta por distintas estructuras.

¿Por qué es importante la arquitectura de software?

La arquitectura de software es de especial importancia ya que la 32

manera en que se estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo que se conoce como los atributos de calidad del sistema. Ejemplos de atributos de calidad son el desempeño, que tiene que ver con el tiempo de respuesta del sistema a las peticiones que se le hacen, la usabilidad, que tiene que ver con qué tan sencillo les resulta a los usuarios realizar operaciones con el sistema, o bien la modificabilidad, que tiene que ver con qué tan simple resulta introducir cambios en el sistema. Los atributos de calidad son parte de los requerimientos (no funcionales) del sistema y son características que deben expresarse de forma cuantitativa. No tiene sentido, por ejemplo, decir que el sistema debe devolver una petición “de manera rápida”, o presentar una página “ligera”, ya que no es posible evaluar objetivamente si el sistema cubre o no esos requerimientos. La manera en que se estructura un sistema permitirá o impedirá que se satisfagan los atributos de calidad. Por ejemplo, un sistema estructurado de tal manera que una petición deba transitar por muchos componentes antes de que se devuelva una respuesta podría tener un desempeño pobre. Por otro lado, un sistema estructurado de tal manera que los componentes estén altamente acoplados entre ellos limitará severamente la modificabilidad. Curiosamente, la estructuración tiene un impacto mucho menor respecto a los requerimientos funcionales del sistema. Por ejemplo, un sistema difícil de modificar puede satisfacer plenamente los requerimientos funcionales que se le imponen. Además de los atributos de calidad, la arquitectura de software juega un papel fundamental para guiar el desarrollo. Una de las múltiples estructuras que la componen se enfoca en partir el sistema en componentes que serán desarrollados por individuos o grupos de individuos. La identificación de esta estructura de asignación de trabajo es esencial para apoyar las tareas de planeación del proyecto. Finalmente, los diseños arquitectónicos que se crean en una organización pueden ser reutilizados para crear sistemas distintos. Esto permite reducir costos y aumentar la calidad, sobre todo si dichos diseños han resultado previamente en sistemas exitosos.

El ciclo de desarrollo de la arquitectura

Dentro de un proyecto de desarrollo, e independientemente de la metodología que se utilice, se puede hablar de “desarrollo


.Prácticas

Arquitectura

››La

manera en que se estructura un sistema permitirá o impedirá satisfacer los atributos de calidad. Las actividades descritas anteriormente requieren de habilidades particulares que son la responsabilidad del arquitecto de software. El arquitecto es un líder técnico que debe conocer los principios relacionados con la arquitectura de software, tener un amplio conocimiento respecto a la tecnología, y tener excelentes habilidades de comunicación escrita y oral. Desafortunadamente, en la actualidad pocos arquitectos de software que laboran en la industria han recibido una formación teórica respecto al tema. Esto se debe a que no es sino hasta épocas recientes que se han establecido de manera más formal los conceptos relacionados con la arquitectura de software, y que actualmente pocas instituciones ofrecen cursos enfocados en el tema. El desconocimiento de los principios relativos a la arquitectura de software frecuentemente impacta de manera negativa a los proyectos de desarrollo.

Apenas empezamos

A lo largo de las distintas entregas de esta columna que inicia se buscará dar una panorámica del tema de arquitectura de software y se discutirá de manera más detallada aspectos como: •Requerimientos que influyen en la arquitectura, •El diseño, documentación y evaluación de la arquitectura, •Los retos relacionados con la introducción de prácticas de arquitectura de software en un contexto organizacional, •La arquitectura de software dentro de las metodologías de desarrollo, •El perfil del arquitecto de software.

33

.BIO

El Dr. Humberto Cervantes es profesor-investigador en la UAMIztapalapa. Ha realizado investigación en temas relacionados con arquitectura de software desde el año 2000 y en años recientes se ha enfocado en el estudio y la aplicación de métodos que apoyen al desarrollo de arquitectura de software dentro de la industria Mexicana. Actualmente está en camino a obtener la certificación “Software Architecture Professional” por parte del Software Engineering Institute. www.humbertocervantes.net

Referencias: [1] L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 2nd Edition, Addison Wesley, 2003.

Software Guru

El rol de arquitecto

www.sg.com.mx |

de la arquitectura de software”. Este desarrollo, que precede a la construcción del sistema, esta dividido en las siguientes etapas: requerimientos, diseño, documentación y evaluación. Cabe señalar que las actividades relacionadas con el desarrollo de la arquitectura de software generalmente forman parte de las actividades definidas dentro de las metodologías de desarrollo. A continuación se describen dichas etapas. • Requerimientos. La etapa de requerimientos se enfoca en la captura, documentación y priorización de requerimientos que influencian la arquitectura. Como se mencionó anteriormente, los atributos de calidad juegan un papel preponderante dentro de estos requerimientos, así que esta etapa hace énfasis en ellos. Otros requerimientos, sin embargo, son también relevantes para la arquitectura, estos son los requerimientos funcionales primarios y las restricciones. • Diseño. La etapa de diseño es la etapa central en relación con la arquitectura y probablemente la más compleja. Durante esta etapa se definen las estructuras que componen la arquitectura. La creación de estas estructuras se hace en base a patrones de diseño, tácticas de diseño y elecciones tecnológicas. El diseño que se realiza debe buscar ante todo satisfacer los requerimientos que influencian a la arquitectura, y no simplemente incorporar diversas tecnologías por que están “de moda”. • Documentación. Una vez creado el diseño de la arquitectura, es necesario poder comunicarlo a otros involucrados dentro del desarrollo. La comunicación exitosa del diseño muchas veces depende de que dicho diseño sea documentado de forma apropiada. La documentación de una arquitectura involucra la representación de varias de sus estructuras que son representadas a través de distintas vistas. Una vista generalmente contiene un diagrama, además de información adicional, que apoya en la comprensión de dicho diagrama. • Evaluación. Dado que la arquitectura de software juega un papel crítico en el desarrollo, es conveniente evaluar el diseño una vez que este ha sido documentado con el fin de identificar posibles problemas y riesgos. La ventaja de evaluar el diseño es que es una actividad que se puede realizar de manera temprana (aún antes de codificar), y que el costo de corrección de los defectos identificados a través de la evaluación es mucho menor al costo que tendría el corregir estos defectos una vez que el sistema ha sido construido.


.Prácticas Seguridad

Estrategia

Corporativa de Seguridad no seas una

H

víctima más

››Por Ariel Sucari

organización, para lo que deberemos capacitarlos y prepararlos para su uso.

ace pocos años las noticias en las secciones policiales de los periódicos del mundo lucían muy distintas a las actuales. Podíamos ver cosas tales como: “Gran robo a un banco perpetrado por comando fuertemente armado” o “Haciéndose pasar por empleados de limpieza, roban asombrosa cantidad de dinero y joyas”. Hoy en día los titulares se ven bastante distintos, en un mundo en donde el fraude digital crece a una tasa escalofriante del 300 por ciento anual, podemos leer: “Hacker sube datos personales de 6 millones de chilenos a internet para demostrar lo mal protegida que está la información en su país” o “Hacker roba más de 130 millones de números de tarjetas de crédito y débito”. Aunque las noticias de los robos físicos todavía existen, la última estadística de la Federal Trade Commission dice que, del monto robado en Estados Unidos el año pasado, el 94% fue digital.

Procesos

La clave en este punto es integrar las prácticas de seguridad al proceso de desarrollo. Si nos ponemos a escribir un proceso de seguridad sin tener en cuenta el proceso actual de desarrollo, lo único que haremos será perder el tiempo, pues el cambio entre una manera de trabajar y la otra será tan grande que nadie la adoptará. El problema aquí es que hay pocas personas o consultorías con experiencia en el mercado que cuenten con la habilidad para integrar estos procesos, ya que se requiere conocer, tanto de desarrollo de software como de seguridad de TI. Afortunadamente las que pueden hacerlo ya se han abocado a esta tarea con grandes resultados. En la figura 1 muestro un ejemplo gráfico de esta consolidación, donde pueden verse en la parte inferior las prácticas de seguridad y en la superior las típicas de un proceso de desarrollo de software.

Los principales factores que facilitan esta modalidad de robo son:

• Riesgo. Las empresas desconocen por completo qué tan fácil o difícil es acceder a su información, por lo tanto no definen una clara estrategia para defenderse. • Gasto. Del gasto total en seguridad, las empresas solo gastan un 10% para proteger la seguridad de sus aplicaciones, mientras que el otro 90% lo gastan en proteger la seguridad perimetral. Conociendo esto, los Hackers eligen atacar a través de las aplicaciones, haciendo que el gasto de las empresas esté totalmente desbalanceado. De hecho, el 75% de los ataques se dan por medio de las aplicaciones. • Experiencia y capacitación. El 64% de los desarrolladores no confía en sus habilidades para desarrollar aplicaciones seguras. Esta métrica hace que 2 de cada 3 aplicaciones sean vulnerables.

Herramientas

En el mercado actual de herramientas de desarrollo de software seguro, existen varias opciones buenas. Más que recomendarles aquí alguna en específico, lo importante es recalcar la importancia de contar con al menos alguna de ellas. Si nosotros le preguntáramos a cualquier persona si concibe revisar manualmente que su máquina está infectada de virus, sin

Para vencer a los hackers de una manera estratégica, las empresas se están enfocando en 3 aspectos fundamentales: procesos, herramientas y capacitación. Es importante aclarar que las tres cosas deben ir juntas, pues si implementamos procesos sin herramientas, nos quedamos en una solución netamente académica. No nos sirve de nada tener el mejor de los procesos, si no logramos automatizar las prácticas con herramientas. Por el contrario, si sólo implementamos una herramienta (sin proceso), lo único que estaremos haciendo será automatizar el caos; por último, pero no menos importante, si tenemos un proceso automatizado con herramientas, sólo nos resta que nuestra gente sepa utilizarlo para beneficio de la

Figura 1. Prácticas de seguridad y desarrollo de software.

34


.Prácticas

Seguridad

vencer a los hackers de una manera estratégica, las empresas se están enfocando en 3 aspectos fundamentales: Procesos, Herramientas y Capacitación. En la fase 1, el área de seguridad no puede con todo el trabajo y la cobertura de aplicaciones probadas es muy baja. En la fase 2, se define un proceso que asigna responsabilidades a las áreas de calidad y desarrollo de la empresa y se coloca una herramienta que permita darles visibilidad acerca de la cobertura y los progresos. Por último en la fase 3, seguridad juega el rol que realmente le corresponde: Definidor y auditor de las políticas; mientras que los equipos de calidad y desarrollo ejecutan las prácticas de seguridad que ya tienen inmersas en sus respectivos procesos de manera au-

Capacitación

El último eslabón de la cadena, y a su vez el más importante, es la capacitación. Una vez que el proceso está diseñado y las herramientas instaladas y configuradas, lo que resta es que la gente de la organización los utilice. Para esto, debe hacerse un despliegue organizacional y una gestión del cambio adecuados acompañados de una capacitación. La solución entonces, se dice completa y exitosa.

Conclusión

El camino hacia las aplicaciones seguras no termina nunca, pero en cada organización decidimos en qué parte del camino queremos estar. Podemos avanzar hacia conocer nuestros riesgos y administrarlos, o quedarnos parados y rogar porque el próximo ataque no sea hacia nosotros.

Software Guru

››Para

tomatizada. De esta manera la cobertura de aplicaciones probadas es mucho mayor a la de la fase 1 y el esfuerzo queda distribuido entre todo el equipo de TI. Al momento de buscar una herramienta, debe buscarse una que pueda utilizarse por desarrolladores, auditores, oficiales de seguridad y testers; además de que la misma cubra las técnicas de prueba tanto de caja negra como de caja blanca.

www.sg.com.mx |

utilizar una herramienta (antivirus), su respuesta sería un NO inmediato. Sin embargo, mucha gente todavía no comprende que suena igual de descabellado pretender revisar que las aplicaciones de una empresa sean seguras, sin utilizar una herramienta especializada que lo compruebe. La clave para involucrar a todo el equipo de TI en esta lucha contra el delito, es contar con una herramienta que nos permita integrarlo y hacerlo trabajar de acuerdo al proceso definido, moviéndonos de manera paulatina desde la etapa uno, a la etapa 3 mostrada en la figura 2.

.Bio

Ariel Sucari es director de operaciones de la subsidiaria en Madrid de ItEra. Es graduado como maestro en negocios e Ingeniero en Sistemas, ha participado y coordinado proyectos de ingeniería del Software en Inglaterra, Estados Unidos, Argentina, Venezuela, Perú, España y México durante los últimos 10 años. Actualmente desarrolla nuevas ofertas de seguridad de la información que son divulgadas en conferencias, publicaciones y seminarios. ariel.sucari@iteraprocess.com

Figura 2. Fases de implantación de una estrategia corporativa de seguridad.

35


.Prácticas Diseño

Modularización Efectiva en Java domando a la

hidra

››Por Agustín Ramos

E

l software continuamente evoluciona hacia sistemas de mayor complejidad, y no tenemos argumentos para pensar que esta tendencia cambiará. Por otro lado, cada vez se requiere que estos sistemas sean más confiables y flexibles. ¿Cómo podemos abordar este problema? Una de las herramientas más efectivas para atacar este problema es la modularización. Esta consiste en particionar un sistema de acuerdo a ciertos principios de diseño y a una estrategia de desarrollo, gobernando las dependencias entre las partes resultantes. Sin embargo, implementar una modularización adecuada no es algo trivial; las técnicas disponibles son diversas y no existe consenso sobre cuales son las mejores en cada caso. Adicionalmente, la modularización en sí misma introduce nuevos retos, entre los que se cuentan la dificultad de configuración y el denominado “infierno de dependencias”. En este artículo exploraremos el estado actual de la modularización en cuanto a la plataforma java se refiere y señalaremos algunos principios de diseño, patrones, prácticas y tecnologías que puedes emplear para introducir una estrategia de modularización efectiva en tus desarrollos.

Historia vs Status Quo

A principios de los 70s David Parnas sentó las bases de la modularización en su ensayo “On the Criteria To Be Used in Decomposing Systems into Modules” [1] que tuvo gran impacto en la manera en que construimos software desde entonces. El problema deriva en que, en general, hemos fallado en aplicar de manera efectiva este conocimiento en el software que desarrollamos día a día. Parte de esta falla proviene del hecho de que el software es cada vez más complejo y utilizado en más contextos. Otra razón tiene que ver con lo que Markus Völter [2] señala como un énfasis en la tecnología en lugar del diseño: una gran cantidad de desarrolladores conocen los aspectos técnicos de la implementación de un EJB o un web service, pero se encuentran muy limitados al establecer criterios de granularidad, agregación y empaquetamiento que proveerán a un sistema con características tan deseadas como la facilidad para realizar cambios. La tercer causa es que los conceptos planteados por Parnas y otros pioneros son aplicados principalmente a nivel de clases y objetos. Sin embargo, el tamaño y complejidad del software desarrollado hoy en día exige nuevos niveles de agregación y una definición de módulo a un nivel de abstracción más alto. Esta situación ha provocado que surjan esfuerzos para remediarla. Por un lado, un renovado énfasis de los gurús del software sobre buenos principios y prácticas de diseño más que sobre tecnologías de implementación. Por otro lado, el advenimiento de iniciativas como el proyecto Jigsaw [3] para modularizar el propio

JDK y la explosión de interés en OSGi [4] como fundamento para implementar arquitecturas modulares sobre la JVM.

Beneficios de la modularización

El impacto principal de una estrategia efectiva de modularización es en la “mantenibilidad” del sistema de software, es decir, qué tan fácil es realizar cambios a éste para agregar y modificar funcionalidad, corregir errores o sustituir partes del mismo. Tal como nos muestra la figura 1, conforme los elementos de nuestro sistema presentan mayor cohesión y menor acoplamiento, tendremos sistemas más fáciles de mantener. La modularización también tiene un gran impacto en la capacidad de reuso de un sistema. Mediante una modularización adecuada es mucho más fácil localizar, cambiar o sustituir un aspecto del sistema, así como utilizar partes del mismo en otras aplicaciones.

Efectos negativos de la modularización

Maximizar la modularización y por consecuencia, el reuso, tiene otros efectos no tan deseables. Específicamente, existe la llamada paradoja del reuso, la cual se ilustra en la figura 2. Entre más modular y reusable es un diseño, más difícil es usar partes del mismo. Esto se debe a que, a diferencia de un diseño monolítico, donde para usar el sistema simplemente debemos copiarlo o instalarlo en el lugar adecuado, en un sistema modular debemos estar conscientes de las dependencias entre y hacia otros módulos y saber manejarlas adecuadamente. De no hacerlo, es probable que nos involucremos en lo que coloquialmente conocemos como “infierno de dependencias”, que puede tomar distintas formas: • Demasiadas dependencias. Una aplicación con muchas dependencias puede tener características negativas como dificultad de instalar y configurar, gran tamaño, inestabilidad y fragilidad relativa al cambio de estas dependencias. • Dependencias cíclicas. Se da cuando un módulo A depende de otro módulo B, el cual a su vez depende directa o indirectamente de A. Esta situación denota que no existe una correcta separación de las responsabilidades, ya que siempre que usemos A necesitaremos usar B o viceversa. No hay posibilidad de reuso más que en conjunto. Frecuentemente esto no quiere decir que no pueda existir reuso, solamente que el código no fue colocado en el lugar adecuado para permitirlo de manera más granular. • Largas cadenas de dependencias. Se da cuando una cadena de dependencias transitivas es muy larga. Una dependencia transitiva es aquella que se obtiene de manera indirecta cuando un módulo que utilizamos hace a su vez uso de otros módulos. Al tener largas cadenas de dependencias, puede resultar muy laborioso determinar cuales 36


.Prácticas Diseño

los elementos de nuestro sistema presentan mayor cohesión y menor acoplamiento, tendremos sistemas más fáciles de mantener. tras cortarle una cabeza, le salen dos nuevas). Es por esto que para aprovecharla y no sucumbir ante ella, primero debemos entender qué características son recurrentes en un diseño modular efectivo y posteriormente conocer técnicas que nos permiten llegar ahí.

Características de un diseño modular efectivo

Dividir un sistema en capas es un buen comienzo, pero en la mayoría de los casos no es suficiente. Más allá del tan citado y poco entendido lineamiento de “alta cohesión y bajo acoplamiento”, un diseño modular efectivo tiende a presentar las siguientes características: 1. Cada módulo tiene un conjunto de responsabilidades muy pequeño y bien definido. 2. Cada módulo tiene un nombre que permite identificar claramente sus responsabilidades. 3. Cada módulo provee una inferfaz que define el contrato del mismo en términos de requerimientos y responsabilidades, y es el mecanismo a través del cual puede ser utilizado. 4. Existen módulos abstractos, con pocas dependencias y altamente estables.

.BIO

Agustín T. Ramos Fonseca se desempeña como ingeniero de software en Certum. Tiene 7 años de experiencia en el desarrollo de aplicaciones corporativas y es miembro de la IEEE y ACM. Sus intereses se centran en servicios internet altamente escalables, plataformas para sistemas transaccionales masivamente distribuidos, servicios móviles y geoposicionales, así como líneas de productos y arqueología de software. @MachinesAreUs

Figura 1. El impacto de la modularidad en los sistemas

37

Software Guru

Tener largas cadenas de dependencias o dependencias en conflicto típicamente es consecuencia de reusar componentes genéricos como librerías y frameworks desarrollados por terceros. Dichas librerías a su vez tratan de maximizar el reuso, sobre todo de componentes de bajo nivel, como los usados para el manejo de bitácoras (logging), colecciones, XML, bytecode, etc. Y para cada una de estas tareas existe una amplia variedad de componentes, lo cual complica aun más la situación. Tener demasiadas dependencias puede ser consecuencia de la complejidad intrínseca del software que estamos desarrollando, pero al igual que las dependencias cíclicas, suele ser consecuencia de un mal diseño. Algunos de estos problemas pueden ser manejados, al menos parcialmente, mediante ciertas prácticas y técnicas que describiremos más adelante. Pero resulta evidente que intentar hacer uso efectivo de la modularización puede introducirnos más dificultad que beneficios (en la mitología griega, la Hidra es un monstruo policefálico al que

››Conforme

www.sg.com.mx |

son todas las dependencias necesarias para poder usar el módulo que realmente es de nuestro interés. • Dependencias en conflicto. Se da cuando queremos usar dos módulos, cada una de los cuales tiene dependencias transitivas hacia versiones específicas pero diferentes de un tercero. En esta situación no podemos simplemente descartar una de las versiones porque, o bien el sistema no compilará, o peor aún, tendrá defectos que no serán visibles hasta el momento de ejecución, pudiendo incluso permanecer escondidos por largo tiempo.


.Prácticas Diseño

5. Existen también módulos concretos, que presentan cierto grado de inestabilidad debido a que usan a otros módulos para llevar a cabo el trabajo real. Estos módulos presentan un nivel de cohesión alto. 6. Existen pocas o ninguna dependencias entre módulos concretos. 7. Los módulos de alto nivel (capas superiores) tienen dependencias hacia módulos abstractos y pocas o ninguna dependencias hacia módulos concretos. 8. No existen dependencias cíclicas entre los módulos. 9. Las responsabilidades bien definidas de los módulos, así como los límites y fronteras entre los mismos, facilitan que los cambios se realicen de manera local, minimizando el impacto en todo el sistema (ver figura 3). 10. El nivel de granularidad de los módulos es tal que establece un buen balance entre potencial de reuso y facilidad de uso.

Robert C. Martin indica que: “la unidad de reuso es la unidad de liberación (the granule of reuse is the granule of release)” [6]. En el caso de Java, la unidad de liberación se traduce al JAR, no clases o paquetes, tampoco el WAR o el EAR. El JAR es la unidad de instalación más común en el desarrollo en Java, y el reconocimiento de esto está en el centro del desarrollo de tecnologías que buscan llevar la práctica de la modularización a otros niveles. Es así que en Java debemos considerar que un módulo equivale a un JAR.

¿Qué hace falta?

Kirk Knoernschild trabaja actualmente en un compendio de patrones relacionados con la modularización [7]. Con la aplicación de estos patrones se pretende balancear adecuadamente el nivel de granularidad de los módulos, maximizar el reuso al igual que la flexibilidad y la facilidad de entender el sistema, así como minimizar las dependencias existentes entre los módulos (acoplamiento). Aunque actualmente no están formulados en la estructura convencional de patrones a la que estamos acostumbrados, son muy buena guía, y son patrones en el sentido de que no son invenciones: son soluciones efectivas y recurrentes probadas en la industria. Los patrones son:

El concepto de modularización no es nada nuevo. Hoy en día todo desarrollador hace uso de una amplia gama de tecnologías de diseño y programación orientadas a explotarlo, entre los que se cuentan: descomposición en capas, tecnologías de objetos, tecnologías de aspectos, patrones de diseño, etc. Pero mi tesis es que en general hemos fallado en usar apropiadamente estas tecnologías para impartir una buena modularización a nuestros desarrollos y que hacerlo no es trivial debido a los problemas involucrados. ¿Qué hace falta? Guías; guías en forma de principios, prácticas y patrones, tanto de diseño como de estrategias de desarrollo.

Principios de diseño

Una reflexión sobre las características comunes a los diseños modulares efectivos, permite reconocer que son, al menos parcialmente, consecuencia de aplicar correctamente los principios de diseño conocidos en conjunto como SOLID, a un nivel de abstracción mayor que el de clases y objetos. Los principios SOLID fueron popularizados por Robert C. Martin [5], y el acrónimo se forma tomando la primera letra en inglés del nombre de cada principio. Éstos son: • Principio de única responsabilidad: No debería existir más de una razón para que una clase deba cambiar. • Principio abierto-cerrado: Los elementos de software deben estar abiertos a extensiones, pero cerrados a modificarse. • Principio de substitución de Liskov: Las funciones que hacen referencia a clases base deben ser capaces de trabajar con clases derivadas sin saberlo. • Principio de segregación de interfaces: Los elementos de software ‘cliente’ no deben ser forzados a depender de interfaces que no utilizan. • Principio de inversión de dependencias: Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones.

››Hemos

fallado en usar de forma adecuada las tecnologías para impartir una buena modularización a nuestros sistemas.

Patrones

Patrones básicos

• Administra las relaciones. Se refiere a la práctica de diseñar explícitamente las relaciones entre los módulos, en lugar de dejar que ocurran por accidente. • Reuso de módulos. Enfatiza el reuso a nivel de módulos (JARs). • Módulos cohesivos. Los módulos deben tener un buen nivel de cohesión, de otra manera deberían formar parte de otro módulo o ser módulos separados. • Reuso de clases. Las clases que no son reusadas en conjunto, pertenecen a módulos distintos.

Patrones de dependencias

• Dependencias acíclicas. Las relaciones entre los módulos deben ser acíclicas. • Capas físicas. Las relaciones entre módulos no deben violar las capas físicas conceptuales del sistema. • Independencia del contenedor. Considera las dependencias que tienen los módulos hacia el contenedor (e.g. servidor de aplicaciones) y extráelas como dependencias hacia otros módulos abstractos. • Despliegue independiente. Los módulos deben ser unidades desplegables de manera independiente. 38


.Prácticas Diseño

• Interfaz publicada. Haz explícita la interfaz pública de cada módulo. • Configuración externa. Los módulos deberían ser configurables de manera externa. • Fachada de módulos. Crea una fachada que sirva como un punto de entrada a los módulos que conforman la implementación.

Patrones de extensibilidad

• Módulos estables. Los módulos hacia los que existen muchas dependencias deberían ser estables. • Módulos abstractos. Las dependencias deben ser hacia módulos abstractos o hacia las partes abstractas de los mismos. • Fábrica de implementación. Utiliza el patrón factory para crear las clases de implementación dentro de un módulo. • Abstracciones separadas. Separa las abstracciones de las clases que las realizan.

Patrones de utilería

• Compilación nivelada. Ejecuta la compilación y generación del JAR en un orden coherente con la nivelación de los módulos. • Componente de pruebas. Para cada módulo, crea un componente de prueba correspondiente que valida su comportamiento e ilustra su uso. Estos patrones son explicados de forma práctica en el artículo “Applied Modularity” [8], donde se describe paso a paso la transformación de un sistema con una modularización inadecuada hacia un diseño mucho más efectivo mediante la aplicación sucesiva de

Figura 2. Maximizar el reuso dificulta el uso.

Prácticas

Además de la contribución de Kirk al dar nombre y sistematizar estos patrones, existen otras prácticas que resultan muy valiosas tanto para soportar el desarrollo de sistemas explícitamente modulares como para otros que, aunque semi-monolíticos, hacen uso de software altamente modular. Dichas prácticas son: • Esquema apropiado de versionamiento. Un cambio interno en una versión estable de un módulo debe hacerse explícito mediante su identificador de versión. Los módulos que están atravesando un periodo de desarrollo muy activo y son por tanto altamente inestables, pero son utilizados por otros módulos, deberían marcarse con alguna etiqueta especial como “SNAPSHOT”. Si ya de por sí el tener muchos módulos puede resultar complejo, no usar un buen esquema de versionamiento te traerá muchas dificultades. • Repositorios de dependencias dentro de la organización. Los repositorios de dependencias resuelven, entre otros, el problema de concentrar en un solo lugar las distintas versiones de módulos reusables, internos y externos, así como la estructura de las dependencias entre estos. Con esto se logra quitarle al desarrollador la tarea de averiguar todo el grafo de módulos y versiones de estos que debe importar cuando quiere utilizar una versión específica de un módulo particular, ya que esta información se encuentra en forma de metadatos dentro del repositorio. • Sistema de compilación integrado con el repositorio de dependencias. El mayor provecho del repositorio se obtiene cuando la he-

Figura 3. La modularización permite localizar los cambios.

39

Software Guru

Patrones de usabilidad

varios de estos patrones. Sin embargo, el camino para transformar un sistema legado de gran tamaño hacia un diseño más modular y flexible, en la práctica suele ser más complejo y requiere técnicas más sofisticadas.

www.sg.com.mx |

• Excepciones co-localizadas. Las excepciones deberían estar empaquetadas junto o cerca de las clases que las arrojan.


.Prácticas Diseño

rramienta con la cual transformamos el código fuente en artefactos desplegables (JARs, documentación, reportes, etc) está integrada con él. De esta manera, la herramienta de construcción descarga las dependencias conforme son requeridas y puede incluso detectar conflictos de dependencias, ofrecer una solución de los mismos o dejar ésta en manos del desarrollador.

las tecnologías para modularización usadas en tiempo de ejecución ya tenemos un estándar de facto: OSGi.

››En

Tecnologías y herramientas

Las tecnologías que soportan las prácticas del diseño modular se pueden clasificar dependiendo del momento en que son efectivas: tiempo de desarrollo y tiempo de ejecución. En tiempo de desarrollo, los repositorios de dependencias y los sistemas que automatizan la construcción de los artefactos integrándose con estos repositorios son las herramientas más relevantes, siendo Nexus, Maven y Ivy los más populares y maduros. No obstante, en esta categoría hacen falta herramientas más poderosas que ayuden a los desarrolladores a administrar mejor las dependencias. Específicamente, estas herramientas aún no incorporan nociones como “rango de versiones compatibles” o “características proporcionadas por un módulo” que facilitarían enormemente el reuso de módulos. Otro tipo de herramienta (o extensión de las ya existentes) que hace falta es un administrador de perfiles de dependencias, que le permita a un desarrollador crear, analizar, publicar y mantener configuraciones de dependencias que a veces cuesta tanto trabajo hacer funcionar bien, debido a incompatibilidades entre los módulos. En las tecnologías para modularización usadas en tiempo de ejecución ya tenemos un estándar de facto: OSGi.

Al día de hoy, los principales fabricantes de servidores de aplicaciones y ESBs (Enterprise Service Bus) ya adoptaron OSGi como fundamento sobre el cual construir las últimas versiones de sus ofertas o están en proceso de hacerlo. Estos mismos fabricantes se encuentran trabajando en “completar” OSGi con las capacidades que la mayoría de los desarrolladores necesitan (transacciones distribuidas, manipulación de bytecode para utilizar aspectos, tecnologías ORM, etc), a través del OSGi Enterprise Expert Group. En general, aún no se recomienda a la mayoría de los desarrolladores de aplicaciones utilizar OSGi de manera directa, debido a la complejidad intrínseca, la falta de herramientas que ayuden a enfrentarla y a que tecnologías a las que los desarrolladores están habituados no son sencillas de usar dentro de OSGi o sencillamente aún no están disponibles. Sin embargo, eventualmente todos los usuarios de Java Enterprise Edition nos beneficiaremos indirectamente de OSGi, y de requerirlo, también podremos explotar directamente sus beneficios. Ejemplos concretos de esto son la versión Open Alpha de Websphere 7 y Spring DM Server.

Conclusiones

La modularización es un aspecto que debemos tener presente en nuestros desarrollos. Es un tema clave en lo que a mantenibilidad y reuso se refiere. Implementar una estrategia de modularización efectiva no es sencillo y aún falta mucho soporte de herramientas, pero cuando se logra, los beneficios obtenidos superan el costo involucrado. La plataforma Java continúa moviéndose rápidamente hacia sistemas altamente modulares a través de la enorme cantidad de componentes reusables que existen y a través de tecnologías que promueven y explotan el reuso, en desarrollo y tiempo de ejecución. No obstante, el uso de herramientas y tecnologías como OSGi no son la solución completa ni el aspecto más importante para una modularización efectiva: el diseño continúa siendo la clave.

OSGi

OSGi es la especificación de un sistema dinámico de módulos para Java. Tiene una larga historia que comenzó en el mundo de los dispositivos embebidos y la automatización, pero que gradualmente ha penetrado en otros mercados, incluido el de las denominadas aplicaciones empresariales (término que no me parece adecuado, pero la mayoría parece entender a qué se refiere). OSGi no solo proporciona un entorno de ejecución en el cual una aplicación modular puede ser desplegada, versionada y administrada, sino que permite que cada módulo tenga un ciclo de vida independiente, dando una capacidad dinámica que habilita a toda una nueva generación de aplicaciones.

Referencias: [1] D. Parnas, “On the Criteria To Be Used in Decomposing Systems into Modules”, Communications of the ACM, vol.15, 1972. [2] M. Völter. “Software Architecture Patterns”. http://bit.ly/sg27r7 [3] Project Jigsaw, http://bit.ly/sg27r8 [4] OSGi Alliance, http://www.osgi.org [5] R.C. Martin, “The Principles of OOD”. http://bit.ly/sg27r9 [6] R.C. Martin, “Granularity”. http://bit.ly/sg27r10 [7] K. Knoernschild, “Modularity Patterns”. http://bit.ly/sg27r11 [8] K. Knoernschild, “Applied Modularity – Part 1”. http://bit.ly/sg27r12

40


.COLUMNA

Experiencia de Usuario Diferenciador

Evolución texto : gráfico : físico

A diferencia del mundo de comandos donde el usuario debe saber qué comandos emitir, en el mundo de la interfaz gráfica se facilita la exploración. La NUI requiere un contexto de dónde se encuentra el usuario, lo que quiere lograr y requiere una visualización muy responsiva como forma de retroalimentación. Las experiencias basadas en tacto deberán ser más sencillas y simples que las que usamos bajo el paradigma de la GUI. Las aplicaciones que tengan demasiadas opciones continuarán en el mundo GUI.

Ajax en esteroides

El punto de entrada a una mayor “experiencia de usuario” es el realizar el potencial de tecnologías como Windows Presentation Foundation (WPF), Silverlight, Adobe AIR, JavaFX o AJAX, las cuales han tenido diversas limitaciones que no han permitido lograr su potencial. En general, con estas tecnologías es posible construir un “capa de presentación” pero no una aplicación real completa –por ejemplo que pueda acceder al USB, aproveche la aceleración de tarjetas de video, y soporte bibliotecas nativas de la plataforma. Otras áreas importantes a evaluar en un RIA son: soporte a localización, seguridad, accesibilidad para gente de

diferentes capacidades, requerimientos de que un administrador instale la aplicación, un “look and feel” que corresponde a la plataforma donde se ejecutará la aplicación. En este momento la competencia es por quién logra construir una plataforma que resuelva todos esos problemas y sea altamente capaz para implementar una NUI. En el caso de Microsoft, WPF 4.0 tiene una gran variedad de mejoras relacionadas a los problemas descritos, pero la estrategia de Microsoft se basa primariamente en el IDE: Visual Studio 2010, que por primera vez ofrece una variedad de controles de forma nativa para construir experiencias de usuario sin el alto costo que hasta hoy se requiere en el lado del diseño.

››La voz, el tacto y la postura son los pilares de la interfaz natural que la nueva generación de plataformas debe soportar. Conclusiones

El diferenciador de software continúa siendo la innovación en los problemas que se resuelven así como una “mejor experiencia de usuario”. La incorporación del NUI al mundo de los múltiples dispositivos unidos por la nube será un proceso gradual que establecerá una nueva plataforma tecnológica para la siguiente década. El precio de una laptop con capacidad multi-touch supera en menos del 20% al de una laptop convencional. En el 2010, es posible aplicar la diferenciación de experiencia de usuario en proyectos de bajo costo. ¡Hágalo hoy!

››Por Luis Daniel Soto Conozca más: [1] Bill Buxton, Sketching User Experiences: Getting the Design Right and the Right Design, Morgan Kaufmann, 2007. [2] Conferencia MIX10. http://www.microsoft.com/mix [3] Touchless SDK. http://www.codeplex.com/touchless [4] Visual Studio 2010. http://www.microsoft.com/visualstudio

41

Software Guru

arece ser que el principal elemento de diferenciación en el software durante los próximos años será lo que se conoce como “experiencia de usuario”, especialmente la que integre múltiples dispositivos y la nube. La interacción PC-humano continuará desarrollándose para crear aplicaciones intuitivas fluidas y naturales en su uso, esto se denomina Natural User Interface (NUI). Algunos ejemplos: • Si un usuario está viendo un video en su hogar, será posible continuar viéndolo en el celular, en la PC o en la consola de videojuegos en otra ubicación en forma instantánea. • Imagine una sala médica con una superficie interactiva con modelos 3D de los pacientes. Será práctico tanto en la enseñanza de medicina como para practicar operaciones reales. • En las tiendas AT&T de Estados Unidos es posible arrastrar dos modelos de teléfonos celulares en una superficie y comparar sus características, labor que manualmente es compleja cuando hay decenas de opciones. El sistema usa cámaras y otros sensores para determinar lo que sucede en el mundo real. • El reconocimiento de voz mejoró significativamente en Windows 7. Ahora es posible crear experiencias que toman ventaja del lenguaje hablado como nunca antes.

del software

www.sg.com.mx |

P

el nuevo

Tendencias en Software

Luis Daniel Soto es Director de Divulgación Tecnológica en América Latina para Microsoft. @luisdanielsoto


.PM CORNER

Reduce la Complejidad de tus Proyectos de Software

Cinco consejos prácticos

››Por Jorge Valdés Garciatorres, PMP, ITIL, CC

L

a disciplina de dirección de proyectos es compleja. Involucra nueve áreas de conocimiento que conforman cinco grupos de procesos. El gerente de proyecto tiene que entender los principios y dinámicas que se dan al trabajar en grupo, el ciclo de vida de las expectativas y cómo administrarlo adecuadamente; además de entender los aspectos técnicos del proyecto y del negocio, también debe tener excelentes habilidades interpersonales, particularmente la de ser un buen comunicador. Evidentemente para una sola persona tener un buen nivel de dominio de todos esos temas es muy difícil. No somos pocos los que hemos sido parte o hemos presenciado los grandes desafíos que representa el llevar a cabo exitósamente un proyecto de desarrollo de software, donde los módulos o programas hagan todo lo que se espera de ellos de forma confiable, y además se deje satisfechos a todos los actores. En esta entrega quiero compartir contigo algunos consejos para reducir la complejidad de tu proyecto de desarrollo de software, espero que te sean de utilidad. 1. Funcionalidad Ya sea que se busque mejorar una versión existente de un programa o aplicación, o que se trate de desarrollar una nueva, la recomendación es “menos es mejor”. Entre mayor funcionalidad se incluya en el producto final, el proyecto será más complejo, habrá que tener en el radar mayor número de requerimientos, las pruebas y los casos de prueba crecerán de manera proporcional a las funciones incluidas. Aplicando algunas técnicas ágiles, se puede trabajar muy de cerca con el cliente para poder identificar toda la funcionalidad requerida y hacer una priorización que nos permita entregar funcionalidad básica y a partir de ahí ir añadiendo mayor nivel de sofisticación en versiones subsecuentes. 2. Entregables Nuevamente, cuando hablamos de los distintos productos que componen el proyecto, debemos tratar de reducir su número para poder contener la complejidad del proyecto. Normalmente, si el número de entregables es mayor, se requerirán múltiples procesos técnicos para producirlos, lo que sin lugar a dudas implica una mayor com.BIO Jorge Valdés Garciatorres es Socio plejidad. Así que trata de reduDirector de la firma de consultoría de negocios TenStep Latinoamérica cir al máximo los entregables de y Vicepresidente de Desarrollo Profesional en el PMI Capítulo México, tu proyecto, evidentemente este es miembro de Toast Masters Interpunto está de alguna forma relanational en donde es Vicepresidente de Relaciones Públicas en el Club cionado con el anterior. BIAM. Cuenta con más de 20 años de experiencia y tiene las certificaciones de Profesional en Dirección de Proyectos (PMP), la de ITIL Foundations por EXIN y la de Competent Communicator por TMI.

3. Clientes y actores del proyecto Yo soy un creyente impulsor del proyecto uni-cliente. Aunque esto no siempre es posible, es im-

portante tener en cuenta que entre más gente participe como cliente o actor clave del proyecto, los requerimientos y el enfoque de solución tendrá un número mayor de “puertas” que negociar. La dificultad de poner de acuerdo, administrar las expectativas y comunicar a un grupo de personas respecto a lo que el proyecto (y el producto del proyecto) pretende lograr, crece de manera exponencial; para ello, basta aplicar la fórmula para calcular los canales de comunicación que propone la Guía PMBOK®: Canales de comunicación = n*(n-1/2) donde n es igual al número de participantes en el proyecto. Por eso, es muy recomendable tratar de “negociar” el que haya un grupo reducido de clientes o patrocinadores del proyecto. 4. Duración Nadie, al menos hasta donde yo sé, tiene una bola de cristal que le diga lo que va a pasar en el futuro. Entre más lejana esté la fecha de término de tu proyecto, más compleja será su administración. Esto es particularmente cierto para la administración de riesgos, pues será más difícil cumplir con las fechas esperadas, y habrá mayor tiempo para que las expectativas crezcan o para que al cliente o a nosotros se nos ocurran mayor funcionalidad. Es así que establecer la duración de tu proyecto en periodos de 4 a 6 meses es una buena idea. Por supuesto que cumplir con los puntos anteriores, sobre todo el 1 y 2 contribuirá a facilitar este punto de manera directa. 5. Tamaño En términos generales, entre más grande el proyecto, típicamente serán necesarias más interfaces, mayor coordinación, más integrantes en el equipo, y muy probablemente el número de incidentes con los que tendremos que lidiar irán en incremento, tomando más tiempo en la resolución de conflictos. Por ello, en la medida de lo posible será necesario establecer y acotar el alcance del proyecto de manera que cada versión del producto a generar involucre un número reducido de participantes, funciones y entregables.

Habilidades del gerente de proyecto

Aplicar los consejos aquí asentados no es tarea fácil. Sobre todo cuando hay una marcada tendencia en las corporaciones a conducir proyectos que abarcan más áreas funcionales y que quieren dar respuesta a problemas más grandes. Por eso las habilidades del gerente de proyecto para negociar y persuadir al cliente de las ventajas de aplicar, al menos dos, de estos cinco consejos, pueden representar la diferencia para estar más cerca de los objetivos de tiempo, costo, calidad, alcance y cumplimiento de expectativas del proyecto. No olvidemos que, al final del camino... no hay proyecto perfecto. 42



.Prácticas Agilidad

Lean-Agile lo

mejor de dos mundos

A

gile (desarrollo ágil) ha estado resonando en Norteamérica desde mediados de los 90’s. En Asia y Europa se ha estado adoptando por poco más de una década. En Latinoamérica apenas está por alcanzar media década, con Brasil como el país a la delantera, y países como Argentina, Perú y Chile tomando fuerza en buena medida gracias a la cercanía geográfica y la fuerza económica de Brasil. En México ya existían unos cuantos casos aislados, y en el 2009 aumentó significativamente el interés en distintas industrias aunque todavía hay mucho desconocimiento. Yo, por ejemplo, viviendo en los E.U. pasé en 2009 alrededor de 120 días hábiles en México evangelizando e intentando hacer negocios ofreciendo servicios para la adopción de lean (desarrollo esbelto) y agile. Rápidamente me dí cuenta que todavía se conoce poco sobre agile, y mucho menos sobre lean. Lean se originó en Japón dentro del área de manufactura en los 70’s y gradualmente se expandió a otras áreas tales como gestión, manejo de oficinas, y eventualmente desarrollo de software. Muy probablemente la primer publicación de gran influencia sobre desarrollo de software lean fue el libro titulado “Lean Software Development: An Agile Toolkit” de Mary y Tom Poppendieck [1]. Bueno pero, ¿si agile es considerado lo más novedoso y fabuloso entonces por qué queremos prestarle atención a lean? ¿quiere eso decir que agile es incompleto o no es tan bueno como parecía? Por un lado, agile es altamente compatible con lean (en buena medida los valores y principios agile tienen fundamentos lean), y por otro lado no existe un modelo, estándar, metodología o práctica que sea una bala de plata. Agile ha demostrado ser mucho más efectivo no necesariamente porque es una nueva receta, sino porque resalta aspectos que habían sido ignorados o se les había prestado poca atención. De manera similar, lean nos ayuda a ajustar el enfoque de lo que es importante para lograr el éxito de los proyectos. Ambos son muy efectivos por .BIO Dr. Masa K. Maeda es Presidente si mismos, y juntos hacen una y Fundador de Shojiki Solutions, una empresa dedicada a ayudar combinación fabulosa. empresas en la adopción y mejoramiento del uso de metodologías Agile-Lean. Tiene más de 20 años de experiencia en la industria de software en Japón, México, y Estados Unidos. Obtuvo el Doctorado y Maestría en Sistemas Inteligentes y Ciencias de la Información en la Universidad de Tokushima en Japón y la Licenciatura en Ingeniería en Computación en la Universidad Nacional Autónoma de México. www.shojiki-solutions.com

Lean nos indica que debemos prestar atención a siete factores: • Eliminar todo aquello que genera desperdicio, es decir, que no agrega valor al producto o servicio a generar para satisfacer la necesidad real de usuario. • Aprendizaje sobre el producto

››Por Masa K. Maeda

o servicio a generar, así como también incrementar el nivel de conocimiento y experiencia de todas las personas involucradas, tanto ingenieros como gerentes, ejecutivos, diseñadores, arquitectos, e inclusive el cliente. • Saber tomar decisiones en el momento adecuado (comparado con tomar decisiones temprano) basándonos en el tipo de pensamiento adecuado. • Entregar productos o servicios de manera temprana en lugar de manera rápida o monolítica. • Darle a la gente poder de decisión mediante auto-organización, liderazgo, motivación y experiencia. • Construir productos y servicios con integridad tanto a nivel de lo que el usuario percibe como a nivel de el producto mismo (la calidad que el usuario percibe y la calidad real). • Considerar el todo. Las mejoras no pueden ser en tan solo un subconjunto de lo que se requiere para generar el producto o servicio, sino en todo lo que comprende al producto y todo aquello requerido alrededor del producto para su creación. Así como diversas metodologías como Scrum, XP, o FDD surgieron a partir de agile con influencia de lean, la metodología de Kanban surgió a partir de lean con influencia de agile y teoría de restricciones. En contraste con Scrum, por ejemplo, Kanban no requiere de iteraciones, y nos permite tener una visualización más completa del desarrollo la cual permite ver variaciones de manera temprana y por lo tanto tomar acción más efectivamente. Lean en conjunto con agile nos provee de una serie de herramientas muy poderosas, comenzando con el hecho de que generan un cambio en la manera de ver proyectos, cómo gestionarlos y cómo desarrollarlos. Nos muestran una forma de ser exitosos sin tener que continuar con los hábitos que consumen recursos tanto materiales como humanos de manera desmesurada. Son elementos que no podemos darnos el lujo de ignorar dada la situación económica actual.

Lecturas recomendadas: [1] M. Poppendieck & T. Poppendieck, Lean Software Development. Addison-Wesley, 2003 [2] M. Poppendieck & T. Poppendieck, Leading Lean Software Development. Addison-Wesley, 2009 [3] A. Shalloway, G. Beaver, J.R. Trott, Lean-Agile Software Development. Addison-Wesley, 2009. [4] J. Highmith, Agile Project Management, 2nd ed. Addison-Wesley, 2009.

44



.COLUMNA INVITADA

Creación de Software en México ¿E

stamos educando creadores de software?

››Por Marco A. Dorantes

E

l microprocesador digital ha resultado ser una pieza de tecnología de enorme impacto en la sociedad. Al parecer, apenas estamos empezando a descubrir la punta del iceberg en cuanto a las aplicaciones de cómputo digital y las implicaciones de éste en nuestras sociedades. Como otros avances tecnológicos, las computadoras son objeto para la creatividad y para el consumo masivo, o por lo menos eso es lo que se pretende, y no parece haber marcha atrás. Las computadoras, como herramientas, se sitúan al lado de otras herramientas tecnológicas como el microscopio o el telescopio, sobre las cuales —cuando se tiene el conocimiento para usarlas— podemos apoyarnos para enfocar nuevos y diversos cuadros de la realidad.

“La preparación que resulta necesaria para la creación de mejor software suele tomar sendas poco populares en México.” Pero, ¿cómo están tomadas las posiciones para la creación de software internacionalmente y en México en particular? ¿Quiénes están ubicados y bien apuntalados en sus posiciones como creadores de software y quiénes han elegido una posición tan solo de consumidores del mismo? No falta quien opine que en México sí estamos creando software y que sí estamos preparados para seguir haciéndolo, y haciéndolo bien, que sí vamos por buen camino o que ya están puestos los trazos hacia un mejor desempeño de las futuras generaciones en esta área. En la parte de la realidad que alcanzo a observar, no hay bases para sostener tal opinión. Encuentro, de ordinario, un entusiasmo falaz que disemina un sentido de autocomplacencia que cancela el cuestionamiento y la autocrítica sobre nuestra posición real en el panorama mundial en cuanto al diseño de software. Encuentro a veces un frenesí por consumir software, para sólo ostentar lo de moda o hablar de ello, como único fin, pero muy poco acerca de crear software que entregue valor directo y sensible al usuario final. Ese, quien no tiene otra opción que tolerar la absurda excusa

“no hay sistema” como respuesta estándar ante la incompetencia de quien pretende emplear tecnología de software para proveer productos o servicios sin diseñar mejores procedimientos organizacionales y mejores sistemas informáticos. La situación es deprimente al escuchar a quienes están en posiciones de liderazgo en esta área —dentro de instituciones académicas y también en empresas del ramo— y sus opiniones al respecto están basadas exclusivamente en información proveniente ya sea de la mercadotecnia o de erradas analogías con otras industrias como la industria de la construcción o de la manufactura de principios del siglo pasado. ¿Cuál es el mensaje implícito que hacen llegar a quienes los escuchan buscando dirección profesional? El cuadro es realmente patético al observar los esquemas que se proponen y se autorizan para la preparación del personal técnico que supuestamente estará a cargo de la supervisión y creación de soluciones de negocio basadas en software. Dichos esquemas se adscriben fielmente a los sistemas tradicionales de escolarización y adoctrinamiento de masas, donde la memorización mecánica, control del pensamiento y ambiente carcelario han inspirado históricamente expresiones artísticas cuya aparente exageración nos espolea hacia la reflexión: ¿Cuáles son las condiciones para la creación de mejor software? La preparación que resulta necesaria para la creación de mejor software suele tomar sendas poco populares en México, rumbos en las dimensiones del capital humano, los procesos de desarrollo, el diseño lógico, y las herramientas tecnológicas. Tan sólo en la dimensión del capital humano, obras como Peopleware [1], The Peopleware Papers [2] y Software for Your Head [3], nos ayudan a entender que el impacto que tiene sobre los resultados el perfil del personal es de un orden de magnitud muy superior al del resto de los factores. En pocas palabras: el impacto relativo al proceso de desarrollo o a una arquitectura particular será, a lo mucho, marginal si está ausente el personal adecuado para sacar provecho de dicho proceso de desarrollo o para evolucionar dicha arquitectura. Esta área de actividad —cuya demanda parece que permanecerá— también requiere una mejora continua del estado de conciencia, 46


están ubicados y bien apuntalados en sus posiciones como creadores de software y quiénes han elegido una posición tan solo de consumidores del mismo? tanto en quienes buscan aplicar el software a problemas reales como quienes pretenden proveer los servicios profesionales para crear soluciones basadas en software a dichos problemas, elevando las expectativas de educación en ambas partes. De otro modo, con las expectativas de educación y preparación actuales, no veo otro panorama futuro mas que la continuación del conformismo, donde los clientes y proveedores de sistemas informáticos se deberán conformar con los sistemas que merecen. ¿Hay sólo una manera correcta para crear soluciones de negocio basadas en software? ¿Qué diferencia hay entre quienes responden afirmativamente a esa pregunta y quienes abrazan al dogmatismo como modelo estándar de vida? ¿Qué acaso lo que impone la realidad no es suficiente para adoptar valores, principios, patrones y prácticas que coloquen al aprendizaje continuo en el centro de nuestros proyectos en lugar de pretender que nuestra industria es igual a otras, e.g. ingeniería civil, y que debe funcionar con premisas fundamentales, métricas de desempeño, y demás políticas, similares? ¿Qué forma entonces podrá tener una estrategia plural de preparación para proyectos de creación de soluciones de negocio basadas en software? Sugiero poner atención a lo que han propuesto practicantes como Gerald M. Weinberg en su serie Quality Software Management [4]; de cuya influencia y síntesis actual se ha derivado el Manifesto for Agile Software Development[5]. Pero teniendo cuidado de no errar por la inercia de tomar las buenas ideas como si fueran dogmas permanentes; al contrario, insertando modelos de adopción en los cuales siempre esté presente el sentido de aprendizaje y de adaptación a nuevas condiciones de contexto. Por cierto, precisamente ese patrón adaptativo y de aprendizaje es parte de la esencia fundamental del manifiesto para el desarrollo ágil de software, desde sus inicios.

El mapa de las habilidades necesarias para presentarse muy bien equipado en un proyecto de creación de soluciones de negocio basadas en software ha estado ahí por ya largo tiempo. ¿Qué vas a hacer al respecto estimado lector? ¿Esperar a que alguien más te dicte qué pasos dar en tu carrera profesional la cual, ya sea como usuario o proveedor, con mucha seguridad se verá transformada positiva o negativamente por un empleo adecuado o descuidado de la tecnología de software? ¿Qué caracteriza tu plan de preparación técnica: el cortoplacismo y la continuación de los mismos patrones problemáticos populares, o la progresión en cada vez mejores niveles de entendimiento y aprendizaje? Se hace relevante la reflexión acerca de esa tan mencionada palabra: educación. ¿Qué es la educación? ¿Dejaremos que se mantenga como sinónimo de escolarización y adoctrinamiento, como dice la canción “…No necesitamos educación, no necesitamos control mental…” o atenderemos las advertencias que nos hacen mexicanos destacados como Denise Dresser [5]?: “México, el país donde en la escuela pública se aprende poco de ciencia, pero se aprende mucho de sometimiento; se aprende poco de tecnología, pero se aprende mucho de simulación; se aprende poco de álgebra, pero se aprende mucho de cumplimientos mediocres, negociaciones injustas y beneficios extralegales.”

Referencias [1] T. DeMarco & T. Lister, Peopleware, 2nd ed. Dorset House, 1999. [2] L. Constantine, The Peopleware Papers, 2nd ed. Prentice Hall, 2001. [3] J. McCarthy & M. McCarthy, Software for your Head. Addison-

.BIO

Wesley, 2002.

Marco A. Dorantes es un consultor en el diseño y formulación de software desde 1987, oficio que lo llevó a la investigación aplicada en el campo de los métodos sistemáticos para diseño de software. Ha realizado diversas contribuciones públicas en la comunidad mundial de programación, tanto en foros técnicos como en software. http://blogs.msdn.com/marcod

[4] G. Weinberg, Quality Software Management, Vol 1-4. Dorset House, 1991-1997. [5] D. Dresser, “México Amurallado”, Proceso, No. 1723, 8-Nov-2009. http://bit.ly/sg27r6

47

www.sg.com.mx |

››¿Quiénes

Software Guru

.COLUMNA INVITADA


.CARRERA

Fomentar el Ingreso y la Permanencia en Carreras de TI ››Por Oscar Rodríguez

48


Impacto de las TI en la economía y el mercado de trabajo actual

Exportaciones de TIC en México

200000 180000 160000 140000 120000 100000 80000 60000 40000 20000 0

Estados Unidos China

2005

2004

2003

2002

2001

2000

1999

1998

1997

México 1996

Millones de Dólares

Cada día es más común escuchar términos como la economía del conocimiento, negocios basados en conocimiento o trabajadores del conocimiento. Estos términos e ideas están cambiando el enfoque de los antiguos modelos, al ver al capital humano como el factor crítico de éxito más importante. La economía del conocimiento es un término que ha sido adoptado para describir a los sectores productivos que muestran un mayor dinamismo y crecimiento originado por la producción y el uso intensivo de la información. Estos sectores difícilmente podrían subsistir sin las TI.

Un dato que resalta la importancia del sector de las TICs en la economía, es el efecto que tiene en los indicadores económicos de un país. Las estadísticas de la OCDE indican que la inversión total no residencial en el sector de TIC se duplicó y en algunos casos se cuadruplicó entre 1980 y 2005, dentro de las cuales el componente de mayor crecimiento fue el software. Otro dato importante son las exportaciones de TIC. En el caso de México, este rubro representó un total de más de 43 mil millones de dólares en el 2005. Sin embargo, como se observa en la Gráfica 1, el crecimiento de México no ha sido tan positivo como el de otros países, siendo China (país no miembro de la OCDE) el país con mayor crecimiento. De lo anterior podemos observar que las TIC son un sector de alto crecimiento, sobre todo en el caso del software. Asimismo, México no ha explotado su potencial y posición estratégica como vecino del mayor consumidor de recursos de TIC. La actual coyuntura económica puede ofrecer oportunidades que no debemos desaprovechar. Hoy existe una transferencia de inmigrantes expertos en áreas de alta tecnología desde Estados Unidos hacia sus países de origen, es decir que EEUU está perdiendo “mente de obra” altamente calificada, la cual será necesario suplir una vez que se restablezca la situación económica. Esta puede ser una oportunidad para suplir dichos puestos con personal capacitado en México, o por medio de servicios de outsoursing con empresas mexicanas de alta tecnología. Las oportunidades de crecimiento en el sector de las TIC, ha llevado a que distintos actores del gobierno mexicano realicen esfuerzos por potenciar el desarrollo del sector, tal es el caso del programa

.BIO

Oscar Rodriguez es Doctor en Ciencias de la Computación y miembro del Sistema Nacional de Investigadores. Profesor-Investigador de tiempo completo en la división de estudios de posgrado e investigación del Instituto Tecnológico de Hermosillo. Sus áreas de investigación e interés incluyen la Ingeniería del Software y la Gestión del Conocimiento. omrodriguez@ith.mx

Gráfica 1. Comparativa del crecimiento en exportaciones de TIC de México contra las de Estados Unidos y China.

49

www.sg.com.mx |

E

n años recientes se ha visto una clara disminución en el ingreso de estudiantes a carreras tecnológicas, especialmente en el área de la computación, así como un alto índice de deserción, lo que ocasiona un problema de falta de personal calificado en áreas de Tecnologías de la Información (TI). Lo anterior es un hecho a nivel internacional. En el caso particular de México, este fenómeno pone en riesgo las metas de crecimiento económico de muchos sectores de la industria, dada la cada vez mayor necesidad de especialistas en éstas áreas. Partiendo de un análisis de indicadores que podrían dar una idea de las perspectivas en las áreas de TI, buscando hacer énfasis en la importancia de tener más personal calificado en dichas áreas, para finalizar con propuestas de actividades necesarias para fomentar el ingreso y la permanencia en carreras relacionadas con la computación y las TI.

Software Guru

.CARRERA


.CARRERA

PROSOFT de la Secretaría de Economía, que tiene entre sus objetivos la formación de recursos humanos calificados en el área del desarrollo de software. Sin embargo, estos objetivos no podrán cumplirse si no logramos que más estudiantes ingresen en carreras de TI, y sobre todo, que los que ingresen no desistan.

El problema de la baja en la demanda de carreras de TI

Diversas instituciones de educación a lo largo del mundo se han preocupado por la baja en la demanda de carreras de computación, así como en el incremento en la deserción escolar. Esta baja en la demanda ha sido tal, que se estima que el porcentaje de disminución ha estado entre el 70 y 80% alrededor del mundo. Esto es difícil de entender cuando se observan datos como las necesidades actuales y las proyecciones futuras para el sector de las TI, las cuales hacen ver la necesidad de una gran cantidad de recursos humanos especializados en el área. Las causas de la baja demanda de carreras de TI pueden ser muy diversas. Se ha identificado que un factor importante es el que los estudiantes perciben que no habrá empleos para este sector [3]. También se ha observado que las perspectivas de empleo es uno de los principales factores para elegir una carrera en sistemas de información [7]. Un factor para no elegir estudiar una carrera en Sistemas de Información, es la percepción que los estudiantes tienen sobre las actividades que realiza un especialista en dicha área y la confusión que existe dada la gran variedad de carreras relacionadas con la computación. Otro posible factor relacionado con la deserción, es la dificultad de los estudiantes para aprender a programar es una de las principales causas en la deserción de los mismos [5].

››Estados Unidos está perdiendo “mente de obra” altamente calificada... esta puede ser una oportunidad para suplir dichos puestos con personal capacitado en México.

Por otra parte, algunos especialistas en el sector han observado un comportamiento de altas y bajas en la demanda de carreras de TI que han dependido de dos eventos concretos. El primero fue la introducción de la PC durante los 80s, y el segundo evento fue el nacimiento del Internet y las empresas “punto-com” a mediados de los 90s. No obstante, después de un rápido crecimiento en ambos eventos, se observó una baja acelerada. Datos recientes muestran que podría estar empezando un

resurgimiento del interés de los estudiantes por cursar carreras del área de las ciencias de la computación en Estados Unidos, dado que en el 2008 se registró un aumento en la matricula en programas relacionados con la computación, lo que no sucedía desde hace más de seis años. Dado que las causas de la baja demanda y la deserción escolar en carreras de TI pueden ser diversas, es importante entender cuáles son los factores que llevan a un estudiante a ingresar en una carrera y mantenerse en ella. Como se observa, la baja demanda y la deserción escolar en carreras de TI es algo preocupante en muchos sectores a nivel mundial. Sin embargo, tomando en cuenta los datos recientes ya descritos, podrían establecerse programas que ayuden a revertir esta situación.

Entonces, ¿qué necesitamos?

Mayor información sobre las posibilidades de empleo y remuneraciones El primer punto a considerar es la difusión de la información relacionada con las oportunidades de empleo y remuneraciones que presenta el sector de las TI. No resulta difícil encontrar datos relevantes que hagan ver la importancia de estudiar y mantenerse en una carrera relacionada con el uso, gestión o desarrollo de sistemas de información, dado que este sector tiene la ventaja de ser uno de los de mayor crecimiento en la actualidad. Por otra parte, la revista Software Guru, en su número de Noviembre-Diciembre de 2007 publicó los resultados de una encuesta sobre los salarios en el sector del software. De dicha encuesta, se observa que se reporta un promedio ponderado de ingreso mensual de $19,946 pesos. También se observa que la mayor concentración (63%) se encuentra en rangos de $7,000 a $25,000 pesos. Siendo sólo el 11.8% los que reportan un ingreso menor a $7,000 pesos, mientras que el 24,2% reporta un sueldo superior a $25,000 pesos. Estos datos sugieren que el sector de profesionistas en software es uno de los mejor pagados en el país, sobre todo si consideramos que el ingreso promedio mensual, según datos del observatorio laboral, fue de $10,330 pesos global durante el 2008. El sector de las TI presenta oportunidades de desarrollo económico muy interesantes, lo que podría ser un factor importante para convencer estudiantes para tomar una carrera en esta área. No obstante, los beneficios económicos no son todo en la elección de una carrera. También los estudiantes deben sentirse competentes para desempeñarse en la profesión para la que se preparan. En el caso de las TI, parece ser que una de las principales barreras en este sentido es la programación. 50


.CARRERA

Mostrar la importancia y utilidad de materias clave para el desarrollo profesional

Si bien es probable que algunas de las herramientas que se les enseña a los alumnos no serán aplicadas de forma directa en su desarrollo profesional, muchas de ellas resultan indispensables para desarrollar habilidades necesarias en la profesión. Como ejemplo está el caso de la capacidad de abstracción y resolución de problemas que son de las habilidades que pueden ser desarrolladas por medio de cursos básicos como las matemáticas. Sin embargo, si los estudiantes no están consientes de ello es probable que no aprovechen estas materias de forma adecuada. Un ejemplo de lo anterior lo presenta Parhami [6], quien describe los esfuerzos que se están llevando a cabo en la carrera de Ingeniería en Computación de la Universidad de California, en donde los estudiantes llevan un seminario introductorio a la carrera, en el que analizan diversos problemas de la vida real en donde las herramientas que aprenderán a lo largo de la carrera pueden ser útiles para resolverlos. Por su parte, Felleisen y Krishnamurthi [2] van un poco más allá y proponen la alineación de las ciencias de la computación con las matemáticas a nivel de preparatoria de forma que ésta primera

››La baja demanda y la deserción escolar en carreras de TI es algo preocupante en muchos sectores a nivel mundial. Conclusion

En este artículo he expuesto algunas ideas que podrían contribuir a reducir la deserción y aumentar el ingreso en carreras de TI. Lograr este objetivo es crítico si queremos alcanzar las metas de crecimiento en el sector de las TI en el país. Sin embargo, si no logramos formar los profesionistas necesarios para ocupar los puestos que se requerirán en el sector, difícilmente se lograrán las metas que tanto el gobierno como la industria se han planteado. Por lo tanto, tenemos un reto que debe ser abordado tanto por la academia como por el gobierno y la industria, el cual es lograr un mayor ingreso y permanencia de estudiantes en carreras de TI. Sin duda el reto no es fácil, pero algo debemos hacer.

Referencias: [1] C. Cegielski & D. Hall, “What Makes a Good Programmer?”, Communications of the ACM, 49(10), 2006. [2] M. Felleisen & S. Krishnamurthi, “Viewpoint: Why Computer Science Doesn’t Matter”, Communications of the ACM, 52(7), 2009. [3] W. Huang, J. Greene & J. Jay, “Outsourcing and the Decrease of IS Program Enrollment”, Communications of the ACM, 51(6), 2008. [4] J. Krmaer, “Is Abstraction the Key to Computing?”, Communications of the ACM, 50(4), 2007. [5] B. Manaris, “Dropping CS Enrollments: Or The Emperor’s New Clothes?”, Inroads - SIGCSE Bulletin, 39(4), 2007. [6] B. Parhami, “Puzzling Problems in Computer Engineering”. IEEE Computer, 42(3), 2009. [7] C. Scott et al, “More than a Bumper Sticker: The Factors Influencing Information Systems Career Choices”, Communications of the Association for Information Systems, 24, 2009.

51

Software Guru

La enseñanza de la programación ha sido una de las principales áreas de investigación en ciencias de la computación. Sin embargo, parece que los académicos en el área hemos fallado en ésta labor. Al parecer, uno de los aspectos más difíciles de manejar es el entendimiento de grandes porciones de un programa. Uno de los principales aspectos que parece dificultar la programación es el manejo de conceptos abstractos para resolver problemas. Debemos buscar la manera de enseñar a los estudiantes a pensar sobre el proceso de programación. Podemos considerar que la enseñanza de la programación debe ser un proceso gradual, iniciando por enseñar a los estudiantes a pensar en el proceso de la programación y su utilización para resolver problemas, quizá por medio de algún lenguaje de programación sencillo. Una vez dominado lo anterior, entonces podemos pensar en la enseñanza de lenguajes de programación más potentes y complejos. Junto con lo anterior, es preciso identificar todas aquellas materias que pueden contribuir para desarrollar las habilidades que podrían hacer que los estudiantes se conviertan en buenos programadores. Dentro de estas habilidades, la capacidad de resolver problemas parece estar entre las principales [1]; y para desarrollar dicha habilidad, la capacidad de abstracción es esencial [4]. Quizá las materias que más contribuyen al desarrollo de estas habilidades son las relacionadas con las matemáticas.

se convierta en un tema esencial para todo estudiante. Estos autores proponen ideas de cómo se pueden presentar algunos problemas de algebra para resolver cuestiones de programación. Para lograr un mayor interés en los cursos que deben llevar los estudiantes de carreras de TI, debemos buscar esquemas que ayuden a mostrar la utilidad de los conocimientos que se adquieren en cada curso, para resolver problemáticas propias de la profesión hacia la cual queremos dirigir a los alumnos.

www.sg.com.mx |

Una estrategia de enseñanza de la programación


.Fundamentos

Entre lo Estático y lo

Dinámico

el papel del analista y del programador

››Por Ricardo Rangel

A

l escuchar la expresión “Programador Analista” es probable que se nos venga a la mente la idea de que es una persona que se encarga de automatizar soluciones a ciertas necesidades de información de una empresa. Esto es cierto cuando el proyecto es muy simple y es para una tarea muy específica, por ejemplo, para hacer algún cálculo o para exportar cierta información, sin embargo, en proyectos de tamaño normal o grande, por lo general son varias personas las que participan, entre ellas, un programador (o varios) y un analista, es decir las actividades se reparten. En este artículo veremos cual es la función de ambos, principalmente desde un punto de vista inicial y crucial para un proyecto: El diseño.

El papel del analista desde el punto de vista del diseño

El analista se ocupa del sistema desde un punto de vista “estático”, es decir, se encarga de recabar los requerimientos y darle forma a los cimientos y estructura del sistema. Así mismo se preocupa de que las reglas de negocio se cumplan y sean soportadas por la estructura.

El papel del programador desde el punto de vista del diseño

El programador se ocupa del sistema desde un punto de vista “dinámico”, es decir, se preocupa por como los objetos de negocio van a interactuar entre si para la lograr la funcionalidad requerida del sistema dentro de la estructura y reglas de negocio que el analista estableció desde un principio. Podríamos decir que el programador interactúa con los objetos cuando estos ya tienen vida, por lo que normalmente veremos una instancia de objeto, en los diagramas del Programador: Objeto: Clase.

“El Programador es quien tiene el abanico más amplio de diagramas y modelos por realizar.”

Herramientas de modelado

Para lograr sus objetivos, tanto el analista como el programador deben de hacer uso de técnicas de modelado, una de las técnicas mas comunes es UML. El Lenguaje Unificado de Modelado es un lenguaje estándar para escribir planos de software y permite visualizar, especificar, construir y documentar los artefactos de un sistema. UML se compone de diversos tipos de diagramas y es aquí donde es fácil confundirse y perderse entre todos los tipos de

diagramas y modelos que UML ofrece y preguntarse ¿Cuál es mi papel dentro del sistema? ¿Qué tipo de diagramas debo de hacer? ¿Debo de usar todos los diagramas UML? ¿Como programador, debo diagramar o puedo simplemente empezar a programar basado en los casos de uso? La respuesta a todas estas preguntas es que el analista debe hacer ciertos diagramas y el programador debe de hacer otros tipos de diagramas.

Los diagramas y modelos del analista

Debido a que el analista ve al sistema desde un punto de vista estático, debe de hacer uso de aquellos diagramas que le permitan establecer los cimientos y la estructura del sistema, por lo que los diagramas UML que le servirán para lograr este objetivo son: Diagrama de Casos de Uso. Es un diagrama de comportamiento que muestra como se relacionan los casos de uso con los actores del sistema. Detalle de Casos de Uso. Es la descripción de las actividades que debe realizar un caso de uso. Este es quizás el elemento más importante del que hace uso el analista ya que es aquí donde describe en detalle como debe de funcionar el sistema y es el documento en el que se basara el programador. Diagrama Entidad Relación (Diseño Lógico). Es el diagrama de bases de datos que contiene las entidades y las relaciones entre estas. Diagrama de Actividades. Es un diagrama de comportamiento que muestra el flujo existente en un conjunto de actividades. También el programador puede usar un diagrama de actividades para aclarar un control de flujo en su codificación. Diagrama de Despliegue. Es un diagrama estructural que muestra las relaciones entre conjuntos de nodos, artefactos, componentes, etc. Un ejemplo de diagrama de Despliegue es la Arquitectura Cliente-Servidor. El analista es el que debe decidir qué tecnología se va a usar, si el sistema será Web o local, si utilizará la red para transferencia de datos o utilizara archivos planos, etc.

Los diagramas y modelos del programador

En cuanto al programador, debido a que ve al sistema desde un punto de vista dinámico, debe de hacer uso de aquellos diagramas que le permitan observar cómo los objetos se relacionan entre si. Los diagramas UML que el programador podría usar son: Diagrama Entidad Relación (Diseño Físico). Es el diagrama de bases de datos que contiene las tablas, las relaciones entre estas, tipos de datos, llaves primarias, etc. Tarjetas CRC. Son una extensión informal de UML y permiten definir responsabilidades dentro de un flujo de eventos. Son muy útiles para diseñar interfaces de usuario. 52


Figura 1. Ejemplo de diagrama de casos de uso

es una parte lógica y reemplazable de un sistema que conforma y proporciona la implementación de un conjunto de interfaces. Una interfaz es una colección de operaciones que sirven para especificar un servicio de una clase o un componente. Esto permite establecer una frontera entre aquellas partes del sistema que pueden cambiar y las que no. Cuando participan varios programadores en un proyecto, las interfaces permiten establecer un punto de partida y obligarlos a utilizar los nombres de los objetos para evitar confusiones. Máquinas de Estados. Es un comportamiento que especifica las secuencias de estados por las que pasa un objeto a lo largo de su vida en respuesta a eventos. Patrones y Frameworks. Un framework es una microarquitectura que incluye un conjunto de mecanismos que colaboran para resolver un problema en común. Por ejemplo, cuando se desarrolla un framework para conexión a bases de datos y que contiene todo lo necesario para solicitar datos en conjunto, para ejecutar como comandos como Delete, Update, Insert, etc. Este framework, al ser genérico, podrá ser utilizado en cualquier otra aplicación. Al ser utilizado en varios proyectos, es entonces cuando el framework se convierte en un patrón, es decir, se convierte en una solución común a un problema común: la conexión a bases de datos.

Desmitificando el papel del analista con respecto a los diagramas

Es curioso darse cuenta al revisar toda esta información de que, el que

Figura 2. Ejemplo de diagrama de objetos.

53

www.sg.com.mx |

Diagrama de clases. Es un diagrama estructural que muestra un conjunto de clases, interfaces, colaboraciones y sus relaciones. Las clases son entidades que contienen objetos conocidos como propiedades y métodos. Las clases son fundamentales para la programación orientada a objetos y se basan en las entidades existentes del negocio. Diagrama de paquetes. Es un diagrama estructural de agrupación que muestra la organización del modelo en paquetes (Lo que en .Net se conoce como Namespaces para organizar las clases). Sin embargo los paquetes también pueden encapsular otras entidades, como por ejemplo Casos de Uso. Diagrama de objetos (o de instancias). Representa a un conjunto de objetos y sus relaciones en un momento concreto. Como decíamos anteriormente, el programador convive directamente con los objetos cuando estos ya tienen vida, por lo que este tipo de diagrama le será muy útil. Modelado de artefactos. Los artefactos en UML son librerías (dll), archivos ejecutables (exe), archivos de código fuente, archivos de datos. El modelado de artefactos permite plasmar la relación que hay entre estos objetos dentro de un proyecto. Diagramas de secuencia. Muestra los objetos que intervienen en el escenario con líneas discontinuas verticales y los mensajes pasados entre los objetos como vectores horizontales. Muy útil cuando los objetos de varias clases tienen que interactuar entre sí. Modelado de colaboraciones. Es una sociedad de clases, interfaces y otros elementos que colaboran para proporcionar un comportamiento. Modelado de interfaces y componentes. Un componente

Software Guru

.Fundamentos


.Fundamentos

al sistema desde un punto de vista estático, debe hacer uso de aquellos diagramas que le permitan establecer los cimientos y la estructura del sistema.

››El analista ve

tiene un abanico más amplio de diagramas y modelos por realizar es el programador y no el analista como podría pensarse. Esto es debido a que el programador trabaja con los objetos cuando estos ya tienen vida, y modelar le permitirá visualizar cómo deben comportarse los objetos antes de codificarlos.

Precauciones al utilizar UML

UML es un lenguaje de modelado muy poderoso que si no se usa correctamente puede inclusive ser contraproducente. Se debe de tener bien claro qué diagramas deben de hacerse y cuales pueden omitirse, y quién los debe hacer. Tomemos en cuenta que hacer diagramas es una tarea que lleva mucho tiempo, por lo que se recomienda usarlos con discreción (con excepción de los diagramas del analista que son fundamentales, no así los del programador). Mientras que los diagramas del analista tienen por objetivo establecer los cimientos del sistema, los diagramas del programador tienen por objetivo ayudarle a el a comprender cómo deben de interrelacionarse los objetos de negocio para lograr la funcionalidad deseada, por lo que si el programador tiene claro ciertas partes del proyecto, no será necesario que diagrame todos y cada uno de los aspectos de este. UML debe de servir al programador y no el programador a UML.

La relación entre el analista y el programador

Se recomienda ampliamente a las empresas que en sus proyectos de tamaño mediano o grande, no escatimen en recursos y tengan a un analista y un programador (o varios), ya que en el transcurso del

desarrollo del proyecto surge una relación muy interesante entre ambos, dando como consecuencia una retroalimentación completa. En cambio si una sola persona esta a cargo de todo, podría perder la objetividad y creer que esta haciendo las cosas bien cuando en realidad puede ser que no sea así. Por ejemplo cuando el analista le pide al programador desarrollar algo, este al intentar implementarlo podría darse cuenta de que el requerimiento no es factible o que esta incompleto. De hecho, lo mas común es que el programador (que es el que realmente lucha con la aplicación cara a cara) le haga observaciones al analista, este corrige, y le vuelve a pedir el requerimiento, hasta que el programador se da cuenta de que lo que se esta pidiendo esta correcto y es factible implementarlo. Este patrón se repite durante todo el proyecto. También es común que el analista al revisar lo que el hizo el programador, se de cuenta de que a pesar de estar bien programado, no esta del todo correcto lo que le solicito, y tendrá que regresar a su escritorio a replantear algunas cosas, y darle nuevamente los ajustes al programador.

Conclusión

El modelado es muy importante en el diseño de un sistema para no terminar construyendo una mesa de ping pong cuando en realidad se quería construir una mesa de billar. Sin embargo, los modelos deben de hacerse en base a los objetivos que persigue cada participante en el desarrollo.

.BIO

Ricardo Rangel Ramírez es Lic. en Informática egresado de la Universidad de Ecatepec. Ha desarrollado software en plataforma .Net para diferentes empresas. Actualmente labora en el Departamento de Sistemas de Stanhome de México y en proyectos independientes. Sus principales habilidades son la Gestión y Explotación de Información, y el Análisis, Diseño y Desarrollo de Sistemas. riccardorangel@hotmail.com

Referencias: [1] G. Booch, J. Rumbaugh & I. Jacobson. El Lenguaje Unificado de Modelado, 2 ed. Addison Wesley, 2006. [2] J. Gorman. “UML For .Net Developers”. http://parlezuml.com

Figura 3. Ejemplo de diagrama de secuencia

54



.COLUMNA Prueba de Software

La Industria de la

S

Prueba de Software

oportunidades y retos por

egún datos que circulan desde hace tiempo y de diversas fuentes, tanto gubernamentales como privadas, el mercado de software en México se estima en alrededor de 1,100 millones de dólares estadounidenses; se estima también que ha venido creciendo a tasas del 10% en los últimos años. Por otra parte, el mercado de prueba se estima en aproximadamente 100 millones de dólares, distribuido en los sectores típicos. Además de que el mercado mexicano de la prueba está creciendo, el de nuestros vecinos del norte es enorme y comienza a recuperarse. Sin embargo, para entrar en ese mercado tan competido es menester contar con buenas credenciales. Ciertamente la industria mexicana de pruebas ha venido mejorando y fortaleciéndose; sin embargo, la pregunta es si lo hace con la rapidez necesaria. Estamos frente a una oportunidad coyuntural que no esperará mucho tiempo.

››El no hacer así las cosas vuelve la prueba de software una práctica más aleatoria que disciplinada. Capacidades actuales de la industria de pruebas

Luis Vinicio León Carrillo es Director General de eQuallity, empresa especializada en prueba de software, de la que es co-fundador. lleon@e-quallity.net

Basados en nuestras experiencias en México y en el extranjero, en los números de Nov-Ene 2010 (certificaciones para testers), Ago-Oct 2008 (diagnósticos de productos), Nov-Dic 2006 (assessments de organizaciones de prueba) y Mar-Abr 2006 (la industria de pruebas en México) hemos expresado algunos comentarios que pueden resumirse en que, para que México aparezca en el radar internacional como proveedor de servicios de prueba es necesario que el país cuente con: • Más testers y mejor calificados, certificados internacionalmente, de manera que se pueda infundir confianza. • Procesos de prueba más maduros, que utilicen modelos estadísticos para realizar las pruebas de una manera efectiva. • Más empresas especializadas en prueba, que cuenten con certificaciones en modelos internacionales de calidad especializados en prueba de software. • Una mayor aplicación sistemática de la práctica de la prueba en la industria. El que las pruebas no se realicen, o

vencer

se ejecuten esas deficiencias, hace que el mercado interno sufra con productos defectuosos, lo cual inhibe su crecimiento; al mismo tiempo, dado que el producto se libera con muchos defectos, el mantenimiento se vuelve más costoso, lo cual nuevamente inhibe el mercado. Las empresas de prueba de software no suelen trabajar en base a métricas, ni utilizar modelos de calidad especializados en prueba que les provean un marco de referencia adecuado que les facilite mejorar. La mayoría de ellas se concentra en ofrecer servicios de outsourcing de testers en el esquema conocido en el sector financiero como “manpower”, consistente en sólo proporcionar la gente, para que el cliente administre el proyecto. La tendencia, sin embargo, es hacia lo que se suele llamar “fábrica de pruebas” en el cual el cliente paga por la productividad alcanzada, lo cual requiere procesos maduros basados en métricas. En nuestra práctica de consultoría venimos observando que muchas organizaciones de prueba suelen presentar debilidad en recabar y aplicar métricas para la estimación de defectos, para la distribución del esfuerzo de pruebas, y para la definición del criterio de terminación de las mismas. Las métricas son muy importantes para realizar las pruebas de manera efectiva.

Un principio básico

La prueba es finalmente una práctica basada en métricas y en la aplicación de la estadística; cuando no se realiza de esta manera se pierde efectividad y dinero. Desde el punto de vista teórico, dado que el software no puede probarse algorítmicamente, y que el state of the practice (no sólo en México, sino en el mundo) no es el uso de “métodos formales” (tecnología que

Q

e1 e2

I

e3

S N

Figura 1. Ilustración del problema a probar

56


describiremos en otro número), la estrategia es aplicar las heurísticas apropiadas basándose en datos estadísticos. Déjenme ejemplificar el punto tomando un caso clásico de Myers. Supongamos que nos contratan para probar un pequeño sistema que recibe como entrada 3 números enteros entre 1 y 100,000 que representan los lados de un triángulo, y que genera como salida un letrero con un mensaje que puede ser uno de los siguientes: • “eQuilátero”, si los 3 enteros son iguales. • “Isósceles”, si 2 de los enteros son iguales. • “eScaleno”, si los enteros son diferentes. • “No es triángulo”, si no puede formarse un triángulo con lados de esas dimensiones. La figura 1 ilustra este problema.

La labor de la prueba es utilizar técnicas ingenieriles para diseñar y aplicar casos de prueba en cantidad y calidad suficiente, de manera que el producto alcance el nivel de calidad deseado; para poder hacerlo adecuadamente es necesario contar con métricas. La calidad incluye que el caso de prueba sea diseñado sistemáticamente para que tenga una alta probabilidad de detectar defectos. La cantidad tiene que ver con que con ese número de casos de prueba estemos en la “zona rentable” de la relación costo-beneficio, como se muestra en la figura 2. Hay una zona en la que es rentable invertir para detectar defectos (la enmarcada en el rectángulo), porque encontrarlos no requiere de muchos recursos; sin embargo, pasando un punto eso ya no es conveniente. Para definir ese punto, que implica especificar la cantidad de defectos a encontrar y la de casos de prueba a diseñar y aplicar, es necesario por un lado considerar el dominio de aplicación del producto (no puede probarse igual un producto para el mercado administrativo, que la turbina de un avión), y por otro contar con métricas afinadas que guíen las pruebas para encontrar dejar el producto listo para su mercado.

››Por Luis Vinicio León Carrillo

Recursos

¿Cuántos casos de prueba serían necesarios para probar exhaustivamente el sistema? Y si pudiéramos diseñar y aplicar 1 caso de prueba por segundo, ¿en cuánto tiempo terminaríamos? Recuerden que cada uno de los 3 enteros varían en un intervalo de tamaño 10^5; por otro lado, escribir un programa para realizar las pruebas nos regresa al problema original de probar un producto. De este ejercicio debiera quedar claro que la meta de probar exhaustivamente un producto no es una buena estrategia.

La zona rentable de la prueba

Defectos Figura 2. La zona rentable


.COLUMNA Programar es un Estilo de Vida

Voto Electrónico

E

analizando su

conveniencia

l tema de la votación electrónica comienza a sonar nuevamente en el debate político de nuestro país. De prosperar la discusión, toda decisión respecto a su implementación implicará sin duda a los expertos en desarrollo y medición de calidad de software de nuestro país. Adelantánadonos a los hechos, analicemos brevemente lo que esto significaría para nuestra sociedad.

››El voto electrónico no es tan barato ni confiable como podríamos creer. Contrario a lo que muchos esperarían, los promotores de la concientización en seguridad en cómputo somos los primeros en recalcar que los fallos –conceptuales y de implementación– hacen que las estaciones computarizadas de emisión y contabilización de votos sean, desde su planteamiento, una causa perdida. Ninguna de las numerosas implementaciones a la fecha han salido airosas ante el escrutinio de expertos en seguridad; muy por el contrario, empresas del tamaño de Sequoia o Diebold, las principales proveedoras de estaciones de voto, han llegado a amenazar a investigadores para evitar que publiquen sus resultados. Diversos argumentos han sido esgrimidos a favor del voto electrónico, pero pueden ser resumidos en tres:

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

• Disminución de costos. Un adecuado proceso democrático es caro. La papelería electoral debe ser impresa con candados suficientes para asegurar su unicidad, deben proveerse mecanismos para garantizar que sólo los electores autorizados emitan su voto, y debe haber garantías de no manipulación para todos los componentes involucrados en el proceso. La automatización del proceso ayudaría a implementar estos candados a un menor costo. • Agilidad en la obtención de resultados. No hay nada que genere mayor falta de confianza y suspicacia en los procesos que una demora en la publicación de los resultados. Se ha argumentado que a través del voto electrónico, los resultados pueden ser anunciados prácticamente de inmediato tras haberse cerrado la casilla.

• Confiabilidad de los actores. La experiencia de muchos países en torno a los fraudes electorales apunta dolorosamente a la falta de integridad de los actores involucrados en el proceso — Personas susceptibles a la compra de conciencias, a la extorsión, o directamente a la violencia física; si todo el proceso es controlado por computadoras, éstos factores deberían perder peso. A continuación analicemos por qué los tres argumentos caen por su propio peso.

Agilidad en la obtención de resultados

La sociedad actual vive obsesionada con la velocidad del acceso a la información. Los medios electrónicos de comunicación y el uso de Internet nos han acostumbrado a que la información debe estar disponible tan pronto ocurren los hechos, siendo cualquier demora excesiva. Todos los sistemas electorales reconocen que, para no alterar los resultados de una elección en proceso, no deben darse a conocer sus resultados parciales hasta que haya cerrado la última de las urnas. Sin embargo, una vez que ésta cierra, siempre hay un periodo de un par de horas en que es necesario esperar a que las autoridades electorales recopilen la información generada por decenas de miles de casillas para poder dar a conocer los resultados. Además del apetito por la información expedita, la necesidad de tener los resultados de inmediato viene de los ocultamientos de información que tantas veces vimos en el pasado. Ejemplo de esto son las declaraciones que hizo –veinte años tarde– Manuel Bartlett Díaz, presidente de la Comisión Federal Electoral durante las elecciones de 1988: La decisión de no dar datos preliminares fue tomada por el presidente de la Madrid, dado que “si se oficializaba en ese momento –con datos parciales– que Cárdenas iba ganando, al final nadie aceptaría un resultado distinto.” La situación ha cambiado radicalmente desde entonces. La población hoy comprende y acepta que, para evitar una demora cercana a una semana, el Instituto Federal Electoral y las autoridades correspondientes publican los resultados de encuestas, conteos y PREP típicamente dentro de las dos primeras horas tras haber concluído la votación, siempre que haya suficiente márgen estadístico para no causar confusión, pero que estos datos son extraoficiales. Son sólo este par de horas el que ganaríamos con urnas electrónicas. El tiempo invertido por los funcionarios electorales en cada casilla en el conteo de votos emitidos es sólo 58


.COLUMNA

Confiabilidad de los actores

Algunos proponentes del voto electrónico mencionan que, con el voto tradicional en papel, los fraudes siempre han existido, y que hacerlo electrónico no agrava los riesgos — Sin embargo, al implementar el voto puramente electrónico estaríamos aumentando la profundidad a la que podrían llegar, e imposibilitando cualquier acción de auditoría o rendición de cuentas. El proceso electoral es, por excelencia, el que mayor auditabilidad demanda en una sociedad democrática. Como profesionales del desarrollo, estarán de acuerdo conmigo en la imposibilidad de demostrar que una base de código suficientemente grande está completamente libre de fallos, incluso teniendo a un equipo altamente especializado. Además, verificar un determinado código fuente no garantiza que el sistema desplegado sea efectivamente resultado del programa analizado. Más aún, una sociedad democrática debe garantizar que cualquier ciudadano interesado pueda constatar el correcto conteo de votos. A fin de cuentas, ¿por qué el ciudadano promedio debe confiar en estos especialistas? Este argumento fue clave para la resolución adoptada en marzo del 2009 por la Corte Suprema de Alemania, declarando anticonstitucional las votaciones electrónicas porque (cito) «(...)excluye del control público a componentes centrales de la elección, y por tanto no alcanza a satisfacer las exigencias constitucionales».

Disminución de costos

Los candados para asegurar elecciones son muy caros — y el caso de México es extremo: es el sistema electoral más caro de América Latina; cada sufragio emitido en las elecciones intermedias del 2009 tuvo un costo superior a los 17 dólares, aunque hay estimaciones que lo ubican en hasta 50 dólares, tomando en cuenta gastos ocultos. Un rubro en el que sin duda podrían presentarse importantes ahorros es en la generación, manejo y custodia del material electoral. Sin embargo, estudios realizados sobre las estaciones de votación Diebold (responsables de la recopilación del 10% de los votos en los Estados Unidos),muestran que estas máquinas presentan un nivel de confiabilidad ante ataques verdaderamente bajo, y permiten —con un tiempo mínimo de acceso— la reprogramación resultando en re-

sultados fraudulentos que serían prácticamente imposibles de lograr en una elección tradicional sin recurrir a métodos violentos. Los expertos coinciden en que la única manera de que un sistema electrónico sea confiable es si genera un rastro impreso verificado por cada votante. La única garantía que un votante puede tener de que su voto fue registrado correctamente es que el sistema genere una boleta impresa y de carácter irrevocable, misma que sea verificada por el votante al instante, y se convierte en el documento probatorio de la elección. No hay manera de que el estado interno de una computadora sea suficientemente confiable y duradero para que lo consideremos evidencia electoral. Llegamos entonces a una contradicción: El equipo de votación no es barato, en términos absolutos. Su adquisición por parte de un gobierno podría justificarse si se plantea prorratear a lo largo de varias elecciones — pero debe estar sujeto a una estricta vigilancia contínua, incluso en los periodos en que no será utilizado. Debe recibir mantenimiento, y debe abastecerse de insumos, para asegurar un rastro impreso verificado. Además, en caso de sufrir un desperfecto, todas las casillas deben tener un plan de respaldo: Casi indefectiblemente, esto significaría tener papelería tradicional además del sistema electrónico. Por tanto, el supuesto ahorro puede volverse en contra nuestra, convirtiéndose en un gasto mucho mayor al que implican las votaciones tradicionales.

Conclusiones

El que seamos entusiastas de la programación y de la mejoría de procesos no debe cegarnos ante los graves peligros que implica para toda la sociedad adoptar un esquema de votaciones electrónicas. Estos puntos, y muchos otros, han llevado a que muchas democracias bien instituídas y respetadas repudien a las urnas electrónicas. No permitamos que, una vez más, supuestos expertos vengan cambiarnos nuestro oro por espejitos. La democracia en nuestro país es jóven y aún muy débil, y migrar a un esquema de urnas electrónicas, más que aumentar la confiabilidad, no lograría más que perpetuar nuestra triste historia de fraudes. Si quieres leer más al respecto, la versión extendida de este texto se encuentra disponible en http://gwolf.org/content/voto-electronico

››Por Gunnar Wolf Referencias [1] F. Heinz, “¿El voto electrónico mejora la democracia?”, Fundación Via Libre. http://bit.ly/sg27r1 [2] A. Feldman, A. Halderman & E. Felten, “Security Analysis of the Diebold AccuVote-TS Voting Machine”, Center for Information Technology Policy Princeton University.. http://bit.ly/sg27r2

59

www.sg.com.mx |

una fracción del dedicado a las tareas de verificación y protocolización que deben llevarse a cabo antes de declarar concluída una elección. Sumando ésto a que –por consideraciones de seguridad– las estaciones de voto nunca deben contar con conectividad a red (además de que ni los países más industrializados cuentan con una cobertura de Internet del 100% de su territorio), debe haber forzosamente un paso manual de comunicación de resultados al centro de control de la autoridad electoral, el argumento de reducción de tiempos queda descartado.

Software Guru

Programar es un Estilo de Vida


.COLUMNA Entregando Valor

Valor de TI maximizando el retorno de la

inversión

El Gobierno del

U

na de las cinco áreas de enfoque del Gobierno Corporativo de TI (GCTI) es la creación y entrega de valor a la empresa. El propósito del gobierno del valor de TI es maximizar el retorno de los recursos que la empresa invierte en TI. La alta dirección de la empresa es responsable de asegurar que se optimice la inversión, buscando obtener el máximo valor por cada peso invertido en la empresa. Bajo esta premisa, la responsabilidad del gobierno del valor de TI también recae en la alta dirección. De acuerdo a COBIT, el gobierno del valor de TI requiere: • Administrar los programas de inversión habilitados con TI, así como otros activos y servicios de TI, para asegurar que ofrezcan el mayor valor posible para apoyar la estrategia y los objetivos de la empresa. • Asegurar que los resultados de negocio esperados de las inversiones habilitadas por TI y el alcance completo del esfuerzo requerido para lograr esos resultados esté bien entendido, que se generen casos de negocio integrales y consistentes, y que los aprueben los interesados. • Que los activos y las inversiones se administren a lo largo del ciclo de vida económico, y que se lleve a cabo una administración activa del logro de los beneficios, tales como la contribución a nuevos servicios, ganancias de eficiencia y un mejor grado de reacción a los requerimientos de los clientes. • Implementar un enfoque disciplinado de la administración del portafolio, programa y proyecto, enfatizando que el negocio asume la propiedad de todas las inversiones habilitadas con TI y que TI garantiza la optimización de los costos por la prestación de los servicios y capacidades de TI. Algunos de los elementos clave en la implementación de esta área de enfoque del GCTI son:

Gloria Quintanilla es Consultor Independiente. Es Instructor COBIT autorizado por ISACA, y está certificada como ITIL Service Manager, ITIL Expert v3 y CGEIT. gquintanillao@ gmail.com

1 Entendimiento compartido entre el negocio y TI, de cómo es que TI puede apoyar a la empresa en el cumplimiento de sus objetivos y estrategias (propuesta de valor de TI). 2 Establecimiento de mecanismos de comunicación y relacionamiento entre el negocio y TI de manera que se identifiquen las oportunidades de entregar valor y se establezca el patrocinio por los interesados. 3 Elaboración de casos de negocio que documenten los supuestos acerca de cómo se generará el valor, los costos, riesgos y beneficios esperados.

››La responsabilidad del gobierno del valor de TI también recae en la alta dirección. 4 Establecimiento de los criterios para la evaluación de los distintos tipos de inversión. 5 Equilibrar el portafolio de inversiones de manera que haya un balance entre las inversiones a corto plazo y largo plazo atendiendo la continuidad de la operación, la mejora de servicios, la innovación y la transformación. 6 Establecimiento del liderazgo y los comités directivos para la selección, autorización y control de las inversiones en TI. 7 Establecimiento de procesos efectivos para la dirección y el control de la ejecución de los programas y/o proyectos asociados a la inversión para asegurar que cuenten con los recursos necesarios y tomar decisiones cuando se presentan desviaciones a los planes ejecutivos o haya cambios en el negocio que impacten a los proyectos. 8 Establecimiento de prácticas de gestión y seguimiento de todo el ciclo de vida de la inversión, desde su conceptualización hasta que se entregan los beneficios a la empresa en la operación. Con el propósito de facilitar la implementación del gobierno del valor de TI, ISACA elaboró un marco de procesos que define las mejores prácticas para el gobierno del valor de TI. La publicación denominada Enterprise Value: Governance of IT Investments, The Val IT Framework, puede ser obtenida en el sitio de ISACA (www.isaca.org). Los procesos de Val IT cubren tres dominios: el gobierno del valor, la administración del portafolio de inversiones y la administración de la inversión. Otras publicaciones de ISACA relacionadas a Val IT son la relativa a la elaboración de casos de negocio (Enterprise Value: Governance of IT Investments, The Business Case) y la guía para la implementación de Val IT (Enterprise Value: Governance of IT Investments, Getting Started With Value Management). En forma complementaria las mejores prácticas de gestión de portafolios, programas y proyectos contenidas en los estándares del Project Management Institute (www.pmi.org) pueden aportar desde una perspectiva más táctica/operativa.

››Por Gloria Quintanilla 60


Directorio Compushow

Pág.57

www.compushow.com.mx

Cutter www.cutter.com.mx

Pág.09

Gameworkshop

Pág.3F

www.gameworkshop.com.mx

Gartner www.gartner.com/mx/appint

Pág.15

Gelattina www.gelattina.com

Pág.55

Itera www.iteraprocess.com

Pág.13

Manpower Professional www.manpowerprofessional.com.mx

Pág.4F

Milestone Consulting

Pág.07

www.milestone.com.mx

Sistemas Humanos

Pág.45

www.humanos.com.mx/agiles

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


.TECNOLOGÍA Gadgets

Drone

PARROT

AR.

El AR.Drone es un cuadricóptero (un helicóptero con cuatro propelas) que se controla desde tu iPhone o iPod touch. Cuenta con dos cámaras de video, una localizada debajo de la cabina que cumple funciones de sensor para controlar el vuelo en piloto automático. La segunda cámara está al frente de la cabina y se encarga de enviar la señal al iPhone de forma que mientras controlas el helicóptero obtienes video en tiempo real desde la cabina. El AR.Drone genera su propia red WiFi que se conecta al iPhone. El control se realiza por medio del acelerómetro del iPhone, de forma que el cuadricóptero se mueve en base a como muevas tu teléfono. Lo más interesante es que el AR.Drone tiene un SDK con el cual se pueden crear juegos y aplicaciones de realidad aumentada. Un ejemplo de lo que se puede hacer con esto son batallas remotas, donde dos personas que tengan un AR.Drone puedan pelear entre sí, cada uno viendo a su oponente en la pantalla de su iPod aunque estén en lugares físicos distintos.

RCA

Airnergy

Charger

El Airnergy Charger es un dispositivo que capta las señales de WiFi que hay en el ambiente y las convierte en energía eléctrica que utiliza para recargar aparatos electrónicos. ¿Qué? ¿Un cargador que toma la energía del aíre? Sí, es correcto (siempre y cuando haya señales WiFi en el aire por supuesto). Tomara energía de señales WiFi no es un concepto nuevo, pero parecer ser que RCA ha logrado hacerlo con suficiente eficiencia como para que sea práctico. En el CES se hizo una demostración en la que se cargó un BlackBerry de 30% a lleno en 90 minutos. Esa fue una demostración controlada por el staff de la empresa y no hemos encontrado reportes de pruebas realizadas por terceros así que bien pudiera ser que nos estén tomando el pelo. Aun así, habrá que estar al pendiente porque en caso que fuera realidad, sería fantástico. RCA anunció que este producto estará disponible en el verano del 2010 a un precio de 40 dólares, así que no tendremos que esperar mucho para averiguar si es un fraude o no.

kensington

Adaptadores de Corriente

Ultracompactos

Mientras que las computadoras portátiles cada vez son más pequeñas y ligeras, los adaptadores de corriente no han bajado significativamente de tamaño ni peso. Consciente de esto, Kensington ha lanzado dos nuevos adaptadores ultracompactos para laptop, que en promedio son 40% más pequeños y 32% más ligeros que los adaptadores comunes de 90 watts. Se pueden utilizar con la mayoría de los modelos de computadora portátil (excepto Apple) y también incluyen salida mini USB y micro USB, así que con el mismo adaptador puedes cargar tu computadora y tu teléfono. Existen dos modelos distintos de este adaptador, el estándar con precio de lista de 100 USD, y el aéreo con precio de $119 que incluye un cable especial para usarse en aviones equipados. 62


.TECNOLOGÍA Gadgets

Mimobots mimoco

Las USB Flash Drive se han convertido en parte cotidiana de la vida de los profesionistas de TI, es un hecho innegable que casi todos nosotros en este preciso momento tenemos una sobre nuestro escritorio o en la bolsa del pantalón. Lo malo es que la mayoría de los diseños de nuestras “USBs” son muy aburridos. Para mejorar la experiencia del usuario en este sentido, The Funky Company ha diseñado estos dispositivos como pequeñas figuras de la aclamada saga cinematográfica de Star Wars. Con 10 personajes, desde C3PO hasta Darth Maul, con capacidades que van de 1 hasta 4 Gb, 6 cm de alto x 2.5 cm de ancho y con MimoByte Sound Software que permite escuchar los sonidos caracteristícos de cada personaje de la unidad flash cada vez que se inserte o se retire de la ranura USB, estas pequeñas figuritas son una excelente opción para quien quiere darle un giro divertido a los aburridos y simplistas diseños de la mayoría de estos dispositivos.

SONY

Cybershot

DSC-HX5

Sony recientemente presentó 12 nuevos modelos de cámaras fotográficas digitales compactas. De ellas, la que más nos gusta es la DSC-HX5, ya que provee la calidad de imagen de cámaras semiprofesionales, en un tamaño conveniente. El lente de la HX5 equivale a gran angular de 25mm-250mm con zoom 10x y goza de la prestigiosa calificación “G”, reservada para los lentes de más alta calidad. El sensor retroiluminado Exmor R genera imágenes de 10 megapixeles con gran calidad aún en condiciones de poca luz. La XH5 también puede capturar video full HD de 1920 x 1080i que almacena en formato AVCHD. La HX5 incorpora GPS y brújula, que facilitan el almacenamiento de la ubicación donde fueron tomadas las fotos, así como la dirección en la que estás apuntando. Al igual que el resto de las cámaras Sony presentadas en el CES, la HX5 puede utilizar tarjetas SD o Memory Stick Pro Duo para almacenar la información. La HX5 llegará a las tiendas en Estados Unidos durante el mes de marzo con un precio de lista de $350 dólares. Este modelo también estará disponible en México, aunque no tenemos detalles sobre el precio.

microsoft

Microsoft Arc

Keyboard

El nuevo integrante de la familia de teclados ergonomicos de Microsoft sacrifica elementos, como el teclado numérico, para no sobrepasar los 31 centímetros de largo. Más que ser útil para ambientes de trabajo, el Arc Keyboard fue creado para ser utilizado como complemento para un Home Teather PC, simplemente se verá mejor dentro de una sala que en una oficina. Este teclado se conecta de manera inalámbrica utilizando un receptor USB extra compacto, tanto que es posible perderlo de vista; su alcance es de 10 metros. Aun y cuando está dirigido al sector “plus” su diseño elegante no compensa la falta de opciones como batería recargable, botones multimedia o teclas con backlight. Su precio es de 60 dólares.

63


.biblioteca

Bernardo y Leviatán Agustín Pedrote Palabra de Clío, 2009

En esta ocasión, y como excepción a los libros que normalmente les recomendamos, les presentamos la ópera prima de Agustín Pedrote, novela thriller y ficción futurista que pareciera haber sido creada especialmente para todos los que nos dedicamos al desarrollo de sistemas de información, y que de alguna manera estamos activamente involucrados en la revolución tecnológica que ha sufrido nuestro mundo en los últimos años. Desde el pasado nos espían, vigilando nuestros movimientos y gustos, nos acechan y en cualquier momento se adueñan de nosotros. En esta obra Agustín Pedrote, más que alejarse de la realidad, nos presenta lo que puede llegar a suceder resultado de la manipulación de datos personales e información contenida en la red. Una novela que gracias a su final inesperado ha generado gran expectativa por su precuela y secuela, las cuales vienen en camino. Un thriller tecnológico que no se pueden perder. Lo que sucede en el libro, es cierto, pero todavía falta que ocurra.

Patterns for Parallel

Software Design Jorge Luis Ortega-Arjona Wiley, 2010

Mucho se ha escrito sobre desarrollo de software paralelo, pero muy poco sobre patrones de diseño específicos. El diseño de software paralelo requiere considerar aspectos particulares de diseño, así como habilidades especiales. Desde clusters hasta supercomputadoras, el éxito depende fuertemente en las habilidades de diseño de los desarrolladores de software. Este libro presenta un acercamiento a la arquitectura orientada a patrones para diseño de software paralelo. En el libro se ofrecen soluciones conocidas en la programación concurrente y distribuida, aplicadas al desarrollo de programas paralelos. Se proveen también patrones arquitectónicos que describen como dividir algoritmos y/o datos para encontrar particiones adecuadas y ligarlas con estructuras de programación adecuadas. Su autor, el Dr. Jorge Luis Ortega, es profesor de la Facultad de Ciencias de la UNAM y cuenta con un doctorado en ciencias de la computación por la University College London.

Adventures of an IT Leader Robert D. Austin, Richard L. Nolan & Shannon O’Donnell Harvard Business Press, 2009

Ser un buen director de sistemas involucra distintos retos, desde anticipar tecnologías emergentes hasta manejar efectivamente las relaciones con proveedores, empleados y otros gerentes. Un buen director de sistemas debe también ser un buen lider de negocio. Adventures of an IT Leader presenta en forma de novela una serie de casos de estudio sobre dirección de sistemas en un corporativo. A lo largo del libro acompañamos a Jim Birton en su travesía como nuevo CIO de una empresa. Durante su primer año Jim se enfrenta con distintas situaciones que aunque son ficticias, fueron basadas en situaciones reales. Las historias del libro están basadas en la experiencia como consultores de los autores. Adventures of fan IT Leader se puede leer de principio a fin, como una serie de casos de estudio o incluso como referencia con recomendaciones para manejar casos específicos. Entre los temas que se manejan están: costo y valor de las TI, dirección de proyectos, y manejo de crisis. 64




Turn static files into dynamic content formats.

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