SG29 (Agosto-Octubre 2010)

Page 1

Aventuras en Silicon Valley

Diseテアo arquitectテウnico

El Prisma Lean-Agile

P.12

P.40

P.42

No.

29

Windows Phone 7 Series

CONOCIMIENTO EN PRテ,TICA | Agosto-Octubre 2010 www.sg.com.mx

ESPECIAL

Premios SG Guia 2010

DAME UNA Mテゥxico, $65.00

MANO

Interfaces de usuario alternativas


No.29 | Agosto - Octubre 2010

SG SOFTWARE GURU





CONOCIMIENTO EN PRÁCTICA

Pág.

28

29 .CONTENIDO Agosto-Octubre 2010 |

www.sg.com.mx

En Portada Interfaces de usuario alternativas

28

Exploramos los fundamentos de cómo utilizar interfaces de usuarios de tacto y voz.

Columnas Tejiendo Nuestra Red

06

por Hanna Oktaba

Mejora Contínua

08

por Luis Cuellar

Entregando Valor

10

por Gloria Quintanilla

Tendencias en Software

17

por Luis Daniel Soto

Programar es un Estilo de Vida

46

por Gunnar Wolf

Prueba de Software

48

por Luis Vinicio León

Columna Invitada por Carlos Castilla

02

56


.CONTENIDO

SG 29

Pág.

Productos

22

Lo que Viene

16

Eclipse Helios, CouchDB 1.0, OpenStack.

Tutorial

18

Windows Phone 7 Series.

En Cada Número

Premios SG Guía 2010

22

Como ya es costumbre, reconocemos y difundimos las herramientas y tecnologías favoritas de los lectores de SG.

Editorial

04

Noticias

05

Fundamentos

50

Gadgets

54

Directorio

55

Especiales Emprendiendo

12

Prácticas Gestión de Datos Trabajando con Procedimientos Almacenados

36

Entrevista

Ricardo Rangel comparte técnicas que pueden ser útiles para crear stored procedures confiables.

Consultoría IT Business Engagement

14

Compartimos la reseña de lo sucedido en SG Cloud 2010.

38

26

En esta ocasión nos damos el lujo de entrevistar a dos luminarias de nuestra industria: Walker Royce y Grady Booch.

Arturo Peña establece los puntos base para una alineación efectiva de las TI y los objetivos del negocio.

Arquitectura Diseño de la Arquitectura

40

Edith Valencia y Humberto Cervantes continúan con esta serie, donde ahora abordan el diseño de arquitectura.

Agilidad De Triángulos y Prismas Masa Maeda nos explica en qué consiste el prisma ágil-lean para administración de proyectos.

03

42 Pág.

26

www.sg.com.mx |

SG Cloud

Software Guru

Aventuras en el Silicon Valley


.EDITORIAL Bienvenida

. “Este tipo de interfaces abren nuevas posibilidades, que requieren personal capaz de construirlas”

Toca, Juega y Aprende ...

d

ice el slogan del Museo del Niño. Durante la preparación de esta edición hemos tenido muy presente este concepto, y es que los dispositivos de cómputo están evolucionando para brindar interfaces mucho más naturales y didácticas, desde el tacto hasta la voz e incluso el movimiento. Este tipo de interfaces abren nuevas posibilidades de uso y aplicaciones, lo cual requiere personal capaz de construirlas. Como profesionistas de éste campo, es de vital importancia que al menos conozcamos algunos aspectos básicos de cómo se desarrollan aplicaciones utilizando este tipo de interfaces. Hemos dedicado el tema principal de esta edición principalmente a hablar de interfaces de tacto y voz, pero esperamos en los próximos números de SG continuar hablando sobre cómo desarrollar aplicaciones que utilicen interfaces humano-computadora no convencionales. Esta edición de SG también incluye el reportaje de resultados de los Premios SG Guía 2010. Este es el tercer año en el que realizamos dicha dinámica, y nos da gusto encontrar que muchas personas y empresas ya los conocen, esperan y participan. Consideramos que independientemente de quienes sean los ganadores, en general nuestra industria se beneficia de inciativas como ésta ya que nos ayudan no solo a reconocer sino también a difundir herramientas que son de gran utilidad para nosotros y las organizaciones donde laboramos. Agradecemos a todas las personas y empresas que nos ayudaron participando en esta iniciativa y promoviéndola. Como saben, en SG nos mantenemos siempre activos, y el próximo evento que tenemos en puerta es SG Virtual, un congreso en línea constituido en su totalidad por conferencias web. Contaremos con un excelente grupo de conferencistas que ahondarán en los temas de mayor relevancia para los profesionistas, estudiantes y empresarios de nuestra industria. Los esperamos este 1 de septiembre en http://sg.com.mx/sgvirtual.

››Equipo Editorial Software Guru

DIRECTORIO SG Dirección Editorial Pedro Galván / Dirección de Operaciones Mara Ruvalcaba Coordinación de Contenidos Alejandro Escamilla / Arte y Diseño Oscar Sámano, Alexis Ramírez 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 Jorge Zavala, Celeste North, David Espino, Denisse Zavala, Miguel Morán, Paco Cuevas, Ricardo Rangel, Arturo Peña, Humberto Cervantes, Edith Valencia, Masa Maeda, Gunnar Wolf, Sandra Ruiz, Josué Martínez, Armando Galeana, Carlos Castilla, Susana Tamayo.

Ventas Claudia Perea / Marketing y RP Montserrat Ramírez / Desarrollo Web Lacendi Calderón 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 agosto de 2010 en 4Press.

04


.NOTICIAS

.HP Software Universe 2010

.IBM Innovate 2010

La conferencia IBM Innovate 2010, también conocida como Rational Software Conference, se llevó a cabo este mes de junio en Orlando. De los distintos eventos que IBM realiza a lo largo del año, éste es tal vez el que tiene la visión más progresista, ya que su enfoque es precisamente el de fomentar la innovación sustentada por tecnología. Durante la conferencia se presentó el caso de Babcock Ranch, una ciudad inteligente y sustentable que actualmente se está desarrollando en el sur de Florida utilizando software de IBM para planear y diseñar la amplia red de sistemas de tecnología de la ciudad. Grady Booch presentó algunos de los proyectos que actualmente se desarrollan en los laboratorios de IBM y compartió su perspectiva de las tendencias tecnológicas que tendrán mayor relevancia durante los próximos años.

HP realizó este verano su conferencia HP Software Universe en Washington, DC. El mensaje común a lo largo del evento fue que nos encontramos en una etapa de transición en la forma en la que se entregan y administran las tecnologías de información, y el portafolio de soluciones de HP Software está diseñado para ayudar a las organizaciones en esta transición. Durante la conferencia, HP presentó su solución HP Business Service Management 9.0 que provee una suite completa de herramientas para la gestión de aplicaciones, y HP Test Data Management que facilita y acelera la generación de datos de prueba para aplicaciones. Otra oferta que puede ser de interés para los lectores de SG es la disponibilidad de HP LoadRunner disponible desde Amazon EC2, para realizar pruebas de software desde la nube.

.Primer encuentro Domainers México

El 16 y 17 de julio se llevó a cabo el primer encuentro Domainers México, evento enfocado en el desarrollo y mercadeo de dominios. Durante las diferentes pláticas pudimos conocer cómo funciona el mercado de dominios, temas como la protección de nombres, así como la oportunidad que ofrece el mercado mexicano para los domainers. Entre las cifras importanets destaca el crecimiento anual sostenido de un 28% y un total de 432,000 dominios .mx registrados en la actualidad.

.XIX Reunión Nacional de Directores de Escuelas y Facultades de Informática y Computación

Del 9 al 11 de junio, la Asociación Nacional de Instituciones de Educación en Tecnologías de la Información A. C. (ANIEI) presentó la XIX Reunión Nacional de Directores, teniendo como anfitriona a la Universidad de Colima. Dicha reunión estuvo centrada en el tema: “Competencias en innovación de TIC’s para el desarrollo nacional: retos y oportunidades”, donde el objetivo fué unificar criterios respecto a competencias de TIC’s, definiendo los mecanismos que permitan su incorporación a los Modelos Curriculares y Paracurriculares, y sentando las bases de colaboración para su instrumentación.

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

05

www.sg.com.mx |

Campus Party México powered by Movistar, el evento de tecnología, cultura y ocio digital con mayor reconocimiento a nivel mundial abrió sus puertas en Expo Santa Fe, del 8 al 15 de agosto, reuniendo a más de 6 mil personas que gozaron de la conexión inalámbrica a Internet más avanzada a nivel internacional. El evento contó con la presencia de destacadas personalidades de talla internacional tales como Steve Wozniak, cofundador de Apple; Kevin Mitnick, famoso hacker, cracker y phreaker; y Ben Hammersley, editor de Wired UK, entre otros; además de presentar 400 horas de contenidos a cargo de líderes de opinión en el campo de la tecnología en nuestro país.

Software Guru

.Campus Party México - FOTO


.COLUMNA Tejiendo Nuestra Red

SQuaRE

modelo actualizado de las características de

L

calidad

Característica Subcaracterística Descripción

as características no funcionales de los sistemas de software —tales como usabilidad, desempeño, seguridad, por mencionar algunas— se vuelven cada día más importantes. Los usuarios, al percibirlas en unas aplicaciones, inconcientemente las esperan en otras. Los analistas saben que de por sí ya es difícil obtener con precisión los requerimientos funcionales, en el caso de los requerimientos no funcionales es todavía más complicado. Hasta hace poco el estándar ISO/IEC 9126-1 Quality Model, del año 2001 fue la referencia básica de la clasificación de las características de calidad de software. Pero han pasado casi 10 años y la comunidad internacional decidió revisar este estándar para actualizarlo. De paso se cambió la numeración para abrir una nueva colección de estándares relacionados con la calidad de producto, la numeración de esta colección parte del 25000 . El primer estándar de esta colección es el ISO/ IEC FCD 25010: Systems and software engineering – System and software product Quality Requirements and Evaluation (SQuaRE) – System and software quality models. A continuación se resumen elementos más importantes de este estándar.

Definiendo la calidad

Con calidad de software nos referimos al grado en que un producto de software satisface las necesidades expresas e implícitas cuando se usa bajo condiciones específicas. Estas necesidades expresas e implícitas están representadas por el modelo de calidad que categoriza las características de calidad. Característica Sub-característica Descripción

Funcionalidad Completa apropiada Correcta Adecuada Fiabilidad

Satisfacción de las necesidades expresas e implícitas cuando se usa bajo condiciones específicas

Madurez Confianza en el sistema Disponibilidad Tolerancia a fallas Recuperable

Eficiencia Tiempo de respuesta en desempeño Utilización de recursos

Relativa a tamaño de recursos utilizados bajo las condiciones establecidas

Usabilidad Reconocimiento adecuado Fácil de aprender Operable Protección contra errores de usuario Interfaz estética de usuario Accesibilidad

Usuario reconoce si el producto cumple con sus necesidades Fácil de operar Agradable Accesible para discapacitados

Seguridad

Confidencialidad Integridad Sin rechazo Responsabilidad Autenticidad

Información y datos protegidos contra el acceso no autorizado y disponible para los autorizados

Compatibilidad Co-existencia Interoperabilidad

Más de un sistema comparte software y hardware Intercambio de información entre sistemas o componentes

Mantenibilidad

Modularidad Efectividad y eficiencia Reusabilidad en modificaciones Analizable Modificable Apto para probar

Portabilidad Adaptable Instalable Reemplazable

Efectividad y eficiencia para cambiar de un ambiente (hardware/ software) a otro

Efectividad Exactitud y completitud Eficiencia Recursos gastados en relación a la exactitud y completitud lograda

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

Satisfacción

Cumplimiento de Satisfacción de propósito necesidades Confianza Placer Confort físico

Seguridad

Riesgo de daño económico Riesgo de daño en salud o seguridad Riesgo de daño a medioambiente

Contexto global Completo de uso Flexible

No debe estar en peligro la vida, salud, propiedad o medioambiente

Grado de uso con efectividad, eficiencia, seguridad y con satisfacción en el contexto especificado y fuera de él

Tabla 1. Características de calidad en uso.

06

Tabla 2. Características de calidad en producto.

El modelo de características de calidad se subdivide en dos vistas: calidad en uso y calidad de producto. La primera, identifica las características de calidad esperadas por un usuario del sistema y la segunda, las que debe cuidar el constructor del sistema. 1. Calidad en uso. Definida como grado en que un producto, utilizado por usuarios específicos, cumple con sus necesidades de lograr objetivos particulares con efectividad, eficiencia, seguridad y satisfacción en un contexto específico de uso. La tabla 1 describe las características de calidad de uso. 2. Calidad de producto. Se define como grado en que un producto (sistema/software) cumple con las siguientes carac-


terísticas: funcionalidad apropiada, fiabilidad, eficiencia en desempeño, usabilidad, seguridad, compatibilidad, mantenibilidad y portabilidad. La tabla 2 detalla dichas características. A cada característica o sub-característica se asocian uno o más atributos de calidad que deben ser medibles. La definición de estos atributos y sus mediciones es actualmente el objeto de trabajo en la parte ISO/IEC 25021 de la colección SQuaRE.

Relevancia

Hasta hace poco la característica más importante de calidad de software fue la de funcionalidad apropiada. Para lograrla se han definido técnicas de captura y documentación de requerimientos funcionales, de las cuales los casos de uso son el mejor ejemplo. Sin embargo, las demás características, antes conocidas como no funcionales, han adquirido cada vez mayor importancia y son las que de manera implícita esperan los usuarios. Es por eso muy importante que los desarrolladores de software las conozcan y aprendan a identificarlas junto con sus clientes, plasmarlas en los diseños y probarlas antes de que el usuario sufra su ausencia. Afortunadamente no todos los sistemas requieren cumplir con todas las características mencionadas o cubrirlas con el mismo grado de profundidad. Esta es otra tarea muy importante para los analistas y los diseñadores. Saber identificar el grado real requerido por el cliente del cumplimiento de las características de calidad puede ahorrarles el disgusto del cliente y mucho re-trabajo o, cuando el desarrollador es “más papista que el papa”, recurrir en una inversión de esfuerzo que no es realmente requerida. A todos los interesados de tener acceso a éste y otros estándares, que están en preparación, y tener oportunidad de emitir comentarios, les invito a que se incorporen en las labores del subcomité mexicano para la atención del ISO/IEC JTC1/SC7 Software and System Engineering, coordinado por el Lic. Fernando Solís de CANIETI (fsolis@canieti.com.mx). Necesitamos que nuestra industria de software conozca más los estándares y los aproveche.

>> Por Hanna Oktaba


.COLUMNA Mejora Continua

Prácticas Clave para Agentes de Cambio buscando el por qué

E

sta semana leí una vez más el libro “Influencer” de Kerry Patterson. Desde mi punto de vista es uno de los mejores libros para todo aquel que busca cambiar una organización, país o cualquier sistema. Una de las propuestas principales del libro es que para generar un cambio no es necesario cambiar todo al mismo tiempo, sino que siempre existen un número limitado de prácticas, denominadas “prácticas clave”, que son los principales catalizadores del cambio. Si recuerdan, anteriormente hemos hablado de cómo las organizaciones se comportan como sistemas dinámicos estables, es decir que todo el sistema mantiene las acciones en su lugar. Las prácticas clave son los puntos del sistema que al modificarse cambian su inercia y lo mueven en la dirección correcta. Entonces, es de vital importancia encontrar cuáles son estas prácticas. Para esto debemos observar los sistemas, o partes de éste, que han logrado un cambio exitoso e identificar ¿qué fue lo que hicieron en común para lograrlo? Esta semana estuve visitando a nuestro equipo de calidad en la Ciudad de México. Una de sus inquietudes más grandes tiene que ver con lo que deben hacer para moverse al siguiente nivel como agentes de cambio. Éste no es un reto sencillo: ¿cómo pasar de ser una persona enfocada a la técnica a convertirse en alguien que verdaderamente logra un cambio en una organización? Este es el paso que te define como agente de cambio. Desafortunadamente, no existe una receta sencilla para lograrlo. Una recomendación de Kerry Patterson es entender que lo vital es definir el comportamiento deseado más que las salidas esperadas de ese comportamiento. En base a esto, he buscado identificar algunas prácticas clave para ayudar a las personas a evolucionar como agentes de cambio en una organización. A continuación las describo.

Entender el modelo

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

Al generar un cambio, típicamente nos basamos en un modelo o marco de procesos específico. Es sumamente importante conocerlo —no solamente haberlo leído—, entender el propósito de cada elemento y qué otras posibilidades habría para lograr lo mismo. Debemos preguntarnos el por qué de cada elemento. Si el modelo pide tener un manual de calidad, la pregunta es ¿por qué? Tal vez el manual se utiliza para documentar los procesos y al tener en la intranet la metodología, esta podría funcionar como manual de calidad. Llevo muchos años en este negocio y he visto modelos vivir y morir; prácticas de ingeniería de software nacer, crecer y desaparecer; nada es eterno ni perfecto. Siempre debemos buscar el por qué de cada cosa. Algunos modelos son más descriptivos que otros pero cada elemento tiene una razón de ser y es vital encontrarla para adaptarla a tu organización.

Objetivos definidos

Esta segunda práctica es tan básica que no solo sirve para generar cambio sino para aumentar tu productividad en general: nunca asistas a una reunión de ningún tipo sin un objetivo claro. Esta práctica es básica para mantener la cordura en un rol de influencia. Toda reunión es una negociación y como tal una oportunidad para avanzar en tu estrategia, siempre debes conocer la razón para reunirte con alguien. El objetivo no necesita ser complejo ni detallado. Existen juntas que son para presentar una idea, debes tener claro cual es el mensaje que deseas comunicar. Si la junta es para discutir el avance de un proyecto, tu objetivo puede ser entender el estatus del proyecto para definir qué prácticas pueden ayudar; las posibilidades son infinitas pero deben de ser claras para ti desde un principio. Existe un complemento a esta actividad: si lograste tu objetivo, termina la junta. No hay nada más triste que ver a alguien que logró lo que quería y sigue discutiendo hasta que se revierte lo que se había logrado. Siempre el objetivo es más importante que el ego.

Que tu plan sea empático

Ya tienes un objetivo claro, ahora ¿cuál es el plan? No es necesario un plan complejo, simplemente algo que sirva de guía. Mi recomendación para que los planes sean más efectivos es ser empático con los involucrados. Cuando alguien expresa una idea es importante saber ¿por qué piensa así? ¿cuál es su historia?, ¿cómo te sentirías en su lugar? Nota que ser empático no significa estar de acuerdo con la otra persona, sino escuchar y entender su punto de vista. Una vez entendido su punto de vista, ¿qué se tendría que hacer para quitar todas las piedras del camino? Por ejemplo, tal vez alguien no quiere cambiar porque su jefe lo está presionando a no hacerlo, entonces primero hay que negociar con su jefe. O tal vez esta persona no le ve valor al cambio, entonces ¿qué considera esta persona valioso y cómo podríamos resaltar eso? No es fácil, pero con un poco de práctica se vuelve automático y es la base de toda negociación.

Siempre seguir adelante

Finalmente lo único que queda es siempre seguir adelante. Si lograste tu objetivo en una junta, ¿qué objetivo sigue? Si no lograste el objetivo, ¿qué sigue? ¿debes cambiar la estrategia ya que era inadecuada?. Ser agente de cambio no es fácil. Generar cambios en la organización siempre es paso a paso. El paso más difícil es moverse de técnico a negociador, pero este cambio es la diferencia entre la frustración y el éxito. Suerte en el viaje.

››Por Luis Cuellar



.COLUMNA Entregando Valor

MAAGTIC E

guía de

l Manual Administrativo de Aplicación General en Materia de TIC (MAAGTIC) tiene por objeto establecer las disposiciones administrativas en materia de tecnologías de la información y comunicaciones que se deberán observar en el ámbito de la Administración Pública Federal (APF) y, en lo conducente, en la Procuraduría General de la República. En julio de este año se publicó el MAAGTIC en el Diario Oficial de la Federación, y compartí con ustedes la noticia por medio de un artículo en el sitio web de SG (“Un vistazo al MAAGTIC”). Si a ústed le interesa conocer la estructura y principios básicos del MAAGTIC, le recomiendo que lea dicho artículo. En el presento artículo, me dedico a dar algunas recomendaciones para quienes están a cargo de implementar un proyecto de mejora para lograr el cumplimiento del MAAGTIC.

››Sugiero

aquí algunos lineamientos que podrían ser de utilidad.

Gloria Quintanilla es consultor independiente y coordinadora del grupo de aprendizaje de Gobierno de TI en SG Campus. Es instructor COBIT autorizado por ISACA, certificada como ITIL Service Manager, entre otras.

A partir de la publicación del MAAGTIC, la Unidad de Gobierno Digital de la SFP ha dirigido acciones que han llevado a las Unidades de Tecnologías de la Información (UTIC) de la APF a evaluar sus procesos actuales contra las actividades, productos, indicadores y reglas definidas en el MAAGTIC, con el propósito de obtener una línea base del estado actual de sus procesos y cumplimiento normativo. En base a esto, las UTIC plantearán un proyecto de mejora y cronograma de implementación para lograr un cumplimiento del MAAGTIC a más tardar en noviembre del 2011. La SFP ha puesto a disposición de los interesados una serie de artefactos y lineamientos para facilitar la evaluación inicial, publicados en el sitio www.maagtic.gob.mx. Estos incluyen entre otros un mecanismo para determinar el grado de implementación y un cronograma maestro de implementación. Ante este reto, las UTIC han procedido a realizar la valoración solicitada. En la mayoría de los casos, se ha concluido que existe una brecha significativa por cubrir. Dado que el tiempo y los recursos son bastante limitados, se requiere administrar de manera muy efectiva los proyectos de implantación/mejora de procesos. Sin duda, cada institución es un caso particular y su programa de mejora deberá responder a sus condiciones y necesidades específicas. Sin embargo, sugiero aquí algunos lineamientos generales que podrían ser de utilidad al establecer dicho plan.

