Documentos de Académico
Documentos de Profesional
Documentos de Cultura
directorio
Dirección Editorial
Pedro Galván
Dirección de Operaciones
Mara Ruvalcaba
Arte y Diseño
Grisel Otero
Consejo Editorial
Jorge Valdés - PMI; Luis Cuellar - Softtek;
Francisco Camargo, Luis D. Soto - Microsoft;
Hanna Oktaba - UNAM; Ralf Eder, Raúl
Trejo, Guillermo Rodríguez - ITESM CEM;
Emilio Osorio - Sistemas Humanos;
Muchos hemos oído acerca de Cómpu- En este número tenemos también la edición Luis Vinicio León - e-Quallity.
to en la Nube, pero ¿qué es esto?, ¿dónde 2008 de nuestra Encuesta de Salarios, que
se está aplicando?, ¿qué opinión tienen los se está convirtiendo en el reportaje más es- Colaboradores
expertos al respecto? Más allá de la moda, perado del año. Para complementar el resto Carlos Coello, Benjamín Alonso,
es importante entender cuales son los con- del contenido de este número, ofrecemos Guillermo Morales, Javier Espadas,
ceptos fundamentales de este modelo, así un panorama sobre ofuscación de código, Pablo Resendiz, Gilbert Corrales,
como el impacto que tendrá en la forma en un artículo bastante completo sobre RFID, Juan Olivares, Sandokan Barajas,
que desarrollamos software. así como las secciones de costumbre con Victor García, Miguel Armas,
prácticas de ingeniería de software, y la Francisco Vaca, Carlos Ordoñez,
Beatríz Ríos, Luis Joyanes,
En cuanto a la portada, seguramente se perspectiva de nuestros columnistas.
Shannon Cepeda, Romeo Márquez,
preguntarán qué fumamos para salir con Gunnar Wolf , Susana Tamayo.
el concepto artístico. Queremos aclarar Queremos también aprovechar esta
que no se usaron sustancias alucinantes oportunidad para recordarles sobre el
durante su desarrollo (no que nos cons- proyecto más reciente de SG, denominado Ventas
te), ni nos basamos en libros de “Donde SG Campus. Este es un servicio de aprendi- Claudia Perea
está Wally”. Simplemente le explicamos a zaje continuo en línea para profesionistas
nuestra diseñadora, Grisel Otero, el con- de TI. Ya están abiertos varios cursos y los Circulación y Administración
cepto de cloud computing, y le pedimos resultados han sido muy satisfactorios. Si Edgar Dorantes
que ella hiciera una interpretación artísti- todavía no te unes a SG Campus, hazlo en
ca de él. Después del shock inicial de ver www.sgcampus.com.mx.
su propuesta, nos dimos cuenta de cómo Contacto
info@sg.com.mx
ella entiende y plasmó el concepto: bási- Dado que el último número del año, no
+52 55 5239 5502
camente, una masa de elementos diver- queremos quedarnos sin desearles unas
sos que a pesar de ser diferentes, tienen felices fiestas navideñas, y un próspero
elementos comunes, convergen y generan 2009. Ante el panorama financiero que SG Software Guru es una publicación trimestral
editada por Brainworx S.A. de C.V., Malinche no. 6,
sinergia ... y justamente eso es lo que es. hemos vivido últimamente, sabemos que Col. El Parque, C.P. 53398, Naucalpan, México. Queda
esto último será complicado. Pero bien di- prohibida la reproducción total o parcial del contenido
Desde hace tiempo que teníamos ganas de en- cen que “a río revuelto, ganancia de pesca- sin previo aviso por escrito de los editores. Todos
los artículos son responsabilidad de sus propios
trevistar a Tom DeMarco, y por fin se nos hizo. dores”. Así que hay que ponernos las pilas autores y no necesariamente reflejan el punto de
Tom es una de esas personas que nos hace para aprovechar esta oportunidad. vista de la editorial. Reserva de Derechos al Uso
abrir los ojos y darnos cuenta de tantas cosas. Exclusivo: 04-2004-090212091400-102. Certificado
Muchas gracias a Tom y a la gente de Cutter » Equipo Editorial de licitud de título: 12999. Certificado de licitud de
contenido:10572. ISSN: 1870-0888. Registro Postal:
Consortium por facilitar esta entrevista. PP15-5106. Se imprimió en octubre de 2008 en Roma
Color, S.A. de C.V. Distribuido por Sepomex.
26 EN PORTADA
Cloud Computing
Te mostramos los recursos ilimitados
del “Cómputo en la nube”
Especial 18
Encuesta de Salarios 2008.
Productos
LO QUE VIENE 12
VSTS 210, Mono 2.0 y Oracle Beehive.
Herramientas 14
Beneficios de la Automatización de
Pruebas.
TUTORIAL 16
Silverlight, Parte 2.
Columnas Prácticas
Tejiendo Nuestra Red 08 Tendencias en Software 48 PROGRAMACIÓN 36
por Hanna Oktaba por Luis Daniel Soto Ofuscación de Código
Conozcamos como proteger nuestro código
Mejora Continua 10 Prueba de Software 50 para que no sea reutilizado por terceros.
por Luis Cuellar por Luis Vinicio León
ADMINISTRACIÓN DE BASE 40
Columna Invitada 46 DE DATOS
por Carlos Ordoñez Diseño de Base de Datos
Aprendamos a utilizar los catálogos para hacer
más eficiente nuestra manera de codificar.
En Cada Número
ARQUITECTURA 42
Noticias y Eventos 04 GADGETS 60 Una Receta para Desarollar
Arquitecturas
INDUSTRIA 06 FUNDAMENTOS 62 Presentamos el marco de trabajo para
desarrollar arquitecturas propuesto por
INFRAESTRUCTURA 52 CARRERA 64 The Open Group.
PM CORNER 44
La integración de un equipo de
trabajo funcional
24
Tácticas y técnicas para integrar de manera
eficiente a tu equipo de trabajo.
Entrevista
Tom DeMarco
12 al 14 de Noviembre 2008
SEPG LA 2008 – Combinando Disciplina con 5 al 7 de Diciembre 2008
Métodos Ágiles Expo Robótica, Ciencia y Tecnología
ESI Tecnalia, SEI, y ESICenter Cono Sur WTC, Cd. de México
Hotel Hermitage, Mar del Plata, Argentina Info: www.exporobotica.com.mx
Info: www.esi.es/SEPGLA e-mail: info@exporobotica.com.mx
e-mail: sepgla@esi.es
Este año estamos celebrando los 50 años de la computación en No obstante, para instituciones privadas como el ITAM, la UDLA, o
México, y se han venido realizando una serie de eventos al respecto. el ITESM, fue un período clave para la formación y crecimiento de su
Aprovechemos esta oportunidad para echar un vistazo a los princi- plantilla de doctores en computación dirigidos hacia la investigación.
pales acontecimientos durante estos 50 años.
Nuevo impulso de Conacyt
La primera computadora en México En la década de los noventas, el CONACYT da un fuerte impulso a
La historia comienza en 1955, año en que el Ing. Sergio Beltrán Ló- la realización de investigación a nivel nacional y se crean nuevos
pez plantea al Dr. Nabor Carrillo Flores (entonces rector de la UNAM) centros de investigación tales como: El Centro de Investigación en
la adquisición de una computadora. El Ing. Beltrán se había intere- Computación (CIC) del Instituto Politécnico Nacional, el Laboratorio
sado en esto a raíz de los resultados de un proyecto de resolución de Nacional de Informática Avanzada (LANIA) en Xalapa, Veracruz; la
ecuaciones simultáneas que hicieron en conjunto con la Universidad Coordinación de Ciencias Computacionales del Instituto Nacional de
de California en Los Angeles (UCLA). En la resolución de este proyec- Astrofísica, Óptica y Electrónica (INAOE) y el Departamento de Cien-
to los investigadores mexicanos habían tardado 9 meses, mientras cias de la Computación del Centro de Investigación Científica y de
que la UCLA solo había tardado 3 semanas utilizando una computa- Educación Superior de Ensenada (CICESE), entre otros.
dora IBM-650. Fue así que la UNAM firmó un contrato con IBM para
rentar una IBM-650 por un total de $25,000 pesos mensuales. La llegada del siglo XXI
En la primera década de este siglo, se dieron avances notables como
El 8 de junio de 1958 abrió sus puertas el Centro de Cálculo Electrónico el primer enlace internacional de voz sobre IP nativo en 2002 ; el pri-
(el CCE), ubicado en el sótano de la antigua Facultad de Ciencias, don- mer enlace de comunicación interactiva con formato para televisión
de se instaló la IBM-650. Esta máquina operaba con un tambor mag- digital en Internet en 2003 , la Inauguración de la Red Inalámbrica
nético con capacidad para 20,000 dígitos, realizaba 1,300 operaciones Universitaria (RIU) en 2006, la inauguración de la supercomputadora
de suma y resta por segundo y funcionaba con lectora y perforadora KanBalam en 2007 entre otros.
de tarjetas, adoptando un sistema numérico llamado bi-quinario. Las
primeras tareas que se le encomendaron a esta computadora fueron
las de resolver problemas de astronomía, física e ingeniería química. Conclusión
En estos 50 años de la computación en México se ha demos-
Se unen otras universidades trado el desarrollo que ha tenido esta floreciente ciencia gra-
Posteriormente, en 1961 el IPN inauguró su centro de cómputo, el cias al tenaz esfuerzo de hombres y mujeres que están con-
CENAC, y en 1964 el ITESM instaló su primera computadora, y poco vencidos de que en este país hay oportunidad de alcanzar un
después inauguró la primera carrera de computación en el país. La sueño. Tal es el caso de los más de 400 doctores en computa-
UNAM, el IPN y el ITESM se convirtieron en polos de atracción de ción o áreas similares que se encuentran en diferentes institu-
estudiantes curiosos y tenaces que deseaban acercarse a ese nuevo ciones de educación superior en nuestro país.
universo de la computación.
Vale la pena reflexionar sobre las palabras del Dr. Renato Itu-
Los primeros posgrados rriaga durante la conferencia de inauguración de los festejos
El Centro Nacional de Cálculo del IPN instituyó a fines de los años por los 50 años de la computación en México: “La computación
sesenta la primera maestría en ciencias de la computación. La UNAM en el mundo ha tenido avances espectaculares y en el futuro
hizo lo propio en 1975. Para finales de los años 70, el Instituto de lo serán aún más. Pero toda esa tecnología no ira al frente del
Investigaciones en Matemáticas Aplicadas y Sistemas (IIMAS) de la hombre, sino detrás de él. El desarrollo de la computación en
UNAM contaba con 20 doctores en computación. México lo han realizado, y lo están realizando, personas. Dicho
desarrollo solo tiene sentido en tanto esté orientado a servir a
La década perdida los intereses de la sociedad en general y de las personas en lo
La década de los ochenta fue muy difícil para las ciencias de la com- individual. En 24 siglos no ha perdido vigencia el aforismo de
putación en México. En un periodo menor a tres años, todos los Protágoras: el hombre es la medida de todas las cosas.”
grupos de investigación de las universidades públicas en México se
redujeron considerablemente y en algunos casos desaparecieron
por completo. A finales de esa década, el escenario económico en Referencias:
las universidades públicas hizo muchos estragos en los grupos de [cs.cinvestav.mx/SemanaComputoCINVESTAV/Computo.html]
investigadores dedicados al cómputo; a este episodio de la historia [lajornadadeoriente.com.mx/2008/01/28/puebla/]
de la computación en México se le denominó “La década perdida”. [computo50.unam.mx/computoenmexico2.html]
16
06 NOV-ENE 2009 www.sg.com.mx
// industria
El año 1983 evoca para muchos, incontables memorias. Ese año se contando con destacados conferenciastas como: el Dr. Edmund Clar-
introdujo la IBM PC XT; la revista Time eligió a la computadora como ke (ganador del Premio Turing 20074 por haber desarrollado la he-
la “máquina del año” (en vez del tradicional “hombre del año”), dedi- rramienta conocida como Model Checking) de la Universidad Carne-
cándole su portada del ejemplar del 3 de enero; ARPANET estandarizó gie-Mellon, el Dr. Héctor García Molina (quien tiene el factor H más
el protocolo TCP/IP (el cual se sigue usando hoy en día en Internet) y alto en computación a nivel mundial) de la Universidad Stanford,
también se anunció el lanzamiento del Windows de Microsoft. y el Dr. Alan Kay (ganador del Premio Turing 2003 y pionero de la
POO e interfaces gráficas) del Viewpoints Research Institute, en-
Qué lejanos lucen esos días, en que aparecían los discos compactos tre otros eminentes expertos. En este evento participaron tam-
en el mercado por primera vez y el uso del correo electrónico y el in- bién los 4 únicos computólogos de México que ostentan el nivel
ternet eran prácticamente desconocidos. El Centro de Investigación y 3 en el Sistema Nacional de Investigadores: el Dr. Adolfo Guzmán
de Estudios Avanzados del Instituto Politécnico Nacional (CINVESTAV- Arenas, el Dr. Felipe Lara Rosano, el Dr. José Luis Marroquín Zaleta y el
IPN) contaba en aquel entonces con 7 minicomputadoras, distribuidas Dr. Carlos Artemio Coello Coello. Durante el evento se realizaron
en los Departamentos de Fisiología, Farmacología, Toxicología e Inge- mesas redondas tratando temas como la situación actual de la
niería Eléctrica. Así mismo, habían decenas de microcomputadoras y computación en México, se llevó a cabo el “Primer Encuentro de
se tenía acceso a un mainframe a través de diversas terminales. Estudiantes que Cursan un Doctorado en Computación en México”,
y el concurso de cuento titulado “La Computación del Siglo 21: entre
El Departamento de Ingeniería Eléctrica del CINVESTAV-IPN llevaba ya, lo natural y lo artificial de la inteligencia y la vida”.
en aquel entonces, varios años de impartir cursos sobre computación
electrónica tales como “Introducción a la Computación”, “Teoría de Au- Tras la culminación de este año de celebraciones, bien nos vendría
tómatas” y “Arquitectura de Computadoras”, entre otros. Así mismo, el abrir un espacio para reflexionar sobre la dirección hacia donde qui-
uso de computadoras electrónicas se hacía cada vez más común. siéramos que se moviera el grueso de la comunidad de computa-
ción en México en los años por venir. Ciertamente, esperamos un
Fue en esta atmósfera que se gestó una propuesta1 para establecer un crecimiento importante de una comunidad que cuenta actualmente
Departamento de Computación en el CINVESTAV-IPN hacia principios de con unos 550 doctores, con un consecuente aumento del número
1983. En este punto, bien vale la pena reconocer los esfuerzos que rea- de posgrados, así como de nuestra capacidad para vincularnos con
lizaron los Dres. Héctor Nava Jaimes (entonces Director General del CIN- el sector productivo. Sin embargo, también se espera que este cre-
VESTAV-IPN), Juan Milton Garduño (entonces Jefe del Departamento de cimiento conlleve a una mayor consolidación de nuestros investiga-
Ingeniería Eléctrica) y Adolfo Guzmán Arenas (fundador y primer Jefe de dores, de manera que esta comunidad tenga mayor peso específico
la Sección de Computación del CINVESTAV-IPN) para llevar a cabo esta en la toma de decisiones en torno a políticas científicas en México.
empresa. Fue así como se gestó una propuesta que contemplaba 3 eta- De lograrlo, ese sería, sin duda, el mejor homenaje que se le po-
pas. La primera etapa arrancó en el mismo 1983, creándose la Sección dría rendir a una disciplina que, querámoslo o no, ha cambiado para
de Computación del Departamento de Ingeniería Eléctrica. Sin embargo, siempre nuestro modo de vida.
por diversas razones, fue hasta el año 2006 (más de 20 años después
de lo esperado) que la segunda etapa, la creación del Departamento de Referencias
Computación, se volvió finalmente una realidad2. La tercera etapa, crea- [ 1. Anónimo. “Propuesta de Creación del Departamento de Computa-
ción de secciones dentro del Departamento de Computación, bien po- ción del CIEA del IPN. Etapa I: Sección de Computación”. Presentado
dría tomar más tiempo del que el autor viva para volverse una realidad. por el Departamento de Ingeniería Eléctrica, CIEA del IPN. 1983. ]
[ 2. Coello Coello, Carlos Artemio. “El Departamento de Computación
Actualmente, el Departamento de Computación del CINVESTAV-IPN del Cinvestav”. Cinvestav. Abril-Junio 2007 . Vol. 26. No. 2, pp. 4-13. ]
cuenta con 16 investigadores de tiempo completo y 7 investigadores [ 3. cs.cinvestav.mx/SemanaComputoCINVESTAV ]
más en el CINVESTAV Tamaulipas. A la fecha ha graduado a más de [ 4. El Premio Turing (Turing Award) es otorgado por la Association for
280 estudiantes de maestría y doctorado. Computing Machinery (ACM), y es considerado como el
reconocimiento técnico más importante que se otorga en el área de
En la semana del 1 al 5 de septiembre, se celebraron los 25 años de computación. ]
existencia de los programas de computación en el CINVESTAV-IPN3,
Carlos Artemio Coello Coello se doctoró en Ciencias de la Computación en la Universidad Tulane (en Estados Unidos), en 1996, haciendo trabajo pionero en
el área de “optimización evolutiva multi-objetivo”. Actualmente es Investigador 3-D y Jefe del Departamento de Computación del CINVESTAV-IPN. Pertenece al
Sistema Nacional de Investigadores (nivel 3) y a la Academia Mexicana de Ciencias.
La Dra. Hanna Oktaba es profesora de la UNAM a nivel licenciatura y posgrado. Sus áreas de interés son Ingeniería de Software, Tec-
nología Orientada a Objetos, Modelos de Procesos de Software y Mejora de Procesos. Actualmente es miembro de International Process
Research Group (IPRC). También es Directora Técnica del proyecto COMPETISOFT.
Luis R. Cuellar es director de calidad a nivel mundial de Softtek Information Services. Luis es reconocido por la American Society for Quality
(ASQ) como Certified Quality Manager, Certified Software Engineer, y Six Sigma Black Belt. En los últimos cinco años ha estado a cargo de la
definición e implantación de la estrategia para CMMI5 y Six Sigma a través de las diferentes áreas del centro de desarrollo de Softtek.
Premio Nuevo León a la Calidad Lo que yo veo en la industria del software en proyectos en problemas y tratando de sacar
VSTS 2010
Nue va s c a pa c i d a d e s d e m o d e l a d o y t e s t i n g Mono 2.0
Ya l l e g ó s up e r c h a n g o
Beehive
Oracle se une al Web 2.0 e mpr e s a r i a l
Durante el reciente Oracle OpenWorld, uno de los nuevos productos que recibió mayor atención fue Oracle
Beehive. Beehive es una plataforma integrada para colaboración empresarial. Esencialmente, es una plataforma
que busca integrar espacios de trabajo colaborativos, calendarios, mensajería instantánea y correo electrónico.
A pesar de que en el mercado ya existen productos empresariales con funcionalidad muy similar, tales como
Lotus Connections y Microsoft Sharepoint, Oracle argumenta que su producto brinda ventajas en cuanto a
seguridad e integración con productos de terceros. Aun así, seguramente lo que estaremos viendo es que las
empresas optarán por una u otra solución dependiendo del resto de la infraestructura que ya tengan. Aquellos
clientes que ya estén usando el middleware de Oracle, seguramente se sentirán más cómodos con Beehive
que con las opciones competidoras.
¿Cómo sabes que el sistema funciona? Una respuesta común a Beneficios de las pruebas automatizadas
esta pregunta es “porque el equipo de testing le echó un vistazo”. Las herramientas de automatización no van a solucionar todos tus
El problema viene al tener que determinar la extensión y profun- problemas de pruebas. Sin embargo, puedes obtener muchos bene-
didad de las pruebas realizadas. Si eres afortunado y trabajas en ficios con una implementación apropiada. Hablemos de algunos de
una empresa con buenos procesos, podrás acreditar lo probado a estos beneficios:
través de una lista de casos de prueba. Si trabajas en una empresa
de clase mundial, entonces hay una gran posibilidad de que tengas • Mejor organización de las pruebas. Cuando inicias la automatiza-
la fortuna de tener a tu disposición herramientas para la gestión y ción de tus pruebas, analizas de manera más estructurada. Exami-
automatización de pruebas. nas tu sistema como ingeniero, ya no de manera empírica. Al crear
casos de pruebas formulas preguntas tales como: ¿es repetible esta
De acuerdo con Elfriede Dustin, las herramientas de automatización prueba?, ¿con qué frecuencia necesito ejecutar esta prueba?, ¿tiene
de pruebas consolidan y mejoran la efectividad de las pruebas siem- alguna semejanza esta prueba a pruebas existentes?, ¿cómo auto-
pre y cuando se manejen las expectativas, se entiendan las herra- matizaría esta prueba?
mientas, y se seleccione una herramienta compatible con el ambien-
te de programación. Si necesitas probar un sistema no trivial que • Realización de un mayor número de pruebas. Algunos de los pro-
conste de algo más que unas cuantas pantallas y reportes, enton- blemas hallados por la automatización, tal vez no hubieran sido
ces es muy posible que por medio de pruebas manuales no logres encontrados utilizando solo pruebas manuales, debido a limitan-
realizar todas las pruebas que necesitas para verificar la calidad del tes de tiempo.
sistema. Con la ayuda de herramientas de automatización puedes
ejecutar más pruebas, lo cual se traduce en una mayor cobertura del • Mejoras en la comunicación con el equipo. Kaner, Bach, y Petti-
sistema que se está probando. chord argumentan que la automatización fortalece las pruebas al
proporcionar un sistema para recolectar y diseminar información de
Capers Jones, en su libro de estimación de costos de software, men- manera eficaz, proporcionando retroalimentación oportuna al equi-
ciona que las pruebas de funcionalidad, regresión y rendimiento po de programación.
son comúnmente apresuradas (o incluso omitidas) por presiones de
tiempo. Esto resulta en sistemas con baja calidad. ¿Alguna vez te • Estabilización temprana del código. Conforme encontremos los
has visto en la necesidad de apurar u omitir alguna de estas prue- errores más temprano, tendremos más rápido una base de código
bas? ¡Por supuesto que sí! Es una práctica común en los proyectos estable. Esto evitará retrabajo posterior ya que no estaremos cons-
de desarrollo. truyendo encima de un código con errores.
Las compañías más exitosas automatizan sus pruebas para mejorar • Habilitación de pruebas de regresión. Con un conjunto apropia-
la flexibilidad de su equipo de desarrollo. Algunas de las metas de do de pruebas, y habilitados por una herramienta de automatiza-
sus esfuerzos incluyen: ción, cada que generamos un nuevo build de nuestro sistema de
• Detectar cambios desestabilizadores en nuevas construcciones software podemos probarlo por completo. Esto es de vital impor-
del sistema. tancia, ya que de acuerdo con un estudio realizado por Capers Jo-
• Exponer defectos de regresión tan pronto como es posible. nes, en promedio el 7% de las correcciones de defectos inyectan a
• Reportar problemas rápidamente porque esto facilita su corrección. su vez un nuevo defecto.
Benjamín Ruvalcaba Alonso tiene más de 18 años de experiencia en proyectos de informática. Ha trabajado en Microsoft, GE, y otras empresas públicas y
privadas. Ha dedicado los últimos seis años al testing de diversas aplicaciones web en ambientes .Net. Puedes contactarlo en benalonso@pickyware.com
De hecho, Dustin argumenta que si las pruebas de regresión no es- • Vender funcionalidades en lugar de beneficios. Cuando hablamos
tuvieran automatizadas, ciertas pruebas regresivas nunca serían de testing se nos olvida mencionar cómo beneficia al cliente, pro-
ejecutadas, dejando grandes vacíos en los esfuerzos de prueba. ducto, o empresa. Tendemos a hablar de todo lo que vamos a poder
hacer sin mencionar los beneficios. No importa lo avanzada que sea
• Mayor confiabilidad en los resultados. El sistema de automa- la herramienta de automatización o ese nuevo proceso manual que
tización no se cansa, nunca tiene prisa, y mientras las pruebas o deseas implementar, si no puedes ligarlo a beneficios tangibles. Ne-
su información no cambie, deben de obtener siempre el mismo cesitas identificar que el testing, ya sea automatizado o no, sí bene-
resultado; son consistentes, confiables, y repetibles. Como seres ficia al cliente, producto o empresa.
humanos te cansas, preocupas, o simplemente apresuras en sacar
tu trabajo a tiempo. Todo esto lleva a simples errores humanos que • La solución única. A algunos de nosotros nos gusta pensar que
afectan tu capacidad de ser eficiente en pruebas rutinarias. La au- nuestra función es la más importante en la compañía. Sin embar-
tomatización de pruebas repetitivas que requieren una ejecución go, tenemos que observar nuestro trabajo como una pieza más
frecuente, te permite tiempo para integrar pruebas más comple- en el ecosistema de la empresa. Esto nos facilita analizar cómo
jas, probar nuevas funciones dentro de la aplicación y su integra- nuestra labor complementa y asiste a otras áreas. Somos más va-
ción con el resto del sistema. liosos como parte integral de la empresa que como un elemento
aislado de la misma.
• Capacidad para aplicar pruebas complicadas. Algunos tipos de
prueba son difíciles de aplicar o muy complicadas de ejecutar de
manera manual; entre esta rama podemos encontrar aquellas en
las que es necesario el acceso a la base de datos para verificar Conclusión
que la información del sistema sea correcta, o tal vez sea preciso Hoy en día, la automatización de pruebas es una tarea esen-
hacer cálculos manuales para verificar la validez de los resultados cial para proporcionar un servicio de testing adecuado. Los
arrojados por el sistema. Muchas herramientas de automatización sistemas que probamos han crecido tanto en tamaño como
proporcionan estas funcionalidades. Además, los sistemas de au- en complejidad. Necesitamos tener el tiempo de probar las
tomatización nos pueden auxiliar a introducir grandes cantidades nuevas funcionalidades de nuestros sistemas sin ignorar la
de información, configurar la versión de prueba de la base de da- funcionalidad previa. Una estrategia de automatización imple-
tos, y generar información aleatoria entre otras cosas. mentada apropiadamente nos ayudará a lograrlo junto con los
demás beneficios mencionados en este artículo.
Como No Justificar el Testing
Después de revisar los principales beneficios de la utilización de
herramientas de pruebas automatizadas, quiero compartir con uste-
des algunas recomendaciones planteadas por James Bullock acerca Referencias
de lo que debemos evitar a toda costa al justificar un esfuerzo de [ Bullock, James. “Calculating the Value of Testing”. Software Testing
testing hacia nuestros superiores. and Quality Engineering. May/June 2000 ]
[ Jones, Capers. Estimating Software Costs: Bringing Realism to
• La narrativa sin fin. Una cosa es hacerle ver a nuestros superiores Estimating. McGraw Hill, 2007. ]
que sabemos de lo que estamos hablando, y otra es perderlos en [ Dustin, Elfriede. Effective Software Testing: 50 Specific Ways to
los detalles técnicos. Lo que tus jefes quieren que les contestes es Improve Your Testing. Addison-Wesley, 2002.]
¿cuánto?, ¿cómo?, y ¿dónde?; Debes estar preparado para contestar [ Kaner, Cem; Bach, James; Pettichord, Bret. Lessons Learned in
estas preguntas en forma abreviada, concreta, y veraz. Software Testing: A Context Driven Approach. Wiley, 2001.]
Height=”100” Width=”100”
Canvas.Left=”100” Canvas.Top=”50”
Bienvenidos a esta segunda parte de nuestro tutorial sobre Stroke=”Black” StrokeThickness=”10” Fill=”Blue”/>
desarrollo de aplicaciones Silverlight.
<TextBlock
x:Name=”miTexto”
En base a lo que hicimos en la parte 1 (SG Num. 21), debería- Canvas.Left=”70” Canvas.Top=”180”
mos tener los siguientes archivos: Text=”Dame Click” FontSize=”30”/>
</Canvas>
• crearSilverlight.js Noten que tanto el TextBlock como el Rectangle, tienen una propiedad
• Default.html x:Name por medio de la cual podemos identificar a cada elemento den-
• Mixaml.xaml tro del XAML. Utilizaremos esto más adelante en el código Javascript.
• Silverlight.js
Al visualizar nuestra página web, obtendremos lo que se ve en la
siguiente figura.
Respondiendo al click del mouse
Vamos a crear un elemento que pueda responder a eventos del mouse,
para comenzar a darle más interacción a nuestros sitios Silverlight.
Listado 1. mixaml.xaml
<Canvas Width=”300” Height=”300”
xmlns=”http://schemas.microsoft.com/client/2007”
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”>
Insertando código javascript
El siguiente paso es definir las funciones de Javascript que respon-
<Canvas.Background> dan a los eventos que se disparan desde el XAML. Para esto, inser-
<LinearGradientBrush EndPoint=”0.5,1” StartPoint=”0.5,0”> taremos en nuestra página web el código Javascript del listado 2.
<GradientStop Color=”#FFDCEF1B” Offset=”0”/> Este código lo pueden insertar dentro del mismo bloque de código
<GradientStop Color=”#FF801A1A” Offset=”1”/>
<script> donde se encuentra la obtención de la referencia al plugin de
</LinearGradientBrush>
</Canvas.Background> Silverlight que ya se tiene.
Guillermo Morales colabora actualmente en InterSoftware, empresa dedicada a la capacitación especializada en desarrollo de software. Con un perfil técnico,
se ha desenvuelto en varias áreas del proceso de desarrollo de aplicaciones, desde la implementación, hasta la administración de proyectos. Es cofundador de
la comunidad de desarrollo en México www.developersdotnet.com en donde frecuentemente se reúne con otros expertos de desarrollo de aplicaciones para la
difusión de nuevas tecnologías.
De acuerdo a la región
Ninguna 21%
El DF recuperó su liderazgo en este año
Menos de 10 mil 20%
como el estado de la República con los mejo-
De 10 a 25 mil 27% res sueldos para profesionistas de software,
De 25 a 50 mil 16% dejando a Nuevo León en segundo lugar y
De 50 a 100 mil 9% al Estado de México en tercero. Como es de
Más de 100 mil 6% esperarse, estos estados son también los
que emplean a un mayor porcentaje de los
Tabla 2. Tabulador de compensación extra anual profesionistas de software en nuestro país.
Para el 2009, el panorama económico actual nos hace pensar que los salarios no recibirán un
ajuste más allá de la inflación. La recomendación es mantenerse en su empleo actual y apro-
vechar el año para desarrollar sus habilidades y conocimientos, con miras a que las cosas
mejoren hacia final de año. Hay que ser cautelosos pero tampoco es para alarmarse, ya que
la demanda existente de profesionistas de TI asegura que cualquier persona con dominio de
inglés y capacidad para desarrollar software tenga un empleo estable.
28
22 NOV-ENE 2009 www.sg.com.mx
Las Mejores Empresas para Trabajar
Prácticas de RH que llevan al Éxito
Por Emmanuel Olvera
Recuerdo perfectamente cuando en un congreso internacional de portantes en tiempos de inseguridad económica. Y, precisamente,
Recursos Humanos, uno de los ponentes preguntó cuantos directo- las empresas más admiradas son más exitosas en mantener altos ni-
res generales había presentes entre la audiencia, y menos de cinco veles de lealtad y motivación en tiempos difíciles. Una de las claves
manos se levantaron entre cientos de participantes. ¿No sería im- es asegurar que las oportunidades de ascenso y crecimiento perso-
portante que los directores generales conocieran las mejores prácti- nal estén disponibles para todos, sin importar cuál sea el contexto
cas para la gestión de recursos humanos? ¿No les interesará conocer económico.
el impacto que tienen estas prácticas en la rentabilidad del negocio?
Las Mejores en México
En un estudio realizado por Hay Group entre empresas del Fortune Hace unos meses, Great Place To Work Institute publicó los resulta-
500 se detectaron las 7 mejores prácticas comunes entre estas em- dos de su estudio para determinar cuales eran las mejores empresas
presas, y resultó que 3 de estas prácticas están directamente rela- para trabajar en México.
cionadas con el factor humano.
En el área de Tecnologías de Información y Telecomunicaciones, la
GE, Toyota, Berkshire Hathaway, Nokia, y BMW son algunas de las or- lista de las mejores empresas en México para trabajar en el 2008 de
ganizaciones que encabezan este ranking, y son de las empresas más acuerdo con Great Place To Work es la siguiente:
admiradas del planeta. Entre 2004 y 2007, por ejemplo, brindaron a
sus accionistas una rentabilidad media de 19,6 por ciento, casi el tri- 1. Compusoluciones
ple que el 7,1 por ciento del ranking de Standard & Poor’s para el mis- 2. IBM
mo período. ¿Qué han hecho para llegar (y mantenerse) en la cima? 3. Nokia
¿Cuáles son los factores que explican el desempeño sobresaliente? 4. Compac
5. EADS
A continuación doy una breve descripción de las prácticas de RH co- 6. Everis
munes entre estas organizaciones: 7. Ingram Micro
8. Microsoft
1. El éxito a través de las personas. Probablemente, el factor más 9. NCR
importante que distingue a estas empresas es un enfoque para lo- 10. Nextel
grar el éxito a través de la gente. Los líderes de estas organizaciones 11. Perot System
dedican el 30 por ciento de su tiempo a desarrollar talento y entre- 12. Pink Elephant
nar al personal. Estas compañías son más proclives a implementar 13. Progress Software
estrategias y métricas relacionadas con el cuidado del capital hu- 14. Sabre
mano. Suelen tener planes de sucesión bien definidos y contratar al 15. Telefónica Movistar
CEO dentro de la organización.
Creo que hay que reconocer y aprender del esfuerzo que estas em-
Como expresó Jack Welch, ex CEO de GE: “Mi trabajo principal era presas hacen al interior y exterior de sus organizaciones, al crear
desarrollar talento. Era un jardinero que proveía agua y otros nu- un ambiente óptimo donde los colaboradores se pueden sentir re-
trientes a nuestras mejores 750 personas. Por supuesto, también conocidos, valorados, recompensados para desarrollar al máximo
tuve que eliminar algunas malas hierbas”. su potencial humano y profesional. Dichas empresas desarrollan
estrategias que van más allá de retener y desarrollar a su personal.
2. Fuerte cultura organizacional. La cultura organizacional repre- Adicionalmente cuentan con el apoyo y compromiso por parte de la
senta, en general, la forma en que se hacen las cosas y los valo- dirección o presidencia de la empresa junto con el área de RH para
res que guían la conducta de los miembros de la compañía. En las crear este tipo de cultura organizacional con enfoque centrado en el
empresas más admiradas, los líderes suelen compartir una visión colaborador.
común sobre la cultura actual y cómo debería ser en el futuro. Esta
cultura tiende a promover la iniciativa individual y el trabajo en Referencias
equipo, impulsando la innovación y la lealtad de los empleados. [ greatplacetowork.com.mx ]
[ materiabiz.com ]
3. Profundo compromiso del empleado. El entusiasmo por el trabajo
y la alineación con el éxito organizacional son particularmente im-
Emmanuel Olvera Avendaño es responsable del área de Reclutamiento y Selección en Resource IT de México. Ha colaborado por más de 4 años en el área
de Recursos Humanos en varias empresas de Tecnologías de la Información en México. Es egresado de la Maestría en Desarrollo Humano por la Universidad de
Celaya. http://eolvera.blogspot.com
Tom DeMarco es uno de los decanos de nuestra profesión. Fue reconocido en 1986 con el premio Warnier por su
“contribución vitalicia al campo de la computación”, y en 1999 con el premio Stevens por su “contribución a los
métodos de desarrollo de software”. Es autor de algunos de los libros más reconocidos en la gestión de proyectos
de software, tales como “Peopleware”, “The Deadline”, y “Waltzing with Bears”.
Actualmente, Tom es socio distinguido en Cutter Consortium. Se dedica a dar consultoría estratégica en TI, y rea-
liza actividades de investigación en el litigio de proyectos. Tom estuvo en México durante el Cutter Summit en el
mes de octubre, y tuvimos oportunidad de platicar con él.
30
26 NOV-ENE 2009 www.sg.com.mx
“Cómputo en la nube” (cloud computing) es el término que mayor
atención genera actualmente en la industria de Tecnologías de Información.
Descrito de forma sencilla, el cómputo en la nube permite a los usuarios acceder a
través del Internet a un fondo de recursos de cómputo virtualmente ilimitado. A dife-
rencia del esquema tradicional de TI, los usuarios de la nube tienen poca visibilidad
y control de la infraestructura subyacente, y solo interactuan con la nube a través de
los APIs proporcionados por los proveedores de la nube. Lo más importante de este
esquema es que permite a los usuarios adquirir recursos de cómputo dinámicamente
en un esquema de autoservicio, y solamente pagar lo que utilizan, tal como sucede
con servicios públicos como la energía eléctrica, o el agua.
Pablo Reséndiz se desempeña actualmente como Gerente de Negocios de Soluciones BURA (Backup, Recovery & Archiving) en EMC
México. Con una experiencia de más de 10 años en la Industria TI, ha trabajado en empresas como IBM; desarrollándose como Ingeniero de
Soporte a ventas para soluciones de Administración de Contenido.
Ahora bien, antes de definir ciertos conceptos en cuanto a este tema, Conceptos SaaS
creo que es importante mencionar algunas tendencias de negocio Para comenzar, podemos decir que SaaS no es una tecnología ni una
en este mercado; Gartner predice que: metodología. Tampoco es un modelo de negocio específico. SaaS es
un enfoque que consiste en varios componentes:
• Para el 2010, 20% de las compañías de comercio electrónico usa-
rán el modelo SaaS y 15% de las grandes compañías reemplazarán • Un modelo de negocio basado en subscripción.
sus soluciones de ERP con soluciones basadas en SaaS. • Una plataforma SaaS que permite desarrollar y desplegar aplica-
ciones sobre demanda.
• Para el 2011, 25% de los nuevos negocios de software usarán el • Proveedores que desarrollan y/o comercializan esas aplicaciones.
modelo SaaS. • Un modelo de entrega a través de Internet hacia múltiples clientes.
• Para el 2012, las suites de BPM (Business Process Management) El modelo de subscripción debe soportar diferentes tipos de cobro,
serán embebidas en soluciones SaaS y más del 66% de los ISVs (In- como son pago por transacción o periodo de tiempo. Los clientes de
dependent Software Vendors) ofrecerán sus servicios como SaaS. SaaS, a diferencia de los modelos ASP (Application Service Provi-
der), son entidades de negocio y no usuarios finales. La plataforma
IDC también estima que las empresas gastarán US$14.8 billones en SaaS provee soporte para diferentes aplicaciones, tanto las que son
soluciones SaaS y que dos de cada tres negocios considerarán com- entregadas para los clientes como para aplicaciones propias de los
prar software con modelos de subscripción. Estas cifras son verdade- proveedores. Comúnmente se usa el termino tenant para referirse
ramente importantes, ya que representan un amplio mercado en la tanto a los clientes como proveedores que usan la plataforma para
industria del software para los próximos años. Ejemplos de negocios consumir o proveer las aplicaciones SaaS.
que usan este enfoque son Salesforce.com, Google Apps, Appian,
OpSource, CogHead, entre otros. Con esta tendencia, es importante • Plataforma SaaS. Una plataforma debe proveer infraestructura
también definir la forma en que este tipo de software es desarrollado (tanto de hardware como de software) que soporte el desarrollo y
y entregado al cliente. Este artículo analizará este aspecto y sus impli- entrega de aplicaciones sobre Internet como servicios. Arquitectu-
caciones en la metodología tradicional del desarrollo del software. ras comunes tienen los siguientes atributos de diseño:
32
30 NOV-ENE 2009 www.sg.com.mx
1. Multi-tenant. La arquitectura soporta múltiples clientes y 3. Soportadas por componentes compartidos de la plataforma.
proveedores. 4. En sentido estricto, solo deben contener lógica de negocio e
2. Versión simple. Existe una versión de cada aplicación y es com- interfaz de usuario.
partida para todos los clientes.
3. Separación lógica de datos. Cada tenant tiene su propio dominio Impacto sobre el desarrollo de software
de información, pero almacenados en una misma base de datos. Actualmente los proveedores de SaaS no han establecido las mejo-
4. Contenedor de dominio. Es un punto de entrada a las aplicaciones res prácticas para desarrollar este tipo de aplicaciones ni tampoco
de un proveedor. estándares en la industria. Las metodologías tradicionales son sufi-
5. Integración de aplicaciones. Las aplicaciones SaaS deben comu- cientes para desarrollar modelos SaaS muy simples, pero cuando se
nicarse entre sí, pero mantenerse independientes. trata de especializar y escalar hacia un negocio más avanzado, aún
6. Componentes de soporte. La plataforma proporciona componen- se carece de técnicas bien establecidas. Por el lado de ingeniería de
tes compartidos para las aplicaciones: seguridad y autenticación, software, las aplicaciones SaaS presentan diferencias en cuanto a
manejo de cuentas de usuario, logging, control de uso y métricas, su ingeniería de requerimientos con las aplicaciones empaquetadas
soporte para diferentes modelos de subscripción, entre otros com- (por ejemplo, desde la perspectiva del cliente, la instalación y man-
ponentes importantes. tenimiento son diferentes). Pioneros del modelo SaaS argumentan
que se requiere un enfoque alterado de ingeniería de software para
este tipo de aplicaciones.
34 2008
NOV-ENE 2009 www.sg.com.mx
• Plataforma de servicios. Sobre la capa de Funcionando en un mundo de
infraestructura la Plataforma de Servicios armonía: FeedSync
pone a nuestra disposición, en una segunda Live Mesh tiene como parte de su misión, el proveer una
capa, el acceso a una serie de funcionalida- plataforma de servicio que haga posible el incorporar
des generales de las cuales podremos sacar las capacidades necesarias para que estas estén
provecho para construir tanto aplicaciones disponibles virtualmente desde cualquier lugar,
como servicios orientados a la nube. Algunos donde exista conectividad a la web, de manera
de estos servicios son el de Identificación y ágil, segura y eficiente. Con un motor de alma-
Directorio, como el Live ID, coordinación de cenamiento con capacidades para poder llevar
conectividad y acceso entre dispositivos a cabo nuestras tareas de manera desconectada y
y, hasta almacenamiento y sincronización de de la misma manera, una vez resumida la conectivi-
nuestros datos entre los diferentes disposi- dad, poder sincronizar los cambios con los di-
tivos que conformen nuestro Mesh, siendo ferentes puntos de nuestro Mesh, esta pla-
la nube otro mas de estos puntos. taforma permite desde el punto de vista de
usuario, así como el desarrollo, la simpli-
ficación de nuestro día a día, trayendo en
• Pilar de desarrollo. Parte fundamental de
si armonía dentro de nuestra información y
Live Mesh es la incorporación de un pilar de
una accesibilidad casi universal.
desarrollo. Esta capa nos expone toda la fun-
cionalidad de la Plataforma de Servicios a
través de un conjunto de Protocolos e Inter- Fundación de esta característica es la sincronía
faces, conocidas como MeshFX, que corren de datos. Mesh implementa FeedSync entre sus
sobre un motor de composición de servicios capas, una tecnología desarrollada por Microsoft
llamadao MOE o Mesh Operating Engine. que utiliza los protocolos de RSS y ATOM, proveyendo
Este motor es accesible desde todas las pla- así un mecanismo para sincronizar información entre
taformas soportadas por Mesh incluyendo 2 o más puntos de manera instantánea o asíncrona.
PC y Macs así como dispositivos móviles y Es con base a estos protocolos que nuestras aplica-
navegadores Web tradicionales. Este ulti- ciones podrán sacar provecho de capacidades de des-
mo con su propia experiencia llamada Live conexión sin mayores complejidades, lo cual hace
Desktop, una solución Web que provee acce- mantener copias sincronizadas de nuestros datos
so a toda la información, aplicaciones y dis- una tarea tan simple como el habilitar dichos
positivos disponibles en el Mesh, utilizando puntos dentro de nuestro Mesh, traduciéndose
como base de desarrollo las herramientas y así en una plataforma esencial para el éxito de
protocolos Web comunes hoy en día. nuestros servicios.
• Experiencias del Live Mesh. En este cuarta Nuestro futuro en la nube
capa se engloban todas aquellas experien- Live Mesh no es mas que el inicio de un
cias que, tomando provecho de la platafor- mundo interconectado, un mundo en el
ma descrita por los 3 niveles anteriores, nos que nuestras vidas inician a tener acceso
proveen los medios de acceso necesarios a los recursos a la hora y lugares indica-
para llevar a cabo nuestras tareas, sacando dos. Es nuestra realidad la que cambia
provecho del poder de procesamiento y de y evoluciona según estas necesidades
la experiencia disponible desde nuestros y esta en nosotros hacerla realidad a lo
dispositivos. Este capa esta compuesta no largo de toda una gama de servicios y apli-
solo por los servicios de interacción básicos caciones que, como sociedad 2.0 estamos empezando a
que Live Mesh provee, sino también por la dar luz. Nuestro futuro es disperso y accesible a todas horas.
gama de aplicaciones y servicios que no- Nuestro futuro es una nube de conexiones sincronizadas entre
sotros y otros desarrolladores dentro de la nuestra realidad física y virtual que unidas nos facilitarán el
comunidad construyen y hacen disponible a día a día. Hagámosla realidad!
nuestro Mesh.
Gilbert Corrales, es Evangelista de Tecnología de Aggiorno y Profesor de Diseño de la Interacción en Cenfotec Costa Rica. Con
más de 7 de años de experiencia en la industria, ha trabajado en proyectos tanto de investigación como comerciales para compañías
como Unisys, Intel, y la agencia interactiva Schematic; Gilbert se enfoca en el diseño de la interacción con visión en tecnologías Web
y medios de uso alternativos.
www.sg.com.mx 2008
NOV-ENE 2009 35
Desarrollo de aplicaciones SaaS Análisis
El impacto en el proceso de desarrollo de software presentado ante- La etapa de análisis debe ser realizada también desde la perspectiva
riormente debe ser tomado en cuenta cuando una aplicación es de- de negocio. Esto es debido a que cada aplicación tratará de satisfa-
sarrollada como servicio. Las metodologías tradicionales son ahora cer las necesidades de un amplio número de clientes. La definición
analizadas y redefinidas para cumplir los nuevos requerimientos im- de los procesos de negocio que soportará cada aplicación es un paso
puestos por este nuevo enfoque. Podemos redefinir las actividades importante en este tipo de aplicaciones, ya que debe permitir la per-
de cada etapa en esta propuesta: sonalización y definición de procesos similares para cada cliente.
Diseño
La fase de diseño consiste en desarrollar documentación que sopor-
te la etapa de construcción.
• Definición de las funcionalidades. Puntualizar las características • Prototipos. Los recursos y la agilidad de generar y desplegar apli-
principales como funciones de cada aplicación que será entregada caciones en plataformas SaaS puede ser explotado a través de la
como servicio. Estas funcionalidades deben ser completamente ali- construcción de prototipos.
neadas al mercado y no a los requerimientos de un solo proveedor.
Javier Mijail Espadas Doctoral Research Assistant Ph. D. Information Technology and Communications ITESM Campus Monterrey
CETEC SouthTower Monterrey, Nuevo León, México.
Resumen
La ofuscación de código dinámica es una nueva forma de en-
mascarar el código, a lo largo de este artículo veremos las ven-
tajas y riesgos que implican el descubrimiento de esta nueva
técnica, así como algunos de las métodos que existen tanto
para ofuscar el código, como para lograr la desofuscación del
mismo, además de las principales formas y lugares donde esta
técnica puede ser aplicada.
Juan Carlos Olivares Rojas es Maestro en Ciencias de la Computación por el Centro Nacional de Investigación de Desarrollo Tecnológico (CENIDET), actualmente
es Profesor de Tiempo Parcial del Instituto Tecnológico de Morelia, sus áreas de interés son los Sistemas Distribuidos y la Ingeniería de Software.
Conceptualmente se pueden distinguir dos tipos de ofuscación mientos, la idea es utilizar un arreglo global para pasar los valores
de código: la ofuscación superficial y la ofuscación profunda. La asignados por el despachador de variables, así cada vez que se llame
primera siendo solamente un reacomodo de la sintaxis del progra- a la función se pasará el valor al arreglo de variables global, logrando
ma, ya sea cambiando nombres de variables o algún otro método de esta manera que los valores asignados cada vez que se llama la
similar, y la segunda que intenta cambiar la estructura actual del función no sean constantes, sino que al examinar el código ofuscado
programa, cambiando su control de flujo o modo de referenciar sus no sea evidente el proceso que se realizó en la llamada a la función.
datos, esta última teniendo menos efecto en el proceso de estar
oculto a la ingeniería inversa, ya que no se ocupa de disfrazar la Otra mejora que se puede agregar a la técnica de ofuscación men-
sintaxis del código. cionada es la adición de bloques básicos al de flujo de control del
programa, algunos de los cuales nunca van a ser ejecutados, pero
Técnicas de ofuscación lo cual es muy difícil de determinar mediante análisis estáticos, de-
Una de las técnicas de ofuscación es la llamada “aplanamiento de bido a que las llamadas se generan de manera dinámica durante la
control de flujo básico”, la cual intenta esconder la lógica de flujo ejecución del programa.
del programa para que simule que todos los bloques básicos tienen
el mismo antecesor y el mismo predecesor. Entonces se agregan funciones de cargas hacia esos bloques inal-
canzables a través de punteros, lo cual tiene el efecto de confundir
El control de flujo actual es guiado mediante un despachador de va- a los análisis estáticos sobre el posible valor que asignó el despa-
riables, el cual en tiempo de ejecución asigna a cada bloque básico un chador de variables.
valor variable, que indica cual es el siguiente bloque básico que debe
ser ejecutado a continuación. Entonces un bloque switch utiliza el Técnicas de desofuscación
despachador de variable para saltar de manera indirecta, a través de Así como existen varias técnicas y mejoras para la ofuscación del
una tabla de saltos hacia el sucesor de control de flujo que debe ser. código, también existen técnicas para lograr desofuscar el código, o
mejor dicho, técnicas de ingeniería inversa sobre el código ofuscado
Existen varias mejoras en esta técnica de ofuscación, siendo una de algunas de las cuales se describen a continuación.
ellas el flujo de datos interprocedimental, las variables que asignaba
el despachador se encontraban disponibles dentro de la función mis- • Clonación. Muchas de las técnicas de ofuscación se basan en la
ma, debido a lo cual aunque el comportamiento del control de flujo creación de rutas de ejecución falsas para engañar a los programas
del código ofuscado no sea obvio, puede ser reconstruido mediante de análisis estáticos, debido a que esas rutas nunca van a ser toma-
un análisis de constantes asignadas por el despachador de variables. das en el momento de ejecución del programa, mas sin embargo,
causan información engañosa que se propagará a lo largo del aná-
La ofuscación del código puedes ser más difícil de reconstruir si ade- lisis y reducirá la precisión de la información obtenida, lo cual hará
más de lo anterior agregamos el paso de variables entre los procedi- más difícil de entender la lógica del programa analizado.
Esta transformación tiene que ser aplicada con sumo cuidado, debi-
do a que si no se hace de esta manera, puede incrementar el tamaño
del código, y más aun que lograr desofuscar el código, empeore el
problema de desofuscación, sin embargo como la meta de la deso-
fuscación del código es la de remover código ofuscado, la clonación
Figura 2. Análisis de un código ofuscado en Javascript. Se puede notar que son implica que se tenga un conocimiento previo de la ruta de ejecución
pocas las cadenas de texto legibles por humanos. Determinar la semántica de un
actual, lo cual podría lograrse mediante la clonación selectiva en
código (el que realiza) es sumamente complicado, por este motivo la mayoría de las
herramientas de protección bloquean en su totalidad programas de Javascript ciertos puntos donde las rutas de ejecución se unen.
• Análisis de factibilidad de ruta estática. Este es un análisis es- bargo si lo vemos desde el punto de vista de la ingeniería inversa,
tático basado en cadenas, que evalúa la factibilidad de una ruta al unir estos dos tipos, nos podemos sobreponer a las limitaciones
de ser ejecutada. que nos causan el hecho de realizar un análisis estático o uno sim-
plemente dinámico.
En este análisis primeramente se debe crear una cadena que corres-
ponda con la ruta de ejecución, la construcción de esta cadena se La Web 2.0 y Ajax
puede realizar de varias maneras, pero la meta, es que tome en cuen- La Web 2.0 ofrece soluciones para compartir casi cualquier contenido
ta los efectos de las operaciones aritméticas sobre los valores de las digital pero también presenta desventajas. En algunos casos, el usuario
variables de los bloques de código, y que nos represente la propaga- pierde el control de sus creaciones en favor de las empresas que prestan
ción de constantes a través de una ruta de ejecución del programa, y el servicio. Aunque O’Reilly sostenga que la persona controla sus pro-
después se evalué si esa ruta de ejecución es factible o no. pios datos, esto sólo sería cierto en algunos casos, pero no en todos.
Algunas de las formas de crear las cadenas anteriormente descritas Un consumidor tiene la libertad de decidir qué contenidos publicar
son las siguientes: en una Web, pero una vez que están dentro del servicio, en muchos
portales se pierde parte del control sobre la información aportada,
• Asignación además, surge el peligro potencial de que algunos de los usuarios
• Aritmética suban código potencialmente peligroso.
• Indirección
• Bifurcaciones Ajax surge como una nueva forma de lograr tener aplicaciones a tra-
vés de la Web, que a diferencia de las paginas estáticas, permite a
• Combinación de análisis estáticos y dinámicos. Los análisis es- los usuarios participar, interactuar y compartir de una manera más
táticos convencionales son inherentemente conservadores, por lo plena la información con los sitios Web, lo anterior abre un mundo
tanto al aplicar técnicas de desofuscación meramente estáticas al de posibilidades de interacción con los usuarios de estos sitios, pero
código ofuscado, el conjunto de resultados son en realidad un su- además trae consigo el correspondiente aumento de riesgos en la
perconjunto de ese código ofuscado, inversamente a lo que resulta seguridad, tanto para los usuarios como para los mismos sitios.
si se aplican técnicas de desofuscación dinámica, que no pueden
tomar todos los posibles valores de entrada, por lo cual este análisis El principal riesgo de seguridad que nos trae esta nueva tecnología
solamente nos regresa un subconjunto del código ofuscado. es el que el usuario no siempre está consciente del código que pue-
de estarse ejecutando en su máquina, ya que Ajax nos proporciona
La naturaleza dual de estos dos tipos de análisis sugieren que se una manera de interactuar de forma asíncrona con los sitios, lo cual
debe intentar realizar un análisis que abarque estas dos aproxi- puede ser muy útil, ya que evita tener que estar recargando constan-
maciones de solución para desofuscar un código, lo cual se puede temente el código de las páginas.
realizar de dos maneras, primero realizando un análisis dinámico y
después uno estático para agregar partes al control de flujo del pro- Así mismo, esta característica que nos permite la comunicación
grama, o se puede realizar de manera contraria, empezando primero asíncrona, también presenta el mayor riesgo, ya que en una página
con el análisis estático y después el dinámico, lo que nos servirá se pueden tener objetos incrustados, que a primera vista parezcan
para reducir partes del control de flujo del programa. inofensivos, y no tengan mayor propósito destructivo, pero que
posteriormente se encarguen de descargar o incrustar mas códi-
De cualquier manera, cuando se realiza una combinación de estos go, que al ser ofuscado logre burlar a los mecanismos actuales de
dos tipos de análisis no se puede garantizar la precisión, sin em- análisis de seguridad.
Sandokan Barajas es pasante de la carrera de Ingeniería en Sistemas Computacionales próximo a obtener el títiulo. Trabaja dentro del Centro de Investigación
en Ecosistemas (CIECO) de la UNAM Campus Morelia.
Conclusión
La ofuscación de código dinámica es una nueva técnica que tiene varias ventajas y
desventajas, dependiendo del punto de vista y uso que se le de a la misma. Pues si
es aplicada como un mecanismo de seguridad, puede ser muy prometedora, ya que
aunque sea una técnica que puede ser vulnerada mediante el uso de algunos análi-
sis estáticos y dinámicos, proporciona un nivel un poco más elevado de seguridad.
En cambio si es utilizada como una arma para lograr burlar los actuales mecanismos
de defensa puede ser muy peligrosa, pues aunque se podría detectar su peligrosidad
mediante algunos de los análisis mencionados en este artículo, consumiría mucho
tiempo y lo más probable es que mientras se realizara este tipo de análisis, se descui-
dara algun otro aspecto de la seguridad.
En cuanto a la web 2.0 como la llamo O’Reilly, existe un riesgo potencial debido princi-
palmente a las características que la hacen tan útil, pero a la vez tan peligrosa, debido
a que esa manera de compartir contenidos a través de la web podría traer consigo la
diseminación de código ofuscado dañino y que sería difícilmente detectable por su
capacidad de transformarse de una infinidad de maneras, y el hecho de que el motor
de generación no se encontraría en el mismo código sino en otra ubicación, lo cual
imposibilitaría realizar un análisis de ese motor para lograr averiguar la forma en que
el código ofuscado es generado.
Referencias
[ Sharath, U. “Deobfuscation Reverse Engineering Obfuscated Code.” Proceedings of the 12th
Working Conference on Reverse Engineering (WCRE’05), 2005. ]
[ Amit, V. “Cobra: Fine-grained Malware Analysis using Stealth Localized-executions”.
Proceedings of the 2006 IEEE Symposium on Security and Privacy (S&P’06), 2006. ]
[ Karen, H. “New attacks tricks antivirus software”. Innovative technology for computer
professionals. Volume 40, Number 5, May 2007. ]
[ Arboit, G. “A method for watermarking java programs via opaque predicates”. Procedings of
5th. International Conference on Electronic Commerce Research (ICECR-5), 2002. ]
[ Collberg, C.; Thomborson, C.; Low, D. A taxonomy of obfuscating transformations, 1997. ]
[ de Roo, Arjan; van den Oord, Leon. Stealthy obfuscation techniques: misleading the pirates. ]
[ Ernst, Michael D. “Static and dynamic analysis: Synergy and duality”. In WODA 2003: ICSE
Workshop on Dynamic Analysis, Portland, OR, May 2003. ]
[ Arnaud, G. “Automated Metamorphic Testing”. Proceedings of the 27th Annual International
Computer Software and Applications Conference (COMPSAC’03), 2003 IEEE. ]
[ Karl, L. “Towards a Metamorphic Testing Methodology for Service-Oriented Software
Applications”. Proceedings of the Fifth International Conference on Quality Software
(QSIC’05), 2005. ]
Los catálogos, en una base de datos, son indispensables para un esta se pierde completamente. Los errores humanos siempre hay
buen diseño de la misma. Es por eso la importancia de conocer las que tenerlos presentes y por tanto, alguien como usuario final pue-
ventajas y desventajas de su uso. Comencemos definiendo “catálo- de llegar a escribir el nombre de un país de la manera incorrecta.
go” en una base de datos. Un catálogo es una tabla de datos que Además la normalización no está presente en este caso.
contiene información relevante sobre las opciones finales de un
usuario en una aplicación. A continuación menciono las ventajas y Cuando se obtienen los datos de manera estática en el código, se
desventajas de los catálogos en el diseño de base de datos: presenta el problema en el tiempo invertido que se requiere en la
programación de los elementos, así como el mantenimiento de
Ventajas ciertos módulos.
• Permite una rápida obtención de los datos requeridos al momento
de realizar una consulta. Enseguida muestro una solución utilizando los catálogos: Se dise-
ña la tabla –Cliente- y la tabla –Pais-, La tabla Pais almacena los da-
• Permite una reducción de tiempo en programación. tos que necesitamos con dos simples campos: “idPais y nomPais”,
dicha tabla siendo relacionada 1:N con la tabla clientes, de esta ma-
• Permite al usuario final la posibilidad de realizar una modificación nera es posible obtener la información necesaria del cliente con una
de manera dinámica a las opciones del software, fácil y rápidamente simple consulta SQL, además de que el proceso de normalización e
desde una administración. integridad de los datos se está dando de manera automática.
• Permite crear una base de datos normalizada. Si el usuario final desea que su sistema sea capaz de aumentar los
datos de los países, el administrador del catálogo Pais podrá agre-
Desventajas garlo fácil y rápidamente. Inclusive, los reportes que se hayan pro-
• El uso de memoria en el servidor SQL puede verse afectado. gramado no requerirán de inversión de tiempo, puesto que la infor-
mación que se pida será obtenida mediante una consulta SQL.
La desventaja puede ser solucionada con el uso correcto de las
consultas SQL, tal es el caso de evitar productos cartesianos al mo- En la siguiente figura muestro un diagrama de clases de lo que sería
mento de dicha consulta y en su reemplazo utilizar INNER JOIN, LEFT una relación de la tabla cliente con la tabla país (1:N).
JOIN, RIGHT JOIN según se requiera.
Ejemplo 1
“Un sistema requiere que almacene el país de origen de un clien-
te” pero este dato puede cambiar y/o aumentar en base a las ne-
cesidades del usuario final. El desarrollador puede elegir entre
varias opciones:
a. Agregar un campo de tipo cadena de caracteres, permitiéndole al
usuario escribir el dato en un campo de texto. Ejemplo 2
b. Añadir un campo de tipo entero y colocando un campo de selec- “Un sistema requiere que se almacene la especialidad de un médico”
ción obteniendo la información desde el código de manera estática. este dato se puede aumentar, actualizar y/o eliminar.
Los problemas que se generan cuando se utiliza un campo de tipo La solución fácil y rápida pero errónea, sería crear un campo en la
cadena de caracteres, radica en la integridad de los datos, pues en tabla médico llamado “especialidadMedico” y que este sea de tipo
Victor Hugo García es Líder de Desarrollo Web en C-Technologies. Es egresado del Instituto Tecnológico de Ciudad Guzmán. Cuenta con experiencia en el
diseño de base de datos y programación con tecnologías .NET y PHP. Actualmente se encuentra desarrollando software en diversas verticales de negocio para
clientes en Estados Unidos. Durante el 2007 colaboró con proyectos en el Gobierno del estado de Guanajuato.
Realizar búsquedas, generar reportes, obtener información para desplegar en alguna lista,
etc., todo esto puede llevarse a cabo de manera rápida y eficiente. En todos los sistemas
una búsqueda es básica e indispensable, por lo tanto imaginemos esto: El cliente desea una
lista desplegable con las especialidades que se tienen para realizar un mejor filtrado de la
información. Ahora, imagina esto en más de 10 páginas. Por ultimo imagina que el usuario
final te comenta que se requiere agregar una nueva especialidad.
Cuando se necesita cotizar una aplicación, se debe dejar en claro al cliente, que el adminis-
trador del sistema será capaz de modificar opciones del sistema de manera fácil y rápida; tu
cliente verá esto como un buen desarrollo.
Cuando me encuentro en reuniones con clientes para hablar sobre las opciones que se de-
sean en el sistema, siempre hay un punto en el que se comenta “Este módulo debe ser así,
porque CASI NO se eligen esas opciones” es entonces cuando se tiene que realizar un análisis
de ese caso, puesto que si eliges una opción errónea, al momento de entregar tu software se
te diga que SIEMPRE SI se usarán dichas opciones, para solucionarlo te podrías ver en la ne-
cesidad de reprogramar uno o varios módulos; sin embargo, al elegir la opción de catálogos,
simplemente se agrega el dato a la base de datos y listo.
Finalmente podemos concluir que si los desarrolladores ven la importancia del uso de ca-
tálogos, esto puede significar auténticos ahorros en tiempo de programación, proceso de
normalización y mejorar la integridad de los datos en la aplicación.
Cuando llega el momento de desarrollar la ar- Nos quedaremos con la siguiente definición sería un buen paso en beneficio de la comu-
quitectura de un sistema de software, es nor- de arquitectura de software, proveniente nidad de arquitectos de software.
mal que surjan dudas como: ¿Por dónde em- del libro Software Architecture in Practice:
pezar?, ¿qué documentos y diagramas hay que La arquitectura de software de un progra- Anteriormente no contábamos con un mo-
hacer? ¿cuáles hacemos primero y qué orden ma o sistema de cómputo es la estructura delo de proceso para desarrollar la arquitec-
seguimos? y muchas de las veces incluso du- o estructuras del sistema, la cual incluye los tura de un sistema de software. Y en todo
damos de ¿qué es la arquitectura de software? elementos del software, las propiedades ex- caso, algunos de estos pasos se llegan a
ternamente visibles de esos elementos y las contemplar en los modelos de procesos
En esta ocasión haremos un resumen del relaciones entre ellos. para desarrollo de software como el Proceso
marco de trabajo para arquitecturas y en Unificado en el Marco de Trabajo para Solu-
particular del método para desarrollar ar- Por elementos del software, debemos enten- ciones de Microsoft (UP y MSF), Iconix, sólo
quitecturas propuesto por The Open Group. der prácticamente todo lo que podamos re- por mencionar algunos.
Método que nos puede ayudar a responder presentar en UML y aún más, clases, objetos,
las preguntas planteadas. componentes, hardware, pantallas, requisi- La buena nueva es que ya existe un modelo
tos, casos de uso, etc. Pero ¿cuáles son los de procesos creado específicamente para el
¿Qué es y para qué sirve la pasos para describir y plantear las relaciones desarrollo de arquitecturas de software, el
arquitectura? entre todos esos elementos? Es precisamen- cual complementa muy bien a los procesos
La arquitectura de un sistema de software te eso lo que veremos a continuación. de desarrollo de software existentes, como
nos ayuda a satisfacer los requisitos de ca- los antes mencionados.
lidad que debe cumplir un sistema de soft- Madurez en la disciplina de
ware permitiendo que la solución creada arquitectura de software Un marco de trabajo para
sea confiable, mantenible, estable, usable y El desarrollo de software ha dejado de ser un arquitectura
todos los “able” que nos enseñan en la pre- arte y poco a poco se ha ido convirtiendo en una The Open Group es un consorcio de usua-
paración académica acerca de este tema. ingeniería, lo mismo ha sucedido con la discipli- rios y fabricantes de la industria de TI que
na de arquitectura de software, esta madurez cuenta con varios foros, de los cuales el de
Otro hecho en la vida de un proyecto es que es tangible por los siguientes elementos: arquitectura ha sido uno de los más activos,
la única constante en el desarrollo del soft- • Un cuerpo de conocimiento (Body of una de las conclusiones de este foro en 1994
ware es el cambio. Una buena arquitectura Knowledge, BOK) de arquitectura. fue que era necesario desarrollar un marco
nos ayuda a realizar estos cambios con me- • Certificaciones como arquitecto de software. de trabajo para la arquitectura empresarial,
nos tiempo y esfuerzo, además de facilitar la • Modelo de procesos para desarrollar la ar- resultando de esta iniciativa el Marco de Tra-
implementación de una estrategia de re-uso. quitectura de software. bajo para Arquitecturas de The Open Group
(TOG Architecture Framework, o TOGAF).
El término arquitectura de software es uno Aún falta trabajo por realizar, ya que actual-
de los más extensos y documentados, y me mente contamos con varias iniciativas para Aunque TOGAF no es el único marco de tra-
refiero a lo siguiente, si le preguntas ¿qué formar un BOK de arquitectura, habría que bajo para la arquitectura de software. Algu-
es arquitectura de software? a cinco desa- unificar estas iniciativas para ganar aún más nos de los más relevantes al momento son:
rrolladores, seguramente obtendrás cinco madurez. Lo mismo sucede con respecto a las
respuestas distintas, incluso el SEI (Software certificaciones como arquitecto de software, • The Zachman Framework for Enterprise
Engineering Institute) en su sitio en internet existen certificaciones de Microsoft, Sun e Architecture.
tiene una sección que recopila definiciones de IBM solo por mencionar algunas. Espere- • TOGAF.
arquitectura de software (www.sei.cmu.edu/ mos que en el futuro veamos la unificación • The Federal Enterprise Architecture (FEA).
architecture/published_definitions.html). de todas las certificaciones existentes, pues • The Gartner Methodology.
Mike Armas es consultor e instructor senior certificado por la OMG en Milestone Consulting, primer empresa mexicana miembro de la OMG, especializada en la
capacitación práctica y consultoría en UML y las mejores prácticas de ingeniería de software. info@milestone.com.mx www.milestone.com.mx
La integración de un equipo de
trabajo funcional
Reto del Líder de Proyectos de Tecnologías de Información
Por Francisco Vaca
En este artículo reflexionamos sobre la difi- En este momento “crítico” los únicos patro- Al final a base de “puro músculo” vamos
cultad que tienen los líderes de proyectos nes de conducta para conducir al equipo avanzando y unos pocos días, semanas,
para integrar equipos de trabajo altamente de trabajo posiblemente sean los aprendi- meses o años más tarde entregamos un
funcionales y productivos. En muchos casos dos en la propia empresa o institución, los producto que hace cosas que se planearon,
la solución consiste en utilizar enormes can- cuales resultan insuficientes con mucha más cosas que no se planearon, otras más
tidades de energía personal y de la organiza- frecuencia y los aprendidos en otros sitios que ni se pidieron ni se planearon pero que
ción para “hacer que las cosas sucedan” con posiblemente no se puedan aplicar. ahí están a un costo 10%, 50%, 200% más
lo cual pudiera parecer que se logran los re- alto del que se estimó al principio.
sultados sin embargo los altos costos y efec- Ante el reto de la conducción del equipo
tos negativos secundarios no son evidentes. planteemos el primer paso: La integración ¡Listo!, ¡El siguiente! y vamos de nuevo… a
Proponemos que la labor de líder más que del mismo lo cual supone encontrar res- vivir otra vez la misma película.
asegurar que “todos estén trabajando” con- puestas a peguntas como; ¿por dónde em-
sista en crear un contexto apropiado de tra- piezo?, ¿cómo “integro” al equipo?, ¿cómo Una forma más razonable para iniciar el pro-
bajo en el que las personas que participan en hago para que “se pongan la camiseta”?. ceso de conducción del equipo consiste en
el proyecto o en la tarea se integran de forma tener un mejor punto de partida:
voluntaria y ordenada. Hemos visto como muchas personas (aún
profesionales con largas carreras) no tienen • Las personas no son integradas, las perso-
“El mercado laboral para los profesionistas buenas respuestas ya que su punto de parti- nas se integran. No hay autoridad formal por
de TI demanda cada vez más personas con da contiene supuestos falsos u obsoletos: grande que sea, que ordene a una persona
competencias para la conducción de grupos • “Son profesionales, tienen que cumplir el “intégrate” y que ésta se integre. A la larga
de trabajo bajo condiciones de alta presión, objetivo planteado” (posiblemente más temprano que tarde) ha-
ambigüedad y recursos limitados” • “Es su chamba, no se los tengo que pedir” brá problemas que pueden ir desde una re-
• “Estamos en el mismo barco” sistencia pasiva hasta resistencias activas que
Esta afirmación no parece contener gran • “Hay que echarle ganas” producen conductas “tóxicas” para el equipo.
sabiduría ni grandes capacidades de obser- • “Sé que tenemos algunas indefiniciones, pero
vación para llegar a ella, sin embargo para vamos comenzando y las vamos resolviendo” • Las personas tienen una jerarquía de valo-
el profesional de las tecnologías de informa- • “Nos llevamos muy bien” res a partir de los cuales actúan y no necesa-
ción de principios del siglo XXI puede arrojar riamente están alineados con los valores que
algunas reflexiones interesantes. Poco tiempo después comienzan los proble- se necesitan para cumplir con los objetivos.
mas y las frustraciones: cada quien “jala” por
Centrémonos en las competencias para su lado, la gente dice que sí pero no cumple, • Las personas tiene egos que los hacen ac-
la conducción de equipos de trabajo: Una no hay compromiso, no hacen caso… los trucos tuar de forma individual, defensiva, y hasta
carrera profesional exitosa conduce, en que utilizamos parecen no funcionar: hablarles de forma agresiva.
muchos casos, a un punto en el que se tie- suavecito o duro, leerles la cartilla, acusarlos
ne a un grupo de personas sobre las que con los jefes, hacer minutas detalladas, listas • Las personas no comparten un objetivo por
hay poco o ningún poder formal, un objeti- de tareas, estar detrás de ellos presionándo- el simple hecho de comunicarlo y por más
vo que cumplir, recursos limitados y unas los… nada parece moverlos hacia delante ni que creamos que es atractivo y deseable.
expectativas enormes para cumplir fechas motivarlos lo suficiente… a pesar de esto los
y presupuestos para entregar un produc- vemos ocupados y dedicándole largas horas a La labor del líder consiste en crear las con-
to terminado. su trabajo pero ¿y los resultados?. diciones apropiadas para que las personas
Francisco Vaca Gómez es socio director TEDE de 2006 a la fecha. Ha realizado diseño e implementación de proyectos de educación basados en competencias,
instrucción de programas de educación basados, investigación y promoción de la educación basada en competencias.
De la poesía
Carlos “Fofo” Ordóñez es Ingeniero en Sistemas Computacionales por el ITESO. Cuenta con varias certificaciones por IBM y Sun Microsystems. Actualmente
dirige un conjunto de proyectos de desarrollo en el centro de entrega global de TATA Consultancy Services. Es profesor asociado del ITESO, donde imparte
materias de diseño, programación e Ingeniería de Software. La información en este artículo representa el punto de vista del autor y no necesariamente el de TATA
Consultancy Services o ITESO. fofo@iteso.mx
segmento en particular, y que son previamente desarrolladas con pueden integrar, un conjunto de principios y herramientas estanda-
base en un conjunto de activos de forma preescrita” rizadas para la construcción. Puedes gestionar el proyecto de inicio
a fin, o dividirlo en pequeñas mejoras (Iterativas) con revisiones pe-
Ese proceso de fabricación implica el uso de entornos de desarro- riódicas con los involucrados.
llo especializados y configurados como esquemas, Domain Specific
Languages (DSLs), patrones, frameworks, generadores de código, La polémica comienza cuando incorporamos la siguiente cuestión:
librerías especializadas, etc, todos coordinados y definidos de tal Los edificios son bienes físicos, mientras que el software, es un bien
forma que integrados formen un tipo determinado de aplicaciones. intelectual”, y desde esta perspectiva, el software nos permite rea-
lizar transformaciones imposibles en el mundo físico. Esto cambia
“Los conceptos de fábrica se aplican de forma correcta a compañías por completo el panorama, pues los principios y reglas de los que
donde se necesitan desarrollar varias versiones de sistemas simila- hablamos anteriormente, en el mundo del software permanecen en
res o la construcción de soluciones basadas en un conjunto de re- constante evolución, y es entonces cuando nuestros proceso de di-
querimientos bien entendidos y con muchas restricciones externas” seño, con base a un conjunto de necesidades tiene que tomar en
(CUSUMANO Michael, “The business of Software”, Nueva York, 2004). cuenta que el entorno se modificará y los involucrados cambiarán
de parecer, y será entonces necesario crear una nueva pieza de soft-
Como lo escribe Cusumano, esta aproximación funciona para desa- ware, donde este proceso es un proceso creativo, mas parecido al
rrollos repetitivos y para un dominio o industria en especifico, pero de escribir poesía.
como podemos notar, el proceso creativo queda completamente
mermado por el proceso de construcción, y los problemas comien- De la ingeniería de software
zan cuando queremos incluir como parte del proceso de fabricación La ingeniería de software es un campo muy joven aun, tan-
un desarrollo de investigación para crear nuevas piezas de software, to que resulta imposible evitar su evolución, y como conse-
donde no existe un conjunto de activos que nos permiten fabricar los cuencia las analogías con las que la describimos tienden a
componentes de nuestra aplicación. cambiar por completo, de ser complementarias a ser conflic-
tivas, algunas mejores que otras, todas tratando de expli-
De la ingeniería civil car nuestra experiencia, lo que no es válido es tratar de forzar
nuestros procesos para adaptarlos a la analogía, pues al final,
la ingeniería de software es un modelo procesal para desarro-
llar sistemas de cómputo que cumplan con las necesidades
de los involucrados, y jamás será: “hacer hamburguesas de
McDonalds”, “edificar construcciones”, “escribir novelas”, “fabri-
car panecillos”, “hacer una película” o “cocinar chilaquiles”.
Luis Daniel Soto Es Director de Divulgación Tecnológica para Microsoft . Responsable de la cuarta área de trece a nivel mundial en atención
a desarrolladores de software. Coordina el esfuerzo de un grupo de 100 personas encargadas de Divulgación Tecnológica en América Latina.
Ingeniero en computación por la Fundación Arturo Rosenblueth, especialista en el tema de liberación al mercado de nuevas tecnologías y
toma electrónica de decisiones. luisdans@microsoft.com luisdans.com\Twitter
E l debate sobre que el 90% del software que hoy se utiliza pueda
ser entregado como servicio está energizando las conversaciones
¿Cómputo en la nube?
Aquí hay una primera confusión de términos: Web 2.0 se refiere a habi-
del futuro del software, creando encabezados alarmistas. El anuncio litar “la era de la participación” y “un internet más allá de texto e imá-
de la muerte del software en su forma actual es prematuro: estamos genes”. El problema es que el desarrollo de estas aplicaciones es muy
observando una evolución y no una revolución. complejo. Integrarlo a los sistemas existentes es otro reto significativo.
Hay que entender cuál es la visión de “cómputo en la nube” de cada
Antes y después de Internet proveedor. ¿Es un outsorcing convencional? EDS e IBM han jugado en
Hay que señalar que el requerimiento de las empresas, es utilizar el este campo por años. En Microsoft creemos que la diferencia funda-
software para desarrollar mejor su negocio y ofrecer ventajas com- mental está en la capacidad de construir software a la medida de forma
petitivas, sin importar el mecanismo de entrega. Es absurdo el abrir- simple. Windows “Strata” es el nombre clave que ofrece:
se a ultimatum “todo o nada”. Aclaremos las razones iniciando por
entender las ventajas de dos modelos. • Menores costos. Mediante economías de escala de Internet, se ofrece
arquitectura y ambiente escalable para que los desarrolladores ofrez-
Software tradicional Software entregado como servicio can servicios en Internet a costos menores que operados localmente.
• Capacidades totales. Las ofertas iniciales de almacenamiento en
la nube imponen restricciones en manipulación de datos. Pretende-
· Respuesta inmediata por el · Redundancia de datos
uso de recursos locales · Alcance mundial mos que todas las funciones de la plataforma aplicativa .NET, SQL
· Opera fuera de línea, sin red · Aprovisionamiento sencillo Server y Biztalk operen para construir todo tipo de aplicaciones.
· La privacidad está en control · Agilidad empresarial • Mayor productividad. Visual Studio no solo ofrecerá desarrollo para
del usuario · Administración
· Usuarios acostumbrados a esta · Instalación casi nula cliente, dispositivos portátiles y servidor: también para la nube.
experiencia · Acceso sencillo
· Alta capacidad de ser · Mantenimiento y nuevas versiones Windows “Strata” incluye servicios fundamentales y servicios para
personalizado ocurren de forma automática
· Visibilidad y control · Acceso desde casi cualquier dispositivo a
construir aplicaciones, que permiten a los terceros entregar software.
· Alta manipulación de datos (casi) cualquier hora La mejor manera de disipar dudas de disponibilidad y seguridad es
con aplicaciones · Nuevos modelos de negocio iniciando su evaluación inmediatamente.
Servicios
ServiciosTerminados
terminados Bloques
Bloques
de de
construcción
construcción Servicios
Servicios
Básicos
básicos
Pocos argumentarían que Internet ha transformado nuestras vidas • Soluciones personales Dispositivo, Sincronizar, Admi- Cómputo (10% CPU, 1 CPU,
de forma muy amplia. Casi nadie está en desacuerdo con que el te- “Windows Live” nistración de aplicaciones, 5000 CPUs), Almacena-
ner la flexibilidad y opción de seleccionar una forma mixta de operar • Soluciones empresa- Identidad, Control de acceso, miento, Administración de
es crítica para el negocio. Es poco realista pensar que una empresa riales “Microsoft online” Gestión de Base de datos, Flu- servicios, Redes, Distribu-
Fortune 50 tiene los mismos requerimientos que una empresa pe- jos de Trabajo, Bus de servicios... ción, Operaciones, Hardware
queña o un estudiante. Las normas de privacidad de datos en algunos
países hacen difícil entender un escenario 100% en la nube. ¿Cómo
una PyME en crecimiento puede transferir requerimientos básicos de Los clientes como Windows 7 y Windows Mobile 6.5; y el software
cómputo en otros más avanzados?. La visión miope de entrega como en servidor continuarán un trayecto de evolución que responde a la
servicio es incapaz de permitir conversaciones balanceadas. juventud de la industria: hay mucho por hacer y ofrecer.
Luis Vinicio León Carrillo es actualmente Director General de e-Quallity, empresa especializada en prueba de software. Fue profesor-
investigador en el ITESO durante varios años, que incluyeron una estancia de posgrado en prueba de software en Alemania, en la que
abordó aspectos formales de dicha disciplina. Es autor de varias publicaciones nacionales e internacionales, e invitado frecuente en eventos
relacionados con la prueba de software.
productos participantes. Una subrutina de 7 LCs con instrucciones Una métrica utilizada para medir este tipo de
compuestas y primitivas: complejidad son los puntos de función3, que
Aunque no es el único, la complejidad es f2 (n) { tienen la interesante ventaja de que se pueden
1: I2.1;
un atributo del software muy útil al distri- obtener incluso a partir de los requerimien-
2: if Cond2.1 then
buir adecuadamente el esfuerzo de prueba, 3: I2.2; tos. Una desventaja es que, si bien el algorit-
porque ahí donde hay más complejidad hay 4: else mo para calcularla no es complejo, no es tri-
más propensión a errores1. 5: while Cond2.2 vial y sí es laborioso; lo peor es que obtenerla
6: I2.3; automáticamente a partir de requerimientos
7: I2.4; }
No estamos hablando de dificultad de desa- –cuando resultaría más útil– es prácticamen-
rrollo, que es algo más bien subjetivo que Una subrutina de 5 LCs con instrucciones te imposible a menos que éstos hayan sido
guarda dependencia con el nivel de expe- compuestas y primitivas: especificados utilizando un lenguaje formal
riencia del desarrollador, sino de un aspecto f3 (n) { (como los de programación), situación casi
1: I3.1;
que puede ser medido de manera objetiva. exclusiva de los métodos formales4.
2: if Cond3.1 then
3: f3 (Exp3.1);
Veamos a detalle esta característica. 4: else Impacto de la complejidad en la
5: f3 (Exp3.2); } prueba de software
Las caras de la complejidad del Como mencionamos, ahí donde la comple-
software Si no tomáramos en cuenta la complejidad jidad en el software es mayor, hay más pro-
Podemos hablar de dos vistas de la comple- interna, sino sólo el criterio del tamaño, di- pensión a errores, lo que en particular impli-
jidad de un producto de software: la exter- ríamos que f1 es la más grande de las 3 su- ca que debemos probar más.
na, que tiene que ver con el problema que brutinas, pues tiene más LCs. Sin embargo,
resuelve el sistema (el proceso de negocio); puede verse que no tiene la misma compleji- Esto también podemos verlo si comparamos
y la interna, que se refiere a la manera como dad una secuencia de x instrucciones primi- los grafos de control asociados a las prime-
está programada la solución. tivas, que otra de llamadas recursivas. ras subrutinas mostradas arriba:
En el segundo grafo, la cantidad de rutas • La complejidad interna que considera la es- Referencias
distintas necesarias para visitar todas las tructura de un sistema ofrece un dato más pre- [ 1. León-Carrillo, L. “The Impact of Software
aristas es mayor, lo que hace crecer también ciso que la métrica primitiva de la cantidad de Testing in small Settings”, en Oktaba, H.
la cantidad de casos de prueba que se de- líneas de código. Sin embargo, a pesar de que and Piatini, M. Software Processes in small
ben diseñar y aplicar. ese dato podría proporcionarlo fácilmente los Enterprises. IGI Global, 2008. ]
compiladores, no es algo que suelan proveer. [ 2. Aho, A.; Lam, M.; Sethi, R.; Ullman, J.
Algunas reflexiones Compilers: Principles, Techniques, and
• Es muy importante tratar de mantener lo • Sería muy útil obtener de manera automática Tools. Second edition. ]
más simple posible los diseños y los progra- la complejidad externa de un sistema (asociada [ 3. Garmus, E.; Herron, D. Function Point
mas de los sistemas que se desarrollan. Esto a la funcionalidad) en fases tempranas del pro- Analysis: Measurement Practices for
no solo reduce la probabilidad de introducir ceso de desarrollo de software (luego de espe- Successful Software Projects. Addison-
errores, sino que puede facilitar el manteni- cificar los requerimientos), pues ello aceleraría Wesley ]
miento, el reuso, y la prueba de software. también el resto del proceso (comenzando con [ 4. Jean-Francois Monin, J-F. Understanding
las estimaciones e incluyendo las pruebas). Formal Methods. Springer Verlag. ]
El presente artículo pretende mostrar un resumen del estado del arte RFID es un término genérico para describir un sistema que transmite
sobre las tecnologías RFID (Radio Frequency Identification, identifi- la identidad de un objeto o persona (en forma de un único número
cación por radiofrecuencia), se presentan algunas noticias importan- de serie) de forma inalámbrica, usando ondas de radio. Está agrupa-
tes publicadas en la página oficial de RFID en España y las distintas da en la categoría de tecnologías de identificación automática. Las
controversias que la tienen en el campo de la investigación. tecnologías de identificación automática incluyen códigos de barras,
lectores ópticos de caracteres y algunas tecnologías biométricas,
Tecnologías RFID como escaneo de retinas1.
La seguridad de las computadoras se enfoca principalmente a evitar
que la información almacenada sea alterada, robada o interceptada Esta tecnología, junto al EPC (Código Electrónico de Producto), harán
para realizar delitos informáticos, el campo incluye la protección de posible el rastreo y seguimiento de productos en tiempo real permitien-
transferencias de fondos electrónicas, información propietaria (dise- do una “visibilidad” casi perfecta de la mercancía desde el almacén de
ños de producto, listas de cliente, etc.), programas de computadora, materia prima hasta el punto de venta1. El Código Electrónico de Pro-
otras comunicaciones y la prevención de los virus. ducto es un número único que se graba en el chip contenido en una
etiqueta RFID y se coloca en cada producto, lo que permite hacer un
Existen en la actualidad un gran número de soluciones, herramien- seguimiento exacto de cada unidad física en la cadena de suministros.
tas y dispositivos disponibles, dependiendo de lo que requiera
mayor atención, entre ellos, los nuevos y avanzados dispositivos ¿Dónde empezó todo?
usados como herramientas de monitoreo, la tecnología llamada: Durante la Segunda Guerra Mundial los Británicos desarrollaron el
RFID, que ha creado un gran debate entre diversos planos secto- sistema llamado IFF, (Identify: Friend or Foe, Identificación: amigo
riales, ya que tiende a suponer grandes beneficios en la gestión de o enemigo), sobre el que está basado el sistema actual de control
la cadena de suministros, sobre todo en el sector de alimentación, de aviación privada y comercial. Esta aplicación fue el primer uso
farmacéutico y bebidas. obvio de la tecnología de RFID. Otras de la primeras aplicaciones
comerciales para RFID fueron en 1980 y 1990 las etiquetas de inven-
Su implementación abarca un radio amplio de aplicaciones como: tarios en pagos de tarifas de peaje en caminos, en pisos de tiendas
salud, alimentación, fabricación, transporte, distribución, ventas, o directamente en el ensamblado de automóviles.
seguimiento de ganado, localización de niños y animales, anti-
robo, construcción, alquiler de equipos, pago inteligente, venta Existen también versiones de este sistema para implantes en hu-
inteligente de boletos, control de acceso a edificios, servicios pú- manos, como VeriChip en 2006. La práctica de implantar el chip a
blicos, aéreo, etc3. las personas es limitada, la mayoría de los implantes son usados
para fines clínicos, para alertar al personal médico de las condicio-
¿Qué es RFID? nes que un paciente tiene, en el caso de que esa persona no pueda
Es un sistema basado en agentes dentro de tarjetas y lectores, es comunicar los síntomas.
una tecnología, un método de identificación automática para el in-
tercambio de datos remotos usando dispositivos llamados etiquetas México fue el primer país donde se usó para implantes en humanos
de RFI o repetidores1. en el 2004 se colocó un chip diminuto, menor que un grano de arroz
a 18 agentes de la Procuraduría General de la República (PGR) para
Una etiqueta RFID es un dispositivo pequeño, que puede ser adheri- identificarlos cuando tuvieran contacto con documentos confiden-
da o incorporada a un producto, animal o persona. ciales y evitar así la corrupción4.
Beatríz Ríos catedrática del Instituto Tecnológico de San Luis Potosí, México. Ha trabajado en la banca en México, participado en el desarrollo de sistemas para
empresas y docencia en ingeniería de software, sistemas operativos, lenguajes de programación. Actualmente estudiante del doctorado en Informática en ingeniería
de Software en Universidad Pontificia de Salamanca en Madrid, España.
El Código de Producto
(EPC) identiica inmediata-
mente el contenido de los
pallets descargados en el
almacén de distribución.
El presidente actual de Colombia declaró que se podrían implantar • Etiquetas pasivas. Tienen 2 componentes conectados entre sí,
estos chips a los ciudadanos colombianos que quisieran ir a tra- un microchip y una antena. Estas etiquetas son las de menor ta-
bajar a Estados Unidos, para que el gobierno de ese país pudiera maño, por ende las más livianas y con una vida útil que puede ir
controlar su ubicación4. hasta los 99 años8.
Un reconocido club en Barcelona, España, utiliza un VeriChip para Pueden proporcionar información sobre la identificación y localiza-
identificar a sus clientes VIP, lo utilizan para comprar las bebidas. ción sobre el producto marcado con la etiqueta como por ejemplo
El departamento de policía de la Ciudad de México ha implantado precio, color, fecha de compra, etcétera, son usadas en los puntos
el VeriChip a unos 170 de sus oficiales de policía, para permitir el
acceso a las bases de datos de la policía y para poder seguirlos en
caso de ser secuestrados.
Clasificación
Las etiquetas RFID se pueden clasificar principalmente en tres cate-
gorías, dependiendo del alcance y capacidad de memoria: pasivas,
activas y semiactivas o semipasivas.
de venta en estaciones de gasolina y edificios con sistema de control ser de 30 metros bajo condiciones ideales, son mucho más pe-
de accesos, no tienen fuente de alimentación propia. queños que las activas y tienen más memoria de almacenamiento
que las pasivas.
Ejemplos de ellas tenemos: el sistema de compra rápida SpeedPass,
funciona cuando el llavero con la etiqueta ondea enfrente de una En el manejo en la cadena de suministros de tiendas y librerías han
área especial de la bomba de gasolina, una etiqueta lectora dentro usado artículos electrónicos de vigilancia de 1 bit desde RFID para
de la bomba, lee el número secreto contenido dentro del disposi- controlar robos desde 1960. Etiquetas semiactivas indican si un ar-
tivo, que corresponde a la cuenta del cliente en curso del sistema tículo ha sido robado o propiamente sacado de la tienda, ya que un
SpeedPass, en este punto una insignia enciende la luz, (en este caso cajero usualmente desactivará la etiqueta antes de salir.
el tigre saltando) firmando el comienzo de la compra y es cargada a
una tarjeta de crédito conectada a la cuenta del sistema SpeedPass, El departamento de la Defensa de US y varios minoristas están condu-
también se pueden comprar otros artículos como: botellas de agua, ciendo ya ensayos en la plataforma de RFID, de hecho una gran cade-
bolsas de botanas, etcétera. na americana de supermercados dentro de EUA y México, exigió a sus
600 proveedores que adopten este sistema desde enero del 2007.
En restaurantes de comida rápida trabaja exactamente igual, el clien-
te coloca su orden, entonces ondea su llave enfrente del controlador
del lector, si todo funciona como debería, el dispositivo se iluminará
y dará la comida. Se espera implementar este sistema SpeedPass en
400 restaurantes.
• Etiquetas semipasivas. Poseen baterías pero permanecen dor- Se utilizan en bibliotecas y seguimiento de libros, control
midas hasta que reciben una señal proveniente de un lector. El de acceso en edificios, seguimiento de equipaje en aerolí-
rango de lectura de una etiqueta semiactiva, o semipasiva, puede neas, seguimiento de artículos de ropa y en pacientes de cen-
Luis Joyanes Aguilar Dr. Ingeniería Informática, Dr. Sociología, Lic. en Ciencias Físicas y Lic. de Enseñanza Superior Militar. Titular de la cátedra de Lenguajes y
Sistemas Informáticos de la Universidad Pontificia de Salamanca, Madrid. Ex-Decano de la facultad de Informática y Dir. del Departamento de Postgrado en Inge-
niería Informática. Ha publicado más de 60 libros sobre tecnologías de la Información, profesor del programa de doctorado en Sociología, Guatemala. Ha impartido
cursos de doctorado en las Universidades Complutense, Politécnica de Madrid y Oviedo. casadellibro.com/libros/joyanes-aguilar-luis/joyanes2aguilar32luis
El sujeto es identificado desde que entra (nombre, domicilio, tar- se intentase quitarlo sin control médico podría producir daños
jeta de crédito, última visita a la tienda, tendencias de compra y severos y hasta la muerte13.
gustos sobre ropa). La ropa lleva incorporada etiquetas RFID in-
visibles. Antes de pagar, se le somete a una prueba de reconoci- • Problemas de lectura con los pasaportes RFID. No sólo son menos
miento facial para comprobar si efectivamente es quien su tarjeta seguros; ahora también sabemos que la lectura de los pasaportes
de identidad dice que es. El sistema utiliza Internet y puede avisar con el chip son menos fiables (prácticamente la mitad) que la de los
a la policía si la persona sale de la tienda sin abonar la mercancía, tradicionales, requiriendo más tiempo y atención por parte de los
así como proporcionarles información sobre dónde obtener foto- empleados. Eso es lo que afirma un estudio del propio Departamen-
grafías on-line del sospechoso4. to de Estado de los EUA 8.
• Planean “etiquetar” a los pasajeros aéreos. BBC News anuncia • Detectan fugas de información en las nuevas tarjetas de crédito
nuevos y espeluznantes avances en la dudosa ciencia del pre-crimen. con RFID. Herald Tribune publica un artículo que revela que infor-
El proyecto Optag desarrollado en el University College London, ha mación sensible de las tarjetas de crédito de última generación que
llegado a la brillante conclusión científica, de que etiquetar a los pa- incorporan chips RFID, puede ser leída por un intruso mediante un
sajeros de los aviones ayudaría a combatir el terrorismo7. equipo electrónico cuyo costo aproximado son 150 dólares, pero
que podría reducirse en tamaño hasta algo similar a un paquete
• La tarjeta inteligente, Visa con RFID. La Caixa introducirá en España de chicles y precio de construcción seri de 60 dólares. Las pruebas
las tarjetas de crédito equipadas con chip RFID, legibles a distan- se han realizado sobre 20 tarjetas de Visa, MasterCard y American
cia sin necesidad de contacto físico con el aparato lector. La Caixa Express. Algunos fabricantes habían hecho creer a los usuarios que
será la primera entidad financiera española en incorporar tecnología los datos irían cifrados.
RFID a sus tarjetas de crédito12.
• Peligros en datos biométricos. Fallos en RFID hacen peligrar los
• Parece Polvo. El novedoso chip RFID de Hitachi que mostraron al datos biométricos de los millones de personas que visitan Estados
mundo el pasado 13 de febrero 2007. Estos tienen un tamaño de Unidos, para rastrear a los visitantes extranjeros tras su entrada por
0.05 x 0.05 mm y son hasta 64 veces más pequeños que sus actua- las dos fronteras terrestres de Estados Unidos, México y Canadá8.
les mu-chips de 0.4 x 0.4 mm, aparecerán en el mercado dentro de El controvertido RFID sigue “ganando enemigos” a lo largo y ancho
dos ó tres años más. de este mundo. Ahora son los usuarios del metro en Rheinberg,
Alemania, que han descubierto que sus tarjetas llevaban escondi-
Pero no todo es perfecto con RFID do un chip RFID. Por el diminuto tamaño que está adoptando estos
• Logran clonar el VeriChip. Un investigador Canadiense anunció en dispositivos, cada vez es más sencillo esconderlos en casi cualquier
el 2007 que logró clonar el implante subcutáneo RFID de VeriChip parte, desde billetes de banco, hasta boletos de metro.
Corporation, pese a lo cual la empresa sigue afirmando en su Web
que el chip provee de un identificador único y que el sistema es ab- Aún con todos los problemas mostrados con la tecnología RFID, re-
solutamente seguro 8. presenta un gran avance su uso en la industria, ahorrará grandes
tiempos en las líneas de producción, administración y distribución.
• El VeriChip podría causar la muerte. El bio-chip está compues-
to de un transponder, un sistema de almacenamiento, lectura de Las novedades de RFID en el 2008
información a control remoto y una batería de litio recargable, 1. Empresas en México con productos perecederos como las frutas y
la que se recarga por un sistema termopar (dispositivo capaz de legumbres, implementarán RFID en su cadena de abasto, para mo-
convertir la energía calorífica en energía eléctrica) que produce nitorear el estado de cualquier fruta y determinar cual deberá ser
fluctuaciones de la temperatura del cuerpo, razón por la que se puesta primero en el mercado y ahorrarse una gran cantidad de di-
determinó después de varias investigaciones millonarias, que el nero al no tener que tirarla por estar en mal estado 9.
mejor lugar para implantarla es en la cabeza o la mano derecha.
Aunque la empresa sigue asegurando que el bio-chip es seguro, 2. Se ha puesto en marcha el primer centro de distribución dirigi-
la verdad es que el litio que contiene al ser derramado en el in- da por voz en Colombia atreves de RFID. La distribución esta dirigi-
terior del cuerpo, produce úlceras y daños en los tejidos, que si da por voz y permite a los operadores recibir instrucciones paso a
Al igual que la mayoría de los ingenieros de ne un arreglo con las palabras que comien- solo fork, join, o siquiera crear un thread de
sistemas, tengo malos recuerdos de lidiar zan con la letra ‘b’, y así sucesivamente. forma explícita. Se implementa en el código
con threads en mi clase de sistemas opera- por medio de directivas “pragma”. Como
tivos en la universidad. Así que cuando me Una vez que se genera este arreglo “semior- programador, lo único que necesitas hacer
encontré en la necesidad, ya como profe- denado” –ya que las palabras se encuentran es determinar qué patrón de paralelismo re-
sional, de aprender a hacer programas que agrupadas de acuerdo a la letra con la que quiere tu código, y entonces indicar la direc-
se ejecuten en distintos threads paralelos, empiezan –, se puede invocar a la función tiva pragma correspondiente.
debo aceptar que tuve mucho miedo. Sin que se encarga del ordenamiento.
embargo, descubrí que actualmente hay Uno de los elementos más sencillos y utili-
herramientas que hacen esto mucho más Ordenamiento sin paralelismo zados de OpenMP es el pragma “parallel for”.
sencillo de lo que pensaba. Primero realicé la prueba haciendo el orde- Este corresponde a lo que sería un “for” en
namiento de la forma tradicional, es decir programación single threaded. Lo que hace
Para reiniciarme en la programación parale- sin paralelismo. El listado 1 muestra el códi- es dividir un ciclo de tareas en rangos, y
la, decidí comenzar haciendo el ejercicio de go en lenguaje C para hacer esto. asigna un segmento de tareas a cada pro-
implementar un ordenamiento de burbuja cesador. OpenMP se encarga de crear los
(bubble sort) paralelo. Éste es uno de los void bubble_sort (char *** &my_array, int letter_counts[26]){ threads y asignarlos a cada procesador. En
char * temp;
algoritmos de ordenamiento más sencillos y el caso de mi ejemplo, el pragma “parallel
for (int letter =0; letter < 26; letter++) {
lentos. La forma en que funciona es que se for (int i =0; i < letter_counts[letter] - 1 ; i++){ for” es justo lo que necesitaba, ya que mi
recorre una lista de elementos, y se va com- for (int j =0; j < letter_counts[letter] - 1 - i; j++){ algoritmo estaba estructurado en base a un
parando el elemento i con el i+1, y en caso de if (strcmp(static_cast<char *>(my_array[letter] ciclo maestro donde se trabaja de forma se-
que el orden esté equivocado, se intercam- [j+1]), static_cast<char *>(my_array[letter][j])) < 0){ parada los distintos grupos de palabras en
temp = my_array[letter][j+1];
bia estos valores de posición. Este recorrido my_array[letter][j+1] = my_array[letter][j];
base a la letra con la que empiezan. Usando
se repite n-1 veces (donde n es el número de my_array[letter][j] = temp; el parallel for a este nivel, no corría el riesgo
elementos que contiene la lista) para asegu- } de que dos threads accedieran el arreglo de
rar que se hayan realizado los cambios ne- } la misma letra al mismo tiempo .El listado
}
cesarios y la lista está ordenada. 2 muestra el código correspondiente, agre-
}
gando el parallel for.
}
Decidí ordenar palabras, ya que esto me daba
una forma sencilla de repartir mis datos entre Listado 1. Ordenamiento sin paralelismo void parallel_bubble_sort (char *** &my_array,
int letter_counts[26]){
distintos threads (un thread podría ordenar
char * temp;
las palabras que comienzan con “A”, otro las El programa se ejecutó en una máquina con #pragma omp parallel for
que empiezan con “B”, etc.). dos procesadores de cuatro núcleos, y al for (int letter =0; letter < 26; letter++) {
monitorear la ejecución me di cuenta que for (int i =0; i < letter_counts[letter] - 1 ; i++){
Al iniciar, el programa debe leer un archivo solo se usaba un núcleo. El tiempo de ejecu- for (int j =0; j < letter_counts[letter] - 1 - i; j++){
if (strcmp(static_cast<char *>(my_array[letter]
con palabras, contar cuantas palabras co- ción del programa fue de 7.4 segundos. [j+1]), static_cast<char *>(my_array[letter][j])) < 0){
mienzan con cada letra (sin diferenciar entre temp = my_array[letter][j+1];
mayúsculas y minúsculas), y guardar esta Implementando paralelismo my_array[letter][j+1] = my_array[letter][j];
cuenta en un arreglo unidimensional de 26 con OpenMP my_array[letter][j] = temp;
}
elementos llamado letter_counts. Esto signifi- Actualmente existen diversas librerías que
}
ca que el valor de letter_counts[0] es la canti- abstraen y simplifican el manejo de threads. }
dad de palabras que empiezan con la letra Una de ellas es OpenMP, la cual usé para }
‘a’, letter_counts[1] es la cantidad de palabras este ejemplo. OpenMP es un API para pro- }
que empiezan con ‘b’, y así sucesivamente. gramación paralela en C/C++ y Fortran. Es Listado 2. Ordenamiento usando el parallel for
El siguiente paso es volver a leer las palabras soportado por una gran variedad de compi-
del archivo, y almacenarlas en un arreglo de ladores incluyendo el compilador de Intel, Eso fue bastante sencillo … ¿podría ser tan
arreglos (my_array), de acuerdo a la letra con gcc, y Visual Studio (2005 o mayor). Con bello? Al ejecutar este código y monitorear
la que empiezan. Es decir, my_array[0] apunta OpenMP, es posible convertir un programa el sistema me di cuenta que ya había acti-
a un arreglo que contiene las palabras que de un modelo single threaded a un modelo vidad en los distintos núcleos de procesa-
comienzan con la letra ‘a’, my_array[1] contie- multithreaded sin necesidad de escribir un miento. El tiempo de ejecución fue de 6.4
Shannon Cepeda ha laborado en Intel durante 7 años en roles relacionados con el análisis y optimización de desempeño de sistemas. Shannon es Ingeniero en
Ciencias Computacionales, y Maestra en Ciencias de la Computación por la Universidad de Carolina del Norte.
Tivoli
NetWorks Radio
Hay equipos de audio que se ven bien, otros que resultan funciona-
les, y los que proveen audio en alta definición. Pero hay pocos que
logran combinarlo todo y además le agregan ese “pequeño extra”
que los hace especiales. Tal es el caso de NetWorks Radio, fabricado
por Tivoli, que luego de preguntarse: ¿qué haría un radio ideal? Mate-
rializaron esta monada que además de su diseño sencillo y moderno,
permite el acceso a las ventajas del broadcasting por Internet de tal
manera que con él se sintonizan estaciones de radio de cualquier par-
te del mundo sin interferencias, ofreciendo sonido cristalino y en el
idioma original; o escuchar la música que se tiene almacenada en la
PC desde cualquier habitación de la casa, a través de conexión Ether-
net o de manera inalámbrica. Incluso cuando NetWorks es sólo un ga-
binete, se puede expandir conectándole un par extra de altoparlantes
estéreo, un subwoofer o un reproductor de CD. Cuenta con control
de balance, panel de iluminación LCD, reloj digital con fechador, vo-
lumen de alarma independiente, entradas auxiliares, control remoto,
cable de corriente desmontable y capacidad de almacenamiento de
hasta 200 estaciones para guardar favoritos; entre muchas otras ca-
racterísticas que lo hacen un equipo high-tech con estilo.
Firebox
Brick USB
Para recordar aquellas épocas en las que todo era tan sencillo
como unir bloques de colores para construir una casa o una
nave espacial; ¿por qué no traer de regreso esas lindas
memorias de la infancia a nuestro acelerado ritmo de vida
en el que todo es llevar, traer y compartir información a
través de pequeños dispositivos con gran capacidad? Y
en respuesta a tan larga pregunta... unos legos USB (que
no son oficialmente legos) disponibles en rojo, azul o ama-
rillo con opción para guardar 2GB ó 4GB de documentos
importantes, música, imágenes o cualquier otro tipo de ar-
chivo digital. Lo mejor de ellos es que se pueden unir unos
con otros, de tal forma que a primera vista, pareciera que sólo
se trata de un grupo de bloques de colores.
HP
Mini-Note PC
Como la nueva era de computadoras portátiles es una realidad, HP presenta
su minicomputadora HP 2133, diseñada para el mercado empresarial, pero
perfecta para usarse en la oficina, en la casa, en viajes de negocios o sim-
plemente para llevarla a cualquier parte. Dentro de sus características
principales destacan su peso de 1.10 kilogramos, cubierta de aluminio
cepillado resistente, HP DuraKeys, que es una capa transparente apli-
cada sobre el teclado para proteger el acabado, las letras y caracteres
impresos. Pantalla resistente a ralladuras de 8.9” y armazón reforzado
con bisagras de magnesio. Tecnología inalámbrica Wi-Fi WLAN integrada
y Bluetooth opcional. Memoria de 512MG y 1GB; disco duro desde 120GB; batería
de 3 ó 6 celdas con rendimiento de hasta 55 horas. Opera con Windows Vista, XP o Linux.
Cada vez más compañías descubren el alto código y lo más importante: mejorar la ex- • Diseño centrado siempre en el usuario.
valor de tener sitios web o Software desa- periencia del usuario. Para lograr un buen diseño de sitio o apli-
rrollados con principios de usabilidad. Aún cación, será importante saber quién es el
así, el 80% de las empresas desarrolladoras Diseño y usabilidad usuario promedio: cuales son sus hábitos
de Software ignoran por completo el tema. • Arquitectura de información. En un sitio de navegación, cómo usa la tecnología o
web, una buena arquitectura es fundamental que tipo de información busca.
Usabilidad: casos de la vida real pues determinará si los usuarios podrán o no
Es muy común que no se tome en cuenta o llegar a la información preparada para ellos. Si se incorpora esa información al diseño,
que se deje para el último aplicar usabilidad el resultado será de mayor utilidad para el
durante el proceso de desarrollo de un sitio Suena sencillo, ¿no?; A pesar de eso, la usuario final.
web o una aplicación. gran mayoría de los sitios web NO cuen-
tan con una verdadera arquitectura de in- Es indispensable diseñar el sitio tomando en
La siguiente es una conversación que he te- formación. Esto se traduce en menús mal cuenta el tiempo de descarga. Los usuarios
nido en más de una ocasión con diferentes organizados con opciones interminables, son cada vez menos pacientes y el tiempo
compañías de desarrollo de software: secciones del sitio con nombres extrava- promedio de espera para un sitio Web es de
gantes, visitantes desubicados y lo más 2 a 10 segundos.
Cliente: Necesitamos que hagan bonita grave: usuarios frustrados.
nuestra aplicación. Esto no significa restringirse de usar mul-
Romeo: Muy bien, ¿cuando empiezan el aná- Las estadísticas lo confirman: timedia en el proyecto, sin embargo será
lisis de requerimientos con el usuario? • El 83% de los visitantes abandonan un importante que el usuario mismo sea quien
Cliente: Eso ya lo hicimos sitio si tienen que hacer demasiados clicks decida cuando y bajo que circunstancias de-
Romeo: ¿ Ah si? para encontrar lo que buscan. sea verla en vez de forzarlo.
Cliente: Así es, el desarrollo lo terminaremos • El 62% deja de buscar un artículo mientras
en una semana más, por eso estamos vien- visitan una tienda en línea. Si tu proyecto tiene más de un tipo de usua-
do quien va a hacer la interfaz de usuario. • 40% de los usuarios no regresan al sitio rio, será mejor diseñar secciones específicas
Romeo: Plop! debido a una mala experiencia relacionada para mostrar el contenido preparado para
con la falta de usabilidad. cada tipo de usuario.
Claro que es posible mejorar en términos de
usabilidad un sitio o un software ya diseña- Es importante definir bien la arquitectura de La Usabilidad en un sitio Web o aplicación
dos, más vale tarde que nunca, pero ¿por información en una aplicación, pues determi- debe:
qué dejarlo para el último o en las manos nará si el usuario la considera fácil de utilizar
equivocadas? y presenta menos resistencia al cambio. • Facilitar el acceso a la información.
• Reducir la posibilidad de cometer errores.
A veces queda la responsabilidad en los pro- Esto puede determinar si un software ten- • Incrementar la productividad del usuario.
gramadores de determinar el lugar de cada drá aceptación en el mercado o dentro de la • Reducir el tiempo dedicado a la capacitación.
cosa en la interfaz, sin embargo la experien- compañía. • Reducir el costo de dar soporte al usuario.
cia indica que eso es un grave error.
A menos que quieras ser como el dueño de • Pruebas de usabilidad. Nada peor que ha-
A continuación veremos por qué tomar en una compañía de software que dijo: No que- cer todo el esfuerzo de lanzar un sitio Web o
cuenta a la usabilidad desde el inicio del remos que nuestra documentación para el software para descubrir que el usuario no
proyecto, ayuda a obtener mejores resul- usuario final sea muy clara. Hacemos mucho encuentra lo que necesita, ni puede realizar
tados en el producto final, evitar reescribir dinero capacitando a nuestros clientes. sus actividades con facilidad.
Romeo Márquez Guzmán es fundador de gelattina, una compañía especializada en web 2.0, diseño de interfaces, E-Marketing, widgets y video para web y
podcasting). Adicionalmente es miembro de la Usability Professionals’ Association. Para Gelattina, ha dirigido proyectos de diseños de interfaces para The Home Depot,
Coca-cola, Banorte, Hoteles Marriott, Aba Seguros entre otros. www.gelattina.com romeo@gelattina.com
INDEX
TENEMOS UN ESPACIO
RESERVADO PARA TI
Si deseas anunciarte contáctanos
en el (55) 5239 5502 o en
publicidad@sg.com.mx
Nuestro gremio se caracteriza por conformar- temos, ¿qué y cómo enseñan a los alumnos “cerca del metal”, como desarrollos de siste-
se por dos principales perfiles: Autodidactas las universidades en nuestro País, las ca- mas tiempo real, embebidos, controladores
y escolarizados. Esto obedece a que el cam- rreras relacionadas con el cómputo? ¿Qué de hardware o software orientado al alto rendi-
po es aún novedoso, y es aún posible para un perfiles reales de egreso hay de cada una miento, es fundamental dominar estos temas.
aficionado ir obteniendo de manera gradual e de estas carreras (desde la Licenciatura en
independiente los conocimientos para llegar Informática Administrativa, pasando por las Por otro lado, para los programadores que par-
a un nivel de competencia comparable con Ingenierías, con perfiles orientados más ha- ten de un entorno meramente procedimental,
quien estudió una carrera formalmente. cia Sistemas, Electrónica u otras variantes, la POO se presenta como una complejidad adi-
y hasta las Ciencias de la Computación)? ¿Y cional, un obstáculo para la manera que tienen
El programador autodidacta típicamente es cómo explicamos que, a la hora de buscar un y conocen de solucionar los problemas.
un miembro muy valioso del equipo de desa- trabajo, tan frecuentemente todos son pues-
rrollo, dado que llegó a acumular sus conoci- tos dentro de la misma bolsa? Si bien la discusión académica respecto a es-
mientos -teóricos y prácticos por motivación tas dos escuelas está tan viva como cuando
propia. Si bien es común que su formación El primer obstáculo al que creo todos los se planteó por primera vez hace más de 20
muestre importantes “agujeros” cognitivos programas académicos deben reaccionar es años (p.ej. 2 y sus respuestas en3), creo yo
en aquellos campos que requieren mayor que, muchos alumnos sienten que progra- que el problema de la motivación reside en
rigor teórico/matemático, o en aquellos por mar es una tarea tediosa, un rol que se verán no enfocarnos en lenguajes y marcos “sim-
donde el interés no lo llevó, comúnmente los forzados a desempeñar durante los prime- ples” (sin ser de juguete), que no permiten
subsanará tan pronto se enfrente a situacio- ros años de su trabajo, en lo que logran un al alumno experimentar la “gratificación
nes que los requieran. Sin embargo, es justa- ascenso a un puesto de “responsabilidad”. instantánea” de lograr resultados atractivos
mente en las áreas más teóricas y áridas del Esto es, en buena medida, por lo torpe que tras apenas un primer acercamiento. Los len-
cómputo donde hay una mayor proporción resulta la enseñanza de los conceptos y ha- guajes denominados “de scripts” (Python,
de profesionales con éste perfil. bilidades básicos de la programación. Ruby, Perl, y un largo etcétera) deben ser
enseñados de otra manera, mucho más gra-
No puede ser casualidad que dentro de los Hay dos escuelas básicas: Comenzar ense- dual, pero sin duda ayudan a mantener alta
desarrolladores de Software Libre haya tan ñando programación utilizando un lenguaje la motivación y baja la frustración.
alta proporción de autodidactas, gente for- mínimo aunque completo, apto para transmitir
mada en otras disciplinas, que ha ido en- los fundamentos de la estructura y el control Pero... ¿No son lenguajes con relativamente
contrando su nicho de interés y trabajo en el de flujo (al estilo de C o del venerable Pascal). baja penetración corporativa? Así es, y eso
cómputo, encontrando que en la creación de En contraposición a ellos, muchos otros acadé- representa otra ventaja - Una de las principa-
herramientas cubran sus necesidades parti- micos defienden comenzar enseñando con un les cualidades de un programador debe ser la
culares de una nueva vocación. paradigma completamente POO, con lengua- capacidad de aprender tecnologías nuevas.
jes como Java o como C#. Y ambas alternativas Al enseñar con herramientas distintas, ayu-
Podríamos dedicar un amplio espacio a nos dejan importantes huecos por llenar. damos a que los estudiantes desarrollen la
analizar la relación entre el conocimien- importante habilidad de “aprender a apren-
to adquirido formal e informalmente, y en Para alguien que inició con lenguajes de der”, no encasillarse en una herramienta.
cómo insertar a estos en un esquema aca- muy alto nivel, resulta más difícil com- ¡Que se hagan el hábito de aprender nuevos
démicamente más formal... Pero el tema del prender la traducción a código de más lenguajes para diferentes retos!
que quiero ocuparme en esta ocasión es de bajo nivel y la implementación en hard-
quien viene de una enseñanza escolarizada. ware del mismo, especialmente lo relativo Referencias
a administración de memoria y el órden [ 1. Drepper, Ulrich. “What Every Program-
¿Cómo transmitir el conocimiento, el inte- de complejidad; en este sentido, una de mer Should Know About Memory”people.
rés y el entusiasmo, a los programadores las más brillantes exposiciones la hace Ul- redhat.com/drepper/cpumemory.pdf ]
escolarizados, para que alcancen un nivel rich Drepper, en su texto “What Every Pro- [ 2. “Just say ‘A Class Defines a Data Type’”,
de habilidad similar al de los autodidactas? grammer Should Know About Memory” 1. mags.acm.org/communications/200803 ]
Para esto, es fundamental que nos pregun- Para todas las aplicaciones que corren [ 3. “Forum” ,
mags.acm.org/communications/200805 ]
Gunnar Wolf ha sido usuario y promotor de Software Libre en México por más de diez años. Es fundador del Congreso Nacional de Software Libre (CONSOL)
y miembro externo del Departamento de Seguridad de Cómputo en la UNAM. Participa como desarrollador en el proyecto Debian desde el 2003. Trabaja como
administrador de red y en el desarrollo de sistemas para el Instituto de Investigaciones Económicas de la UNAM.