Definir el ciclo de vida para el proyecto de mejora

Figura 1. Estructura del ciclo de vida.

10

implementación

Dado que se va a administrar un programa de proyectos de implantación/ mejora de procesos recomiendo que se defina un ciclo de vida genérico que permita controlar y dar segui-


.COLUMNA

Entregando Valor

2010 Ago

Sep

Oct

2011 Nov

Dic

Ene

Feb

Mar

Abr

May

Jun

Jul

Ago

Sep

Oct

Nov

Dic

ITERACIÓN 1 ITERACIÓN 2 ITERACIÓN 3 Figura 2. Cronograma de iteraciones.

miento al avance de cada proyecto a partir de fases, hitos y entregables bien definidos que permitan asignar un porcentaje de avance en la implementación a partir entregables y objetivos verificables. La figura 1 muestra un ejemplo de ciclo de vida que se podría seguir para estos proyectos de mejora. En éste diagrama, las letras en itálicas son productos definidos en el proceso Operación del Sistema de Gestión y Mejora de los Procesos de la UTIC (OSGP). Recomiendo que se proceda a definir estos productos tan pronto como sea posible para que todos los procesos que se implementen ya cumplan con la normatividad de este proceso, el cual es el corazón del programa de mejora.

Asignación clara de roles y responsabilidades

Es de vital importancia asignar claramente los roles y responsabilidades de los interesados. En particular, hay que cuidar la definición y comunicación de los roles: • Responsable de mejora de procesos, • Grupo de trabajo de mejora continua de TIC (que sugiero que se defina por proceso), • Responsable del proceso, • Administrador del Programa de Mejora (Administrador de iniciativa de TIC en el Manual), • Administrador de proyecto (de implantación/mejora) Si estos roles se confunden se puede entorpecer la administración efectiva del avance, gestión de riesgos y escalamiento de asuntos. Idealmente, se debería cuidar que estos roles se definieran conforme al Manual (proceso de Administración del portafolios de proyectos de TIC y el OSGP).

Iterar incrementalmente

Con esto me refiero a evitar iniciar la implementación de todos los procesos al mismo tiempo. Es mejor escalonar en iteraciones de manera que se inicie en cada iteración un subconjunto de procesos seleccionados de acuerdo a su prioridad, estado actual, complejidad, madurez y relacionamiento con los otros procesos. En base a la capacidad instalada por la primera iteración previa, se procede a la siguiente iteración. Idealmente estas iteraciones se deberían escalonar (una después de la otra), pero dada la restricción del tiempo, suponiendo que cada proyecto de implementa11

ción lleva aproximadamente 5 meses (+- 2 meses), se podrían plantear 3 iteraciones con tiempos como los que se aprecian en la figura 2.

Evitar implementar los procesos por niveles de la arquitectura

Aunque en primera instancia suena atractivo implementar primero todos los procesos de Gobierno y después los de Organización/Estrategia y así descendiendo hasta los procesos de soporte (ver el artículo referido arriba para conocer la estructura y categorías de la arquitectura del procesos del MAAGTIC), esta estrategia pierde de vista las relaciones y dependencias entre algunos procesos y la madurez que se requiere para realizar algunos de ellos.

Evitar aplicar la receta

El MAAGTIC establece las disposiciones administrativas en materia de tecnologías de la información y comunicaciones que deberán observar los procesos que diseñes e implementes, PERO NO SON LOS PROCEDIMIENTOS OPERATIVOS que debes implementar. Es importante adecuar y detallar los procedimientos que se van a implementar de acuerdo al tamaño, riesgo, complejidad, infraestructura y recursos de tu organización.

Conclusión

Las UTIC enfrentan un reto considerable para mejorar sus procesos para cumplir con el MAAGTIC en poco más de un año. En este espacio hemos planteado algunas recomendaciones de alto nivel para manejar estos proyectos. En las siguientes entregas de esta columna seguiremos dando seguimiento a esta importante iniciativa de la SFP. Mientras tanto, los invito a que visiten el sitio del Grupo de Aprendizaje en Gobierno de TI disponible en SG Campus y con gusto responderé a sus preguntas y comentarios.

››Por Gloria Quintanilla

Referencias: [1] G. Quintanilla. “Un vistazo al MAAGTIC”. http://bit.ly/sg29r9 [2] MAAGTIC, Normateca Federal. http://www.maagtic.gob.mx [3] “Gobierno de TI”, SG Campus. http://www.sgcampus.com.mx


.EMPRENDIENDO

Emprendimiento y Aventuras en Silicon Valley Brincando la barrera ››Por Jorge Zavala

I

magina poder vivir en México y trabajar desarrollando software para todo el mundo, contando con la oportunidad de viajar constantemente a distintos e interesantes lugares. Esta situación combina tener lo mejor de varios mundos: disfrutar un agradable modo de vida en cualquier parte de la Republica Mexicana, cerca de tus amigos y familiares, con un costo de vida bajo, buscando oportunidades de negocios de alto valor con retos tecnológicos atractivos e interactuando con mucha gente interesante que está transformando el mundo por medio de la creación de aplicaciones de Internet. Esta es la oportunidad, que un grupo de inquietos jóvenes mexicanos han descubierto mediante la vinculación que han hecho con desarrolladores del Silicon Valley. Les cuento esta historia, más que nada para dar un ejemplo de que esto es algo al alcance de muchas personas, y solo falta ser proactivos al respecto. Después de un viaje al Silicon Valley para asistir a la conferencia de Google I/O en 2008, un par de amigos provenientes de México descubrieron el evento conocido como Super Happy Dev House (SHDH), donde programadores se reunen a desarrollar durante todo un día. A este par de amigos les gustó tanto la idea que soñaron con replicarla en la Ciudad de México, para lo que convocaron a su grupo cercano de amigos y compañeros de trabajo para hacer un primer evento que reunió a 10 programadores. La tenacidad y constancia de este inquieto y disciplinado grupo llevó a mantener esta reunión en forma mensual, creciendo el grupo y fomentando el intercambio de ideas. 12

En el 2009, cerca de celebrar el año de actividades, el grupo de promotores comentó que sería ideal que los fundadores del evento en el Silicon Valley, vinieran de visita a uno de los eventos en la Ciudad de México; una situación que parecía imposible y lejana. Aquí es donde tenemos que abrir la mente y explorar las ideas. El grupo envió un correo electrónico convocando la visita a México, la cual fue gratamente aceptada y culminó con la creación del concepto de la “Hackspedition”, donde 10 participantes del SHDH en Silicon Valley vinieron a la décima edición del SHDH Ciudad de México, donde participaron más de 100 personas, creando una gran dinámica de conversaciones, discusiones y nuevas ideas. El grupo posteriormente continuó la convivencia con los mexicanos interesados tanto en programación como en compartir dos días de turismo ecológico visitando las Pirámides de Teotihuacán, Tajin y los Rápidos de Filobobos. Esta convivencia facilitó que cada participante abriera canales de comunicación y exploración de nuevos proyectos. Un año después, en Junio del 2010, la historia se repitió ahora en sentido contrario. Los organizadores de SHDH en el Silicon Valley invitaron abiertamente a los participantes en distintas ediciones del SHDH México a que asistieran a la edición 38 del SHDH Silicon Valley, que se llevo a cabo en el HackersDojo en Mountain View. 14 programadores de distintos lugares de México lograron asistir, teniendo oportunidad de convivir ampliamente en el SHDH que terminó a las 7 de la mañana del día siguiente. Posteriormente, a lo largo de


.EMPRENDIENDO

››¿Cómo un emprendedor mexicano puede dar el brinco y pasar a ser un jugador de clase mundial?

Viajes como estos al Silicon Valley también organizados por instituciones como el IPADE, Tec de Monterrey, el Cluster de Tecnologia de Morelia y muchos más. Las personas que hacen estos viajes regresan a México con distintas inquietudes, desde un grado de sorpresa que se creó al visitar una empresa como PBWorks, con menos de 20 empleados, que tienen la granja más grande del mundo de wikis con más de 200,000 wikis activos y han recibido 3 millones de USD de inversión. Otro caso es Twilio, una empresa integrada por cerca de 10 personas, con una inversión de 3.7 MUS, que cuenta con un nuevo esquema de hacer telefonía usando VoIP para desarrolladores de aplicaciones utilizando el concepto de SaaS. Acompañando a la sorpresa, surge la gran pregunta: ¿Cómo un emprendedor mexicano, que no está acostumbrado a hablar de inversión de capital de riesgo y buscar oportunidades tecnológicas de alto impacto, puede dar el brinco y pasar a ser un jugador de clase mundial?

Brincando la barrera a la innovación y el emprendimiento La forma simple de dar este gran brinco es unir esfuerzos con gente que ha vivido esta experiencia en forma cercana. Esto es buscar un co-fundador que esté en contacto diario con la idea de crear un startup, esa gran empresa que se inicia en pequeño, por medio de vincular a personas que tienen capacidad tecnológica, de mercado y de manejo de empresas de alto potencial. Este esquema es factible, aprovechando las visitas al Silicon Valley. Así como las reuniones en el Hacker Dojo o el SHDH fomentan el desarrollo e intercambio de ideas tecnológicas, se están creando nuevos sitios y espacios orientados a discusión y vinculación para la creación de negocios. Uno de estos sitios startupsquare.com. Este sitio considera cuatro elementos: Personas. Para dar forma a una empresa, es de gran ayuda encontrar cofundadores potenciales, asesores y tutores. Ideas. Las ideas por sí solas no valen nada, mas son necesarias para descubrir nuevas necesidades de los clientes, que son desarrolladas por un equipo de trabajo y toman su valor en función de que la idea se materializa y se convierte en un producto viable que genera interés en compradores potenciales que están dispuestos a pagar por tener el producto o acceso a la solución. Herramientas. La cantidad de herramientas de apoyo y recursos de información para emprendedores disponibles en Internet es enorme. Una gran fuente de información son los materiales de eventos con conferencias sobre emprendimiento, tales como el “Startup Lessons Learned” [1]. 13

Los resultados y las reflexiones

Tú como emprendedor, debes salir de la colonia Nápoles, voltear a ver al mundo, explorar y tomar el riesgo de crear una gran empresa. Considera que puedes tener una gran empresa en México, alcanzar los mercados globales y abrir nuevas formas de interacción que te permitan conocer personas con tu misma inquietud en cualquier parte del mundo. Silicon Valley te ofrece la oportunidad de ser el punto de contacto con cualquier .BIO parte del mundo, por el hecho de Jorge Zavala es el Director Ejecutivo de TechBA Silicon Valley, una que todos los emprendedores volaceleradora de negocios tecnológicos con base en San José, California. tean a ver este lugar como un semiEstá actualmente involucrado en dar llero de la innovación. De una relasoporte a compañías en proceso de incubación y aceleración. Jorge ha sido ción establecida en el Silicon Valley un empresario distinguido en el área de alta tecnología combinando lo mees probable que alcances mercados jor de dos mundos: el soporte técnico en cualquier parte del mundo. en computación y áreas relacionadas a la innovación, con su experiencia entre Toma la oportunidad de explorar inversionistas de capital de riesgo en el campo ejecutivo y de administración tus capacidades y busca mas allá de de negocios. @techba Jorge Zavala es el Director Ejecutivo de TechBA Silicon las fronteras como desarrollarlas, te Valley, una aceleradora de negocios sorprenderás la gran capacidad que tecnológicos con base en San José, California. Está actualmente involutienes para lograr resultados en una crado en dar soporte a compañías en proceso de incubación y aceleración. escala global. Jorge ha sido un empresario distinHoy es grato que estas relacioguido en el área de alta tecnología combinando lo mejor de dos mundos: nes han creado el HackerRoom el soporte técnico en computación y áreas relacionadas a la innovación, con [3] que en los primeros 10 días de su experiencia entre inversionistas de capital de riesgo en el campo ejecutivo operación ya tienen planes para y de administración de negocios. hacer retiros en algunos lugares @techba de México que integren comunidades de participantes de los dos Referencias: [1] “Startup Lessons Learned”. países y en un futuro próximo http://bit.ly/sg29r10 veremos que la audacia para ima[2] D. McClure. “Moneyball for startups”. http://bit.ly/sg29r10 ginar y la confianza para realizar [3] Hacker Room México. http://hackerroom.mx proyectos transforma el panorama de nuestro ámbito.

Software Guru

Emprendiendo Internacionalmente

Fondos y recursos económicos - Es posible obtener recursos ya sea en formas tradicionales como inversionistas ángeles y de capital de riesgo, o en forma novedosa como son los fondos emergentes como los que promueve Dave McClure [2]. Aquí hay un complejo juego que los dos lados tienen que aprender, el fundador de un startup quiere obtener recursos financieros lo antes posible para mover su empresa al éxito, mientras que el inversionista quiere que su inversión entre en el momento más seguro. Ninguno de los dos lados puede tener certeza de cuál es el momento perfecto y es importante que el emprendedor se mueva rápido para hacer que su empresa tenga éxito. Estos cuatro puntos implican integrar un equipo de trabajo donde la exploración durante los viajes al Silicon Valley son un camino fundamental para establecer el contacto. Adicionalmente, si el emprendedor trabaja previamente su idea, establece vínculos y contactos en forma temprana, la experiencia será más valiosa y podrá alcanzar el éxito con mayor rapidez.

www.sg.com.mx |

5 días de visita se tuvieron reuniones en casa de los anfitriones para cocinar, jugar videojuegos y tener discusiones técnicas infinitas. Estas relaciones que se forjaron en una semana, parecían reuniones de amigos que se conocían de toda la vida, que hoy tienen grandes planes para hacer empresas, desarrollar proyectos o crear nuevos conceptos para crear empresas.


Reseña del evento

M

anteniéndonos en la postura de proponer temas novedosos y de relevancia para los profesionistas y empresarios de software, el pasado 2 y 3 de junio llevamos a cabo en la Ciudad de México el congreso SG Cloud. Este fue el primero de los varios congresos que SG Software Gurú realizará este año, y se caracterizó por lo nutrido de sus conferencias magistrales. A lo largo del último par de años, los profesionistas de software hemos recibido todo tipo de información para evangelizarnos sobre “que es eso del cómputo en la nube” —vale la pena mencionar que SG marcó la pauta dedicando la edición de noviembre 2008 a hablar de este tema cuando nadie más lo estaba haciendo. Sin embargo, en SG consideramos que el personal de las organizaciones de TI ha llegado a un punto en el que ya no quiere saber de “qué” se trata la nube, sino “cómo” aplica a sus organizaciones específicas y por donde pueden empezar. Justamente esa fue la visión detrás de SG Cloud: explorar las posibilidades del cómputo en la nube y trazar rutas de entrada. SG Cloud contó con el patrocinio de las empresas más importantes en nuestro país 14

en el ámbito de cómputo en la nube: Ermestel, IBM, Microsoft, Oracle, salesforce.com, Avanxo y Roca Sistemas. También contó con el apoyo especial de cluster de software del DF (ProSoftware), y la Secretaría de Economía por medio del programa PROSOFT.

Conferencias magistrales

El pilar de los congresos de SG es el contenido, y SG Cloud no fue la excepción ya que contó con un magnífico equipo de conferencistas magistrales. Ellos se encargaron de proveer a los asistentes una amplia y profunda visión del cómputo en la nube: las oportunidades que representa, el escenario actual de proveedores y ofertas, y prácticas recomendadas para comenzar. A continuación compartimos algunos de los puntos más relevantes de sus conferencias.

• Peter Coffee, Director de Investigación de Plataforma en salesforce.com, inició las conferencias impulsando la postura de que la nube no solo debe ser vista como un esquema de cómputo más barato o conveniente, sino como una plataforma que brinda oportunidades de mejora significativas en cuanto a colaboración y productividad en el desarrollo de aplicaciones innovadoras. • María Azúa, VP de Cloud Computing para Corporativos en IBM, habló efusivamente de cómo la nube está cambiando la empresa, de la flexibilidad que brinda a tanto a desarrolladores como a directivos, así como de su escalabilidad ante cualquier proyecto. • David Chappell, Director de Chappell & Associates y un reconocido analista de la industria, con su muy peculiar estilo explicó el escenario actual de ofertas y proveedores de cloud computing, ayudando a los asistentes a entender cómo se distingue la oferta de los distintos proveedores, y en qué casos tiene sentido utilizar cada una. • Pedro Tortosa, CEO de ErmesTel, planteó una perspectiva muy aterrizada sobre cómo las organizaciones pueden iniciar la adopción de cómputo en la nube y cuándo tiene sentido


Demostraciones prácticas

Las demostraciones brindaron una oportunidad para que los asistentes conocieron las características y capacidades de algunas de las soluciones líderes en el ámbito de cómputo en la nube. En estas sesiones los participantes pudieron observar de manera práctica y cercana, diversos usos que se le están dando a la nube, así como resolver dudas puntuales con los expositores. 15

Concurso “Explorando la nube”

Otro componente fundamental del congreso SG Cloud fue el concurso de proyectos “Explorando la nube”. El objetivo de esta iniciativa fue conocer y difundir que es lo que están haciendo los profesionistas y organizaciones locales de TI en cuanto a cómputo en la nube. La dinámica consitió en convocar a las empresas para que registraran información y un video de alguna aplicación o proyecto en curso donde utilizaran el cómputo en la nube, ya fuera como Software as a Service, Platform as a Service o Infrastructure as a Service. Se recibieron 18 proyectos, de los cuáles fueron seleccionados 5 ganadores en distintas categorías. Estos fueron: • Mejor uso de la nube para en ámbito corporativo Ironbit, por “Autoplaza.com.mx”. • Mejor uso de la nube para usuario final (en producción) IFE, por “Ubica tu casilla”.

• Mejor uso de la nube para usuario final (en desarrollo) SynergyJ, por “LosEventos.de”. • Mejor uso de la nube para plataforma aplicativa (en producción) Ready2Fill, por “WAM - Online Business Tool”. • Mejor uso de la nube para plataforma aplicativa (en desarrollo) emLink, por “Nubiik”. Felicitamos a los ganadores y les deseamos mucho éxito.

Recursos de SG Cloud

Los asistentes a SG Cloud tuvieron oportunidad durante 2 días de desarrollar conocimiento, networking e ideas. Si estuviste ahí, recuerda cada momento en www.sg.com.mx/sgcloud. Si por el contrario, te lo perdiste, entra y disfruta de los videos, entrevistas y recursos del sitio. Para consultar información sobre los próximos eventos de SG, visita www.sg.com.mx

www.sg.com.mx |

una estrategia de nube privada a diferencia de una de nube pública, así como la importancia de utilizar estándares para ampliar el beneficio de la nube a un mayor cantidad de usuarios y poder proveer un catálogo de servicios sencillo, robusto y confiable. • Madhup Gulati, Principal Product Manager en Oracle, comentó que más que una revolución, la nube es una evolución de varias tecnologías, donde la plataforma funciona más como autoservicio, brindándonos la oportunidad de utlizar recursos particulares en el momento. También ahondó en aspectos de escalabilidad masiva y alta disponibilidad, sustentada en esquemas de cómputo en la nube.

Software Guru

.EMPRENDIENDO


.productos Lo Que Viene

1

Como ya es costumbre, en junio de este año la Fundación Eclipse liberó una nueva versión integrada de Eclipse. Esta es la versión 3.6 y lleva el nombre clave Helios. Eclipse Helios integra nuevas versiones de 39 proyectos y más de 33 millones de líneas de código. Está disponible para descarga en 12 ediciones diferentes dependiendo del uso que se le vaya a dar. Existen ediciones para Java, PHP, C++, javascript, desarrollo móvil, generación de reportes y modelado, entre otros.

Eclipse Helios

Llega el tren anual

Entre las principales características de Helios destacan: • Soporte para Java EE 6, incluyendo Servlet 3.0, JPA 2.0, JSF 2.0 y EJB 3.1. • Soporte a Git, un sistema distribuido de control de versiones. • Eclipse Marketplace Client, una especie de app-storee para encontrar e instalar plug-ins y soluciones basadas en Eclipse. • Mejoras en Eclipse Xtext 1.0, el framework para crear lenguajes de dominio específico (DSLs). Más información en http://eclipse.org/helios

2

La fundación Apache dio a conocer la disponibilidad de la versión 1.0 de CouchDB. Esta es una base de datos orientada a documentos, altamente escalable y tolerante a fallas. Sus datos se acceden e indexan al estilo de MapReduce usando JavaScript. CouchDB provee un API tipo REST para obtener los datos en formato Javascript Object Notation (JSON) por medio de peticiones HTTP. También soporta replicación incremental con detección y resolución de conflictos de forma bidireccional. Uno de los principales atractivos de CouchDB es que soporta de forma sencilla el almacenamiento y replicación de datos offline, lo cual es de gran utilidad al crear aplicaciones para dispositivos que no siempre estarán conectados a Internet. CouchDB surgió como un proyecto en IBM para proveer replicación de datos offline en Lotus Notes. En el 2008 fue donado a la Fundación Apache para que continuara con su desarrollo. CouchDB está escrito en Erlang, un lenguaje de programación funcional orientado a la construcción de sistemas distribuidos concurrentes.

CouchDB

Listo para producción

Más información en http://couchdb.apache.org

3

Rackspace, un proveedor destacado en el ámbito de infraestructura para data centers, lanzó una plataforma open source para cómputo en la nube denominada OpenStack. Por medio de esta tecnología, las organizaciones podrán habilitar arquitecturas de cómputo en la nube utilizando su propia infraestructura, lo cual es de gran conveniencia para aquellas empresas que ya cuentan con inffraestructura considerable, o que por requerimientos de seguridad no pueden migrar su infraestructura a nubes públicas. Actualmente, OpenStack está dividido en dos proyectos, uno para almacenamiento y otro para poder de cómputo. OpenStack Object Storage es el proyecto para almacenamiento, y como su nombre lo implica consiste en un almacén de objetos distribuido, que está basado en la tecnología Cloud Files de Rackspace. Por otro lado, OpenStack Compute será un motor para aprovisionamiento de poder de cómputo. Vale la pena mencionar que OpenStack Compute está basado en tecnología de la NASA, quien también forma parte de la iniciativa OpenStack. Otras empresas que se han unido a la iniciativa OpenStack son Citrix, Dell, Intel y AMD, entre otras. Los componentes de OpenStack Object Store ya están disponibles para descarga, y se espera que antes de que termine el año se liberen un paquete inicial de componentes de OpenStack Compute.

OpenStack

Libre y escalable

Más información en http://openstack.org 16


.COLUMNA

Tendencias en Software

Pasado, Presente y Futuro de las Bases de Datos la

tercera

generación

“Lo que fue innovador ha sido replicado. La tecnología parece haber llegado a su límite. ¿Qué nueva funcionalidad se puede adicionar en el software que se usa en mi empresa?.”

Antecedentes.

En 1960 apareció una primera generación de base de datos para permitir el intercambio de información entre sistemas. La memoria RAM y el espacio de almacenamiento eran extremadamente restringidos. Para cambiar de administrador de base de datos, era necesario reescribir la aplicación debido a la variedad de lenguajes y características. Fue un modelo tan cerrado que hoy hay empresas que continúan dependiendo de productos como IMS de IBM, IDMS y DATACOM de CA, DMS II de UNISYS y Adabas de Software AG. En la búsqueda de una nueva forma de acceder datos que fuera independiente de la aplicación, se aplicaron modelos matemáticos para crear un paradigma relacional. System /R de IBM fue la primera implementación de la propuesta del Dr. E. F. Codd. Se generaron distintas propuestas para un lenguaje de consulta universal, tales como SQL, DLL y DML. Triunfó el primero, que no gustaba a los puristas pero era más sencillo. En ese momento la memoria RAM continuaba siendo costosa y había un solo microprocesador. Teradata, Sequent y Tandem crearon configuraciones de hardware para mayor capacidad. En los noventas llegó el almacenamiento en red y mejoras incrementales con procesadores de 64 bits.

Actualidad

Las economías alrededor del cómputo han cambiado gracias a los avances en hardware. Son comunes los servidores con múltiples procesadores/núcleos, los sistemas de 4 y 8 vías son accesibles, la memoria es mucho más económica, los discos duros son de mayor capacidad y mucho menor costo. Aún así, esta tercera generación de gestores de base de datos opera básicamente de la misma forma que la anterior, aunque los efectos de escalabilidad, desempeño, administración y ahorro en costo son dramáticamente mayores gracias a los avances de la tecnología.

Futuro cercano

En los últimos años se han estado gestando innovaciones que poco a poco han ido permeando a los sistemas de base de datos. Aquí algunos de los más significativos: 17

• Base de datos en memoria. La forma en que los datos están organizados y se manejan es totalmente diferente. Se usan estructuras de datos simples, se eliminan problemas de transferencia de información. Una operación se puede ejecutar de 20 a 200 veces más rápido que en sistemas convencionales. El acceso óptimo es en forma de interfaz de programación (APIs). Sybase, Oracle, Four Js y otros ofrecen algunas de estas capacidades. • Almacenamiento columnar. Para análisis estadístico, como almacenes de datos, es posible almacenar columnas en lugar de renglones, reduciendo la entrada y salida en forma significativa. • Almacenamiento no relacional. Para agregar grandes cantidades de datos y realizar operaciones de búsqueda ha aparecido éste modelo. BigTable de Google, SimpleDB de Amazon y Azure Storage de Microsoft son ejemplos. Algunos proveen funcionalidad para administrar documentos XML, como Tierlogic, Tamino, XMS. Los sistemas tradicionales incluyendo a Oracle, IBM y Microsoft han extendido sus productos a tipos de datos geográficos y no-estructurados. • La nube. Ofrece por primera vez la verdadera posibilidad de almacenamiento ilimitado. Bases de datos en data centers internos pueden “extenderse” a operar en centros de datos públicos. Microsoft SQL Azure es el mejor ejemplo. • Appliances. Para bases de datos de múltiples Terabytes, la “escalabilidad de un solo sistema” continuará siendo más económica que la nube. Las aplicaciones de misión crítica requieren cada vez más empaquetar hardware, software y una arquitectura preconfigurada a una carga específica de trabajo. Desde sistemas de 8 procesadores hasta contenedores con miles de servidores preconfigurados a la medida. • Sensores y tiempo real. En el mundo de los sistemas embebidos que manejan tecnologías como RFID y eventos en Internet, se hace necesario analizar la información y tomar acción en memoria y antes de almacenar datos. StreamInsight es una nueva característica en la reciente liberación de Microsoft SQL Server 2008 “R2”. Con certeza veremos la aparición de una nueva generación de sistemas de base de datos durante los siguientes 3 años, y la gran batalla que la misma conllevará. Lo popular y lo gratuito está bien, pero ahí no está la innovación ni las nuevas oportunidades.

››Por Luis Daniel Soto

Software Guru

a perspectiva anterior me parece incorrecta. Por ejemplo, hace una década había quienes aseguraban que las bases de datos eran tecnología “madura”, pero hoy es una de las áreas del cómputo que presentan mayor dinamismo. Analicemos su historia y perspectivas a futuro.

www.sg.com.mx |

L

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


.productos Tutorial

Windows Phone 7 Series parte 1. ››Por David Espino

características de la plataforma

E

ste verano Microsoft lanzó Windows Phone serie 7 (WP7), su nueva propuesta de plataforma para smart-phones. En esta primera parte revisaremos algunos de los aspectos más relevantes de esta plataforma, y en la parte 2 que se encuentra en la siguiente página mostraremos un ejemplo de cómo desarrollar una aplicación sencilla.

Interfaz de usuario

En términos de interfaz de usuario, WP7 introduce diversas innovaciones que hay que tener en cuenta en el diseño y desarrollo de aplicaciones. Entre ellas destacan: • Diseño Metro. La interface de usuario de WP7 está basada en un diseño bautizado como “Metro”, y que está inspirado en el tipo de íconos y colores utilizados en el transporte público. Con esto se busca lograr interfaces de usuario limpias y claras. • Hubs. Windows Phone 7 introduce el concepto denominado “Hubs”. Microsoft define un hub como “Una aplicación que da sentido a tu información y aplicaciones”. En lugar de tener aplicaciones independientes regadas por todo tu teléfono, los hubs brindan espacios que concentran información y aplicaciones relacionadas. • Controles Panorama y Pivot. El layout y navegación dentro de los hubs se basa en los nuevos controles Panorama y Pivot. Básicamente consiste en tener una imagen de background grande que rebasa el tamaño de la pantalla, y a lo largo de la imagen se van poniendo las diferentes secciones del hub, de forma que vas navegando horizontalmente a través de las secciones que están colocadas unas junto a otras. Esto brinda un estilo de uso más similar al de una revista que al de un teléfono. Ver Figura 1.

Frameworks de desarrollo

Para desarrollar sobre la plataforma Windows Phone 7 series, contamos con dos opciones de framework: Silverlight y XNA. La elección depende principalmente de lo que planees crear, Silverlight típicamente es una mejor opción para crear aplicaciones mientras que XNA está orientado a la creación de juegos 2D y 3D. Ventajas de Silverlight: • Framework basado en XAML y dirigido por eventos. • Acceso a controles de Windows Phone. • Navegador web HTML. • Reproducción de audio y video. Ventajas de XNA: • Framework orientado a juegos. • Facilidad para crear juegos multipantalla en 2D o 3D. • Manejo de activos gráficos tales como modelos, sprites, texturas, o terrenos en el XNA Content Pipeline. Aunque bases tu aplicación en uno u otro framework, es posible utilizar la mayoría de las clases del otro framework. Consulta la documentación de los frameworks para conocer los detalles de esto.

Hardware

Microsoft ha establecido los requerimientos de hardware mínimos que deben cumplir todos los aparatos que utilicen esta plataforma. En base a ello, los desarrolladores pueden darse idea de la capacidad mínima de los aparatos donde se ejecutarán sus aplicaciones. • Pantalla táctil con mínimo .BIO 4 puntos de contacto y David Espino Trillo es Ingeniero en Sistemas Computacionales resolución QVGA (800x480). egresado del Instituto Tecnológico de Durango. Actualmente es • Sensores de luz, proximidad, aceprogramador de aplicaciones Web lerómetro, GPS asistido y brújula. en Sieena Software utilizando tecnologías Microsoft. • GPU con aceleración DirectX 9. jdavidespino@gmail.com • 256 MB de RAM y 8 GB de memoria flash. 18

Figura 1. Ejemplo de un Hub con Panorama.


.productos Tutorial

parte 2. desarrollo de una aplicación ››Por Denisse Zavala

P

ara familiarizarnos con el desarrollo en WP7 vamos a crear una aplicación de Silverlight sencilla: un buscador de tweets que estén relacionados con un tema en particular.

Ambiente y herramientas

Para comenzar, debemos descargar e instalar el paquete Windows Phone Developer Tools Beta, que nos permite desarrollar aplicaciones para WP7 usando Visual Studio 2010. Hecho esto, desde VS 2010 creamos un proyecto utilizando la plantilla para Windows Phone Application. La solución generada al utilizar la plantilla Windows Phone Application contiene un solo proyecto de Silverlight para Windows Phone –que tiene una estructura similar a la de una aplicación de Silverlight para web o desktop. Al comenzar nuestro proyecto nos encontraremos con una vista dividida del diseño visual y el código como la que se puede apreciar en la figura 2.

Los controles y el código

De la misma forma que sucede con las aplicaciones Silverlight para Windows, podemos agregar controles a nuestra aplicación seleccionándolos de la caja de herramientas y arrastrándolos hasta la vista de diseño. Este procedimiento genera el markup necesario en el archivo .xaml de la página principal. Necesitamos un TextBox, al que llamaremos QueryStringTextBox; un Button que tenga como nombre btnSearchTwitter; y un ListBox que nombraremos lstSearchResults. El XAML generado al agregar estos controles se aprecia en el listado 1.

Nuestra vista de diseño se verá como en la figura 3. Ésta muestra los primeros dos controles tal y como se verán en el teléfono. Por ahora, el espacio para desplegar resultados se muestra vacío. Ver Figura 3.

Eventos y comportamiento

Como podrán imaginarlo, nuestro botón btnSearchTwitter lanzará la orden de acción para la búsqueda, y para esto hace falta indicar el EventHandler que manipulará el clic. Para ello damos doble clic en el botón mostrado en la vista de diseño y esto genera el EventHandler btnSearchTwitter_Click. Haciendo referencia al API de Twitter agregamos el código que llamará al web service para obtener los tweets. Este código se aprecia en el listado 2. private void btnSearchTwitter_Click(object sender, RoutedEventArgs e) { string queryString = “http://search.twitter.com/search.atom?leng=en&q={0}&rpp={1}”; Uri searchQueryUri = new Uri(String.Format(queryString, this.QueryStringTextbox.Text, 10));

<TextBox x:Name=”QueryStringTextbox”

<ListBox x:Name=”lstSearchResults” Grid.Row=”1”> </ListBox>

searchTwitter.DownloadStringAsync(searchQueryUri); }

Listado 1. XAML generado por controles.

Listado 2. Obtención de tweets con el API de twitter.

Figura 1. Vista de diseño y código en VS 2010.

Figura 2. Vista de diseño con controles.

19

www.sg.com.mx |

searchTwitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler( searchClient_DownloadStringCompleted);

<Button x:Name=”btnSearchTwitter” Content=”Get Tweets” VerticalAlignment=”Center”/>

Software Guru

WebClient searchTwitter = new WebClient();

VerticalAlignment=”Center” Width=”300” />


.productos Herramientas

Dado que esta invocación es asíncrona, es necesario definir el método que se encargará de recibir los resultados. Dicho método se apoyará en la librería LINQ to XML, para extraer la información que queremos mostrar al usuario y mapearla a objetos de la clase Tweet, que será nuestro modelo de datos y contará con dos propiedades públicas de tipo String: Título y Avatar. void searchClient_DownloadStringCompleted( object sender, DownloadStringCompletedEventArgs e) { XDocument xmlTweets = XDocument.Parse(e.Result.Replace( “xmlns=\”http://www.w3.org/2005/Atom\””, String.Empty)); var tweets = from entry in xmlTweets.Descendants(“entry”) select new Tweet { Titulo = entry.Element(“title”).Value, Avatar = entry.Elements(“link”).ElementAt(1). Attribute(“href ”).Value }; this.lstSearchResults.ItemsSource = tweets; } Listado 3. Asignación de valores del objeto Tweet.

La última línea del método searchClient_DownloadStringCompleted crea una relación entre lstSearchResults y la colección de tweets. Para mostrar los resultados sólo resta completar la definición de lstSearchResults. Usando el ItemTemplate definimos la estructura que ha de usarse para desplegar cada tweet: una imagen –mapeada a la propiedad Avatar– y un texto –para el Título– organizados en un grid de dos columnas. <ListBox x:Name=”lstSearchResults” Grid.Row=”1”> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width=”Auto”/> <ColumnDefinition Width=”*”/> </Grid.ColumnDefinitions> <Image Source=”{Binding Avatar}” Grid.Column=”0” Margin=”5,0,10,0” Width=”75” Height=”75” /> <TextBlock Text=”{Binding Titulo}” Grid.Column=”1” TextWrapping=”Wrap” VerticalAlignment=”Center” Style=”{StaticResource PhoneTextSmallStyle}” /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> Listado 4. Definición del despliegue de resultados.

20

Compilación y ejecución

Compilamos como en cualquier otro proyecto de VisualStudio, con el comando Build Solution. Verificamos que Windows Phone 7 Emulator esté seleccionado como el objetivo para la ejecución y procedemos a correr la aplicación, con el comando Start Debugging o la tecla F5. El emulador nos muestra, tal como lo previsualizamos en la vista de diseño, un cuadro de texto y un botón. Después de hacer una búsqueda podemos ver los resultados desplegados en una lista, mostrando la imagen y el texto de cada tweet relacionado con la palabra clave que utilizamos (ver figura 4). El ejemplo mostrado es sumamente sencillo y pretende explorar las herramientas que Microsoft brinda a la comunidad interesada en el desarrollo de aplicaciones para móviles. Figura 4. Aplicación funcionando. Sin duda, el enfoque que han adoptado va dirigido a facilitar el proceso de construcción de software para todas sus plataformas, y ahora con el Windows Phone 7 Series no se quedan atrás.

››El

ejemplo mostrado es sumamente sencillo y pretende explorar las herramientas de desarrollo para esta plataforma. El código fuente utilizado en este artículo se encuentra disponible en http://www.denissezavala.com/blog/2010/07/wp7-examples

.BIO

Referencias: [1] “UI Design and Interaction Guide for Windows Phone 7”. http://bit.ly/SG29r6 [2] “Windows Phone for Developers”. http://bit.ly/SG29r7

Denisse E. Zavala Pantoja es Ingeniera en Tecnologías Computacionales por el Tecnológico de Monterrey, campus Morelia. Actualmente se desempeña como ingeniero de software en Sieena, donde se enfoca al desarrollo de aplicaciones Web basadas principalmente en tecnologías Microsoft. @DenisseZavala



.especial

Premios SG GuĂ?a 2010 y los ganadores son

22

...


.especial

Este verano llevamos a cabo nuestro ejercicio anual para sondear y difundir cuáles son las herramientas y tecnologías favoritas de nuestros lectores. Dicho ejercicio tradicionalmente ha sido llamado “Premios SG”, pero lo hemos cambiado el nombre a “Premios SG Guía” para poder ligarlo con nuestro portal para búsqueda de productos y servicios de software (http://sg.com.mx/guia)

• Microsoft Project • Rational Project Conductor • JIRA

Gestión de datos: Servidor RDBMS • MySQL • Oracle • PostgreSQL

Gestión de datos: Almacen NO SQL • Cassandra • CouchDB • MongoDB

Gestión de datos: Herramienta de administración • Quest Toad • IBM InfoSphere Data Architect • EMS SQL Management Studio

Gestión de datos: Herramienta de modelado

• IBM Rational Rose Data Modeler • CA Erwin Data Modeler • Oracle SQL Developer Data Modeler

23

Gestión de datos: Cliente SQL

• Oracle SQL Developer • Squirrel SQL Client • Navicat 8

Gestióń de datos: ETL e integración

• IBM Information Server • Oracle Warehouse Builder • Kettle Pentaho Data Integration

Gestión de datos: Data warehouse • Oracle • IBM • Microsoft

IDE: editor de código • Notepad++ • TextMate • Vi(m)

IDE: Editor de código

• Eclipse • Netbeans • Microsoft Visual Studio

Software Guru

Administración de proyectos

de la votación en línea, y no son un indicativo de la postura de Software Guru respecto a ninguno de estos. El que un producto haya quedado en primer lugar simplemente que entre los lectores de SG, ese producto es el más popular. Sin mayor preámbulo, prosigamos a ver quienes fueron los ganadores de este año. En cada categoría se muestra primero al ganador y posteriormente al segundo y tercer lugar.

www.sg.com.mx |

Este ejercicio se realiza en un proceso de dos etapas. Primero se abre un wiki en el que invitamos a nuestros lectores a indicar las categorías que desean incluir, así como los productos participantes en cada una. Posteriormente generamos una encuesta online y convocamos a que nuestros lectores voten por sus productos favoritos. Poco más de 500 personas participaron en este ejercicio. Vale la pena recalcar que los resultados se generaron a partir


.especial

Premios SG GuÍa 2010 IDE: Java

• IBM Rational Application Developer for WebSphere Software • J Creator Pro • IntelliJ IDEA

IDE: PHP

• Zend Studio • PHP Editor • phpDesigner

IDE: web

• Adobe Dreamweaver • Aptana Studio • IBM Rational Application • Developer for WebSphere Software

IDE: aplicaciones móviles

• Eclipse • Netbeans (Mobility Pack) • Microsoft Visual Studio

Lenguajes declarativos y 4GL • GeneXus • PowerBuilder • 4D

24

Framework Control arquitectónico de para versiones aplicaciones • Subversion web • CVS • Grails • ASP .Net MVC • Ruby on Rails

• Git

Framework para ajax/ javascript

• Apache Ant • Apache Maven • IBM Rational Build Forge

• JQuery • ExtJS • Dojo

Gestión de requerimientos • IBM Rational Requirements Composer • Microsoft Team Foundation Server • Borland CaliberRM

Gestión de issues, defectos y cambios • Bugzilla •IBM Rational ClearQuest • Mantis

Build management

Integración continua • Apache Continuum • Hudson • Atlassian Bamboo

Lenguaje alternativo para la JVM • Groovy • JRuby • Jython

Modelado con UML

• IBM Rational Software Modeler • ArgoUML • Sparx Enterprise Architect


.especial

Gestión de pruebas

• IBM Rational Quality Manager • TestLink • QADirector

Pruebas funcionales

• IBM Rational Functional Tester • Compuware TestPartner • Borland SilkTest

Pruebas de desempeño • Apache JMeter • IBM Rational Performance Tester • Embarcadero DBOptimizer

• Microsoft Visual Studio • IBM Rational PurifyPlus • JProbe

Monitoreo de aplicaciones • IBM Tivoli • Oracle • HP Business Availability Center

Hypervisors

• VMware vSphere • Oracle VM Server • Windows Server 2008 R2 • Hyper-V

Gestión de virtualización • VMWare vCenter • IBM Tivoli • Excelerate vKernel

Plataforma SOA • IBM WebSphere • Oracle Fusion • JBoss Enterprise SOA

25

• IBM WebSphere Portal • Apache JetSpeed • Oracle Portal

Content Management System • Joomla • WordPress • Drupal

Plataforma para aplicaciones móviles • Android • iPhone • Java ME

Plataforma de cómputo en la nube

• Google App Engine • Amazon Web Services • Windows Azure

plataforma de Business Intelligence • IBM Cognos • Oracle Business Intelligence Suite • Pentaho BI Suite

Estrategia, framework o metodología de desarrollo

• Scrum • Unified Process (RUP, EUP, OpenUP, etc) • Team Software Process (TSP) / Personal Software Process (PSP)

Hosting de servidores virtuales y dedicados • Neubox • Rackspace (Managed Private Cloud) •Sandino Networks

Software Guru

• IBM Rational System Architect • Microsoft Visual Studio Ultimate • Sparx Enterprise Architect

Portal Empresarial

Análisis de código (profiling)

www.sg.com.mx |

Gestión de arquitectura de sw


.entrevista

Grady Booch hacia un planeta inteligente

G

rady Booch es Chief Scientist, Software Engineering en IBM Research. Recientemente compartió con SG un poco de lo que está haciendo, así como su perspectiva sobre tendencias en el software. Aclaramos que en el ámbito de esta entrevista, cuando nos referimos a la “ingeniería de sistemas” estamos hablando de la disciplina general de todo tipo de sistemas, no necesariamente informáticos. ¿Por qué está cobrando importancia la ingeniería de sistemas y el enfoque de “sistemas de sistemas”? La ingeniería de sistemas tradicional es una disciplina que existe desde hace tiempo. El problema es que está basada en ingenierías físicas (mecánica, electrica, etcétera) y no considera el software. Pero lo que está sucediendo es que el software cada vez es un componente más importante dentro de estos sistemas. El mundo está aprendiendo a lidiar con esto, con cómo aprovechar el software para integrar sistemas y generar sistemas de sistemas. Tal vez el primer grupo que se encontró con esto fue la industria militar, conforme han ido desarrollando armas inteligentes y cosas del estilo. La industria aeroespacial también ha aprendido a crear y manejar sistemas de sistemas intensivos en software. Creo que

hay mucha experiencia de eso que podemos aprender. Un ejemplo es el caso de la industria automotriz, me ha tocado hablar con gente de las principales empresas productoras de automóviles y me dicen “tenemos estos productos super sofisticados y el software cada vez forma una mayor parte de ellos, pero no sabemos cómo considerar estas capacidades que brinda el software, dentro de nuestros esfuerzos de desarrollo de productos. El mundo está aprendiendo a entender esto.

estado recopilando piezas de software y código fuente muy interesantes y representativas. Yo acostumbro preguntar a los académicos si en sus universidades dan clases de lectura de software y es raro el que me dice que sí. Eso es un problema, porque ¿cómo podemos aprender a escribir buen software sino estudiamos el software de otros?”. Considero que en nuestra industria y en las instituciones académicas debemos impulsar la práctica de análisis literario de software.

¿Los sistemas de sistemas son lo que habilitan la visión de un “planeta inteligente”? Sí, creo que eso es verdad. Hay mucho software por hacer, y eso me emociona aunque al mismo tiempo me da algo de miedo, ya que cada vez hay más sistemas de software de los que dependen vidas humanas.

¿Podrías mencionar algún software “bello” con el que te hayas encontrado? Uno de los mejores códigos con los que me he encontrado es el de las primeras Macintosh. Casi me trae lágrimas a los ojos (risa).

¿Que opinas de la noción de “artesanía de software”? Creo que es una buena idea. Considero que en varias maneras el software se asemeja a la literatura. El buen software se siente como una artesanía. Soy parte del consejo del Computer History Museum, y una de las cosas de las que los convencí es que no solamente fueramos un museo del hardware, sino también del software. Así que hemos

26

¿Cómo calificas si un código es bueno? No estoy seguro, creo que simplemente lo conoces cuando lo ves. Kent Beck, de la comunidad ágil, acuñó el término de “code smell” para referirse a síntomas del código fuente que típicamente implican problemas en su programación. Entonces, podría decir que para mí, un buen código es aquel que “no huele”, es relativamente consistente y se lee facil, no solo por su organización (espacio, indentado), sino por su nomenclatura y sintáxis.


.eNTREVISTA

W

alker Royce es Chief Software Delivery Economist en IBM. Él nos comparte su visión sobre cómo podemos administrar proyectos de software de forma más efectiva. Estamos en la transición hacia una era de cómputo pervasivo y de "sistemas de sistemas". Podemos crear estos sistemas usando las mismas estrategias que antes o necesitamos pensar diferente sobre cómo desarrollamos software? Creo que sí se requiere aplicar una estrategia diferente a la tradicional. Sin embargo, creo que ya llevamos cerca de diez años pensando diferente sobre el desarrollo de software, es solo que esto no ha permeado a lo largo de toda la industria. ¿Qué cambios debemos hacer a nuestros procesos de desarrollo de software? Algo importante del tipo de los sistemas de software que estamos desarrollando (y desarrollaremos en el futuro) es que la mayoría de su valor no está en los componentes de software individuales, sino en su integración con otros sistemas. Si el valor está en la integración, entonces seguramente también es ahí donde están el grueso de los riesgos e incertidumbre. Nuestra estrategia para construir software debe tener en cuenta esto; si real-

mente creemos que la mayoría del valor está en la integración, entonces el ciclo de vida que utilicemos para crear software también debe dar un mayor énfasis a la integración. Teniendo esto en cuenta, creo que deberíamos realizar nuestras pruebas de integración ántes de las pruebas unitarias, sé que parece raro pero es posible hacerlo. Este simple cambio —pruebas de integración antes de pruebas unitarias— sirve para desencadenar muchos de los ajustes que necesitamos hacer a nuestros procesos de desarrollo de software. ¿Cómo se distingue la ingeniería de software de otros tipos de ingeniería? Las disciplinas tradicionales de la ingeniería, como la mecánica o la civil, están basadas en leyes de física y siglos de experiencia. En el caso del software, no tenemos eso. La creación de soluciones de software no se basa en leyes inmutables, sino en la creatividad y talento del equipo de desarrollo; así que carecemos de límites bien definidos. La principal consecuencia de esto es que el desarrollo de software involucra una gran cantidad de incertidumbre. En ese sentido, el desarrollo de software se distancía del resto de las disciplinas de ingeniería y se acerca más a disciplinas creativas, como por ejemplo la producción de películas. En ésta última se ensambla un

27

El PMBoK es como la "biblia" de gestión de proyectos. ¿Consideras que incorpora este tipo de prácticas que comentas? Creo que el PMI y el PMBoK reconocen estos principios como necesarios para administrar los proyectos de software. Sin embargo, la interpretación y ejecución típica de los gerentes de proyectos no es muy madura respecto al manejo de la incertidumbre en los proyectos de software. Esto es porque los gerentes de proyecto acostumbran tomar el camino fácil. Es mucho más sencillo administrar proyectos si asumes que los requerimientos son estables y el plan no cambiará, que si aceptas que hay mucha incertidumbre y debes manejarlos de forma dinámica. Mucho de esto también tiene que ver con los clientes, ya que muchos de ellos no permiten que los gerentes de proyectos traten el costo, alcance o tiempo como una variable. Necesitamos madurar y mejorar las prácticas de contratación de proyectos para que consideren esto, y requerimos un cambio cultural en el lado de los clientes, los gerentes de proyecto y desarrolladores.

Software Guru

administrando la incertidumbre

www.sg.com.mx |

Walker Royce

equipo con el mayor talento disponible para que colaboren y generen propiedad intelectual valiosa; no se sabe a ciencia cierta si algo le gustará a la audiencia, o como se desempeñará un actor con cierto papel, o cual será la secuencia de escenas más adecuada; hay pocas métricas de calidad que sean útiles y confiables, y no puedes saber si algo está bien o mal, hasta que lo ves filmado y editado. Los proyectos de construcción de software comparten muchos de estos elementos, así que desde una perspectiva de administración de proyectos, deberíamos aprender de ésta disciplina, donde el principal rol del gerente de proyectos es el de "navegar" los proyectos a través de la incertidumbre. Este acercamiento difiere del modelo tradicional en cascada aplicado en otras disciplinas de ingeniería, donde se define y especifica un producto con precisión, y entonces se procede a construirlo en base a un plan detallado.


Interfaces de usuario alternativas ¿Te acuerdas de las tarjetas perforadas? Sí, esas que se utilizaban para dar instrucciones a las computadoras. Para la mayoría de nosotros, esto parece algo inverosímil, ¿cómo es que las personas podían interactuar con las computadoras de esa forma sin volverse locos? Qué baja debe haber sido la productividad, y qué básicas deben haber sido las operaciones que realizaban con las computadoras de ese entonces. Y sin embargo, hoy estamos frente a un nuevo cambio de paradigma en las interfaces humano-computadora. Cada vez nos encontramos con más dispositivos de cómputo que carecen de teclados, y se controlan por medio de elementos como la voz, el tacto y el movimiento. Es muy probable que cuando le contemos a nuestros hijos que usábamos un teclado, y algo llamado “mouse” para dar instrucciones a la computadora, y recibiamos resultados por una pantalla de retrproyección o cristal líquido, nos respondan de forma similar a como nosotros pensamos respecto a las tarjetas perforadas. Debemos prepararnos para aprender a crear aplicaciones que aprovechen este nuevo tipo de interfaces. Dos de las que mayor popularidad han cobrado en los últimos años son el tacto y la voz. En las siguientes páginas, Miguel Ángel Morán y Paco Cuevas nos ilustran sobre cómo empezar a desarrollar aplicaciones que las utilicen.

28


.EN PORTada

Más allá

Usando voz, tacto y escritura ››Por Miguel Angel Morán

Sin lugar a dudas, uno de los factores principales que ha coadyuvado a la adopción masiva de la tecnología es la mejora en la interacción entre los humanos y las máquinas. El objetivo es hacerlas cada día más similares a los modelos tradicionales de comunicación que se establecen entre los mismos seres humanos. tadoras, son evidentemente, la voz, la escritura a mano y el reconocimiento de gestos y figuras plasmadas en un lienzo.

Esta “antropomorfización” (hacer que las cosas se parezcan más a los humanos) se ha hecho cada vez más patente en los paradigmas de interacción humano computadora (HCI por sus siglas en inglés). Lo que al principio eran pantallas monocromáticas de texto, donde la comunicación estaba dada por comandos crípticos que requerían conocimiento previo del entorno operativo, se ha transformado en atractivas analogías del mundo real (botones, ventanas, íconos, multimedia etc.) presentes en los modernos sistemas operativos como Microsoft Windows, MacOS o los múltiples entornos que ofrece Linux, por citar algunos. Hasta nuestros días, sin embargo, la manera predominante en la cual podemos interactuar con una computadora, sigue siendo el teclado y el mouse. Aunque eficiente, este modelo de comunicación resulta mucho más lento que hablar de humano a humano, y para mecanografiar con velocidad razonable es necesario un entrenamiento o práctica previa. Otros métodos, aun más “naturales” para comunicarse con compu-

Aplicaciones prácticas

El antropomorfizar cada vez más la informática, tiene como beneficio la multiplicación de escenarios en los cuales es aplicable la automatización, desde los más triviales hasta los más complejos. Esto hace que la adopción de tecnología se convierta además en un factor de ahorro y eficiencia para aquellas empresas que decidan implementarla. Supongamos, por ejemplo un sistema automatizado que se encargue de vender boletos de cine, con una interacción completamente natural. A este sistema le denominaremos CinemaNET. La interacción entre el humano y la maquina en este pretendido sistema, sería a través de comandos de voz. El sistema solicitaría información al usuario a través del habla humana (es decir, el sistema hablaría con el usuario) y recibiría la información del usuario con la voz del mismo.

29

Software Guru

teclado www.sg.com.mx |

del


Actualmente esto es completamente factible usando la plataforma .NET 4.0 y Windows 7. Microsoft tiene una larga historia en la investigación de tecnología enfocada a métodos alternativos de interacción humana. Actualmente ofrece una solución “server-side” llamada Speech Server, que es parte de Office Communications Server y brinda una plataforma para la creación e instalación de aplicaciones basadas en voz en ambientes corporativos. Windows 7 también incluye tecnología de reconocimiento y síntesis de voz, análisis de texto y el engine de conversión texto-voz Microsoft SAM. Muchas de las APIs de estas tecnologías son nativas del sistema operativo u componentes COM, por lo que es posible acceder a ellas mediante C++ y/o programación no administrada. Sin embargo, el .NET Framework a partir de su versión 3.0, y con mejoras sustantivas en NET 4.0, facilita enormemente al desarrollador el consumo de estos servicios del sistema operativo, haciendo que la integración de diferentes tecnologías de interacción alternativa sean tareas verdaderamente sencillas como veremos a continuación.

Listado 1. Text to speech en .NET 4.0.

Text to Speech

Reconocimiento de voz

La síntesis de habla es la reproducción computarizada de voz e idioma humanos. Es un problema que dista de ser trivial, debido a la variedad de excepciones a las reglas de pronunciación. Algunos idiomas como el español o el italiano, tienen ortografías fonéticas, es decir, que una grafía o letra representa un único sonido y su reproducción es razonablemente sencilla derivado de esto. (Una “a” siempre suena “a”). Sin embargo otros idiomas, como el alemán, mezclan la ortografía fonética con varias excepciones donde las combinaciones de vocales o de posición de diversas letras, o inclusive el orden de las palabras, modifican el sonido final —por ejemplo, en alemán el diptongo “ei” suena “ai”. Y existen otras lenguas, como el inglés cuya ortografía es completamente defectiva —por ejemplo la “e” inglesa puede sonar como “i” en “be”, como “e” en “bet” o no sonar como en “make”—. Incluso en idiomas tonales —como el chino—, el mismo sonido puede significar algo distinto de acuerdo al tono con el que se exprese. A todo esto hay que añadir, entre muchos otros retos las palabras que representan preguntas, exclamaciones y el acento de cada hablante. Por todo esto, no es posible hacer un solo sintetizador, sino que se debe hacer uno por cada idioma, y la complejidad para generarlos es bastante alta. Históricamente, los sistemas operativos Windows han incluido sintetizadores de texto como Microsoft SAM, pero además hay sintetizadores de terceros que prácticamente hablan cualquier idioma y acento necesario. Estos sintetizadores son accesibles a través del .NET Framework de una forma bastante simple. Retomando el ejemplo de CinemaNet, supongamos que el programa muestra una pantalla y recibe al usuario con una cálida bienvenida. El código del listado 1 muestra cómo utilizar la capacidad text to speech con el .NET Framework 4.0. Primero inicializa el sintetizador de voz y lee el texto dentro del método Speak() del objeto SpeechSynthesizer, donde se encapsula toda la funcionalidad de síntesis texto a voz. Como mencioné anteriormente, Windows Vista y Windows 7 incluyen por defecto el motor de síntesis Microsoft SAM, que es capaz de leer texto en inglés. Para este ejemplo estoy haciendo uso de un motor de síntesis de terceros (Cepstral Marta) que soporta síntesis en español. 30

using System.Speech; using System.Speech.Synthesis; public void Hablar() { // Inicializo el objeto y seleccionó un engine // de sintesis de 3os en español: “Cepstral Marta” SpeechSynthesizer Sintetizador = new SpeechSynthesizer(); Sintetizador.Volume = 100; Sintetizador.SelectVoice(“Cepstral Marta”); Sintetizador.Speak( “Bienvenidos al expendedor de cinetickets automatizado”); Sintetizador.Speak(“Por favor dígame la película que desea ver”); }

Siguiendo con el ejemplo de CinemaNET, el usuario está a punto de dictarle al sistema la película que ha elegido mediante reconocimiento de voz. Para lograr este objetivo es necesario el proceso de speech recognition, que se define como la conversión del habla humana a texto. En un sistema informático como CinemaNET, el concepto se extiende a las gramáticas, que son un conjunto de comandos predeterminados basados en la voz humana que realizan acciones específicas dentro de un sistema computacional. El listado 2 muestra un código básico para reconocer la voz de un hablante. using System.Speech; using System.Speech.Recognition; public void Escuchar() { //Inicializa el motor de reconocimiento SpeechRecognitionEngine Reconocedor = new SpeechRecognitionEngine(); Reconocedor.UnloadAllGrammars(); //Agrego una gramática con las opciones que espero recibir Choices Comandos = new Choices(new string[] { “Shrek”, “Encuentro explosivo”, “Caín”, “Eclipse”, ”Fuego”,”Una pareja dispareja” }); Reconocedor.LoadGrammar( new Grammar(new GrammarBuilder(Comandos))); //Inicia la escucha con el dispositivo de entrada de audio predeterminado Reconocedor.SetInputToDefaultAudioDevice(); Reconocedor.RecognizeAsync();


.EN PORTada

//Si se reconoce alguna palabra dentro de la gramática, // muestra el resultado y el índice de confianza del reconocimiento Reconocedor.SpeechRecognized += (object sender, SpeechRecognizedEventArgs e) => { MessageBox.Show(e.Result.Text + “ “ + e.Result.Confidence.ToString()); Reconocedor.RecognizeAsync(); };

SpeechRecognitionEngine Reconocedor = new SpeechRecognitionEngine(); Reconocedor.UnloadAllGrammars();

//Si no encuentra coincidencias Reconocedor.SpeechRecognitionRejected += (object sender, SpeechRecognitionRejectedEventArgs e) => { MessageBox.Show(“No pude reconocer la película que me dijiste. Intenta de nuevo”); Reconocedor.RecognizeAsync(); }; }

//Si se reconoce alguna palabra dentro del dictado // muestra el resultado y el índice de confianza del reconocimiento Reconocedor.SpeechRecognized += (object sender, SpeechRecognizedEventArgs e) => { MessageBox.Show(e.Result.Text + “ “ + e.Result.Confidence.ToString()); Reconocedor.RecognizeAsync(); };

// Agrego una gramática del tipo dictado para recibir cualquier palabra Reconocedor.LoadGrammar(new DictationGrammar()); Reconocedor.SetInputToDefaultAudioDevice(); Reconocedor.RecognizeAsync();

Listado 3. Capacidad de Dictado.

En este código podemos ver la inicialización del objeto SpeechRecognitionEngine, donde reside la funcionalidad de reconocimiento de voz en .NET. Posteriormente hacemos el uso de la función LoadGrammar que recibe el objeto Grammar, que a su vez contiene los comandos que el programa está dispuesto a esperar. En el ejemplo se muestra una carga directamente con un objeto Choice inicializado con un arreglo de cadenas, sin embargo, también es posible utilizar el estándar del W3C Speech Recognition Grammar Specification (SRGS) http://www.w3.org/TR/speech-grammar para el caso de que existan gramáticas cambiantes, y para efectos de aumentar la compatibilidad entre plataformas. En el ejemplo, el programa reconocerá única y exclusivamente los comandos especificados en el objeto Choice: “Shrek”, “Encuentro explosivo”, “Caín”, “Eclipse”,”Fuego”,”Una pareja dispareja”. En el caso de que el reconocimiento sea exitoso, se dispara el evento SpeechRecognized y se mostrará la opción elegida, así como el grado de confianza del reconocimiento. Si no se reconoce, es decir, si se dice algo que no se encuentre dentro de las opciones especificadas, se levanta el evento SpeechRecognitionRejected y se muestra un mensaje al usuario. Otra aplicación es el dictado, es decir donde no existen opciones y se espera recibir cualquier palabra. Para recibir dictado se hace uso de DictationGrammar. El listado 3 muestra nuestro código para recibir dictado.

En Windows Vista y Windows 7, se incluye la capacidad automática de cambio de idioma del sistema operativo mediante los Language Packs. Estos paquetes incluyen también el motor de reconocimiento de voz , por lo que es posible escuchar prácticamente cualquier idioma. El sistema de reconocimiento de voz interpreta por default el dictado de acuerdo al idioma en el que se encuentre el sistema operativo.

using System.Speech; using System.Speech.Recognition; public void EscucharDictado() {

Multitouch

Con el uso en aumento de dispositivos portátiles con capacidades de Multitouch como Tablet PC, iPads o la constante aparición de quioscos digitales bancarios o de centros comerciales, entre otros, las necesidades desde el punto de vista del desarrollador y diseñador gráfico para poder explotar estas plataformas, también ha ido en aumento. En la plataforma .NET , Windows Presentation Foundation 4.0 contiene una serie de objetos que representan las manipulaciones que el usuario realiza durante su interacción con una pantalla de touch. Supongamos que nuestro CinemaNET muestra los carteles con el arte gráfico de las películas, o bien video o escenas de la película en una pantalla multitouch. Para lograr esto, basta agregar un objeto Canvas (o cualquier otro objeto contenedor) a una ventana de XAML y llenarlo con todas las imágenes de un directorio, habilitando la propiedad IsManipulationEnabled de las mismas, que es la que permite recibir manipulaciones desde una pantalla touch (también pueden ser videos, paths o cualquier elemento que herede de UIElement, y el resultado es el mismo). Este código se puede apreciar en el listado 4. 31

www.sg.com.mx |

Listado 2. Reconocimiento de comandos por voz.

Software Guru

}


mación viene contenida en el objeto ManipulationDeltaEventArgs de la firma para la función manejadora del evento como se muestra en el listado 5.

public static void AgregarImagenesACanvas(Canvas canvas) { DirectoryInfo objdi = new DirectoryInfo(@”C:\CinemaNET\galeria\”); FileInfo[] objArchivos = objdi.GetFiles(“*.jpg”);

void ManipularObjeto(object sender, ManipulationDeltaEventArgs e) { var element = e.Source as FrameworkElement; var deltaManipulation = e.DeltaManipulation;

objArchivos.ToList().ForEach(o => { Image Imagen = new Image(); Uri src = new Uri(o.FullName, UriKind.Absolute); BitmapImage img = new BitmapImage(src); Imagen.Source = img;

//Se crea un objeto MatrixTransform con la información de la manipulación var matrix = ((MatrixTransform)element.RenderTransform).Matrix; //Se obtiene la posición central del elemebto a manipular Point center = new Point(element.ActualWidth / 2, element.ActualHeight / 2); //Se establecen los parámetros de la transformación center = matrix.Transform(center); matrix.ScaleAt(deltaManipulation.Scale.X, deltaManipulation.Scale.Y, center.X, center.Y); matrix.RotateAt(e.DeltaManipulation.Rotation, center.X, center.Y);

//Esta propiedad habilita el multitouch de cualquier objeto // que herede de UIElement en WPF Imagen.IsManipulationEnabled = true; //Se agrega la imagen dinámicamente al objeto contenedor canvas.Children.Add(Imagen); }); }

matrix.Translate(e.DeltaManipulation.Translation.X, e.DeltaManipulation.Translation.Y); //Se aplica la transformación element.RenderTransform = new MatrixTransform(matrix); e.Handled = true;

Listado 4. Agregando imágenes a un objeto del tipo Canvas.

Posteriormente, es necesario crear una suscripción al evento ManipulationDelta, y en su manejador utilizamos un objeto del tipo MatrixTransform que representa una transformación arbitraria de tamaño, posición y perspectiva dentro de WPF. La información de esta transfor32

} Listado 5. Código básico para manipulación con multitouch.


.EN PORTada

AnalizadorTinta.BackgroundAnalyze(); //Se verifica si se detectó una palabra y se muestra en la pantalla AnalizadorTinta.ResultsUpdated += (object sender2, ResultsUpdatedEventArgs e2)=> { if (e2.Status.Successful) { ContextNodeCollection nodes = ((InkAnalyzer)sender2).FindLeafNodes(); foreach (ContextNode node in nodes) { if (node is InkWordNode) //si detecta una palabra { InkWordNode t = node as InkWordNode;

Figura 1. Manipulación Multitouch.

La figura 1 muestra la imagen al ejecutar el programa y realizar la manipulación. Cabe señalar que el API de WPF es compatible para programar Microsoft Surface.

MessageBox.Show( t.GetRecognizedString());

Reconocimiento de escritura a mano (Tinta digital)

<InkCanvas StrokeCollected=”onStrokeCollected” / > Posteriormente manejamos el evento StrokeCollected y mandamos a analizar lo que pinte el usuario. Esto se aprecia en el listado 6. private void onStrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e) { InkAnalyzer AnalizadorTinta = new InkAnalyzer(); AnalizadorTinta.AddStroke(e.Stroke); //El 2058 representa el idioma español AnalizadorTinta.SetStrokeLanguageId(e.Stroke, 2058); //Se manda a ejecutar el análisis

} } }; } Listado 6. Reconocimiento de escritura a mano

Software Guru

La figura 2 ilustra el resultado.

Figura 2. Reconocimiento de escritura.

Conclusión

El .NET 4.0 Framework proporciona todo lo necesario para construir aplicaciones con dispositivos de entrada alternativos al teclado y al mouse de una manera sencilla y eficiente sin necesidad de tener que programar directamente con la API del sistema operativo, proporcionando así .BIO opciones ilimitadas para aumentar Miguel Angel Morán (@SrBichi) es un Microsoft Most Valuable Profesla usabilidad de nuestras aplicaciosional (MVP) en C#. Cuenta con 13 años de experiencia desarrollando nes, haciendolas más atractivas y y lidereando soluciones de softaumentando su aplicación en una ware de misión crítica en las más diversas industrias. Participa actigran cantidad de escenarios. vamente en conferencias, cursos, comunidades de desarrollo y divulEl código fuente de los gación en TI. Colabora en emLink ejemplos mostrados en este artícomo consultor e imparte cursos de actualización tecnológica. culo está disponible en: http://miguelangelmoran.com 33

www.sg.com.mx |

Cerraremos este artículo mostrando las capacidades que tiene la plataforma .NET para el reconocimiento de la escritura a mano, es decir la capacidad para recibir e interpretar los trazos de un humano sobre una superficie, como si se escribiera con una pluma o lápiz tradicional, y su posterior análisis para representar y almacenar esta información como texto digital (ASCII, UTF, Unicode etc.). Supongamos que CinemaNET, además de proporcionar la interface por voz que hemos visto anteriormente, también tenga la capacidad de reconocer el texto que un usuario escribe dentro de su pantalla touch. Para lograrlo, podemos hacer uso del objeto InkCanvas que permite a un usuario dibujar con un stylus ( o con su dedo) trazos. Estos trazos pueden ser analizados por el objeto InkAnalyzer, que además de reconocer texto, permite determinar, si un objeto es (o tiene forma) de alguna primitiva geométrica (círculos, rectángulos, rombos, polígonos etc.). El ensamblado que contiene el analizador de tinta (InkAnalyzer) se encuentra disponible con el SDK de Windows 7 o Windows Vista. Primero añadimos a nuestra ventana de WPF un objeto del tipo InkCanvas, que equivale a un código como el siguiente:

}


Multi-Touch UX

en

››Por Paco Cuevas

iPad

Durante décadas hemos visto en películas de ciencia ficción un futuro lleno de interfases hombre-máquina controladas con los movimientos de nuestras manos sobre imágenes holográficas, superficies translucidas, comandos de voz elaborados e incluso dando instrucciones con solo pensarlas. Este futuro imaginado finalmente está llegando de forma abrumadora al menos en lo referente a interfaces táctiles con múltiples puntos de contacto (multi-touch). Uno de los dispositivos táctiles que mayor popularidad está cobrando es el iPad. El iPad no cambiará al mundo otra vez, sino que formará parte de esta ola precursora de dispositivos que ayudarán a colocar las bases y lecciones aprendidas para el desarrollo de experiencias de uso con los dedos y manos. Al día de hoy el uso de los terminos click, doble click, click derecho, drag and drop, entre otros son utilizadas como verbos totalmente comprensibles para especificar alguna interacción entre el mouse y el software. Hoy al hablar de dispositivos como iPad tenemos que agregar a nuestro vocabulario términos como Tap, Drag, Touch and Hold, Pinch open, Pinch close, Double tap, Flick, Swipe, los cuales no me atrevo a traducir al castellano sin embargo son agrupados bajo el nombre de gestos (gestures).

¿Cómo funciona Multi-touch de iPad?

El hardware dentro de un iPod/iPhone/iPad utiliza una serie de capa-

citores alineados en un plano coordenado; en realidad se trata de una superficie capacitiva que detecta las variaciones en el flujo eléctrico provocadas por nuestros dedos al contacto con la superficie de cristal. Cada una de estas variaciones es continuamente analizada por una unidad de procesamiento dedicada a este fin, la cual con ayuda de un software de interpretación de gestos traduce de forma instantanea la localización (x,y) del toque considerando en cada señal el tamaño, la forma y los cálculos sobre la diferencia entre el toque inicial y el toque final, aplicando algoritmos de reconocimiento de patrones que determinarán el comportamiento del gesto introducido, este software también considera el contexto del dispositivo (ubicación espacial) y el contexto de la aplicación que esté corriendo para traducir finalmente esto en una instrucción concreta al código de la aplicación y que esta efectue la acción esperada.

34


.EN PORTada

Gestos

iPhone SDK 3.2 incorpora un nuevo grupo de objetos conocidos como gesture recognizers, los cuales nos permiten de forma mas simple detectar gestos realizados por el usuario. Por ejemplo, si el usuario usa dos dedos para pellizcar (pinch) en la pantalla —indicando la intención de hacer un zoom in o zoom out sobre una imagen—, en lugar de codificar la detección del movimiento de dos dedos, las clases de gesture recognizers nos proporcionan metodos para detectar este tipo de comportamientos en el iPad. El SDK 3.2 soporta seis de estos reconocedores de gestos: • UITapGestureRecognizer. Detecta toques (Taps) en una vista. • UIPinchGestureRecognizer. Detecta pellizcos (Pinching) hacia adentro o afuera de la vista. • UIPanGestureRecognizer. Detecta el comportamiento al arrastrar o mover una vista. • UISwipeGestureRecognizer. Detecta el comportamiento similar al de cambiar una página en un libro. • UIRotationGestureRecognizer. Detecta cuando los puntos de contacto se mueven en direcciones opuestas. • UILongPressGesture Recognizer. Detecta periodos prolongados al tocar una vista (Touch and hold).

Sugerencias de diseño

Enumero aquí algunas sugerencias prácticas a considerar cuando se diseñe una interface de uso para iPad: • Los gestos son nuevos. Nuestros dedos tienen un nuevo lenguaje que aprender, el lenguaje de los gestos, algunos de ellos siempre han formado parte de nuestro interactuar diário con objetos comúnes, sin embargo muchos no son del todo intuitivos, por lo que tenemos que hacer que nuestros usuarios aprendan este nuevo lenguaje. Por ejemplo, sería un grave error dar por hecho que nuestro usuario sabe perfectamente que para exportar el archivo que está visualizando tiene que hacer press and tap mientras rota la mano. • Menos es mas. Una de los impulsos mas comúnes al diseñar nuestras primeras aplicaciones para iPad es tratar de ocupar toda la pantalla con controles, información, imágenes, etc. con la finalidad de justificar dicho espacio solo porque ahí está y probablemenre se deje a un lado el objetivo principal de la acción que el usuario quiere realizar.

Figura 1. Gestos multitouch.

• Prueba en iPad reales, no en el simulador. Esta no es una sugerencia patrocinada para que corran a comprar su iPad, sin embargo deben tomar en cuenta que una de las claves del éxito de una interface Multi-touch es el desempeño y la facilidad de uso, por lo que es obligatorio hacer pruebas en el dispositivo real para “sentir” la aplicación. • Diseños intuitivos. Sugiero que inicien imitando interfases con un look and feel simple, dejando que el usuario primero descubra por si mismo el objetivo de la aplicación que es en donde debe radicar su valor y posteriormente agregar mejoras visuales que lleven literalmente de la mano al usuario a una aplicación sorprendente. • Pensar que nunca nadie lo ha usado. Todos los dispositivos del tipo Tablet, en este caso específico iPad nos ofrecen la oportunidad de un nuevo inicio (fresh start), en el sentido de que no existe nada escrito aún que nos restrinja a utilizar ciertos estándares o convenciones, sin embargo recomiendo ampliamente leer los Human Interface Guidelines proporcionados por Apple[2] donde podrás encontrar tópicos muy interesantes y sencillamente estrucutrados.

.BIO

Les recomiendo ampliamente involucrarse en el desarrollo de aplicaciones basadas en tacto. Es un mercado con una gran oportunidad, y finalmente me agrada la idea de llegar al día de la entrega final de la aplicación con alguno de mis clientes y decir “… listo, aquí tiene, toque y sienta su nueva aplicación”. 35

Paco Cuevas (@pacocuevas) es ingeniero en sistemas, fundador y director de empresas de desarrollo web como Extend y Web Studios, también es emprendedor de servicios como MapsandNumbers.com el cual involucra tecnologías como Windows Azure, Google Maps y iPhone, actualmente colabora como Director de Desarrollo de Negocios en la empresa emLink alrededor de tecnologías móviles con iPad y coolabora con Microsoft como Windows Azure Evangelist.

Software Guru

Existen dos tipos de gestos: discretos y continuos. Un gesto discreto envía un mensaje simple al objetivo cuando el gesto es reconocido, es decir el método solo es invocado una vez. Un gesto continuo envía o notifica con múltiples mensajes al objetivo hasta el momento en que el comportamiento del gesto termina. Dentro de los discretos se encuentra el Tap, Swipe y LongPress (tap and hold), y dentro de los continuos tenemos Pinch, Pan y Rotation. Por default estos estos gestos no estan diseñados para ser detectados de forma simultanea, sin embargo existe dentro del modelo de objetos la capacidad para habilitar dicho comportamiento a través de la codificación de reconocedores a la medida, permitiendo escenarios en donde más de un usuario o manos interectuan de forma simultanea con la aplicación tomando ventaja del tamaño de la pantalla en un iPad.

www.sg.com.mx |

Gestos discretos y gestos continuos


.Prácticas Gestión de

Datos

Trabajando con

Procedimientos Almacenados

técnicas y recomendaciones ››Por Ricardo Rangel

E

l procesamiento de datos es una de las actividades más arduas a la que nos enfrentamos al desarrollar sistemas transaccionales, especialmente cuando se afectan grandes cantidades de datos. Por medio de procedimientos almacenados, o stored procedures (SP), el sistema de base de datos es capaz de ejecutar un conjunto de instrucciones bien coordinadas entre sí que afectan la información con el fin de lograr un objetivo dentro del sistema. A continuación comparto algunas técnicas que pueden ser útiles para crear stored procedures confiables con una gran cantidad de instrucciones y gestionar los grandes bloques de información que se ven afectados por estos. Vale la pena mencionar que aunque este artículo utiliza como referencia las capacidades disponibles en SQL Server, la teoría básica y la mayoría de la sintáxis es aplicable a otros manejadores de base de datos.

Catálogo de procedimientos

La primera recomendación es tener un catálogo de stored procedures que nos ayude a tener un listado de los procedimientos con los que contamos. En su forma mínima, esta tabla simplemente tendría Id y nombre del proceso, pero puede extenderse para incluir otra información relevante, tal como desarrollador o fecha de actualización. IdProceso Proceso 1 Registro de Comisiones 2 Pago de Comisiones a Vendedores 3 Traspasos de cuentas entre Vendedores

.BIO Ricardo Rangel Ramírez es Licenciado 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, así como el análisis, diseño y desarrollo de sistemas de información. riccardorangel@hotmail.com

Referencias: [1] Solid Quality Learning. Microsoft SQL Server 2005: Técnicas Aplicadas, Microsoft Press.

INSERT INTO COMISION (IdEmpleado, Comision) values (@IdEmpleado, @Comision)

Inmediatamente después (y dentro de la misma transacción) podríamos colocar la siguiente instrucción, haciendo referencia a nuestro catalogo de procesos: INSERT INTO BITACORA_OPERACION (IdProceso, DescProceso, FechaAlta) values (@IdProceso, @DescProceso, @Getdate)

En donde @IdProceso tiene el valor de 1, y @DescProceso contiene el texto ingresado por el usuario para justificar esta comisión. Esto es muy útil para el seguimiento a información e incluso puede ser un requerimiento de seguridad o cumplimiento de normas en un corporativo.

Evitar la ejecución duplicada

Imaginemos que ejecutamos nuestro procedimiento de calcular comisiones de vendedores y éste introduce la información en una tabla. ¿Qué sucedería si volviéramos a ejecutar el mismo proceso por error? Bueno, no es difícil de imaginar, tendríamos información duplicada. Para evitar esto, podemos apoyarnos en nuestra tabla de bitácora, consultando si nuestra operación ha sido ejecutada recientemente, antes de ejecutarla. A nivel de interfaz, podríamos mostrarle al usuario un mensaje más descriptivo.

Depuración de variables Bitácora de operaciones

Para llevar un registro de qué información es afectada por un procedimiento, podemos crear una tabla de auditoria, en donde se escribirá el Id del Proceso que tuvo que ver con la entrada, eliminación o actualización del registro. Por ejemplo, supongamos que en el cuerpo de nuestro procedimiento para registro de comisiones contiene la instrucción:

En caso de no contar con herramientas con capacidades de depuración para stored procedures, se puede usar la instrucción Select para conocer los valores que van tomando las variables al ejecutar el proceso, por ejemplo: SELECT @Variable AS Variable

Por otro lado, cuando hay una falla en la ejecución del procedimiento, es muy probable que el valor de la variable nos aparezca vacío, por lo que esta instrucción no es muy útil para depurar fallas. En ese caso, la recomendación sería basarnos en el mensaje de error que arroje el servidor de base de datos donde indica la línea de código donde se está dando el error, y entonces utilizar cerca de esa línea la instrucción PRINT para que nos de un valor que permita ejecutar esa instrucción fuera del procedimiento y poder observar lo que está sucediendo. 36


.Prácticas

Gestión de Datos

Monitoreo de la información

No porque nuestros procedimientos no marquen errores significa que funcionan correctamente. Por ejemplo, si en un procedimiento tenemos la instrucción IF @Variable > 1 y el proceso nunca entra en el IF (cuando se supone que debió haber entrado), entonces hay algo mal. Una herramienta de análisis de código nos ayudaría a conocer nuestra cobertura de código, pero dado que éstas herramientas no son comunes para stored procedures, lo más seguro es que debamos recurrir a monitorear esto manualmente revisando nuestros datos y la bitácora de operaciones.

Bitácora de incidencias

Cuando ocurre algún error en nuestro proceso es bueno anotar en una bitácora por qué se dio el error y cómo se solucionó. En ocasiones, los errores se dan no porque esté mal nuestro proceso sino porque hay una inconsistencia en los datos. Por ejemplo si el proceso busca el Id de un registro con una fecha, pero existen dos registros con la misma fecha, SQL no sabrá cual tomar y el proceso fallará. Así que se toma la acción correctiva correspondiente y se anota en la bitácora para posibles futuras excepciones.

Separación en funciones

Cuando manejamos grandes cantidades de información, es normal que los procesos que desarrollemos tengan una gran cantidad de instrucciones dando como resultado código muy largo. El uso de funciones en SQL permite simplificar el código en ciertas secciones donde necesitemos obtener un valor. Las funciones las podremos invocar una y otra vez desde nuestros procedimientos. DECLARE @SaldoActualCta Smallmoney SET @SaldoActualCta = (SELECT dbo.fnc_ObtenerSaldoActualCuentaXIdCta(@IdCtaLote))

Manejo de cursores

Hay quienes argumentan que no es bueno el uso de cursores porque son supuestamente “lentos”, pero considero que hay ocasiones en que es inevitable, e inclusive muy útiles, ya que el uso de cursores nos permitirá avanzar registro por registro y especificar una o varias instruc-

Tablas temporales

Esta es otra arma que tenemos a nuestra disposición al manejar grandes cantidades de información. Las tablas temporales permiten almacenar información temporalmente, de tal manera que podemos hacer uso de ella durante la ejecución de nuestro stored procedure. Recordemos también que existen las llamadas variables de tabla que son similares a las tablas temporales pero utilizan menos recursos y son ideales para almacenar poco volumen de datos. Se recomienda investigar a fondo las diferencias entre ambas opciones ya que su explicación excede el alcance de este artículo.

Disparadores y reglas

Los disparadores (también conocidos como triggers) son objetos de la base de datos que ejecutan acciones cuando se producen ciertos eventos. Por ejemplo imaginemos que a un vendedor inactivo no se le puede asignar una cuenta. Mediante un disparador podremos prevenir esta situación. Si al ejecutar el procedimiento se da esta situación, entonces aparecerá un mensaje que impedirá que se termine de ejecutar el SP correctamente. Esto es bueno para nosotros, porque es una advertencia de que algo anda mal en nuestro procedimiento. Por otro lado, las reglas (rules) nos permiten establecer ciertos limites a la información. Por ejemplo, imaginemos que el saldo de un vendedor no puede ser menor a 1,000 pesos. Para esto podemos crear una regla. El uso de disparadores y reglas en la construcción de procedimientos es fundamental. De hecho, se recomienda que antes de programar el procedimiento, se programen todos los disparadores y reglas necesarias. Esto nos obligará a programar el proceso respetando siempre las reglas de negocio preestablecidas. El uso de disparadores y reglas nos garantizara que la información que resulte de nuestros procesos será confiable.

Conclusión

Los stored procedures son fundamentales para el desempeño óptimo de un sistema de información. A los desarrolladores de sistemas de información nos corresponde implementar todo tipo de estrategias y técnicas que nos permitan tener el control de la información y garantizar que ésta sea confiable y precisa. Espero que los tips compartidos en este artículo los ayuden a lograr esta tarea. 37

Software Guru

Print @IdEmpleado Set @VarIdComision = (Select IdComision from COMISION where IdEmpleado = @IdEmpleado)

ciones en cada vuelta. Cuando se opte por usar cursores hay que tener cuidado de cerrarlos correctamente, principalmente cuando utilizamos cursores anidados (cursor dentro de otro cursor). Otra cosa a tomar en cuenta es que si se produce un error dentro del cursor, supongamos en un INSERT, cuando manejemos la excepción, también debemos cerrar el o los cursores involucrados. Por otro lado, para avanzar registro por registro no solamente se cuenta con la opción de cursores sino también con la instrucción WHILE, pero seria cuestión de revisar cual de estas opciones se adecua más a nuestras necesidades.

www.sg.com.mx |

Por ejemplo si el mensaje de error indica que el Subquery asignado a una variable está regresando más de un valor, podemos hacer un print para conocer los valores que se están usando para armar el query, y detectar el problema.


.Prácticas Consultoría

IT Business Engagement

T

más allá de la

ratando de dar una mejor explicación a la traducción del concepto “Engagement”, podríamos relacionarlo con términos como: obligación, compromiso, combate, etc. Pero en definitiva el sentido que se le da en inglés es mucho más amplio que los sinónimos que pudiéramos encontrar en español. Para efectos de este artículo se interpretará dicho término, como la forma de hacer frente a las obligaciones. Actuar en base a “Engagement” es diferente de “actuar en respuesta a”, el término establece una toma de acciones de forma proactiva y no de manara reactiva. IT Business Engagement es entonces la forma en que las Tecnologías de Información se integran al negocio interactuando y haciendo frente a los compromisos y expectativas en un ámbito de correlación. IT Business Engagement busca lograr alinear las operaciones de TI a los objetivos y expectativas del negocio, creando un mejor entendimiento entre ambos, clarificando las ideas y teniendo un mejor soporte a los objetivos organizacionales. Con esto el área de TI tiene parámetros para la priorización de sus esfuerzos por medio de: 1. Conocimiento de la percepción del negocio. 2. Establecimiento de prioridades para el negocio. 3. Oportunidades para implementar herramientas de TI para crear cadenas de valor. 4. Creación de canales y formas de comunicación entre ambas partes.

comunicación entre ti y el negocio

››Por Arturo Peña Rodríguez

Si establecemos un equipo de combate (business analysts) dedicado a entender y comunicar la estructura y funcionamiento del negocio, lograremos comprender los mensajes encriptados de las áreas del negocio. Tendremos un excelente equipo de traductores, no sólo de un representante, sino de los n representantes del negocio, que normalmente NO hablan el mismo idioma. Por esta razón, es importante considerar el desglose del negocio en términos altamente digeribles y que éstos se conviertan en una guía para que el área de TI cubra las necesidades. La figura 1 ilustra el siguiente desglose: 1. Estrategia y operación de TI. Es el centro del IT Business Engagement, no es suficiente pensar en alinear la estrategia de TI sino también asegurarnos que la operación está alineada y así evitar discordancia de lo planeado y lo que realmente se hace. 2. Objetivos de negocio y estrategias funcionales. Una forma errónea para hacer la planeación de objetivos en el área de TI es encontrar solamente una relación entre las iniciativas o servicios de TI y un objetivo de negocio. De ahí la vitalidad de comprender la alineación a las estrategias de todas las áreas. 3. Expectativas de los clientes. El negocio pide resultados según nuestra planeación, pero las expectativas (un reporte detallado de nuestro actuar) están primordialmente bajo la mira de los clientes, ya sea internos o externos. Si logramos cumplir estas expectativas deberíamos lograr también cumplir con el negocio. Ver Figura 1.

Etapas

Un IT Business Engagement típicamente consta de las siguientes etapas: • Entendimiento. En la alineación debemos verificar que nuestras áreas de TI ya se encuentran en marcha, encontrar la relación de los servicios y proyectos que funcionan actualmente y aquellos que deberán cambiar según las estrategias de las áreas funcionales. En este punto se deben encontrar también coincidencias de servicios y proyectos que soportan más de un área. Dentro de los atributos de TI y la percepción de desempeño se encuentran los dominios de: gobierno, seguridad, confiabilidad, entrega de los servicios, atención de necesidades y oportunidades (proyectos de TI), capacidades del personal y la habilitación del negocio (innovación). • Concepción de la estrategia. Consiste en revisar nuestros servicios (catálogo de Servicios) y manejo del portafolio de proyectos, tomando en cuenta que son las dos principales fuentes de relación entre el negocio y TI. Para salir triunfantes ante tales retos, debemos estar conscientes de la pericia y conocimiento que muestra nuestro equipo en las áreas de oportunidad, procesos, prácticas y base de conocimiento, estas áreas deben ser superadas para evitar que los planes se cumplan a cabalidad. • Entrega y soporte. Además de contar con las mejores prácticas y conocimientos para llevar a cabo los servicios y proyectos ya alineados, la forma de medir, controlar y tomar acciones debe ser también en términos ya pactados con el negocio y sus áreas funcionales, por ejemplo

Estrategia y Operación de TI

Objetivos de negocio y Estrategias Funcionales

Expectativas de los Clientes

Figura 1. Desglose del negocio.

Tabla 1. Estrategia y operación de TI apoyándonos en el IT Business Engagement.

38


un punto de avance, culminación de un proyecto (servicios podría hacer un time to market, el cumplimiento de la regulación a la que es sujeta el área funcional), etc. Un factor muy importante a considerar es el tiempo de interacción con los encargados del negocio para tratar temas de la estrategia y acciones que impactan los objetivos de los clientes, así como el de cuestionar el valor de los proyectos y servicios en marcha. • Evidenciar. Para el negocio, la cantidad de proyectos cerrados en tiempo o el porcentaje de tiempo muerto de un desarrollo podrían ser irrelevantes pero no si las métricas que se convierten en evidencia de valor y logro de metas funcionales, pues muestra la relación de proyectos ligados a ingresos y el tiempo que un cliente final ahorra (satisfacción de clientes) con las mejoras en el desarrollo de aplicaciones. El usar el término evidencia solo es distinto de las métricas si estas hacen sentido al negocio. La Tabla 1 refleja los aspectos más relevantes de estas etapas.

Conclusión

Mantener los aspectos citados anteriormente son indispensables al planificar y operar las tecnologías de la información con una ideología del IT Business Engagement. Esta es una lista de puntos importantes en la implantación de Engagement. • Establecer un plan estratégico de TI considerando el Business Engagement: • Adecuación y gestión de los servicios / portafolio de TI de acuerdo al plan y haciendo uso de las mejores prácticas • No dar por sentado que los atributos generalmente asociados a TI se desempeñan de la mejor forma • El seguimiento y la evidencia de los esfuerzos de TI deben ser relevantes al negocio y los clientes relacionados. .BIO Arturo Peña Rodríguez es Business Unit Manager en Itera, donde se desempeña como líder en arquitectura de soluciones en procesos y gobierno de tecnología a nivel nacional. Su proyecto actual consiste en trabajar en el desarrollo de soft skills para una mejor integración de los equipos de tecnología con el negocio. arturo. peña@iteraprocess.com


.Prácticas Arquitectura

Diseño de la Arquitectura

C

el método de diseño

ontinuando con nuestro recorrido alrededor del tema de la arquitectura de software, en esta ocasión, nos enfocaremos en la actividad de diseño de la arquitectura.

Diseño y arquitectura

Por extraño que parezca, no existe una definición generalmente aceptada de la palabra “diseño”. Recientemente se ha propuesto la siguiente definición de este concepto: El diseño es la especificación de un objeto, creado por algún agente, que busca alcanzar ciertos objetivos, en un entorno particular, usando un conjunto de componentes básicos, satisfaciendo un conjunto de requerimientos y sujetándose a ciertas restricciones. Retomando la definición de arquitectura de software presentada en la primera edición de esta serie de artículos, las correspondencias de los elementos de la definición de diseño con la arquitectura son las siguientes: • El objeto se refiere a las distintas estructuras (físicas, lógicas, de ejecución) que componen a la arquitectura de software. • El agente es el (los) arquitecto(s) de software u otros encargados del diseño. • El entorno se refiere tanto al entorno de uso del sistema, por parte de los usuarios finales, como al entorno en que se desarrolla el sistema. • Los objetivos son la satisfacción de los requerimientos que influyen a la arquitectura (los drivers) y la estructuración con el fin de guiar el desarrollo. • Los componentes básicos son los conceptos de diseño a partir de los cuales se construye una arquitectura y que incluyen patrones de diseño y frameworks de tecnologías particulares. • El conjunto de requerimientos, que se presentaron en la columna anterior, incluyen tanto a los requerimientos funcionales como a los no-funcionales (principalmente los atributos de calidad). • Las restricciones, que también se discutieron en la columna anterior, son todas aquellas limitaciones impuestas ya sea por el cliente o bien por la organización misma de desarrollo.

Diseño guiado por atributos (ADD)

Existen diversos métodos de diseño de arquitectura de software. Uno que provee una guía para realizar el diseño arquitectural de forma sistémica es el Diseño Guiado por Atributos (Attribute Driven Design o ADD), que a continuación estudiaremos. Este método recibe como entrada una lista de drivers arquitecturales y produce a su salida una serie de estructuras que conforman al diseño de la arquitectura. Se va aplicando de forma iterativa. Los pasos de ADD son los siguientes: 1. Revisar que se tiene suficiente información sobre los drivers arquitecturales. 2. Elegir un elemento a descomponer.

basado por atributos ››Por Humberto Cervantes y Edith Valencia

3. Elegir un sub-conjunto de drivers a satisfacer durante la iteración. 4. Elegir conceptos de diseño para satisfacer los drivers. 5. Aplicar los conceptos de diseño y asignar responsabilidades a los elementos resultantes. 6. Definir interfaces para los elementos resultantes. 7. Verificar la satisfacción de los drivers seleccionados en el paso 3. 8. Repetir los pasos anteriores para elementos que requieran un mayor refinamiento hasta cubrir la mayoría de los drivers. ADD es un método que sigue un enfoque de “divide y vencerás”; en la primera iteración del diseño, el elemento a descomponer es el sistema en sí (paso 2). En iteraciones subsecuentes, el elemento a descomponer es un sub-elemento resultante de iteraciones previas. Generalmente se considera que el diseño de la arquitectura termina cuando se han tomado decisiones de diseño para satisfacer la mayor parte de los drivers en el tiempo permitido (pasos 7 y 8).

Conceptos de diseño

Al momento de realizar el diseño, el arquitecto dispone de una variedad de conceptos de diseño que le facilitan la creación de las diversas estructuras que conforman a la arquitectura. En el paso 4 del método, se eligen conceptos de diseño. A continuación describimos a qué se refiere esto. Un concepto básico de diseño son los patrones de diseño, que son soluciones conceptuales a problemas recurrentes de diseño (tanto a nivel arquitectural como a nivel de diseño detallado). Estos patrones se describen en catálogos que explican, entre otras cosas, el contexto del problema, la solución conceptual y las implicaciones de la aplicación de la solución. Los patrones tienen nombres que permiten referirse a ellos de manera sencilla, algunos nombres son “cliente - servidor”, “capas”, “MVC”, “fábrica” u “observador”. Estos nombres dan lugar a un vocabulario de diseño que facilita la comunicación entre diseñadores. Una vez seleccionado un patrón, es necesario adecuarlo al contexto específico del problema (paso 5). Existe una gran cantidad de catálogos de patrones de diseño y un arquitecto experimentado debe conocer una buena cantidad de ellos o, al menos, saber en donde puede encontrarlos. Otro tipo de concepto de diseño son los frameworks (marcos de trabajo) enfocados a tecnologías específicas. Estos frameworks, a diferencia de los patrones, no son conceptuales sino que son soluciones a nivel de código que se enfocan en resolver problemáticas particulares tales como la persistencia de objetos en bases de datos relacionales (ej. Hibernate), el soporte de aspectos tales como la seguridad y las transacciones (ej. Spring) o los aspectos de presentación (ej. JSF). Generalmente los frameworks son usados como librerías al momento de desarrollar código. Cabe señalar que los frameworks generalmente encapsulan a diversos patrones de diseño. Al igual que con los patrones, el arquitecto debe conocer una variedad de frameworks y saber dónde aplicarlos. Existen tipos adicionales de conceptos de diseño que pueden ser usa40


.Prácticas

Arquitectura miten desplegar las pantallas asociadas al caso de uso de consulta de catálogo de productos. El siguiente paso (6) consiste en definir interfaces para los elementos resultantes. En iteraciones iniciales, las interfaces entre los elementos no se detallan de forma extensa, sin embargo en iteraciones subsecuentes, dichas interfaces deben documentarse de forma más detallada. Ahora verificamos la satisfacfUn ejemplo ción de los drivers seleccionados en Para ejemplificar la aplicación el paso 3. El primer nivel de descomdel método ADD, a continuaposición de la arquitectura cubre ción mostraremos el resultado los requerimientos de la siguiente de algunos de los pasos del proforma: la solución incluye módulos ceso para una iteración del diseque permitirán al usuario realizar las ño de arquitectura usando como consultas al catálogo de productos, base el ejemplo introducido en adicionalmente la división en capas la columna anterior. Recordanfavorece la modificabilidad. La selecdo, el ejemplo hacía referencia a Figura 1. Ejemplo de descomposición del sistema. ción tecnológica también favorece la la “compañía xyz que se dedica a modificabilidad y se apega a las restricciones. Ver Figura 1. la comercialización de productos de diversos fabricantes”. Para este ejemplo, supondremos que ya se tiene suficiente información sobre los drivers (paso 1), que es la primera iteración, que el elemento a Conclusión descomponer es el sistema entero (paso 2) y que se ha identificado el si- Dadas las limitaciones de espacio, el ejemplo previo y la estructura resulguiente sub-conjunto de drivers para la iteración: tante son muy simples. Es importante señalar que la estructura mostra• Caso de uso primario: Realizar consultas del catálogo de productos. da tendría que seguir siendo refinada en iteraciones subsecuentes para • Atributos de calidad: Escenario de modificabilidad relativo a la satisfacer el conjunto de drivers arquitecturales. Por otro lado, como facilidad para agregar nuevos sistemas externos de fabricantes parte del diseño, tendrían que de productos. producirse estructuras adicionales .BIO • Restricción: Uso de librerías y herramientas Open Source. para mostrar aspectos tales como El Dr. Humberto Cervantes es profesor-investigador en la UAM-Izla implantación o la interacción tapalapa. Ha realizado investigación en temas relacionados con arquitecEl siguiente paso (4) indica que debemos elegir conceptos de diseño de los componentes en ejecución. tura de software desde el año 2000 para satisfacer los drivers. Dado que se tienen escenarios de modificabili- En este sentido, hay que recalcar y en años recientes se ha enfocado en el estudio y la aplicación de dad y que se está en una iteración inicial del diseño, en la cuál se busca crear que el diseño de la arquitectura métodos que apoyen al desarrollo de arquitectura de software dentro la estructuración de alto nivel del sistema, se elige como concepto de dise- no es solo un diseño de muy “alto de la industria Mexicana. ño el patrón de “capas”, que permite agrupar responsabilidades generales nivel” que muchas veces es sinówww.humbertocervantes.net del sistema. Por otro lado, se elige el concepto de diseño de “módulos” para nimo de “poco detallado” ya que La MSc. Edith Valencia es arquiagrupar funcionalidades a nivel de las distintas capas y soportar el caso de éste debe ser tan detallado como tecto de software en la empresa QuarkSoft. Cuenta con más de 10 uso elegido. Finalmente, se opta por aplicar el patrón Inversión de Control se requiera a fin de satisfacer la años de experiencia en la industria para conectar los componentes que estarán contenidos en los módulos y mayoría de los drivers. de software en México. Obtuvo la maestría con honores en Ingeniería facilitar la integración de nuevos módulos. Este patrón se aplica mediante Por último, vale la pena mende Software en la Universidad de York en El Reino Unido. Sus áreas la introducción del framework “Spring”, que es open source. cionar que la idea de documentar de interés incluyen arquitecturas Posteriormente, en el paso 5 aplicamos los conceptos de diseño y asig- las decisiones que se toman durande software, ingeniería de procesos de software y metodologías ágiles. namos responsabilidades a los elementos resultantes. La figura 1 muestra te las actividades de diseño actualevalencia@quarksoft.net un posible resultado inicial de descomposición de la arquitectura. Durante mente está cobrando cada vez más este paso del diseño, además de aplicar los conceptos de diseño, se asignan importancia. Esta documentación Referencias: [1] Ralph, P. y Wand, Y., “A Proposal for a responsabilidades a los elementos identificados. Ejemplos de asignaciones es importante pues permite que Formal Definition of the Design Concept”, de responsabilidades serían: posteriormente se evalúe el diseño Lecture Notes in Business Information Processing, Vol. 14, pp 103-136, 2009 • La capa de integración contendrá el conjunto de elementos que además de que permite compren[2] Wojcik, R. et Al, “Attribute Driven Design (ADD), Versión 2.0”, CMU/SEIpermitirá a la aplicación comunicarse con los diferentes sistemas exter- der la toma de decisiones del ar2006-TR-023, 2006 nos a través de diferentes canales. quitecto al momento de realizar el • El módulo de InterfazCatálogos contiene los componentes que per- mantenimiento del sistema. 41

www.sg.com.mx |

Software Guru

dos durante el proceso de diseño, ejemplos de ello son las arquitecturas de referencia, que son diseños completos que sirven de punto de partida, o bien los componentes COTS (Commercial Offthe-Shelf), que son aplicaciones completas listas para ser integradas. Ejemplos de COTS incluyen middleware tales como buses de integración de servicios (ESB).


.Prácticas Agilidad

De

Triángulos y Prismas lean-agile el prisma

L

a mayoría de los ejecutivos y líderes a los que asesoro tienen dificultad para terminar sus proyectos a tiempo y dentro de presupuesto, lo cual es frustrante para ellos. Un aspecto que los frustra aún más es el hecho de que los clientes parecen nunca estar satisfechos. Mucho se ha publicado en cuanto a maneras de atacar estos problemas, pero la mayoría de las estrategias se quedan cortas, especialmente en cuanto a la satisfacción del cliente. Recientemente Jim Highsmith propuso el Triangulo Agile, el cual nos da una base mas sólida para resolver este problema. Yo he propuesto una extensión al triángulo de Highsmith, resultando en un prisma para gestión de proyectos basado en LeanAgile. En este artículo explico dicha estrategia.

El triángulo de hierro

La teoría tradicional de la gestión de proyectos se basa en el concepto del “triangulo de hierro”. Éste consiste en una descripción gráfica de las tres consideraciones clave para gestionar proyectos: alcance, costo, e itinerario (ver Figura 1). La teoría de este triángulo indica que podemos mantener fijos dos de estos aspectos, pero no los tres (ej. si fijamos costo e itinerario, debemos ser flexibles con el alcance). En la vida real la gran mayoría de las empresas pretenden fijar los tres, por lo que la flexibilidad no es permitida, o es permitida cuando ya es demasiado tarde. Muchos ejecutivos evitan las fluctuaciones porque piensan que es una señal de falla e incompetencia. El resultado es una mala calidad de los productos y servicios resultantes, y quien paga las consecuencias es el cliente. Yo conocí el triángulo de hierro durante un curso de administración de proyectos hace muchos años. Dado que yo siempre he puesto particular interés a la calidad, cuando el instructor terminó su explicación sobre el triángulo le pregunté en qué parte de éste se .BIO

Dr. Masa K. Maeda es Presidente y Fundador de Shojiki Solutions, una empresa dedicada a ayudar 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

Alcance

Costo

encontraba la calidad. Él pensó al respecto por un momento y dijo que la calidad estaba en el centro del triangulo de manera implícita. Si eso era cierto entonces, ¿por qué no lo mencionó durante su explicación? Además, la calidad es demasiado importante como para “estar implícita”. Decidí no regresar a ese curso. Terminar los proyectos dentro de tiempo, costo y alcance no garantiza clientes satisfechos. Ver Figura 1.

El primer triángulo ágil

Poco después de la publicación del manifiesto ágil se creó un nuevo triángulo basado en los valores y principios de Agile (ver Figura 2). Dicho tríangulo considera los mismos elementos que el triángulo tradicional, pero se dibuja de forma invertida, con el alcance en la parte inferior. La forma de interpretarlo es que para que un proyecto sea exitoso se debe fijar el alcance del proyecto y dejar que el costo e itinerario se ajusten adecuadamente. Es decir, los ejecutivos deben permitir el monto de dinero y tiempo necesario para que el alcance se logre. El problema con esta visión es que es difícil de implementar en las empresas debido a la flexibilidad que implica. Ver Figura 2.

El nuevo triángulo ágil

El costo e itinerario son más bien un impedimento. Casi siempre estamos cortos de por lo menos uno de ellos. El alcance también es un problema porque con demasiada frecuencia los proyectos son muy ambiciosos y terminan siendo recortados. A fin de cuentas esto quiere decir que los tres son de hecho restricciones. Jim Highsmith se dio cuenta que el triángulo agile original es incompleto y propuso

Costo

Itinerario

Figura 1. El tríangulo para gestión

››Por Masa K. Maeda

Itinerario

Alcance Figura 2. El triángulo ágil.

de proyectos.

42

Valor

Calidad

Restricciones

(Alcance, Costo, Itinerario)

Figura 3. El nuevo triángulo ágil.


.Prácticas Agilidad

El prisma lean-agile

Para entender el razonamiento detrás del prisma lean-agile, primero compartiré con ustedes una historia reciente con un cliente al que asesoré. Cierto hotel de lujo recientemente me pidió que evaluara el software de automatización de operaciones que habían desarrollado. El sistema desarrollado era bastante completo e incluía aspectos tales como gestión de servicio a cuartos, actividad telefónica, front desk, estacionamiento, lavandería, cajas de seguridad. El gerente de sistemas, llamémoslo Pedro, era el creador del sistema —literalmente— y me mostró lo que había hecho hasta ese entonces. Atinadamente me mostró la funcionalidad en los lugares donde las acciones se llevaban a cabo. Por ejemplo, me llevó al front desk para mostrarme las operaciones que se llevan a cabo ahí y la manera en que el sistema era usado. El tono de su voz durante las explicaciones cambiaba de orgullo a frustración y viceversa. Pedro eventualmente dijo: “no entiendo por qué los empleados cometen tantos errores al usar el sistema si todo está claro, y tampoco por qué me llaman a todas horas del día y de la noche con preguntas innecesarias”. Pedro estaba en lo cierto en cuanto a que la mayoría de los problemas realmente no existían, y en cuanto a que la mayoría de los problemas eran por error humano. Su convicción era que el personal no sabía cómo usar computadoras adecuadamente. Mi conversación con Pedro ese día comenzó frente a un pizarrón en una sala de juntas, donde él dibujó un diagrama mostrando su estrategia de automatización, incluyendo lo que ya se ha hecho y las perspectivas. Sus planes eran razonablemente sólidos desde el punto de vista técnico. Algunos aspectos que no me gustaron fueron el enfoque reactivo y la falta de atención a la calidad, así como falta

de atención a los usuarios. Pedro consideraba que sus sistemas han agregado mucho valor debido al alto monto de automatización y la confiabilidad del código. Sin embargo, los usuarios no estaban satisfechos. Algo faltaba ... Pedro me llevó alrededor del hotel para mostrarme las diferentes aplicaciones en el lugar donde son utilizadas y con datos vivos. Comenzamos en la zona de registro en el lobby, de ahí las operaciones de uso directo por los clientes, las operaciones a nivel de servicios, y finalmente infraestructura. Yo estaba sorprendido en dos sentidos opuestos. Por un lado, el sistema era muy completo en términos del alcance y profundidad de su funcionalidad. Sin embargo la usabilidad del sistema era bastante mala, consistía en un gran conjunto de ventanas apiladas, todas con apariencia similar, sin una secuencia intuitiva, y con poca tolerancia a error humano. Incluso hubo ocasiones en las que Pedro mismo tuvo que hacer una pausa para determinar el estado de la aplicación y evitar cometer un error mientras me explicaba la funcionalidad. Entendí por qué los empleados del hotel estaban teniendo tanta dificultad con los sistemas y que Pedro fuera requerido continuamente. Parecía ser que Pedro no se daba cuenta de las causas raíz, pero admitió la necesidad de mejora una vez que se las señalaba. Un área de mejora importante era la calidad; y con eso no quiero decir necesariamente que los sistemas tenían muchos defectos sino más bien que la usabilidad necesitaba más trabajo. La parte que faltaba era un diseño adecuado de la interfase de usuario. La funcionalidad de las aplicaciones era definitivamente adecuada, pero el mal diseño de la interfase de usuario hacía que la funcionalidad fuera de poco valor ya que los usuarios confrontaban todo tipo de retos que resultan en retrasos, errores, frustración, y hasta abandono. El lenguage de una interfase de usuario debe tener coherencia estructural con enfoque en facilidad de uso sin perdida de funcionalidad. Dejemos a un lado el caso de automatización de hoteles y consideremos un producto de consumo. Usted está buscando por un nuevo teléfono celular y pasa algún tiempo viendo diferentes modelos, buscando el que mejor satisface sus necesidades. Digamos que termina con tres para escoger. Uno de ellos es de bajo precio pero no ofrece toda la funcionalidad que desea; podemos dar ese por eliminado. Los otros dos aparatos tienen todas las características que necesita, tienen el mismo nivel de calidad, y el precio entre ellos es tan cercano que es irrelevante en la decisión. ¿Cuál escogería? El que le gusta más desde el punto de vista de diseño. 43

www.sg.com.mx |

uno nuevo (ver Figura 3). Este triángulo tiene calidad como uno de los tres aspectos que considerar. El segundo aspecto son, sin sorpresa, las restricciones: costo, tiempo, y alcance, que deben ser gestionadas de manera tal que se maximicen la calidad y el valor esperado. El tercer aspecto es el mas importante: el valor, el cual es la medida de satisfacción del usuario porque el producto o servicio le da lo que realmente desea y necesita. Ver Figura 3. Cuando leí sobre esta propuesta de Highsmith estuve placenteramente sorprendido y definitivamente concuerdo con ella. Un producto exitoso es aquel que provee el valor más alto posible al cliente. El beneficio para la empresa es la recurrencia de clientes y los inversionistas felices.

Software Guru

››Un producto exitoso es aquel que provee el valor más alto posible al cliente.


.Prácticas Agilidad

››Propongo que el diseño tenga un lugar explícito en la gestión de proyectos de tecnología.

Es decir, aquel con el que usted se sentirá mejor sacando de su bolsillo para mostrarselo a sus amigos. Muy probablemente usted escogería el que le gusta más, aún si tuviera mayor costo. ¿Por qué? Porque el diseño innovador le importa a los consumidores y están dispuestos a pagar más por el. El diseño innovador es importante para los usuarios, tanto como el valor y la calidad adquirida. Poner el diseño bajo la sombrilla de valor le daría menor importancia de la que de hecho tiene—similar a cómo la importancia de la calidad disminuiría si la ponemos bajo la sombrilla de valor. W. Edwards Deming, quien fue altamente influencial en el desarrollo de lo que actualmente conocemos como Lean, enfatisó la importancia de prestarle atención a tres aspectos: sistemas, gente, y la mejora integral (la perspectiva holística). El pensamiento Lean nos dice que debemos prestar particular atención al valor entregado al cliente, tanto interno como externo. Habrá quienes puedan argumentar que el diseño cae dentro de la categoría de valor, o de calidad. Sin embargo, mi opinión es que eso equivaldría a lo que el triángulo de proyectos hace con la calidad, dándola como implícita. Adicionalmente, Lean pone un gran énfasis en el factor humano (lo que Taiichi Ohno llama “autonomación” o automatización inteligente), simplemente que en lugar de la perspectiva de humanos controlando un flujo de procesos de manufactura, aplicamos el concepto como la saValor

Calidad

Restricciones Diseño

tisfacción de usuario interpretada como la motivación que tiene de usar un producto o servicio, más allá del valor que le provee su funcionalidad. Tomando en cuenta esto, yo propongo que el diseño tenga un lugar explícito en la gestión de proyectos de tecnología, una vista que transforma el triángulo de Highsmit en un prisma, como se muestra en la Figura 4. Nótese que el valor está en la cima porque continúa siendo el aspecto central a considerar. Ver Figura 4. La mayoría de ustedes han de recordar la guerra de los reproductores de música digital poco después de que ésta tecnología fue introducida. La competencia era furiosa y no había un ganador claro que estuviera como líder, hasta que Apple introdujo el iPod. Para ese entonces yo ya había adquirido un reproductor que tenía más características que el iPod y era más barato. Sin embargo, todos mis amigos que adquirieron iPods me dijeron que no les importaba si mi reproductor era “mejor”. Esto muestra como los clientes pueden llegar a darle mayor importancia al diseño y facilidad de uso que a la funcionalidad o el costo. El diseño no está limitado a la interfase de usuario. Se refiere a encontrar nuevas maneras de hacer cosas tales como crear herramientas, la generación de procesos de desarrollo de software, las estrategias de gestión de proyectos, las actividades relacionadas a calidad, etcétera. El diseño innovador puede contribuir a la reducción de costos, por ejemplo, mejorando la eficiencia de nuestras herramientas y procesos. Lo que deseamos lograr es una evolución continua de la empresa y de los productos o servicios que generamos para mantener a nuestros clientes y empleados felices, y para mantenernos competitivos. Pedro se tiene que enfocar en mejorar el diseño de sus sistemas de automatización de hoteles si desea darle a sus usuarios el valor correcto. Esto también le traerá beneficio a él mismo, no solo porque dará un mejor servicio sino porque las llamadas de soporte se reducirán significativamente.

Referencias: [1] “Project triangle”, Wikipedia. http://bit.ly/sg29r4 [2] J. Hisghmith. Agile Project Management. Addison-Wesley, 2010.

Figura 4. El prisma lean-agile.

[3] “Autonomation”, Wikipedia. http://bit.ly/sg29r5

44


45


.COLUMNA Programar es un Estilo de Vida

Historia y futuro

de la interfaz hombre-máquina ¿qué tanto hemos avanzado?

F

recuentemente nos mostramos maravillados de cómo ha avanzado la manera en que interactuamos con la computadora en los últimos años, sin detenernos a pensar cuánta verdad hay –o no– detrás de esta afirmación. A fin de cuentas, hace apenas unos años el uso de las computadoras era verdaderamente limitado, mientras que hoy en día están en todos lados, y parecería que cualquiera es capaz de manejarlas (al menos, en sus funciones básicas). Yo sostengo que esta es una afirmación falsa, basada en las apreciaciones de gente ajena a nuestro campo, y producto más de la popularización que de un verdadero cambio cualitativo. Claro está, al poner en duda lo universalmente aceptado, recae en mí sustentar mi afirmación. Vamos, pues, con un breve recorrido de cómo ha evolucionado dicha interacción hasta el día de hoy.

Los inicios

Si tomamos como punto de partida a la primer computadora electrónica ENIAC en 1943, podemos decir que éstas computadoras no tenían nada que hoy reconoceríamos como interfaz —tanto instrucciones como datos eran introducidos directamente a las ubicaciones de memoria al iniciar la ejecución a través de tarjetas perforadas, y eran leídos de los registros del procesador, mostrándolos directamente en un volcado binario, hacia tarjetas o cintas perforadas, que debían ser traducidas a algo legible empleando dispositivos mecánicos independientes.

Teletipos y terminales

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

El primer avance resultó en una dirección obvia, pero facilitó tremendamente tanto el uso como el aprovechamiento de los resultados: La interfaz textual. No hablo aún de una pantalla, sino de la adecuación del teletipo, híbrido de teclado e impresora, que comenzó su existencia como un reemplazo más ágil y confiable que el código Morse para la comunicación a larga distancia. El teletipo permitía ingresar programas mucho más complejos a memoria, lo cual llevó a que naciera y popularizara un concepto que nos parece muy ajeno a las interfaces de usuario: el de los archivos. Aparecieron los primeros editores (obviamente, mucho más espartanos de lo que conocemos hoy, y orientados a trabajo línea por línea), y como consecuencia directa, los programas pudieron comenzar a presentar una

mucho mayor complejidad —llevando a la introducción de bibliotecas de código y a las diversas abstracciones y estrategias para manejar la complejidad. La transición del teletipo a la pantalla no es tan simple como podría parecer. Dejando de lado la mera complejidad técnica (relativa al estado del arte de la época) de crear dispositivos independientes y de relativo bajo costo capaces de mantener comunicación con la computadora central generando la imagen en pantalla del texto que iban recibiendo —lo cual implicaba que tuvieran una memoria interna, aunque mínima para estándares modernos–, las ventajas de tener terminales con cierto grado de inteligencia se hicieron obvias y comenzaron a aparecer terminales con diferentes estándares capaces de reposicionar el cursor o de desplegar texto con atributos (negritas, subrayado, colores), caracteres semi-gráficos, hasta verdaderas capacidades de formularios como las que manejaban las IBM 3270, que comenzaron a permitir desacoplar la lógica de un programa de su presentación tal como hoy lo vemos en los navegadores Web. Las terminales además fueron centrales para la aparición de computadoras multitarea/multiusuario. Quienes gustamos de utilizar sistemas Unix utilizamos como una de nuestras herramientas más poderosas al emulador de terminal, o como le dice el resto del mundo, la ventana negra. Si bien las terminales como producto de hardware hace mucho tiempo que ya no existen para propósitos prácticos, la interfaz de línea de comandos programable permite un grado de expresividad tan rico que no ha podido ser reemplazado por ningún otro medio.

WIMP: Window, Icon, Menu, Pointer

En diciembre de 1968, en los laboratorios de Palo Alto de Xerox, Douglas Engelbart presentó la que al día de hoy se conoce como la madre de todas las demos: La introducción de la interfaz gráfica básica que seguimos utilizando hoy en día, manejada a través de un apuntador controlado por un mouse, presentando ventanas para la visualización de las diferentes aplicaciones en uso (o vistas de una misma aplicación), iconos representando atajos a las acciones de sistema disponibles, y con un menú como elemento estándar presentando las acciones relacionadas con cada aplicación activa. Y, claro, para la entrada y manipulación de datos dentro de cada aplicación, el dispositivo primario seguirá siendo el teclado. 46


.COLUMNA

Programar es un Estilo de Vida

“no ha habido cambios

Interfaces de propósito acotado

Posiblemente el mayor cambio en las interfaces de usuario viene de que, cada vez con mayor fuerza, tenemos dispositivos con gran poder de proceso de cómputo sin un formato de computadora de propósito general. No me parece casualidad que hoy veamos con entusiasmo a las interfaces innovadoras presentes en teléfonos celulares o consolas de videojuego — estamos llegando al punto en que vamos encontrando formas muy convenientes de interactuar con computadoras de propósito acotado, aunque éstas no sean adecuadas para aquellas de propósito general. Ilustro esto con dos ejemplos: Con la generación actual de consolas de videojuegos, Nintendo se anotó el mayor éxito al introducir su Wii: Una consola de relativamente bajas prestaciones y muy inferior a su competencia en las áreas en que típicamente competían, la capacidad gráfica. Sin embargo, su apuesta más fuerte fue hacia una interfaz novedosa: Los controles basados en acelerómetros, que permitieron modelar diferentes actividades como nunca antes se habían presentado en videojuegos. Por otro lado, el iPod de Apple introdujo una interfaz largamente prometida, basada en una pantalla táctil de tamaño reducido, y orientada a equipos destinados al entretenimiento, a la consulta rápida de información, y especialmente popularizada a través del teléfono aparecido poco tiempo después. Sin embargo, si bien esta interfaz ha resultado natural para una gran cantidad de personas, resultaría indudablemente impráctica y antiergonómica para una computadora de propósito general. Y claro, seguiremos viendo nuevas interfaces dedicadas a tareas específicas — las más exitosas serán, sin duda, las más transparentes: Las que se integren de manera transparente a las tareas, mejorando nuestra vida sin requerir que reparemos siquiera en su existencia. Por ejemplo, ¿cuánta gente está consciente de la cantidad de cálculos que se realizan en un automóvil? ¿No es acaso uno de los mejores ejemplos de cómputo ubicuo que se ha insertado silenciosamente en nuestras vidas?

Otras ideas

computadoras de uso general, sin embargo todavía no han madurado suficiente o sólo son aplicables en contextos muy específicos. Algunos ejemplos son: Pantallas táctiles. Desde mediados de los 1980, Hewlett-Packard introdujo su línea de computadoras HP110, con una pantalla sensible al tacto. Esta interfaz prometía ser más ágil y natural que el mouse (que requiere un nivel de coordinación no trivial). Y si bien esta interfaz tuvo un moderado éxito en áreas como los kioscos (cajeros automáticos, estaciones de servicio), nunca fue del todo aceptada para uso en computadoras de propósito general por lo poco ergonómico que resulta tener que levantar la mano constantemente para apuntar la pantalla. Reconocimiento de voz. La ciencia ficción de los 1970 (piensen en HAL de 2001) presentó a la voz como la principal forma de interacción hacia la computadora (y un combinación de voz y despliegue en pantallas para los resultados). Se han ensayado interfaces de reconocimiento de voz, pero su uso todavía es limitado, principalmente por la dificultad que presenta el lenguaje humano. Además de esto, fuera de dar comandos puntuales, “dictar” un texto a la computadora no es una tarea trivial: al redactar un texto, el proceso normal que seguimos implica ir hacia atrás y hacia adelante, corrigiendo el texto, reemplazando y reformulando las frases. Una interfaz de dictado debe distinguir el texto de las órdenes, lo cual requerirá un entrenamiento complejo. Manipulación 3D. Presentar la información como objetos del mundo real, manipulables a través de guantes o gestos, aparece como muy atractivo. Podemos ver un ejemplo muy cuidadosamente desarrollado de una interfaz basada en estas ideas en la película Minority Report. El poder de procesamiento y el hardware especializado para hacer este tipo de manipulaciones, sin embargo, no justifica –al día de hoy– el costo que significaría. Hay aplicaciones, claro, para las que este costo sí se justifica; en México, la Dirección General de Servicios de Cómputo Académico de la UNAM cuenta con la computadora especializada Ixtli para simulación y visualización, y si están interesados en conocer esta tecnología pueden solicitar visitas guiadas donde se demuestra su funcionamiento. Claro, hay muchas más ideas en el tintero, y en los años por venir seguro se acumularán. Sin embargo, a pesar de las innovaciones que se han dado en dispositivos de uso específico, en el caso de las interfaces para interactuar con computadoras de uso general no ha habido cambios substantivos en los últimos 40 años. Me resisto a creeer que esto sea porque el modelo actual sea perfecto; tenemos la tarea de proponer, adoptar y evaluar nuevos modelos de interacción.

››Por Gunnar Wolf

Han habido, claro, otras muchas propuestas de interfaces para 47

www.sg.com.mx |

La demostración de Engelbart incluía ejemplos de aplicaciones verdaderamente revolucionarias en esa época, como la videoconferencia, el correo electrónico, el hipertexto o un editor colaborativo de tiempo real. Aunque ha habido refinamientos sucesivos y grandes cambios en la parte estética de esta propuesta, para las computadoras de uso general seguimos utilizando este esquema de interacción —con más de cuarenta años de antigüedad. Es por ello que no considero que hemos avanzado mucho en este ámbito.

Software Guru

sustantivos en los últimos 40 años ”


.COLUMNA Prueba de Software

Pruebas de Usabilidad en Sitios Web evaluando la experiencia del usuario

L

a usabilidad se ha convertido en un factor importante de diferenciación en las aplicaciones de software. Como usuarios, cada vez le damos un mayor peso a este elemento. Las pruebas de usabilidad se vuelven cada vez más importantes, a medida que los usuarios buscan mayor satisfacción respecto a facilidad de uso, navegabilidad, adaptabilidad, simplicidad, estética.

¿Qué entendemos por usabilidad?

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

Sandra Berenice Ruiz Eguino es consultora de e-Quallity en proyectos de mejora de organizaciones de prueba de software. A lo largo de su trayectoria profesional ha actuado como ingeniero de pruebas, líder de proyecto, administradora de proyectos de pruebas, y Directora de Operaciones. Ha sido profesora de la UAG, institución en la que realizó sus estudios de Maestría en Ciencias Computacionales.

Si bien es cierto que el término “Usabilidad” no tiene una validez como tal según la Real Academia de la Lengua Española, es ya bastante conocido dentro del medio de TI. De acuerdo con lo señalado en el estándar ISO/IEC 25010 dentro del cual se identifican características de la calidad del software entre las cuales se encuentra la usabilidad, ésta se define como: “la capacidad de un producto de software para ser entendido, aprendido, utilizado y atractivo hacia el usuario, cuando se usa bajo condiciones específicas”. Es decir que la usabilidad comprende a su vez una serie de atributos del software relacionados con el esfuerzo necesario para su uso, y la valoración individual de tal uso; los atributos que se mencionan tienen que ver con el aprendizaje, la comprensión, la operatividad, y lo atractivo del software. Al igual que el aspecto funcional, la usabilidad se debe considerar desde el inicio de cualquier proyecto de desarrollo de software. Intentar hacerlo solamente hacia el final del proyecto puede traer graves consecuencias ya que implicará modificar si no todos, sí una gran parte del diseño de interfaces del sistema.

Pruebas de usabilidad

Al igual que con otros aspectos, es importante probar para validar el nivel de usabilidad que muestra un producto de software. Las pruebas de usabilidad se suelen llevar a cabo observando a las personas mientras tienen bajo uso el producto a probar, y a su vez este grupo de personas es seleccionado considerando ciertas características, según las condiciones que se desean valorar, categorizándolos por ejemplo como usuarios expertos, medios o inexpertos.

Las métricas de usabilidad suelen parecer subjetivas, pues requieren de un juicio individual que dependerá de las circunstancias, del objeto a evaluar o las condiciones bajo las cuales es usado en su valoración. Sin embargo, existen estándares internacionales, normas, guías de comportamiento respecto a los cuales evaluar, así como parámetros que brindan una pauta sobre qué tan “usable” o no es un aplicativo web. Es deseable (mas no indispensable) contar con un laboratorio de usabilidad para llevar a cabo este tipo de pruebas especiales. El inconveniente es el alto costo que esto puede representar por el equipo que debe montarse para registrar/ grabar en video (preferentemente) las actividades de los usuarios y con diferentes cámaras, a fin de ubicarlas desde diversos ángulos, asegurando poder captar las reacciones del usuario durante su experiencia de uso del sistema.

Aspectos de usabilidad a evaluar

Para llevar a cabo pruebas de usabilidad, será importante establecer algunas guías clave que permitan orientar el rumbo del ingeniero de pruebas, permitiéndole capturar información relacionada con aspectos como los que describimos a continuación. Facilidad de aprendizaje: • Es deseable que la interfaz sea simple, con funcionalidades accesibles y bien definidas, en general fácil de aprender y de utilizar. • Asegurarse de que se utilizan guías de estilo, que permitirán alcanzar la consistencia del look & feel del sistema. • Los usuarios deben ser capaces de trabajar en el sitio web la primera vez sin ningún tipo de ayuda o aprendizaje previos. • Asegurarse que se subrayen los hipervínculos y se maneje el estándar azul como el color para los enlaces no visitados. • Validar que en las barras de navegación el diseño sea lo suficientemente claro como para que el usuario sepa dónde hacer clic. • Cuidar que no se utilicen los fondos oscuros y los colores llamativos (a menos que sea la función u objetivo primordial de la página web). Evitar además subrayar las palabras, puesto que un usuario podría confundirlas con hipervínculos. 48


.COLUMNA

Prueba de Software

“es deseable contar

Flexibilidad: • Asegurarse que el usuario no tenga que intercalar continuamente entre las acciones de hacer clic y escribir. • Validar que al usuario se le solicite escribir lo menos posible, máxime cuando existen otras alternativas como un botón de selección o un enlace, lo cual puede además evitar la captura incorrecta de datos. Tiempo de respuesta: • Considerar que el tiempo máximo de descarga de una página no sobrepase el máximo aceptable de acuerdo al tipo de operación, considerando una velocidad de conexión promedio de los usuarios. Reducción de la carga cognitiva: • Asegurarse de contar con páginas ligeras en contenido no sobrecargándolas con demasiado texto. • Validar que el usuario pueda acceder a cualquier página en la menor cantidad posible de clics de ratón, preferentemente menos de tres. Recuperabilidad: • Asegurarse de considerar los errores del usuario; el sistema debiera incluir una retroalimentación apropiada para informar al usuario y que éste pueda tomar las acciones correspondientes. • Asegurarse que la página web no sólo muestre mensajes de error útiles, sino que permita al usuario saber dónde está ubicado dentro del sistema, mostrando rutas de navegación.

Existe una gran variedad de métodos para evaluar la usabilidad de un sistema de software, o en este caso un sitio web. Entre los más comunes están los siguientes: • Observación en un entorno controlado centrándose en tareas concretas y removiendo la influencia de factores externos. • Observación y análisis de la interacción que lleva a cabo el usuario con ciertos módulos del sistema, con colaboración consciente del usuario. • Observación en el entorno natural. • Evaluación de la estética en general del sistema y en particular de todas las pantallas. • Grabación automática de ciertos escenarios en la interacción usuario-máquina (usualmente grabación en video dentro de un laboratorio con cámaras estratégicamente colocadas). • Entrevistas elaboradas especialmente sobre el uso de un sitio web en particular. • Logging automático en las aplicaciones para el análisis de duración de sesiones y patrones de acciones repetitivas. • Comparación con estándares de diseño y normas. • Uso de “expertos” para evaluar. • Aplicación de cuestionarios.

Tips finales

Finalmente, para cerrar esta entrega, vale la pena mencionar que, al momento de evaluar la experiencia de usuario durante la navegación en sitios web, resulta conveniente considerar, además de los ya referidos métodos y aspectos de Usabilidad, una serie de tips o “lemas” interesantes enunciados por Brad Myers: • Si se ve diferente, debe hacer algo diferente. • Si se ve igual, debería hacer lo mismo. • Es más importante dar poder al usuario, no acelerar el “sistema”. • No sobrecargar los “buffers” del usuario. • Cada acción debería tener una reacción. • Todos cometemos errores, pero todos los errores deberían poder corregirse. • Entre más se hace algo, más fácil debería ser convertirse en experto. • Consistencia, consistencia, consistencia. • El usuario debe estar de buen humor al terminar. • Nada debiera dejarse simplemente “para explicarse en el manual”. • “Bonito/simpático” no son buenos adjetivos para un sistema. • El color es información. • Un gramo de buen diseño vale kilos de soporte técnico.

Referencias:

Buena Imagen y Estética: • Asegurarse que el sitio web brinda un entorno agradable, a través del cual se facilite el entendimiento de la información presentada.

[1] N. Bevan. “Quality in use: meeting user needs for quality”, Journal of Systems and Software, Vol 49, Issue 1. [2] B. Myers. “Overview of HCI Design and Implementation”. http://bit.ly/sg29r8

49

Software Guru

Accesibilidad: • Validar que sea incluido el manejo de las combinaciones con el comando ALT en las imágenes para hacer los sitios web más accesibles a los usuarios con capacidades diferentes. • Asegurarse de incluir orden tabular entre los campos para facilidad de navegación durante la selección ó captura obligada de datos. • Se recomienda que la página web maneje combinaciones de color tales que la lectura no sea difícil, y cuidar el uso de colores rojos y verdes para ayudar a los usuarios daltónicos. • Asegurarse sobre el uso de alto contraste y fuentes bastante legibles a fin de ayudar a los que tienen menor capacidad visual. • Validar que se permita al usuario controlar tipo y tamaño de las fuentes para una lectura más cómoda. • El sitio web deberá ofrecer contenido alternativo si las funciones de los scripts, applets y plugins no son accesibles.

Métodos de prueba para evaluar la usabilidad

www.sg.com.mx |

con un laboratorio de usabilidad”


.Fundamentos

Reflexión ››Por Josué Martínez

alterando objetos de forma dinámica

D

e acuerdo con la Real Academia de la Lengua Española, reflexión es la “acción y efecto de reflexionar”, en tanto que reflexionar es: “considerar nueva o detenidamente algo”. Por otro lado, Wikipedia describe la reflexión en informática como “la capacidad que tiene un programa de ordenador para observar y opcionalmente modificar su estructura de alto nivel”. La reflexión en la programación de software es la característica de un lenguaje que permite conocer su estructura de manera dinámica (en tiempo de ejecución).

// Imprime el valor de la propiedad System.out.println(propiedad.getName() + “=” + valor1); System.out.println( “Modificando valor de propiedad [“+propiedad.getName()+”]...”); //Establece el nuevo valor a la propiedad propiedad.set(objeto, args[2]); // Obtiene el valor de la propiedad Object valor2 = propiedad.get(objeto); // Imprime el valor de la propiedad System.out.println(propiedad.getName()+” = “+valor2); System.exit(0);

Ejemplo

El listado 1 muestra el código de un programa en java que tiene la siguiente funcionalidad: 1. Crear una clase del tipo que se proporcione en el primer parámetro. 2. Crear un objeto a partir de la clase creada en el punto anterior. 3. Obtener el valor de la propiedad indicada en el segundo parámetro. 4. Modificar el valor de la propiedad que se obtuvo en el punto anterior con el valor del tercer parámetro.

} catch (Exception e) { e.printStackTrace(); } // catch } // main } // EjemploReflexion Listado 1. EjemploReflexion.java.

package org.josuemb; import java.lang.reflect.Field; public class EjemploReflexion { @SuppressWarnings(“unchecked”) // Evita un warning al compilar public static void main(String[] args) { try { if (args.length < 3) { System.out.println(“Error en llamado\n”); System.out.println(“Sintaxis:”); System.out.println( “\tjava EjemploReflexion NombreClase NombrePropiedad Valor”); System.exit(1); }

El ejemplo EjemploReflexion funciona con cualquier clase. La única restricción (por sencillez en la programación) es que la propiedad a modificar sea de tipo java.lang.String. Para simplificar aún más la prueba se proporciona también la clase Cliente. Esta se muestra en el listado 2. package org.josuemb; public class Cliente { private String nombre; private String lugar;

System.out.println(“Creando clase [“+args[0]+”] de manera dinamica...”); Class clase = Class.forName(args[0]);

public String getNombre() { return nombre; }

System.out.println( “Creando objeto de tipo [“+clase.getName()+”] de manera dinamica...”); Object objeto = clase.newInstance();

public void setNombre(String nombre) { this.nombre = nombre; }

System.out.println(“Obteniendo propiedad [“+args[1]+ ”] del nuevo objeto de manera dinamica...”); Field propiedad = objeto.getClass().getDeclaredField(args[1]);

public String getLugar() { return lugar; }

// Es necesario establecer esta propiedad para acceder // a los campos de la clase directamente. propiedad.setAccessible(true); // Obtiene el valor de la propiedad Object valor1 = propiedad.get(objeto);

public void setLugar(String lugar) { this.lugar = lugar; } } Listado 2. Cliente.java.

50


.Fundamentos

››La reflexión nos permite conocer la estructura interna de una clase.

En caso de que se desee ejecutar el ejemplo con otra clase, la sintaxis sería: java EjemploReflexion [NombreClase] [NombrePropiedad] [Valor]

El resultado de la ejecución es el siguiente: $ java org.josuemb.EjemploReflexion org.josuemb.Cliente nombre Josue Creando clase [org.josuemb.Cliente] de manera dinamica... Creando objeto de tipo [org.josuemb.Cliente] de manera dinámica... Obteniendo propiedad [nombre] del nuevo objeto de manera dinamica... nombre=null Modificando valor de propiedad [nombre]... nombre=Josue

Versión Groovy

A continuación muestro el mismo ejemplo en el lenguaje Groovy. El concepto es el mismo, simplemente que las características de Groovy permiten que la sintaxis sea más sencilla. if(args.size() < 3 ) { println “””Error en llamado Sintaxis: groovy EjemploReflexion.groovy NombreClase NombrePropiedad Valor””” System.exit 1 } println “Creando clase [${args[0]}] de manera dinamica...” def clase = args[0] as Class;

class Cliente{ String nombre String lugar } Listado 4. Cliente.groovy.

Para ejecutar el ejemplo solo es necesario compilar la clase Cliente mediante el comando: groovyc EjemploReflexion.groovy

Y después ejecutar el Script EjemploReflexion mediante el comando: groovy EjemploReflexion.groovy org.josuemb.Cliente nombre Josue

En caso de que se desee ejecutar el ejemplo con otra clase, la sintaxis sería: groovy EjemploReflexion.groovy [NombreClase] [nombrePropiedad] [Valor]

El resultado será equivalente al del ejemplo con java.

Conclusión

La reflexión es una capacidad muy útil que proveen la mayoría de los lenguajes de programación modernos como Java, Groovy, Python, Ruby, C#, entre otros. Nos permite conocer la estructura interna de una clase, sus propiedades, constructores, métodos (parámetros de los mismos), ejecutar los métodos, e incluso obtener y modificar información de miembros privados de una clase. Todo esto sin necesidad de tener el código fuente ni la documentación de una clase. También por medio de la reflexión podemos lograr que un programa pueda adaptarse dinámicamente a distintas situaciones, en tiempo de ejecución.

println “Creando objeto de tipo [$clase.name] de manera dinamica...” def objeto = clase.newInstance() println “Obteniendo propiedad [${args[1]}] del nuevo objeto de manera dinamica... println “${args[1]}=${objeto[args[1]]}” //Establece el nuevo valor a la propiedad objeto[args[1]] = args[2] println “Modificando valor de propiedad [${args[1]}]...” objeto[args[1]] = args[2] println “${args[1]}=${objeto[args[1]]}”

.BIO Josué Martínez Buenrrostro es Sr. Software Architect Java en Quarksoft. Estudió Ing. en Comunicaciones y Electrónica en el IPN y ha desarrollado software profesionalmente por más de 14 años. Es un usuario y promotor activo del Software Libre (FLOSS), y considera que la industria del software puede ser un motor de desarrollo para México con un alto potencial que aún no ha sido explotado. @josuemb

Referencias: [1] “Reflexión (informática)”, Wikipedia. http://bit.ly/sg29r1 [2] G. McCluskey. “Using Java Reflection”, Sun Developer Network. http://bit.ly/sg29r2 [3] D. Sosnoski. “Java Programming dynamics”, IBM developerWorks. h

Listado 3. EjemploReflexion.groovy.

51

Software Guru

java EjemploReflexion org.josuemb.Cliente nombre Josue

package org.josuemb

www.sg.com.mx |

Para ejecutar el ejemplo solo es necesario compilar ambas clases y ejecutarlas mediante el comando:


.TECNOLOGÍA Infraestructura

Gestión de Infraestructura ››Por Armando Galeana

E

elevando la madurez

n la mayoría de las organizaciones de TI, el costo de la adquisición y gestión de infraestructura absorbe la mayor parte de su presupuesto. El gasto excesivo se debe a la complejidad de la infraestructura, aplicaciones redundantes, alta personalización y soporte para una amplia gama de sistemas. A su vez, se espera que la organización de TI mejore los niveles de servicio, y agregue nuevos servicios al mismo tiempo que satisface la fuerza de trabajo y minimiza los riesgos. Los analistas de la industria coinciden en que el esquema tradicional de aquisición y mantenimiento de herramientas para gestión de infraestructura de software están llegando a su fin. Esto se debe a la madurez de la próxima generación de las soluciones de infraestructura construidas sobre una base en ITIL v3 y entregada como Plataforma como Servicio (PaaS) o Software como Servicio (SaaS). Esto reduce los costos de inversión en más de un 80% en licencias de software convencional y permite personalizaciones configuradas por el usuario. Mientras que las herramientas son una parte clave de la mezcla, se necesita una solución con buena arquitectura y artesanos calificados para llevar la visión a una buena realización. La gestión integrada de infraestructura es sobre todo la transformación de la infraestructura y la ejecución tanto de la visión y la madurez necesaria para que TI se convierta en el socio de negocios de la empresa que requiere para desarrollar una ventaja competitiva sustentable, aprovechando a TI como un arma.

estrechamente integrado con una o dos torres de servicio. Esto produjo importantes mejoras en las tasas de primera resolución (más del 90%), mientras se reducían significativamente los altos costos de entrega de 2° nivel. El cambio en el trabajo obtuvo un ahorro significativo de costos en soporte y aumentó la productividad del usuario final en virtud de la disminución de tiempo de inactividad en la espera de la restauración del sistema o el uso de aplicaciones. El costo y la complejidad de la infraestructura en la mayoría de las empresas está inhibiendo la agilidad de la entrega completa, rendimiento y ahorro del costo. Una completa reingeniería de procesos a través de todos los límites funcionales es necesaria en TI para lograr la calidad del servicio y el rendimiento que la empresa requiere. Este enfoque holístico es el catalizador que impulsa el cambio evolutivo de la actividad de gestión integrada de infraestructura con la innovación. Entregar este nivel de rendimiento y la madurez que requiere la integración de nuevos conjuntos de herramientas que soportan todos los procesos de ITIL v3 no es trivial. Tras una búsqueda exhaustiva, se han identificado un conjunto de herramientas de referencia que contiene los componentes clave y necesarios para construir una solución completa y aprovechar plenamente los resultados previstos en las formas anteriores de gestión Integrada de Infraestructura.

Desafío del día

Conforme se busca mejorar la madurez de su gestión de TI, las organizaciones deben resolver cuestiones que tienen que ver con estandarización, políticas, aspectos cruzados de los departamentos. Hacia los niveles más avanzados de madurez está el enfoque real al negocio, donde la infraestructura está completamente alineada y bajo control, y su enfoque se centra en perfeccionar su infraestructura y procesos para alinearse con la estrategia del negocio y contribuir en el crecimiento del negocio. La gestión integrada de infraestructura se trata de colaboración, asociación estratégica con nuestros clientes y un compromiso de avanzar en su madurez de infraestructura. Es un viaje que podemos tomar juntos, y nuestro mutuo objetivo es lograr el nivel de desarrollo que se requiere y que entregará el valor de negocio más grande.

A medida que venimos de años muy difíciles en términos económicos, nos enfrentamos a desafíos en la reducción de costos para el crecimiento de nuestros negocios. Las condiciones económicas han afectado cada tejido de las empresas y, en particular, a las TI. La recesión ha aumentado la necesidad e importancia para los CIOs de reducir los costos al mismo tiempo que mejoran la calidad y disponibilidad de los servicios a sus usuarios. Más allá de esto, se les ha solicitado en aumento a los líderes de TI demostrar cómo pueden ayudar con la mejora de resultados de negocio y mejorar así la competitividad de las empresas. Desafortunadamente, enfrentar este desafío con inmadurez e infraestructura muy compleja es como tratar de ganar una carrera de Fórmula Uno con una minivan –—ninguna está a la altura del desafío.

Gestión integrada de la infraestructura

La gestión de infraestructura integrada fue originalmente definida por CompuCom en 2003 para describir la integración de herramientas, automatización y tecnologías de auto-sanación/auto-asistencia. El objetivo en aquel entonces era reducir los costos de apoyo en la infraestructura por aprovechamiento de clase mundial en el centro de servicio

Elevando la madurez de la infraestructura

El desarrollo de una ruta incluye: • Identificar sus actuales puntos de dolor y objetivos – estabilizar metas claras y objetivas para mejorar y establecer plazos realistas para lograr los objetivos. • Identificando su actual nivel de madurez en la infraestructura – Realizar una evaluación de la madurez de referencia que incluye una evaluación completa de los costos, métricas y tecnología, y resultados de punto de referencia con la ayuda de expertos 52


en los estándares de la industria. Obtener ayuda experta dentro de los recursos externos en el trazado y comparación de su organización contra una amplia base de datos en la evaluación. • Establecer una revisión clara para el futuro estado de tu TI – Obtener asesoramiento experto de un proveedor líder de servicios para ayudar a desarrollar un programa y una hoja de ruta para un progreso.

Conclusión

La transformación y cambio sustentable es absolutamente posible, y está a su alcance. Sin embargo, no es ningún secreto que las personas y organizaciones en el pasado han retrazado proyectos de este tipo por intentos fallidos de los demás. Es más fácil no hacer nada y evitar correr el riesgo de fracasar en un cambio radical en la organización. Sin embargo, este cambio es una gran oportunidad para todas las empresas hoy en día. Brinda un potencial a cualquier organización de TI para convertirse en un catalizador de negocio orientado al cambio de la obtención de beneficios transformacionales en términos de: reducción de costos, mejora del rendimiento, increíble calidad, y más importante, la fuerte entrega del valor empresarial. Este trabajo muestra que la gestión integrada de infraestructura tiene la capacidad de simplificar drásticamente a la empresa, tanto en TI como en sus operaciones, mientras que al mismo tiempo mejora la comunicación entre TI y el negocio a través de la innovación y la aplicación exitosa de nuevas tecnologías. .BIO Armando Galeana es Gerente de Desarrollo de Negocios en CcompuCom, empresa multinacional especializada en la gestión de infraestructura de TI.


.TECNOLOGÍA Gadgets

Serie Z Sony Vaio

Este verano Sony presentó en México siete nuevas series de computadoras VAIO que abarcan una amplia gama de perfiles, desde computadoras para el hogar hasta computadoras para profesionistas y ejecutivos. De las distintas series la favorita del staff de SG fue la serie Z, la cual es fabricada con doble capa de fibra de carbono y aluminio, entregando lo más avanzado en rendimiento inteligente y poder, en un cuerpo compacto y ligero. Este equipo cuenta con un sensor de luz ambiental que ajusta el brillo de la pantalla y el teclado se enciende automáticamente para tener una mejor visibilidad en lugares oscuros. Cuenta con disco duro de estado sólido, y el sistema de tarjetas de gráficos Hybrid Graphics System que detecta de forma automática la tarjeta de gráficos adecuada según la actividad que se esté desarrollando en ese momento, brindando así el mejor balance de desempeño y ahorro de energía.

3M

Filtros de privacidad ¿Alguna vez te has sentido inseguro porque otros vean la información que se despliega en la pantalla de tu computadora, ya sea en la oficina o en un Starbucks? Hoy en día ya no solo basta “regañar con la mirada” a los fisgones, es necesario tomar precauciones. Por ello y para disminuir los riesgos de una información a la vista, 3M ha desarrollado estos filtros de privacidad para computadora que cuentan con una tecnología de micropersianas patentada, la cual permite que solamente quien se encuentra directamente frente a la pantalla pueda ver los datos del monitor. Se puede disfrutar de una pantalla nítida y brillante, con menos reflejo y sin imágenes borrosas, mientras que a los lados la pantalla se ve en negro e impide la visión a las personas que están alrededor. Estos filtros funcionan tanto para computadoras portátiles como monitores de escritorio.

Livescribe

Pulse smartpen La pulse smartpen parece una pluma normal, pero es mucho más. Con ella podrás escuchar, mirar y comprender a quien esté hablando mientras tomas apuntes, con la confianza de que tu pluma grabará todo por ti. Después sólo debes tocar con la pluma la palabra o imagen de tus apuntes y podrás oír lo que se grabó en el instante que estabas escribiendo o dibujando eso. Puedes sincronizarla con tu computadora y transferir todas las notas y audio. Verás en tu pantalla una copia exacta de lo que escribiste o dibujaste, podrás escuchar las grabaciones en alta calidad, imprimirlas, exportarlas a PDF o como una imagen o archivo de audio y así compartir lo que quieras, con quien quieras o enviar vía internet. No importa si tienes fea o bonita letra, este pequeño gadget la analizará y reconocerá tus trazos para nunca fallarte; Al ser una computadora puede resolver operaciones matemáticas desde una simple suma hasta cálculos científicos. El cuerpo es de aluminio y cuenta con un peso de 36 gramos. 54


Directorio Gartner www.gartner.com/mx/econit

Pág.3F

IDC

Pág.53

IT Institute www.iteraprocess.com

Pág.39

Neubox

Pág.09

Sequal Solutions

Pág.07

www.idclatin.com

www.neubox.com

www.sequal.com.mx

Tecnotam

www.tecnotam.com

Pág.21

T-Systems www.t-systems.com/enable

Pág.4F

SG Campus www.sgcampus.com.mx

Pág.45

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


.COLUMNA Invitada

Mente de Obra

La Importancia de Formar Calificada en búsqueda de una reforma educativa de fondo

E

l sector público y la iniciativa privada hablan frecuentemente sobre la necesidad impostergable de generar plazas de empleo en el país. ¿Pero quién se ha dado a la tarea de enfatizar la pertinencia de formar talento que responda a las exigencias internacionales? Es de especial importancia que la iniciativa privada e instituciones de educación superior conjunten esfuerzos con un sentido estratégico, para atender las necesidades de formar mente de obra en las áreas que la actividad económica demanda. La industria de las TI en México tiene proyectado crecer de una manera im-

“México debe alinear su política educativa a las exigencias que

impone la competitividad.”

portante en los próximos cinco años, lo cual implica incorporar a nuevos proyectos, recursos humanos calificados. Como en su momento lo fue el sector maquilador, hoy en día el sector de tecnologías de información es una plataforma estratégica para el desarrollo económico de muchos países. Como ejemplo la India, cuya industria de las TI ha crecido en promedio 50% durante la última década y actualmente equivale aproximadamente al 10% de su PIB. Este explosivo crecimiento ha sido posible, en gran parte, por el rápido y persistente incremento de las exportaciones de software. Además, el gobierno de India se ha mostrado altamente receptivo al capital extranjero para mantenerse competitivo. Sin embargo, México tiene en sus manos la gran oportunidad de captar mucho más interés de empresas asentadas en Estados Unidos, Canadá y Europa principalmente. No sólo por su posición geográfica estratégica o por su zona horaria, también por el desarrollo de su industria de TI en lo particular, así como por los proyectos conjuntos donde convergen iniciativa privada, universidades y gobierno. .BIO Durante los años más recientes, mucho más eviCarlos Castilla es Director General en Neoris de México. dente en el último trienio, las compañías estadouniActualmente está a cargo de la generación de negocios denses han encontrado en México una valiosa mina de y supervisión de procesos empresas y mente de obra calificada, bilingüe, con exde calidad para la Unidad México, participando en la periencia en el desarrollo de software y en la prestación creación de estrategias de Nearshore para el mercado de servicios de Business Process Outsourcing (BPO). de Estados Unidos. Sus funEste contexto ha permitido al sector crecer quizá más ciones también incluyen la dirección de 3 de los 6 Centros que ninguna otra industria, y se proyecta que durante Globales de Soluciones, en Budapest, Culiacán y Monteel presente año reportará un dinamismo positivo: una rrey, así como la coordinación de 1,800 consultores.de Estasa de crecimiento estimada del 8%, exportaciones tados Unidos. Sus funciones calculadas de software y aplicaciones por $4 mil 230 también incluyen la dirección de 3 de los 6 Centros Globamillones de dólares, un mínimo de 2 mil 350 empreles de Soluciones, en Budapest, Culiacán y Monterrey, sas, 10% de ellas con certificados de calidad; 32 estados así como la coordinación de con políticas de TI, 22 parques tecnológicos y 157 uni1,800 consultores. versidades con programas de tecnología.

Sin embargo, y a pesar del excelente desempeño del Programa de Software (Prosoft) de la Secretaría de Economía, para alcanzar las metas planteadas por este fondo para el año 2013 -llegar a $15 mil millones de dólares de facturación, generar 625 mil empleos directos y de aportar el 22.3% del PIB-, la industria de las TI tiene frente a sí grandes desafíos, los cuales y en gran medida, pueden salvarse a través de una profunda reforma educativa. Una reforma que incorpore acciones académicas y disciplina formativa que ayude a los estudiantes desde la educación básica, a incorporar el inglés como segunda lengua, puesto que este tema es una enorme barrera que obstaculiza al país para exportar conocimiento tecnológico. Para que esto ocurra es necesario que empresas, universidades y gobierno trabajen bajo un esquema tripartita que les permita alcanzar metas y lograr objetivos que se traduzcan en un escenario altamente competitivo. Acertadamente ya hay proyectos en este sentido. En algunas empresas, como es el caso de Neoris, contamos con programas que ofrecen a los alumnos de los últimos semestres de la carrera la oportunidad de capacitarse brindándoles la posibilidad de formarlos como desarrolladores y consultores con niveles de competitividad internacional. Estos proyectos son una realidad gracias al trabajo conjunto de universidades y empresas. La parte de la fórmula que aún falta es la decisión de las autoridades educativas federales y locales, para sumarse a efecto de incorporar en la política educativa pública las acciones necesarias para aumentar el dominio del idioma inglés. Es muy importante para el país el ocuparnos todos – empresas, universidades y gobierno-, en formar la mente de obra que hará que México aproveche en el corto y mediano plazo la oportunidad de convertirse en un proveedor internacional de conocimiento y servicios de TI. En definitiva, la competitividad es un tema que debemos atender con mucho más decisión, apoyándonos en una política basada en una reforma educativa de fondo. No todas las respuestas a las exigencias que impone el mundo están en las ventajas de costo de producción de México y Tratado de Libre Comercio de América del Norte. México necesita conservar sus ventajas actuales, pero además debe alinear su política educativa a las exigencias que impone la competitividad internacional. Adicionalmente debe ejecutar acciones que faciliten a la gente el acceso de la tecnología, que es una ventana al mundo y, también, una herramienta importante para reducir la brecha educativa que existe entre la educación pública y privada.

››Por Carlos Castilla 56


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.