SG19 (Febrero-Abril 2008)

Page 1

• Model Driven Architecture • Ruby on Rails • Administración de Proyectos

Software Guru CONOCIMIENTO EN PRÁCTICA No.19 • Febrero-Abril 2008 • www.sg.com.mx

[ CASO DE ESTUDIO ]

CMMI a través de MoProSoft

Y LA PILA ES Para ...

Averigua quienes se pusieron las pilas en los Premios SG México. $65 MXN

Noticias • Eventos • Fundamentos • UML • Infraestructura • Carrera • Biblioteca

[ Tutorial ]

SAP NetWeaver




// CONTENIDO

directorio Dirección Editorial Pedro Galván Dirección de Operaciones Mara Ruvalcaba Coordinación Editorial Sonia Sánchez

Editorial

Arte y Diseño David Gutiérrez, Oscar Sámano Consejo Editorial Jorge Valdés - PMI; Francisco Camargo, Luis Daniel Soto - Microsoft; Ralf Eder, Raúl Trejo, Guillermo Rodríguez, ITESM-CEM; Hanna Oktaba, UNAM-AMCIS; Luis Cuellar, Softtek; Luis Vinicio León, e-Quallity - ITESO, Emilio Osorio.

Hemos iniciado un nuevo año, algunos de ustedes ya habrán iniciado una nueva dieta o habrán disminuído la dósis de cafeína durante el día. Algunos otros se preguntarían ¿y la revista Software Guru? ¿Dónde está? Nos unimos al inicio de año y de los cambios, aquellos que nos brindarán la oportunidad no solamente de crecer, sino también de mantener con ustedes el conocimiento que nuestros colaboradores siempre están dispuestos a plasmar en letras. ¿Y qué tiene de nuevo? Bueno, para darte una ayudadita, te diremos que a partir de este número nos extendemos a más páginas de contenido. Como también te has dado cuenta, hemos cambiado los periódos de publicación, razón por la cuál en enero no estuvimos en circulación impresa. A partir de este mes nos tendrás en tu casa cada trimestre. Pero no te preocupes, es un cambio para bien. Este cambio en la publicación, brinda a todo el equipo de Software Guru la oportunidad de trabajar en nuevos proyectos que también serán benéficos para todos ustedes, sabemos que serán de su completo agrado y conforme se estén horneando les estaremos informando sobre ellos.

encuesta para detectar los productos con mayor preferencia entre los usuarios, para recolectar estos datos, abrimos un wiki en el que ustedes libremente podían expresar sus propuestas, y nosotros obtener a través de su participación los resultados que se muestran en el artículo correspondiente. No solamente eso, el equipo de SG hace un pequeño reconocimiento a tan solo, una pequeña muestra de las personalidades destacadas en el mundo de las Tecnologías de la Información. Hemos escogido la pila como símbolo de los Premios SG, ya que conllevan poder y energía. Para los gustosos de la administración de proyectos, tenemos una nueva sección que estamos seguros será de su completo agrado e interés. Sabemos que no todos pudieron asistir a SG’07 Conferencia y Expo, pero que están interesados en saber ¿cómo estuvo el evento? Bueno, no tienen que preguntarle más al amigo o compañero de trabajo que pudo asistir, aquí encontrarán una pequeña reseña de los pormenores del congreso. Los invitamos a disfrutar junto con nosotros, este número, que da el banderazo de inicio a una nueva etapa para esta, nuestra revista. ¡Nos vemos en SG’08!

Una vez contestadas las interrogantes, podemos hablar del contenido de este primer número del 2008. Como recordarán, hace algunos meses se realizó una pequeña

02

FEB-ABR 2008

— Equipo Editorial

Colaboradores Kentaro Takahasi, Fernando Moreira, Luciano Petricelli, Peter Coffee, Enrique Flores, Valerio Adrián Anacleto, Carlos Ortega, Charlie Macías, Sergio Orozco, Ariel García, Susana Tamayo, José Luis Flores, Claudia N. González, Eduardo Olivares. Fotografía Gabriel González Ventas Claudia Perea, Natalia Sánchez Marketing y RP Dafne Vidal Circulación y Suscripciones Daniel López Administración Araceli Torres Contacto info@softwareguru.com.mx +52 55 5239 5502 SG Software Guru es una publicación bimestral editada por Brainworx S.A. de C.V., Malinche no. 6, Col. El Parque, C.P. 53398, Naucalpan, México. Queda prohibida la reproducción total o parcial del contenido sin previo aviso por escrito de los editores. Todos los artículos son responsabilidad de sus propios autores y no necesariamente reflejan el punto de vista de la editorial. Reserva de Derechos al Uso Exclusivo: 04-2004-090212091400-102. Certificado de licitud de título: 12999. Certificado de licitud de contenido:10572. ISSN: 1870-0888. Registro Postal: PP15-5106. Se imprimió en enero de 2008 en El universal, Compañía Periodística Nacional. Distribuido por Comercializadora Alieri y Sepomex.

www.sg.com.mx


contenido feb-abr 2008

18

EN PORTADA Premios SG

Un reconocimiento a las mejores herramientas y personas de la industria.

Productos LO QUE VIENE 12 Sync Framework y SyncFeed, NetBeans 6.0, Amazon SimpleDB, Mercurial. tutorial 14 Instalando el ambiente de SAP NetWeaver CE 7.1 SR3. 18

NOVEDADES Force.com

Columnas

Prácticas

Tejiendo Nuestra Red por Hanna Oktaba

08

Tendencias en Software por Luis Daniel Soto

48

Mejora Continua por Luis Cuellar

10

Cátedra y Más por Raúl Trejo

50

Prueba de Software por Luis Vinicio León

30

Tierra Libre por Emilio Osorio

60

CASO DE ESTUDIO CMMI por Medio de MoProSoft

32

A través de este caso, conoceremos la experiencia al momento de implantar MoProSoft en la obtención de nivel dos de CMMi.

ADMINISTRACIÓN DE PROYECTOS 34 No Todo son Ceros y Unos Conozcamos las habilidades que complementan la tarea de administrar un proyecto.

En Cada Número Noticias y Eventos

04

INFRAESTRUCTURA

56

FUNDAMENTOS

52

CARRERA

62

Paralelismo

54

BIBLIOTECA

64

36

ARQUITECTURA MDA

En este artículo vemos las bases de la arquitectura dirigida por modelos, y su propuesta para el desarrollo de software.

PROGRAMACIÓN Aprendiendo Ruby y Rails

40

20

Presentamos la segunda parte de este tutorial, con ella terminamos los conceptos básicos e introductorios del lenguaje.

Reseña de SG’07

La flexibilidad de UML permite extender y enriquecer el significado de sus elementos. Aprendamos a usar la extensión WAE .

www.sg.com.mx

UML Uso de UML en Aplicaciones Web

FEB-ABR 2008

46

03


// NOTICIAS

PMI Capítulo México se reactiva Durante el 2007, el Capítulo México del PMI (Project Management Institute) mostró cambios significativos en su estructura y forma de trabajo. Desde el 2006 el capítulo cambió de mesa directiva y generó un plan de reactivación, que durante el 2007 obtuvo excelentes acciones como: lanzamiento de un nuevo sitio web, lanzamiento de un boletín mensual, organización de ciclos de conferencias, organización de eventos enfocados en la dirección de proyectos, y la generación de un Programa de Reconocimientos, entre otras. Entre las actividades a observar en el 2008, están la participación en un proyecto para estandarizar la disciplina de PMI y la organización del Primer Congreso Nacional de Dirección de Proyectos. Para mayor información visita: www.pmimexico.org

Cutter Summit 2007 El pasado mes de octubre, se llevó a cabo la Segunda Edición del CUTTER SUMMIT América Latina, encuentro de Expertos en Tecnologías de Información. A partir de un formato orientado hacia el debate y la generación de conocimiento al más alto nivel, se llevó a cabo la discusión de los temas en los que hoy las organizaciones de nuestro país están centrando sus esfuerzos; en lo que a Tecnologías de Información se refiere, desde una óptica objetiva y sobre todo, libre de la influencia de cualquier proveedor de la Industria de TI.

Séptimo aniversario GLIB El pasado 15 de diciembre, en la ciudad de Irapuato, Guanajuato se llevó a cabo la celebración del séptimo aniversario del grupo linuxero del bajío. El evento se realizó en las instalaciones del Hotel Holiday Inn, el cual tuvo como objetivo difundir el uso y desarrollo de GNU/Linux y el Software Libre mediante un ciclo de conferencias que año con año el grupo de usuarios organiza, no solamente como una forma de celebrar su aniversario, sino también como medio de difusión sobre el movimiento hacia las personas vecinas a la región. Por la noche, se realizó un Barcamp como actividad complementaria del evento, en el que los asistentes hablaron de diferentes temas en un ambiente de camaradería, finalizando así la celebración de aniversario del grupo.

04

FEB-ABR 2008

www.sg.com.mx


// EVENTOS

19 al 22 de Febrero 2008

4 al 6 de Marzo 2008

Universidad Autónoma de la Ciudad de México, Campus Tezonco, Ciudad de México Info: www.consol.org.mx

Cintermex, sala B, Monterrey, Nuevo León Info: www.compushow.com.mx

21 de Febrero 2008

5 al 6 de Marzo 2008

Centro Banamex, Ciudad de México Info: www.idc-eventos.com

WTC, Ciudad de México Info: www.pinkelephant.com

21 de Febrero 2008

5 al 6 de Marzo 2008

Hotel Crowne Plaza, Ciudad de México Info: www.pmimexico.org

JW Marriot, Ciudad de México Info: www.cutter.com.mx/easummit

26 de Febrero 2008

6 al 8 de Marzo 2008

Centro Banamex, Ciudad de México Info: www.expocomm.com.mx/tendencias.htm

ITESM Campus Monterrey, Monterrey, Nuevo León Info: www.siscti.com

27 al 29 de Febrero 2008

13 de Marzo 2008

CONSOL 2008

Compushow 2008

IDC Enterprise Mobility Conference 2008

Reunión mensual del PMI Capítulo México

Tendencias 2008

4° Conferencia Anual de IT Service Management

Cutter Enterprise Architecture Summit

SISCTI 33

Linux World 2008

IDC Business Process Optimization & Management Conference 2008

Centro Banamex, Ciudad de México Info: www.linuxworldexpo.com.mx

Centro Banamex, Ciudad de México Info: www.idc-eventos.com

27 al 29 de Febrero 2008

Expo Comm 2008

13 de Marzo 2008

Reunión mensual del PMI Capítulo México

Centro Banamex, Ciudad de México Info: www.expocomm.com.mx

Hotel Crowne Plaza, Ciudad de México Info: www.pmimexico.org

3 al 7 de Marzo 2008

SD West 2008

16 y 17 de Abril 2008

Santa Clara Convention Center, Santa Clara, CA Info: www.sdexpo.com

Gartner Enterprise Integration Summit

XX Congreso Nacional y VI Congreso Internacional de Informática y Computación ANIEI 2007

Foro Nacional de Integradoras de TI 2007

Centro Banamex, Ciudad de México Info: www.gartner.com/mx/appint

Del 24 al 26 de octubre de 2007, se llevó a cabo la vigésima edición del Congreso Nacional y sexta edición del Congreso Internacional de Informática y Computación, organizado por la Asociación Nacional de Instituciones de Educación en Informática, con sede en la Universidad Autónoma de Chihuahua. Dentro del congreso se llevó a cabo la premiación del Certamen Nacional de Tesis.

Empresas recientemente evaluadas en CMMI:

Empresa Kernel Innevo www.sg.com.mx

Evaluación CMMI 2 CMMI 3

El pasado mes de noviembre se realizó el primer Foro Nacional de Integradoras de Tecnologías de Información 2007, en las instalaciones del Centro del Software en la ciudad de Guadalajara. El objetivo fue reunir a representantes de las principales integradoras y clusters de TI de México. Los representantes coincidieron en que vincular esfuerzos a nivel nacional es el único camino para lograr que México tenga una verdadera posición competitiva en el mercado global de las TI.

Fecha septiembre 2007 enero 2008

Lead Appraiser Viviana Rubinstein, Liveware Jorge Boria, Liveware FEB-ABR 2008

05


// INDUSTRIA

CANIETI Tecnología e Innovación como Habilitadores de la Competitividad brado consultor que asesora a los gobiernos de países como Malasia, Hong Kong y Corea del Sur. • Educación y Capacitación del Capital Humano, a cargo del Dr. Jose Enrique Villa Rivera, Director General del Instituto Politécnico Nacional. La convención, no solamente estuvo formada por conferencias, el programa también estuvo formado por “paneles” que permitieron el intercambio de opiniones de diferentes personalidades en una misma presentación, permitiendo que los presentes tuvieran opiniones de diferentes puntos de vista. Además, como parte de las actividades del evento, se realizó el III Encuentro Nacional de Negocios permitiendo la relación directa entre los diferentes representantes de las PyME’s y los tomadores de decisiones de los grandes empresas que estuvieron presentes en ella.

Uno de los paneles de discusión durante la Convención de CANIETI

La Cámara Nacional de la Industria Electrónica, de Telecomunicaciones y Tecnologías de la Información (CANIETI), cuyo principal propósito es el lograr el desarrollo competitivo de la Industria con sentido gremial y responsabilidad social, es uno de los organismos que más impulsa nuestra industria a lo largo de todo el país e incluso en el exterior. Por ello es importante que nos mantengamos al tanto de sus acciones, iniciativas en curso y perspectiva para el futuro próximo.

XXVIII Convención Anual Del 8 al 11 de noviembre pasado se realizó la convención anual de CANIETI en Mérida, Yucatán. El tema principal de la convención fue “Tecnología e Innovación como Habilitadores de la Competitividad”, lo cual quedó reflejado desde el mensaje inaugural de Eduardo Ruiz Esparza, Presidente nacional de CANIETI quien mencionó que: “El éxito de México radicará en la integridad y la velocidad con la que adoptemos estas nuevas formas de colaboración y de aprendizaje organizacional continuo, que hoy se reconocen como las bases de una sociedad de la innovación y el conocimiento”. Como ya es costumbre, la XXVIII Convención Anual CANIETI contó con un nutrido programa de conferencias que incluyó las siguientes sesiones: • Perspectivas Políticas y Económicas 2007 – 2012, impartida por el Mtro. Federico Reyes Heroles. • Tendencias y Futuro de la Tecnología, impartida por Jerry Bautista, jefe de laboratorios de investigación en Intel. • Factores Habilitadores de la Competitividad, impartida por Sergio García de Alba, ex Secretario de Economía. • Vinculación con Universidades para el Liderazgo Tecnológico, impartida por Lueny Morell, Directora de Relaciones Universitarias de HP en América Latina. • Innovación en las PYMES, impartida por Darrell Mann, un renom-

06

FEB-ABR 2008

Durante la convención se inauguraron las oficinas de CANIETI en esta ciudad de Mérida, lo cual es resultado de una alianza con el Consejo de la Industria de TI en Yucatán, conocido por sus siglas como CITI. Platicando con los directivos de este organismo, nos enteramos de que en Yucatán se percibe una oportunidad importante para convertirse en un centro proveedor de servicios de TI para organizaciones en el estado de Florida en Estados Unidos, lo cual se facilita debido a la cercanía geográfica.

Actividades y perspectiva para 2008 Recientemente tuvimos oportunidad de platicar con Rogelio Garza, Director General de CANIETI, acerca de las principales actividades e iniciativas en las que estarán involucrados durante el 2008. Rogelio nos comentó que los tres puntos donde se concentrarán son: • Impulso de innovación en la PyME • Desarrollo de capital humano • Fomento de competitividad y competencia

Innovación en las PyMEs Todos sabemos que para mejorar los índices de creación y aprovechamiento de tecnología en nuestro país es crucial involucrar a la PyME. CANIETI está haciendo su parte para lograr esto, y actualmente está trabajando en programas para apoyar la implantación de metodologías traídas de países como Corea y Malasia, cuyo objetivo es generar innovación en las PyMES.

Desarrollo de capital humano Una de las áreas que está demandando mayor atención de parte de CANIETI, y que es uno de los principales retos para nuestra industria en los próximos años es el de apoyar el desarrollo de capital humano suficiente en calidad y cantidad para satisfacer la demanda de nuestra industria. Es un hecho que hay una gran brecha entre las habilidades y conocimientos de los recién graduados, y lo que necesita la industria. Sin embargo, más que apuntar el dedo hacia las universidades y decir que no están haciendo su trabajo, debemos reconocer que en el proceso de formación de este capital humano están involucrados no www.sg.com.mx


solamente las instituciones educativas, sino también el sector empresarial. Es así que una buena vinculación industria-academia es vital para poder desarrollar el capital humano que necesitamos.

Competencia Cualquier industria sana requiere de un margo legal que fomente la competencia. Es por ello que CANIETI está muy involucrada con organismos como la COFEMER (Comisión Federal de Mejora Regulatoria) para impulsar acciones que promuevan una competencia en igualdad de circunstancias.

Mexico TI El programa México TI es otra de las iniciativas fundamentales que ejecuta CANIETI. El objetivo de este programa es promover a nivel mundial a nuestro país como un proveedor confiable de productos y servicios de tecnología. Es bueno saber que hay varios estados de la república que se están sumando a este esfuerzo.

www.sg.com.mx

Asesoría para los estados Una de las actividades que CANIETI cada vez realiza más es asesorar a los estados para identificar sus capacidades y ayudarlos a decidir en qué áreas de TI especializar su oferta. Las opciones son muchas y muy variadas, por ejemplo para algún estado puede tener mucho sentido convertirse en un polo para call centers, mientras que para otro estado tendrá más sentido especializarse en software para agricultura.

Conclusión CANIETI es un organismo vital en el desarrollo de nuestra industria. Invitamos a todos los empresarios a que se acerquen a la sede de CANIETI que corresponda a su región para conocer más sobre las diferentes iniciativas a las que se pueden sumar y que sin duda les traerán beneficios significativos ya sea individual como colectivamente.

FEB-ABR 2008


// COLUMNA // COLUMNA

/*TEJIENDO NUESTRA RED*/

ISO

Seguimos Avanzando

La Dra. Hanna Oktaba es profesora de la UNAM a nivel licenciatura y posgrado. Sus áreas de interés son Ingeniería de Software, Tecnologí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.

M

ientras muchos de ustedes disfrutaban de múltiples actividades durante el segundo evento de Software Guru, Ana Vázquez y yo atendimos la reunión interina del comité ISO/IEC JTC1 SC7 del 29 de octubre al 2 de noviembre de 2007 en Montreal. En esta ocasión el grupo de trabajo WG24, cuyo objetivo es generar normas de Software Life Cycle Profiles and Guidelines for Use in Very Small Enterprises (VSE), con un total de 20 delegados, tuvo más asistentes que nunca. Para fortalecer el bloque latino se incorporaron Jesús Salillas del European Software Institute, Bilbao, España y Liliana Gómez de Parquesoft de Cali, Colombia. La similitud cultural nos dio mucha confianza y la oportunidad de disfrutar de unas tertulias muy agradables en nuestro idioma favorito. De Irlanda asistió Marty Sanders, acompañada del joven Rory O’Connor, quien a la hora de poner manos a la obra nos ayudó en la actualización de diagramas de actividades para el Perfil Básico (antes Perfil 1). También, se reincorporó un delegado de Estados Unidos, Perry De Weese, un consultor independiente y partner del SEI, que se volvió nuestro aliado técnico más preciado durante la reunión de Montreal. La delegación más numerosa fue la de Tailandia. Tanin Uthayanaka el coordinador del grupo WG24, logró convencer a sus autoridades nacionales sobre la importancia de la participación de Tailandia en los trabajos de ISO. Gracias a eso pudieron mandar a seis delegados, todos con el financiamiento de sus autoridades, quienes también invitaron a los delegados del WG24 a una elegante cena. A la hora de despedirnos, cuando les agradecimos su amabilidad, dijeron que los agradecidos eran ellos porque la aportación mexicana les ofrece la posibilidad de tener un buen resultado en los trabajos del grupo que coordinan. Así que con Tailandia estamos a mano. Para esta reunión Ana y yo preparamos un mapeo detallado de nuestros procesos del Perfil Básico, es decir los de Administración de Proyectos Específicos y el de Desarrollo y Mantenimiento de Software, a la nueva versión de ISO/IEC 12207 Software Life Cycle Processes, que está a punto de publicarse en su versión revisada. Al WG24 le interesa mucho saber cuáles y cuántos procesos de este estándar están cubiertos por el Perfil Básico para poder posicionarlo como una guía válida para su implementación. Tal como lo esperamos, cubrimos bastantes elementos de la ISO/ IEC 12207, esto dio la confianza al grupo de que vamos por un buen camino. Nosotras hicimos un mapeo conservador, por ejemplo: consideramos que nuestro modelo no cubre al proceso de Asegura-

08

FEB-ABR 2008

miento de Calidad por no tener un rol externo al proyecto que haga este tipo de labores. Sin embargo, Perry De Weese, que conoce muy bien la versión actual de la ISO/IEC 12207, nos demostró que con las actividades de verificación, validación y pruebas cubrimos completamente este requisito. No es necesario tener un revisor independiente para cuidar la calidad. Mi intuición femenina siempre me ha dicho que la calidad depende de uno mismo, de los que desarrollan, y no de la existencia de “policías” externos al proyecto que revisen nuestro trabajo, pero necesitaba que me lo confirmara un experto ajeno al círculo de los creadores de la norma nacional. Afortunadamente Perry De Weese es la persona que así lo entiende y nos ayudó a encontrar argumentos para convencer a los demás miembros del WG24. Durante la semana se revisaron los comentarios recibidos por parte de los delegados del WG24 a la definición del Perfil Básico, uno de ellos fue el cambio de nombre. Las aportaciones enriquecieron los detalles de la presentación del modelo pero no cambiaron su esencia. Para el mes de diciembre el grupo emitirá las primeras versiones completas de las siguientes partes de la norma 29110 Software Engineering — Lifecycle Profiles for Very Small Enterprises (VSE): - Part 1: Overview - Part 2: Framework and Taxonomy - Part 5: Management and Engineering Guides Estas partes quedarán sometidas a la revisión de los delegados del ISO/IEC JTC1 SC7 quienes entregarán sus comentarios a principios de 2008. Si pasamos esta primera “presentación en sociedad” los pasos siguientes serán más sencillos. Aunque conociendo los tiempos ISO el proceso durará unos dos años más. Sin embargo en México no tenemos que esperar tanto, ya que desde hace tiempo contamos con la norma nacional NMX-I-059-NYCE y todas las empresas pueden adoptarla para después someterse a una evaluación antes de que ésta se convierta en una norma internacional. La parte turística en esta ocasión no fue muy abundante. Estuvimos en el centro moderno de la ciudad de Montreal, con temperatura de pocos grados sobre cero, pero sin llover ni nevar. La Escuela Superior de Tecnología de la Universidad de Québec, que albergaba el evento, fue nuevamente el objeto de envidia ya que tiene varias carreras tecnológicas, incluyendo la de Ingeniería de Software, en un edificio grande, moderno, en el cual todo funcio-

www.sg.com.mx


“En la reunión, los asistentes de Tailandia quedaron complacidos con la ayuda que los mexicanos les han ofrecido a través de sus aportaciones en conocimientos”.

naba a la perfección (salvo el elevador principal). Tuve oportunidad de reencontrarme con un ex alumno de la maestría de la UNAM que desde hace tres años trabaja con éxito en una empresa de desarrollo de software en Montreal. Casi lloré cuando me decía cómo le han servido las clases de Orientación a Objetos y de Patrones de Diseño, y confirmé por enésima vez que en México los que quieren prepararse bien lo pueden hacer. Durante los pocos días que estuve en Montreal logré constatar que es una ciudad de miles de restaurantes para todos los bolsillos con comi-

www.sg.com.mx

da de todas la regiones del mundo. Hasta me llevaron a cenar comida polaca, pero que no se les ocurra pedir la comida canadiense. Con la música pasa algo parecido, lo que más disfruté fue el jazz en vivo. La siguiente reunión será en Berlín, agendada para el mes de mayo de 2008. Será muy interesante porque conoceremos los comentarios hechos a nuestros documentos provenientes de decenas de países que no estuvieron involucrados en su elaboración. —Hanna Oktaba

FEB-ABR 2008


// COLUMNA // COLUMNA

/*MEJORA CONTINUA*/

Año Nuevo, Vida Nueva ¿Renovarse o Mantenerse?

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.

U

na vez más el año llego a su fin. Este es un buen momento para definir cómo nos fue el año pasado: ¿logramos alcanzar nuestros propósitos?, ¿logramos certificar a nuestra organización?, ¿convencimos a nuestros superiores de la importancia de manejar procesos estables?, ¿convencimos a nuestros compañeros de la importancia de ponerse de acuerdo en una forma única de estimar o de planear un proyecto?

Ahora imaginen que alguien viene a decirles que la forma en que le han dado seguimiento a los proyectos toda la vida está mal. ¿Cómo se atreven? El estrés hacia el cambio es el enemigo número uno de las áreas de procesos. Nunca debemos subestimarlo, siempre debemos estar cerca de la gente, entender sus problemas, buscar vender las ideas que queremos implementar, impulsar a que participen en lo que se va a definir.

Si la respuesta es sí: felicidades. Puedo decirles que son parte de una selecta minoría. Definitivamente vale la pena una gran celebración y seguir adelante así, con los planes del año siguiente. Pero si la respuesta es no, estoy seguro que para estos momentos ya hicieron su análisis de causas raíz con la idea de establecer y documentar las diferentes problemáticas que les impidieron lograr sus objetivos. Con la idea de ayudar en la medida de lo posible a la realización de dichos planes, quisiera enfocar este artículo y el siguiente en algunos problemas comunes y algunos consejos que pueden utilizar para sobrepasarlos.

Dios creó el universo en siete días porque no existía una base instalada

Pasar el examen no implica conocimiento Muchas veces la iniciativa de calidad surge como una búsqueda por un certificado, esto no necesariamente es malo. El certificado te da un foco más preciso y visible en cuanto a dónde vas y qué es lo que quieres lograr; desafortunadamente en ocasiones vemos el certificado como el objetivo final de nuestra búsqueda y olvidamos las razones detrás del mismo: crear una cultura de calidad. Un buen plan de trabajo para un equipo de calidad no se enfoca en el orden de los requisitos de un modelo, sino en resolver primero los problemas de mayor impacto dentro de la organización y los de menor importancia después. El plan de trabajo no puede enfocarse a cerrar primero los hallazgos referentes a control de requerimientos y después a los de planeación, etcétera. Sino que tal vez se enfoque a resolver el problema de exceso de defectos, que puede estar relacionado en parte con planeación, en parte con ingeniería de software, entre otros. El plan debe de reflejar la problemática y no el modelo.

Desde fuera se ve tan fácil cambiar, especialmente a los demás Estamos tan acostumbrados a programar instrucciones en las computadoras que nos olvidamos que generar cambio en las personas no es algo trivial. Piensen cuándo fue la última vez que cambiaron de estilista, cuándo cambiaron de restaurante favorito o la ruta para llegar al trabajo. Normalmente cambiar genera incertidumbre, miedo, estrés.

10

FEB-ABR 2008

¿Cómo se implementan procesos cuando todos corren en diferentes direcciones moviendo los brazos y gritando: “fuego, fuego”? Normalmente en una compañía el modo de pánico es mucho más fuerte que el modo previsor, y también es común que las personas que trabajan en las áreas de calidad sean requeridas continuamente para “bomberazos”. ¿Cómo nos podemos enfocar en el proceso si constantemente nos estamos saliendo? Los bomberos en la vida real trabajan tanto en apagar incendios como en prevenirlos. Para un bombero voluntario el éxito no es apagar un incendio, sino prevenir incendios dentro de su zona. A veces en las organizaciones se vive con la idea de que un incendio no es una calamidad, sino los gajes del oficio. Necesitamos medir para evaluar si realmente los servicios de bombero son cada vez menores, y nunca podemos dejar una zona de desastre sin antes tener un plan de cómo lograr que eso nunca se repita.

Dónde está la metodología La semana pasada estaba viendo un programa de televisión llamado “Top Chef”, en donde un grupo de chefs compiten semanalmente preparando diferentes platillos para no ser anulados. En la eliminatoria pasada uno del los jueces regañaba a un participante y le decía: “si te preocupa más cómo se ve tu platillo en lugar de cual es su sabor vas por el camino equivocado”. La proliferación de metodologías comerciales ha generado una idea: la mejor metodología es la que mejor se ve. La realidad es que las metodologías que se venden en el mercado son metodologías estables, metodologías que tienen poca evolución. Las metodologías con las que trabajamos en el día a día son metodologías vivas que, sobre todo al principio, cambian constantemente de acuerdo a cómo mejora la organización; por lo que al definir los procesos, plantillas y demás, es de vital importancia la flexibilidad y consistencia antes que la belleza. Con esto se nos acaba el espacio por el momento. Continuaremos en la próxima ocasión y por ahora sólo me queda decirles feliz 2008 y que se cumplan todos sus deseos. —Luis R. Cuellar www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// PRODUCTOS

/* LO QUE VIENE*/

Mercurial

Control de versiones distribuido

Sync Framework y SyncFeed Pilares para S+S

Microsoft recientemente dio a conocer dos tecnologías que serán una parte importante de su estrategia de software + servicios (S+S). La primera es Sync Framework, una plataforma de sincronización para habilitar el uso de aplicaciones, servicios y dispositivos que no estén conectados a la red de forma continua, es decir que se puedan usar offline. La visión de esta plataforma es habilitar la construcción de “ecosistemas de sincronización” que integren cualquier tipo de aplicaciones y datos a través de cualquier tipo de red y protocolo. El Sync Framework actualmente se encuentra disponible como CTP (Community Technology Preview) en MSDN. La segunda tecnología en cuestión es FeedSync, antes conocida como Simple Sharing Extensions, y que básicamente viene a ser una extensión para Atom y RSS. Llama la atención que la especificación de FeedSync está disponible bajo una de las licencias de Creative Commons.

En los últimos meses los sistemas distribuidos para control de versiones (DVCS) han aumentado significamente en popularidad. A diferencia de los sistemas convencionales de control de versiones que mantienen un repositorio central, en un DVCS cada usuario genera una copia completa del repositorio y hace commits locales sobre su propia copia. Estos cambios posteriormente son compartidos a través de sincronización. Este esquema permite trabajar fuera de línea, y da mucho mayor flexibilidad para mantener la estructura de un repositorio. Mercurial es uno de los DVCS más populares y está recibiendo muy buenos comentarios por parte de la comunidad conforme se acerca a su versión 1.0 (actualmente en 0.9.5). De hecho, proyectos como NetBeans y OpenJDK recientemente migraron su código de desarrollo a Mercurial. Mayor información en: selenic.com/mercurial/wiki

Mayor información en: msdn2.microsoft.com/en-us/sync

Amazon SimpleDB

Servicio de base de datos por Internet

NetBeans 6.0 Viene por todo

NetBeans 6.0 por fin ha sido liberado, y viene por todo. En una sola herramienta integrada, NetBeans provee soporte para desarrollo de aplicaciones tanto desktop como web, empresariales y móviles. Y no sólo está limitado al lenguaje Java sino que también provee funcionalidad para desarrollo en Ruby/Rails y C/C++. Ante esto, es comprensible el hecho de que NetBeans se promueva a sí mismo como “el único IDE que necesitas”.

12

Amazon SimpleDB es un web service para realizar queries en tiempo real sobre datos estructurados. Este servicio funciona en conjunto con Amazon Simple Storage Service (Amazon S3) y Amazon Elastic Compute Cloud (Amazon EC2) para proveer la habilidad de almacenar, procesar y obtener conjuntos de datos de la “nube”.

El equipo de NetBeans ya está trabajando en la versión 6.1 que saldrá en los próximos meses y que incluirá las siguientes mejoras: • Soporte para los frameworks Hibernate y Spring • Soporte para Axis • Instalación de aplicaciones sobre WebSphere • Capacidad para deshacer (undo) refactorizaciones

Tradicionalmente, este tipo de funcionalidad ha sido lograda con una base de datos en cluster, lo cual requiere una fuerte inversión inicial, además de la complejidad para mantenerla y administrarla. En contraste, SimpleDB es sencilla de usar y provee la funcionalidad esperada de una base de datos (búsqueda y manipulación de datos) sin la complejidad operacional. SimpleDB no requiere esquemas de base de datos, automáticamente indexa los datos y provee un API sencillo para almacenamiento y búsqueda de datos. Los desarrolladores ganan acceso a esta funcionalidad, que escala automáticamente, y solamente pagan por lo que usan.

Mayor información en: netbeans.org

Mayor información en: aws.amazon.com

FEB-ABR 2008

www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// CONTENIDO PATROCINADO

// TUTORIAL

Instalando el Ambiente del SAP NetWeaver CE 7.1 SR3

SAP NetWeaver Composition Environment 7.1 SR3 Evaluation Version Por Kentaro Takahashi, Fernando Moreira, Luciano Petricelli

En este número incluímos un DVD, con la versión de evaluación de SAP NetWeaver Composition Environment 7.1 SR3. Aquí está la guía de instalación paso a paso de esta herramienta, además de referencias en el sitio web oficial para encontrar más detalles sobre el producto o acceder al área de los foros. Aplicaciones Compuestas o “composiciones”, son aplicaciones que usan de funcionalidades existentes y expuestas a través de sus interfaces. El SAP NetWeaver Composition Environment 7.1 es una infraestructura que provee tanto herramientas, como un ambiente de tiempo de ejecución para el desarrollo, ejecución y administración de aplicaciones compuestas de acuerdo con la visión del eSOA (Arquitectura Orientada a Servicios de Negocios), de SAP. El DVD encartado en esta edición, trae con anticipación para el mercado hispano, la última versión del NetWeaver Composition Environment 7.1 SR3. compuesto de: • Servidor de Aplicaciones SAP NetWeaver, conforme la especificación Java EE 5. • SAP Web Dynpro - es la tecnología estándar de SAP para desarrollo de interfaces de usuarios. Como es una tecnología agnóstica de implementación, puede ser programado en Java y también ABAP, tiene una arquitectura basada en MVC (Model-View-Controller) lo que ayuda en extremo en la implementación de interfaces con clara separación de los servicios de back end. • Ambiente y herramientas de Composición de SAP. • Banco de datos MaxDB 7.6 – MaxDB es el sistema administrador del banco de datos desarrollado por SAP. Donde una de las mayores bases instaladas es el SDN (sdn.sap.com), con más de 600 mil usuarios. • SAP NetWeaver Developer Studio – ambiente de desarrollo, basado en el Eclipse Europa (versión 3.3), con decenas de plugins de SAP.

Requisitos de Sistema • Windows XP Professional (Service Pack 2) o Windows 2003 Server (Service Pack 1) • Sistema de archivos NTFS • Internet Explorer 6.0 o superior o Firefox 1.0 o superior • Al menos 1.5 GB RAM, es recomendado 2 GB de memoria • PC 1.5 GHz o superior • 7 GB de disco libre • Monitor con resolución de 1024 x 768 pixels y 256 colores

14

FEB-ABR 2008

• En caso de no estar conectado a una red, utilizar el MS Loopback Adapter. Memorice la contraseña que usted definirá en el paso 7, pues la misma, es la contraseña maestra de autenticación para varias situaciones. Después de la instalación, los varios usuarios y contraseñas son: • SAP NetWeaver Application usuario: Administrador contraseña: <contraseña maestra> • Login de operador del administrador del MaxDB usuario: control contraseña: <contraseña maestra> • Usuario del banco de datos MaxDB usuario: superdba contraseña: <contraseña maestra> • Usuario para la consola de administración SAP usuario: usuario del Windows contraseña: contraseña del Windows • Administrador del ICM usuario: Administrador contraseña: abc123

Empezando la instalación El primer paso es instalar el Java Development Kit (JDK 1.5.0_11 o superior). El download puede ser hecho directamente en la Internet, en el sitio web de Sun Microsystems. En este mismo sitio, en la sección “Other Downloads”, hay que hacer el download del JCE (Java Cryptography Extension Unlimited Strength Jurisdiction Policy Files 5.0) que será pedido durante la instalación del Composition Environment. Para empezar la instalación ejecute el archivo start.htm, donde se mostrarán diversas informaciones sobre el contenido del DVD, y los procedimientos resumidos de esta tutoría. Haga clic en next(siguiente) hasta llegar al inicio de la instalación. Alternativamente, usted puede ejecutar directamente el archivo “sapinst.exe” localizado en el directorio ...\CompEnv\CE71_03_IM_WIN_I386_ADA. Así como la mayor parte de las soluciones y productos SAP, la instalación empieza con un Wizard, en el que usted deberá entrar con todos los parámetros necesarios para la instalación. Solamente después de la colecta de todas las informaciones necesarias y la revisión de los parámetros es que la instalación efectivamente empezará. A partir de esto todo se realiza automáticamente. Seleccione “SAP Netweaver CE Development System” y haga clic en “Next”. www.sg.com.mx


En esta pantalla se presenta, un resumen de todos los parámetros seleccionados hasta el momento. Usted puede revisar las configuraciones elegidas y empezar la instalación. Haga clic en “Next”.

Elija la opción de instalación “Typical”(típico). Esta opción informa que la mayor parte de los parámetros ya están previamente definidos, optimizando el proceso de instalación.

La instalación podrá consumir algo cerca de 50 a 70 minutos dependiendo de los recursos de hardware disponibles.

Acepte el acuerdo de licencia y haga clic en “Next”. Elegir un identificador para su ambiente. Para esta instalación vamos utilizar el default “CE1”. Indicar la ruta de instalación para el archivo con el JCE Policy bajado anteriormente. Indicar la contraseña principal que servirá como clave estándar para los usuarios creados.

Al término de la instalación haga clic en “OK” para empezar automáticamente el servidor de aplicaciones. Por ser la primera vez, varias rutinas de inicio serán ejecutadas y, por lo tanto, el proceso puede demorarse. Para acompañar la carga del servidor de aplicaciones usamos el SAPMMC (SAP Management Console) que puede ser empezado a través de un icono creado por la instalación en su desktop. Esta carga del servidor, debe consumir de 50 a 90 minutos. Expandiendo el nodo “CE1” podemos verificar varias informaciones. Hagar clic en “Process List”(lista de procesos) conforme la figura abajo para acompañar el status de los procesos. Para que el ambiente esté totalmente en el aire es necesario que todos los nodos estén con la indicación en color verde. El SAP MMC también es utilizado para empezar y parar el Composite Environment manualmente. Haga clic con el botón derecho del ratón arriba de la identificación del sistema (“CE1”) y elija “Start”(inicio) o “Stop”(detener). En este momento son ejecutadas varias rutinas para que el ambiente y el banco sean iniciados/detenidos en la secuencia correcta. ATENCIÓN: siempre utilice el MMC para iniciar y detener el servidor. Si la instalación fuera realizada en un notebook o desktop que deba

www.sg.com.mx

FEB-ABR 2008

15


// CONTENIDO PATROCINADO

// TUTORIAL

ser desconectado constantemente, recuerde siempre de parar el ambiente de la manera correcta, antes de desconectar la máquina. Esto evita posibles inconsistencias causadas por la desconexión inmediata del sistema y que rutinas de detención no sean ejecutadas.

User Management Consola de administración de usuarios, grupos, papeles y sus datos.

Verificando los servicios y herramientas Para conocer los servicios y herramientas del servidor de aplicaciones, abra el navegador y entre con la siguiente URL: <servidor>:<puerto http> donde el puerto debe seguir la siguiente regla: 5 + “Central Instance Number” + 00. En este caso 50000. Ejemplo: localhost: 50000

Web Services Navigator Herramienta que permite tener acceso a descripción WSDL de un web service y probar un Web Service.

SAP Library - link para el sitio de documentos en línea de SAP (help.sap.com).

SAP NetWeaver Administrator Herramienta de administración, configuración y evaluación, que agrupa las principales tareas administrativas. Services Registry Registro con base en el UDDI que contiene definiciones de servicios empresariales y referencias a sus datos de metas.

System Information Detalle de las configuraciones del sistema y su estado.

16

FEB-ABR 2008

UDDI Client Provee un cliente UDDI para funciones de consulta y publicación en registros compatibles con el UDDI. www.sg.com.mx


Web Dynpro Es una tecnología para la creación de interfaces de usuario, disponibles dentro del NetWeaver Developer Studio. Ahora que el Composite Environment está instalado y funcionando, vamos instalar el SAP Netweaver Developer Studio. El NetWeaver Developer Studio es el ambiente de desarrollo de SAP para la creación de aplicaciones de negocio con base en JAVA. Esta herramienta es totalmente basada en Eclipse. Para empezar el wizard de instalación es sólo ejecutar el archivo “IDESetup.exe” localizado en el directorio: io ...\DevStudio\CE71_03_ JAVA_IDE. Después del empiezo del wizard, haga clic en “Next”.

Acepte el término de licencia y haga clic en “Next”. Ya que está siendo descubierto el mundo JAVA en SAP, seleccione todas las funcionalidades opcionales para que pueda explorarlos después. Haga clic en “Next”. Observe la necesidad de los requisitos de hardware. Haga clic en “Finish”(finalizar). Para acceder el Netweaver Developer Studio utilice el icono creado automáticamente en su desktop. En la pantalla de bienvenidas existen varias informaciones incluyendo algunos tutoriales y ejemplos para que empiece sus desarrollos.

Elija el directorio de instalación y haga clic en “Next”. Informar el camino de la instalación del JDK 5 y haga clic en “Next”. Haga clic en “Next” . Informar el sitio de update a partir del cual serán instaladas/actualizadas las funcionalidades del Developer Studio. Es recomendable dejar el valor propuesto que apunta para un archivo en el propio DVD conteniendo las informaciones necesarias. Haga clic en “Next”. Seleccione todas las opciones de la lista y haga clic en “Next”.

Para practicar el desarrollo en este nuevo ambiente, además de toda la información provista en el Help SAP http://help.sap.com tenemos también el SDN (http://sdn.sap.com). Este sitio provee foros de discusión, blogs, downloads e informaciones para las varias comunidades de SAP (desarrolladores, consultores y clientes) e información relacionada al Netweaver (plataforma tecnológica SAP). Si hubiera algún problema en la instalación, visite el sitio en la Internet del SDN, en los foros encontrará posibles respuestas al problema presentado y es la manera más rápida de solucionar cualquier duda.

Kentaro Takahashi es consultor senior de SAP, Bacharel y Mestre en Ciencias de la Computación por la Universidad de Brasilia (UnB). Conferencista en eventos nacionales e internacionales. Escribe regularmente para publicaciones especializadas. kentaro.takahashi@sap.com Fernando Moreira es consultor senior de SAP, formado en Ingeniaría de Computación por la Universidad Federal de São Carlos (UFSCar). Actúa como consultor NetWeaver. fernando.moreira@sap.com Luciano Petricelli, Posgraduado en Business Enterprise Solution Provider, desarrollador ABAP desde 1998 y desarrollador NetWeaver Enterprise Portal desde 2001. Trabaja en SAP desde 1997, hoy actúa como líder de solución “User Productivity Enablement & Development” para FS-Brasil. l.petricelli@sap.com

www.sg.com.mx

FEB-ABR 2008

17


// PRODUCTOS

/* NOVEDADES*/

Force.com

La Plataforma como Servicio Por Peter Coffee La labor de los desarrolladores de aplicaciones de software empresarial ha cambiado enormemente en los últimos años. Antes, su principal tarea consistía en automatizar los procesos comerciales internos. Solían utilizar los sistemas internos de una compañía para atender al personal interno. Hoy en día, las tareas a las que se enfrentan los equipos de desarrollo consisten en automatizar las interacciones de los procesos comerciales de la compañía con los socios de negocio y clientes del mundo exterior. A menudo, el lugar donde se produce esta interacción estratégica es la red pública de Internet, y las reglas que a menudo la rigen son los protocolos del web.

pasos adicionales de integración de la aplicación, ésta forma parte inmediatamente del catálogo de herramientas disponibles para el usuario o el desarrollador, y extiende las capacidades que existían antes de que se creara la nueva aplicación. Es posible incluir rápidamente nuevas funciones. Con sólo hacer clic con el ratón para activar una función de la plataforma, es posible agregar a la aplicación opciones como la búsqueda, bitácoras o envío de documentos. El desarrollador no tiene que escribir nuevo código personalizado para que estas funciones estén disponibles.

El modelo del software como servicio es una de las principales tendencias en el ámbito de las TI. Una de las empresas líderes en este segmento es salesforce.com, a través de su aplicación de CRM que funciona bajo un esquema on-demand. Pero ahora, salesforce.com está yendo un paso más alla al no solo ofrecer su aplicación como servicio, sino al brindar su plataforma como servicio. Esto significa que los desarrolladores pueden utilizar la infraestructura y plataforma de salesforce.com para crear sus propias aplicaciones, las cuales posteriormente se ejecuten bajo un esquema on-demand desde la infraestructura de salesforce. com. Dicha plataforma es conocida con el nombre force.com y es una excelente forma de crear rápidamente aplicaciones web.

Cómo dar los primeros pasos con force.com Aprender a desarrollar aplicaciones en la plataforma force.com no requiere comprar nuevo hardware, instalar middleware, ni pagar capacitación. Simplemente el desarrollador necesita registrarse de forma gratuita en el Apex Developer Network (ADN) en salesforce.com/developer. Después de hacer esto, visitando la pestaña de “Getting Started” se tiene acceso a videos y tutoriales (ver figura 1).

Ventajas de una plataforma como servicio Force.com ofrece al desarrollador un gran salto cualitativo en cuanto a generación de aplicaciones ofrecidas a través de la Web. Al desarrollar aplicaciones web, típicamente éstas se programan primero en la máquina del desarrollador y posteriormente instalarlas y publicarlas en un servidor web, de forma que se puedan ver “en vivo”. Este paso no existe cuando se desarrolla en force. com, ya que la aplicación “nace en la web”. La aplicación puede probarse o mostrarse a otros inmediatamente y exactamente de la forma en que aparecerá cuando se utilice. Hay que tener en cuenta que la nueva aplicación se ubica en el contexto de otras herramientas de salesforce.com. Al no haber

Figura 1. Página de acceso.

Basado en el popular patrón MVC Muchos desarrolladores de aplicaciones comerciales están familiarizados con tecnologías de desarrollo centrados en objetos, que utilizan la arquitectura de Modelo/Vista/Controlador. El MVC separa el diseño de la función de una aplicación de la forma en que se utilizarán esas funciones. Force.com aplica los conceptos de MVC. La clara definición de esta arquitectura ayuda al desarrollador a crear aplicaciones muy potentes y, por su parte, la plataforma force.com detecta y evita muchos errores comunes que podrían provocar problemas en momentos posteriores del ciclo de desarrollo.

Peter Coffee es Director de Investigación de Plataforma en salesforce.com, donde sirve como enlace con la comunidad de desarrollo respecto a la plataforma Apex. Anteriormente, Peter estuvo 18 años en eWeek (antes conocido como PC Week).

18 16

FEB-ABR 2008

www.sg.com.mx


Confiabilidad y seguridad sencilla de obtener Como ya dijo el gran filósofo SpiderMan, un gran poder conlleva una gran responsabilidad. Actualmente existe una gran preocupación en las empresas por la gestión y el gobierno de las TI, los desarrolladores tendrán el placer de ver el alto grado de precisión que la plataforma force.com ofrece a los equipos de desarrollo en cuanto al acceso a la información, permitiendo fácilmente configurar qué roles de usuario tienen acceso a distintos niveles de información en nuestras aplicaciones.

Poniendo a trabajar el talento de los desarrolladores Todo lo que se ha tratado hasta ahora es algo que cualquier usuario comercial puede aprender a hacer, sobre todo si el usuario tiene experiencia con productos de bases de datos personales o incluso con aplicaciones de hojas de datos comunes. El siguiente nivel de Force.com tiene más relación con las capacidades e intereses del desarrollador profesional: un diseñador experimentado que tiene el interés y la capacidad de definir nuevas lógicas de negocio.

den escribir y probar código directamente en el navegador para definir nuevas funciones en las aplicaciones. En el área de “Tools” del Apex Developer Network, es posible descargar el “Apex Toolkit for Eclipse”, que es un plugin de Eclipse para desarrollar con Apex. El desarrollo de Apex en Eclipse ofrece a los desarrolladores todo el poder de un completo y moderno editor de código, a la vez que actualiza automáticamente el código que reside en los niveles superiores de Force.com. De la misma forma que si edita código a través del navegador, el desarrollador no tendrá que pensar en cómo instalar la aplicación, ni siquiera cuando use Eclipse para la edición de alto rendimiento en su estación de trabajo (ver figura 2).

Tenga en cuenta que en la frase anterior se utilizan las palabras “definir nuevas lógicas de negocio” en vez de “escribir nuevo código personalizado”. Los desarrolladores que han trabajado en otras plataformas encontrarán que muchas de las funciones necesarias las realiza Force.com con tan sólo escribir sencillas fórmulas, como las hojas de datos comunes mencionadas anteriormente. Aún es necesaria la experiencia que tiene el desarrollador para comprender el proceso comercial y expresar ese proceso de forma precisa, pero aun así el desarrollador puede aplicar sus habilidades con menor esfuerzo en Force.com que en ninguna otra plataforma de aplicaciones. Los desarrolladores también observarán que, si utilizan los mecanismos de reglas en lugar de escribir código personalizado, la aplicación podrá ofrecer al usuario sencillos métodos de revisión de la aplicación con tan sólo cambiar los valores de parámetros. Un usuario con privilegios administrativos podrá modificar a menudo una aplicación para aplicar cambios sencillos sin que tenga que intervenir el desarrollador. De esta forma se reducen los costos de mantenimiento de la aplicación y se permite al equipo de desarrollo centrarse en su trabajo de creación de nuevas capacidades.

Apex: el lenguaje para hablar a “la nube” Muchos desarrolladores tendrán gran interés en las herramientas que les permiten definir nuevos comportamientos en los mecanismos de Force.com. Los desarrolladores pueden escribir código en el lenguaje Apex de salesforce.com, que es como una mezcla de Java y SQL. Este lenguaje híbrido, desarrollado para trabajar estrechamente con el sistema de Force.com, da a los desarrolladores una atractiva combinación de alta legibilidad con una rigurosa gestión de los datos. Gracias a los distintos tutoriales escritos y de video que se ofrecen en el sitio web de salesforce.com, los desarrolladores verán que puewww.sg.com.mx

Figura 2. Edición de código con Eclipse.

Otras herramientas disponibles para descarga en el ADN incluyen el Apex Explorer, que es una herramienta para navegación de datos, y el Flex Toolkit for Apex, el cual permite utilizar Flex para desarrollar interfaces gráficas enriquecidas.

Conclusión Force.com plantea una paradoja para el desarrollador: por un lado le hará sentir familiar con la forma de uso de los conceptos de base de datos convencional y con la sintaxis del nuevo código, pero por otro se sentirá un novato en la creación de aplicaciones web, que resulta infinitamente menos complicada que el desarrollo que se realizaba anteriormente. Al ofrecerles de forma gratuita una cuenta de desarrollador, materiales de capacitación y herramientas, Force.com ofrece a los desarrolladores la posibilidad de explorar cómo será en el futuro el trabajo que realizan hoy.

FEB-ABR 2008

19


El Encuentro con el Conocimiento

20

FEB-ABR 2008

www.sg.com.mx


5 36

P

sa te

en ist as

2 40 s, cia en er nf co

ocas son las ocasiones en que los profesionistas en Tecnologías de Información podemos reunirnos tanto para saludarnos como para compartir conocimiento con nuestros colegas de la región. Y qué mejor pretexto para estar todos juntos que SG ‘07 Conferencia y Expo.

a

Tal vez fuiste una de las personas que compartió en vivo la emoción de este evento, pero sabemos que otros por alguna razón no pudieron asistir, así que para ellos dedicamos esta reseña de lo que fue el congreso, y para los primeros esta es una forma de revivir experiencia de lo que fue SG’07.

,y po ex

9 14 es or sit po ex ra pa un ld ta to 16 e9 en as on rs pe SG 7. ’0

www.sg.com.mx

FEB-ABR 2008

21


Los conferencistas mejor evaluados fueron: Emilio Osorio (4.90), Ernesto Elizalde (4.77) y Orlando Rincón (4.64) en escala del 1 al 5. 22

FEB-ABR 2008

El promedio de satisfacción general de los asistentes fue de 4.21 en una escala del 1 al 5. La sede

El corazón de la Ciudad de México fue el elegido para proveer las instalaciones necesarias y realizar el congreso. El Hotel Sheraton Centro Histórico fue la sede del evento, ubicado sobre una de las principales avenidas del Distrito Federal, el hotel contaba con las instalaciones necesarias para realizar sin problemas el evento. Su céntrica ubicación permitió no solamente el fácil acceso al lugar, sino que además sirvió de lugar turístico para que tanto los visitantes provenientes de otros estados y países conocieran un poco de la arquitectura colonial característica del Centro Histórico.

Los magistrales

Buscamos que los conferencistas magistrales de SG sean personas de mucho talento. Elegir a aquellos que son reconocidos internacionalmente y que pueden plantear un tema de interés para la audiencia de SG no es una labor sencilla. Se requirió de un esfuerzo significativo para identificar candidatos adecuados, contactarlos, convencerlos y acordar el tema que abordarían durante su conferencia. Scott Ambler fue el encargado de abrir el evento con la primera conferencia magistral. Scott es uno de los gurús más reconocidos en desarrollo ágil, y nos compartió un poco de su amplio conocimiento sobre cómo pueden aplicarse estas técnicas en proyectos corporativos de gran escala. Terminado el turno de Scott, Danese Cooper iluminó la sala para todos los gustosos de temas sobre Open Source, ella nos platicó sobre las implicaciones que éste tiene para las personas que nos dedicamos al desarrollo de software. La conferencia magistral para cerrar el primer día estuvo a cargo de Orlando Rincón. Desafortunadamente en último momento el no pudo realizar el viaje a México. Sin embargo, es aquí donde entró el aprovechamiento de la tecnología, y Orlando pudo realizar su conferencia de forma remota a través de Skype. A pesar de esto, la conferencia de Orlando fue la más larga, más entretenida y que mayor reflexión provocó entre los asistentes. El día martes, Gavin King inició la sesión de conferencias magistrales platicándonos acerca de Web Beans, que es una propuesta muy interesante para el desarrollo de aplicaciones web con estado (stateful). La apariencia fresca de Gavin ofreció a los asistentes el ambiente de camaradería necesario para que más de una vez las risas no se hicieran esperar en la sala, dando una muestra que la tecnología o la ciencia no están peleadas con el buen humor. El segundo conferencista magistral fue Miguel Serrano, quien subió al estrado para hablar sobre la

mejora de procesos y el panorama de esta área tanto en nuestra región como en el resto del mundo. Para finalizar con la serie de conferencias magistrales, Eric Jarvi compartió técnicas y prácticas modernas para la depuración de aplicaciones de software. Gracias a todos ellos por compartir con nosotros el gran compromiso de llevarle a todos ustedes los conocimientos y experiencias al utilizar tecnologías de vanguardia.

Conferencias parciales

Técnica, estrategia, vanguardia y futuro además de la experiencia y conocimiento, fueron los puntos clave para elegir a los conferencistas de las sesiones paralelas. Lamentablemente nada más pudimos elegir 32 ponencias, las cuales divididas en cinco diferentes tracks, corrieron de forma paralela durante los días de la Expo. De esta manera, captamos a personas laborando en diferentes ambientes de trabajo para que los conocimientos fueran diversos y no estuvieran enfocados en una sola área de conocimiento. Los tracks de conocimientos fueron: Herramientas y Tecnologías, Procesos, Ingeniería de Software, Estrategia para Empresarios y Dirección de Proyectos. Algunos ejemplos de los temas que se trataron fueron: Orquestación de Servicios, Mashups, Planeación de Proyectos, Implantación de MoProSoft, Software Testing, Programación Paralela, Introducción a Ruby on Rails, Diseño de Servicios, entre otros. Personas de las áreas bancarias; consultores, investigadores, empresarios y desarrolladores fueron los perfiles de los ponentes, mostrando al espectador su experiencia y dominio en el tema.

Día de laboratorios

El último día de SG’07 fue para realizar los talleres. Cinco salones con 105 equipos de cómputo instalados para que todos pudieran tener acceso al software necesario para el aprendizaje del laboratorio. Con duración de cuatro horas cada uno, 10 talleres fueron impartidos por expertos y conocedores en los diferentes temas; cada asistente pudo tomar dos talleres de su preferencia, obteniendo al final de la sesión una introducción al tema o herramienta en cuestión, y con suficiente información para poder seguir estudiando por su cuenta y compartir con sus colegas el conocimiento adquirido.

Expo

Este evento no hubiera sido posible sin la participación de nuestros patrocinadores. Nos preocupamos por llevarles una muestra de las mejores empresas en ámbitos de Tec-

www.sg.com.mx


Sigma Tao, con 14 personas, fue la empresa con más asistentes en conferencias de SG ’07. nologías de Información para darles a conocer lo mejor de sus productos o servicios. Cada uno de ellos hizo un gran esfuerzo para atender a todos los asistentes a la Expo, explicándoles la oferta de su empresa y en algunos casos otorgándoles algún pequeño presente, y folletos de información acerca de sus productos y actividades. Nuestros patrocinadores premier, representados por tres grandes en su ramo: Microsoft, Red Hat e IBM, nos engalanaron con su presencia. Sin olvidar la mención de todas las asociaciones que estuvieron con nosotros, apoyando con la difusión del evento entre sus miembros. Agradecemos también a Prosoft por el apoyo, a los medios que cubrieron el evento. ¡Gracias a todos y cada uno de ellos!

Lo más importante: los asistentes

Este año no pudo ser la excepción, personas de diferentes puntos de la República Mexicana se hicieron presentes: desarrolladores, gerentes, directivos, líderes de proyectos y académicos. La sensación de familiaridad se sintió cuando al caminar por los pasillos se veía a personas detenerse para saludarse, viejos conocidos se reencontraban o compañeros de trabajo se sentaban juntos a comer o simplemente, se encontraban después de mucho tiempo en las reuniones de comunidad que se realizaron durante el evento. Todo el equipo detrás del congreso estuvimos preocupados por brindarles la mejor de las atenciones a todos los asistentes, para que los temas de cada track estuviera a la altura, y principalmente hacerlos sentir como en casa.

¿Bailamos?

El evento social se realizó en La Terraza, bar ubicado en el edificio de los portales frente a Palacio Nacional. Con una vista a la plancha del Zócalo, todas las personas que tuvieron la energía para acom-

pañarnos por la noche pudieron convivir más con sus amigos, compañeros de trabajo y en general con el equipo de SG, anfitriones del evento. Preocupados porque todos llegaran sanos y salvos al lugar, hubo autobuses que sirvieron para transportarnos desde el hotel sede hasta el bar, la misma travesía para el regreso. Música, bocadillos, bebidas y baile fueron los elementos clave para la noche, en la que todos disfrutamos del ambiente y la vista panorámica.

Anécdotas

Ya como cierre de esta reseña, queremos compartir algunas anécdotas y datos al margen: • Contamos con la presencia de asistentes Venezolanos, quienes disfrutaron de los tres días de la Conferencia y Expo, el día del evento social nos regalaron una sesión de baile grandiosa, era la primera vez que venían a la Ciudad de México, aunque ya conocían las costas oaxaqueñas, quedaron encantados no solamente con el evento, sino con el lugar sede. • Personas que vinieron de diferentes puntos de la República Mexicana, asistieron con maleta en mano al día de talleres. • La mesa de futbolito además de divertir, generó retas entre los asistentes. • Cada día hay más mujeres inmersas en el mundo de las Tecnologías de Información. • Tuvimos voluntarios de diferentes partes de la República Mexicana: Monterrey, Oaxaca, Puebla y Tlaxcala. Podríamos mencionar muchas más, pero es mejor vivirlas que leerlas, no se pierdan la siguiente edición. Queremos agradecer a todos los asistentes, patrocinadores, ponentes, medios y personas que formaron parte del staff para que SG’07 Conferencia y Expo haya sido de su total agrado, invitándolos a que se alisten para repetir esta aventura en junio del 2008.

¡Nos vemos en SG’08! Los asistentes a SG ’07 llegaron de 23 estados diferentes de la República Mexicana, así como otros países (Venezuela, Estados Unidos, España y Colombia).

www.sg.com.mx

FEB-ABR 2008

23


24

FEB-ABR 2008

www.sg.com.mx


Los Premios SG son un reco-

nocimiento a lo más destacado de la industria de software en nuestra región. Además de dar honor a quienes honor merecen, los Premios SG brindan un mecanismo para que los lectores conozcan diferentes opciones de productos y los consideren en sus próximos proyectos. Los ganadores fueron elegidos por los mismos lectores de SG a través de una encuesta que se realizó en

noviembre y diciembre del 2007. Previamente, se habían definido a los participantes en cada categoría por medio de un wiki abierto. Es así que estos premios son un fiel reflejo de las preferencias de ustedes, los lectores de SG. Pero como ustedes saben, desarrollar buen software no solo requiere de buenas herramientas e infraestructura, sino también de personas capaces. Por ello hemos creado también un espacio dentro de

Modelado y Arquitectura

Ganador: Rational Software Architect Los modelos visuales son de gran utilidad para definir y comunicar la estructura y comportamiento de los componentes de software. Rational Software Architect (RSA) es la evolución de lo que alguna vez fue la edición empresarial de Rational Rose. RSA combina las capacidades básicas que uno podría esperar de cualquier herramienta moderna de modelado (soporte para UML 2, ingeniería en reversa y generación de código, patrones de diseño, exportación de modelos a HTML) con capacidades avanzadas para el desarrollo de arquitecturas distribuidas. Entre estas resalta el “Architectural Discovery”, que permite visualizar la estructura de una aplicación y automáticamente detecta patrones y antipatrones. Otra capacidad interesante es la transformación de UML a web services. Entre las otras herramientas que destacaron en esta categoría están Enterprise Architect de Sparx Systems, y Visual Paradigm para UML. ArgoUML aparece como la opción de software libre en este segmento. Sin embargo, la brecha de funcionalidad respecto a productos como RSA o Enterprise Architect es muy grande.

Gestión de Requerimientos Ganador: Rational RequisitePro

La práctica de requerimientos de software tiende a centrarse en la definición de éstos. Es decir, en especificarlos de forma clara y precisa, ya sea por medio de casos de uso, storyboards o alguna otra técnica. Sin embargo, tanto o más importante que la definición de requerimientos es la capacidad para administrarlos adecuadamente durante el ciclo de vida de un proyecto.

www.sg.com.mx www.sg.com.mx

los premios para reconocer a personas destacadas en el ámbito de desarrollo de software en nuestra región. En este caso, las personas fueron elegidas por SG, pero para la próxima edición planeamos establecer un mecanismo para que las personas reconocidas también puedan ser elegidas por los lectores de SG. Comencemos entonces para averiguar quienes son los que se pusieron las pilas en el 2007.

RequisitePro se integra con Microsoft Word de forma que es posible seleccionar pedazos de texto dentro de un documento y marcarlos como requerimientos formales que son almacenados en una base de datos de uso específico. Una vez en la base de datos, es posible definir para cada requerimiento características como su prioridad, estatus, relación con otros requerimientos, relación con componentes de ejecución y prueba, y luego administrar los cambios que se den durante el proyecto. Borland Caliber Analyst fue la solución de gestión de requerimientos que quedó en segundo lugar, y vale la pena conocer un poco más sobre ella ya que es una suite con dos productos diferentes: DefineIT para la definición de requerimientos a través de herramientas visuales, y CaliberRM para la administración durante el ciclo de vida.

IDE

Ganador: Visual Studio 2005 Aunque no sustituyen la habilidad y conocimientos, los ambientes de desarrollo integrado (IDE) son herramientas de gran utilidad para cualquier programador. Las herramientas de Microsoft siempre han sido reconocidas por su facilidad de uso. El problema es que típicamente no habían sido muy poderosas ni extensibles, estando enfocadas al desarrollo de aplicaciones departamentales sencillas. Sin embargo, en Visual Studio 2005 Microsoft conjuntó la facilidad de uso con una arquitectura extensible y el poder de la plataforma .Net. Esta receta ha dado excelentes resultados, y prueba de ello es que haya sido elegida como el IDE más popular . El segundo lugar fue para Eclipse, seguido de cerca por Delphi 2007 para Win32.

FEB-ABR 2008

25


Control de Versiones Ganador: Rational ClearCase

Los sistemas para control de versiones son la infraestructura básica de cualquier proyecto de software serio.

A pesar de llevar poco tiempo en el mercado, Visual Studio Team Edition for Software Testers quedó en segundo lugar lo cual es señal de lo bien que ha sido recibida esta herramienta.

ClearCase es uno de los sistemas más conocidos en este segmento. Tiene un conjunto de funcionalidad bastante completo, diseñado para satisfacer las necesidades de los proyectos más grandes y complejos. Entre éstas están la capacidad de ejecutarse en Linux, Solaris y Windows, soporte a grandes cantidades de archivos, y manejo de repositorios en múltiples sitios. Adicionalmente está la gran ventaja de la integración con otras herramientas, especialmente de Rational.

Librería o Framework

Siguiendo muy de cerca a ClearCase quedó Borland StarTeam, que también provee un conjunto de funcionalidad bastante avanzado. Posteriormente encontramos a Subversion, el cual es utilizado en la mayoría de los proyectos open source.

Delphi VCL (Visual Component Library) es un framework basado en componentes para desarrollar aplicaciones de escritorio y web. Los componentes de VCL se enfocan en controles gráficos para las pantallas, y acceso a base de datos.

Testing

Ganador: Rational Functional Tester Así como existe una gran variedad de tipos de prueba de software, también existe una gran variedad de herramientas para probar software: pruebas unitarias, pruebas funcionales, pruebas de interfase de usuario, pruebas de desempeño, tan solo por mencionar algunas.

Ganador: Delphi VCL

La mayoría de las aplicaciones de software modernas se desarrollan sobre un framework que hace mucho del “trabajo sucio”, permitiendo que nos enfoquemos en la lógica de negocio. Por otro lado, también existen librerías de componentes reutilizables que resuelven muchas de las tareas más comunes (manejo de persistencia, gráficas, etcétera)..

El segundo lugar fue para Apache Commons, una librería de componentes reutilizables en Java que se ha ido desarrollando durante los proyectos de Apache. Después tenemos a Infragistics NetAdvantage para .NET, una librería de componentes visuales para .NET.

Otra herramienta popular entre los lectores de SG para desarrollo móvil fue NetBeans Mobility Pack, el cual está dirigido a desarrollo en Java Micro Edition.

RAD

Ganador: PowerBuilder Impulsadas por la creciente necesidad de recortar el tiempo requerido para desarrollar aplicaciones, las herramientas RAD (Rapid Application Development) han tomado bastante fuerza en los últimos años. PowerBuilder es una de las herramientas más maduras y conocidas en este segmento. Al parecer cuenta con una fiel base de usuarios entre los lectores de SG, porque la votaron como el RAD más popular. Siguiendo a PowerBuilder tenemos a Genexus, Magic eDeveloper, 4D y Genero Studio.

Sistema Operativo

Ganador: Windows Server 2003

Desarrollo Móvil

Ganador: .NET Compact Framework El producto ganador en esta categoría fue Rational Functional Tester, una herramienta para automatización de pruebas funcionales y de regresión, que soporta la realización de pruebas para aplicaciones web, desktop Java, desktop .NET, SAP, y Siebel.

El .NET Compact Framework es una versión de .NET diseñada para funcionar en dispositivos móviles basados en Windows CE. Recientemente se liberó la versión 3.5, que soporta los nuevos APIs y tecnologías como WCF y LINQ.

Cada vez se desarrollan más aplicaciones para dispositivos móviles, pero no por esto el desarrollo para estos dispositivos deja de tener sus particularidades, por lo que requiere de herramientas especializadas.

No hay mucho que decir en cuanto a sistema operativo para servidores. Básicamente las variables a tener en cuenta son estabilidad, seguridad y facilidad de administración. Windows Server 2003 fue elegido como primera opción por los lectores de SG. Entre sus cualidades destacan la facilidad de ad-

Libro clásico

Libro reciente

Certificación

¿Qué libro es el que más lectores de SG consideran indispensable para cualquier desarrollador de software? La respuesta es el UML Distilled de Fowler, seguido por Design Patterns de Gamma y compañía, y Applying UML and Patterns de Larman. Vale la pena notar que los tres libros son sobre diseño.

En cuanto a libros publicados en los últimos tres años, el más popular es Agile Software Development de Alistair Cockburn, seguido por The Best Software Writing, que es una compilación de artículos seleccionados por Joel Spolsky.

¿Qué certificación de TI es la que más vale la pena? De acuerdo con los lectores de SG, es la de Arquitecto Empresarial Java otorgada por Sun Microsystems, seguida por la de Experto en Soluciones otorgada por IBM. Posteriormente encontramos

Ganador: UML Distilled

26

FEB-ABR 2008

Ganador: Agile Software Development

Ganador: Sun Certified Java Enterprise Architect

un empate entre la certificación de Project Manager Professional (PMP) del PMI y la de Microsoft Certified Systems Engineer. Sabemos que las certificaciones no son garantía de conocimiento, pero como ya se vio en la encuesta de salarios de SG, son de gran utilidad para conseguir trabajo u obtener ese deseado aumento de sueldo. www.sg.com.mx


ministración, virtualización de servidores y manejo eficiente de almacenamiento. El segundo lugar lo obtuvo Red Hat Enterprise Linux, seguido de Sun Solaris, SUSE Linux Enterprise y Debian. Vale la pena hacer notar que Red Hat, SUSE y Debian en total sumaron más votos que los que recibió Windows 2003 así que esto nos indica que el pingüino superó a las ventanas en esta votación.

Base de Datos Ganador: Oracle

La base de datos es un elemento crucial de cualquier sistema de software. A fin de cuentas, serviría de poco una aplicación con una interfase de usuario y comportamiento perfecto, pero cuya base de datos fuera poco confiable. Oracle es posiblemente el nombre más grande en el segmento de base de datos. En el 2007 lanzó su versión 11g, que incluye mejoras para el manejo de datos históricos, soporte a datos geoespaciales, y Real Application Testing que es la capacidad de simular cargas de trabajo de producción en ambientes de prueba. Como escolta cercano de Oracle, los lectores de SG eligieron a SQL Server, que ha tenido gran dinamismo ya que introdujo varias novedades en su versión 2005 y se espera todavía más con la versión 2008. Después tenemos a MySQL, una base de datos open source que es ampliamente utilizada en aplicaciones web.

Servidor de Aplicaciones JEE

Ganador: WebSphere Application Server

A pesar de que esta categoría está enfocada en una tecnología específica (Java) consideramos importante incluirla, ya que es un segmento muy importante para nuestros lectores, y existe mucha competencia dentro de él. A pesar de que todos los servidores Java EE proveen la misma funcionalidad base (indicada por la especificación de JEE), hay detalles como el desempeño, escalabilidad o facilidad de administración que son los que establecen las diferencias entre productos. WebSphere Application Server fue el ganador en esta categoría. Es un producto bastante maduro que se encuentra consolidado en gran cantidad de organizaciones. Siguiendo muy de cerca a WebSphere tenemos a dos servidores de aplicación open source: Sun Java System (basado en Glassfish) y JBoss.

Portal para Desarrolladores

portal muy completo con noticias, blogs, demos, tutoriales y descargas de software.

En cuanto a portales en Internet relacionados con desarrollo de software, el más recomendado es Microsoft Developer Network (MSDN). Sin duda, MSDN es un recurso fundamental para cualquier entusiasta de tecnología Microsoft, y es un

Después de MSDN, los lectores de SG eligieron a java.net –la comunidad online de Java– e IBM developerWorks.

Ganador: MSDN

www.sg.com.mx

En cuanto a portales de habla hispana, el más popular fue Club Delphi.

Plataforma SOA Ganador: WebSphere

SOA (Service Oriented Architecture) es posiblemente el acrónimo que más hemos oído en TI en los últimos años, y todavía nos faltan otros tantos. Pero para que SOA se convierta en algo más que un “buzz word”, se requieren productos reales y maduros que lo habiliten. Los lectores de SG consideran que al día de hoy, WebSphere a través de MQ Series y Message Broker provee la mejor plataforma SOA disponible en el mercado. En el segundo lugar encontramos la propuesta de Microsoft con Biztalk, Sharepoint y System Center, y en tercer lugar encontramos a Fusion, la plataforma de middleware unificada de Oracle.

Nueva Tecnología

hablado en SG, siendo LINQ una de las más notables.

Esta categoría se refiere a las herramientas, lenguajes, plataformas y SDKs lanzados en el 2007 que se ven más prometedoras.

Los retadores fueron JavaFX, Flex 3 y Silverlight. Hace poco más de un año habíamos adelantado en estas páginas que 2007 sería el año en el que iniciaría la guerra de los “clientes ricos”, y los resultados en esta categoría son prueba de que no andábamos tan perdidos.

Ganador: .NET Framework 3.5

La versión 3.5 del .NET Framework resultó ganadora. Esta versión incluye gran cantidad de innovaciones sobre las que ya hemos

FEB-ABR 2008

27


Plataforma BPM Ganador: WebSphere

La oferta de BPM (Business Process Management) ha madurado considerablemente en los últimos años, y ahora la mayoría de las empresas proveedoras de esta tecnología ofrecen una suite que incluye diferentes productos para modelar procesos, publicarlos, ejecutarlos y monitorearlos. La oferta de WebSphere para BPM incluye Business Modeler, Business Monitor y Process Server y fue elegida como ganadora en esta categoría. El segundo lugar se lo llevó la oferta BPM de Oracle, la cual reúne un grupo de productos dirigidos al modelado, diseño y simulación de procesos (BPA Suite) con el middleware de Oracle para ejecución y monitoreo de procesos en una arquitectura SOA. En tercer lugar tenemos a JBoss jBPM.

ERP

Ganador: SAP En el segmento de aplicaciones empresariales, tenemos a los sospechosos comunes, con SAP a la cabeza, seguido de Oracle y Microsoft Dynamics. Pero lo interesante está en los siguientes tres lugares, donde tenemos a OpenBravo –un ERP open source de origen español– seguido de dos productos mexicanos: Dynaware y Kepler.

CRM

Ganador: SAP En el espacio de los CRM tenemos a los mismos tres primeros lugares que en ERPs: SAP, Oracle/Siebel y Dynamics, lo cual suponemos que no sorprende a nadie. Otra vez, lo interesante está en los “retadores”, donde en este caso tenemos a SugarCRM un CRM open source, y a Salesforce, un CRM en esquema de software como servicio que ha tenido gran éxito en otros países y está comenzando a penetrar en América Latina.

28

FEB-ABR 2008

www.sg.com.mx


Premios para Gurús Es ahora momento de reconocer a algunas de las personas que más destacaron en 2007 desarrollando software o colaborando al crecimiento de nuestra industria.

Christian Strevel Christian es la versión mexicana de un rock star/geek. Es posible encontrarlo dando una conferencia en algún congreso, poniendo música como DJ en una fiesta, o desarrollando una aplicación de la más alta complejidad para un cliente en el extranjero. Es director de consultoría en Intellekt, empresa que formó junto con su hermano hace cuatro años y que se especializa en entrenamiento y consultoría para desarrollo de aplicaciones en .Net. Christian puso en alto el nombre de México el año pasado cuando ganó el primer lugar de un concurso de desarrollo de gadgets en el que participaron desarrolladores de toda América Latina. Bill Gates premió personalmente a Christian durante su visita a la ciudad de México en marzo del 2007.

Oscar Toledo Oscar Toledo Gutierrez tiene 29 años y es uno de los hijos/integrantes de Familia Toledo. Esta es una familia/ organización de autodidactas dedicados al desawrrollo de tecnologías. Entre sus creaciones están una computadora de bajo costo, y un sistema operativo A pesar de que no han logrado conseguir fondeo o un esquema que consideren adecuado para poder fabricar o distribuir sus productos masivamente, lo que queda muy claro es el talento técnico que tienen. Este talento quedó patente en la 19ª edición del IOCCC (International Obfuscated C Code Contest), uno de los concursos de programación de mayor prestigio en el mundo, donde Oscar Toledo Gutiérrez ganó el primer lugar general (Best of Show) con un simulador del funcionamiento total de una computadora, además del primer lugar en las categorías Most Portable Chess Set con un juego de ajedrez graficado y Best Small Program que ilustra el periplo del caballo.

www.sg.com.mx

Gunnar Wolf A pesar de lo que su nombre pueda sugerir, Gunnar Eyal Wolf Iszaevich es mexicano, y a mucha honra. Trabaja como administrador de sistemas en el Instituto de Economía de la UNAM, pero ese solo es su trabajo “de día” que le permite pagar las cuentas. Por lo que Gunnar es más conocido es por ser uno de los principales promotores del software libre en México, y un miembro clave entre las filas de los debian developers, el grupo de gente que ayuda a desarrollar y mantener Debian, una de las distribuciones de Linux más utilizadas y reconocidas. Además de participar en debian, Gunnar ha desarrollado varias aplicaciones de software libre, entre ellas COMAS (Conference Management System), un sistema web para manejar conferencias que se ha utilizado en varios eventos en el mundo. Pero sobre todo, Gunnar es un promotor tanto de nuestro país, como del software libre. Prueba de esto es que en el 2006 se echó en hombros el compromiso de realizar en nuestro país la conferencia internacional para desarrolladores de Debian, lo cual atrajo a nuestras tierras a varias luminarias del software libre de todo el mundo.

Hanna Oktaba Hanna no necesita introducción alguna. A lo largo de más de 20 años ha sido probablemente la persona que más ha hecho por la industria de software de México. Ya sea dando clases a cientos de alumnos a nivel licenciatura y posgrado, colaborando con empresas para mejorar sus procesos de software, desarrollando modelos como MoProSoft, promoviendo en el extranjero lo que se hace en nuestro país, y por supuesto colaborando con SG. Independientemente de todas sus credenciales y logros, a la fecha Hanna sigue haciendo todo lo que puede y más para impulsar el desarrollo de software tanto en nuestro país como en el resto de América Latina.

FEB-ABR 2008

29


// COLUMNA // COLUMNA

/*PRUEBA DE SOFTWARE*/

La Calidad del Software Mexicano Pruebas de software inadecuadas: un Inhibidor de Crecimiento

Luis Vinicio León Carrillo es Director de e-Quallity S.A. de C.V., empresa especializada en prueba de software. Es profesor-investigador del Departamento de Electrónica, Sistemas e Informática del ITESO. Es doctor por la Universidad Técnica de Clausthal, Alemania; su tesis tiene que ver con aplicaciones de métodos y lenguajes formales que incrementan significativamente la eficiencia y la efectividad de la prueba de software.

Me da mucho gusto retomar esta columna en la revista, después de un receso de aproximadamente un año. Durante ese tiempo hemos visto cosas interesantes que buscaremos sistematizar y exponer aquí durante éste y los siguientes números. En [1] describimos los problemas que pueden presentarse cuando el software no se prueba adecuadamente, analizándolos a la luz de dos proyectos extremos en los que participamos. Aquí presentaremos los resultados de la evaluación de la calidad de una muestra de productos mexicanos en el marco del Concurso e-Quallity 2007, del cual hicimos la premiación en el pasado Congreso SG’07 Conferencia y Expo. No se trata de un estudio estadístico riguroso, pero vemos estos datos como una aportación inicial para llenar el enorme hueco de información que tenemos respecto a métricas de calidad de los productos mexicanos y su repercusión en la industria.

El impacto de probar inadecuadamente el software En los Estados Unidos, tan solo en 2003, las pérdidas en su industria por la inexistencia o mala aplicación de pruebas a productos de software ascendieron a casi $600 mil millones, que equivalen a aproximadamente el 1% de su producto interno bruto [2]. Dichas pérdidas consideran no solamente las del sector de Tecnologías de Información, sino de muchos otros sectores que utilizan el software en sus operaciones. Se trata de pérdidas que no son sólo cuantiosas, sino que desgastan gran parte de su sector productivo. En México no tenemos datos semejantes, pero es posible pensar en un comportamiento parecido. Sin embargo, en nuestro país el efecto sería mucho más nocivo (aunque de menor cuantía): mientras que la industria del software estadounidense es mucho más grande y madura, la nuestra está apenas despegando; esto dificulta ganar inercia positiva en muchos sentidos: el crecimiento de la industria se vuelve más lento, se dificulta generar confianza en esa tecnología, lo que a la vez disminuye la atracción de inversiones en empresas tecnológicas, lo que a su vez dificulta el crecimiento... un indeseable círculo vicioso.

La muestra y el proceso El método que utilizamos para la evaluación de productos está formado por 3 fases: 1. Un diagnóstico del software: un tester experimentado realiza pruebas exploratorias y detecta una primera capa de defectos. Utilizando esa información y nuestro modelo estadístico, se genera una estimación de

30

FEB-ABR 2008

los defectos que aún se encuentran en el producto, así como del costo de detectarlos. 2. Dependiendo de los datos del diagnóstico, el interesado puede optar por contratar las pruebas profundas. 3. Si después de estas pruebas y luego de aplicar nuestro modelo de calidad de productos, el software muestra un excelente comportamiento (después de las pruebas regresivas [3]), se hace acreedor a ostentar nuestro sello de calidad. (Este modelo fue validado con apoyo del Consejo Nacional de Ciencia y Tecnología, CONACYT.) Utilizando esta experiencia, a mediados del año pasado lanzamos este concurso, en el que convocamos a la comunidad desarrolladora nacional de software a enviarnos productos terminados pequeños (máximo 30 meses-hombre de desarrollo) para encontrar el producto con la menor densidad de defectos (cantidad de defectos entre tamaño). Una cantidad considerable de productos fueron rechazados, ya fuera porque se excedían en el tamaño o porque no estaban completamente terminados. La muestra final sobre la que se generaron los datos que mostraremos consta de 24 productos. Su tamaño se midió utilizando una métrica interna semejante a los puntos de función. A los productos concursantes les aplicamos una variación del diagnóstico descrito arriba y, a cada participante le enviamos la primera capa de defectos que detectamos en su producto, la estimación de los que aún quedaban en su sistema, y la comparación de su producto frente a otros, en términos de densidad de defectos.

Resultados y análisis El tamaño promedio de los productos fue de 20.4 meses-hombre de desarrollo, la mayoría de ellos fueron aplicaciones administrativas. La figura 1 presenta datos concretos sobre la calidad de los productos. Producto…

Defectos / Caso de Defectos aún en el prueba software

más maduro

1/10

150

promedio

1/4

500

menos maduro

10/17

900

Figura-1: Densidad de defectos en productos mexicanos pequeños

Los datos concuerdan con nuestra experiencia: el promedio de los productos que hemos probado difiere del mostrado aquí en sólo unas cuantas centésimas (antes de las correcciones y pruebas re-

www.sg.com.mx


gresivas). Esto es grave, pues significa que uno de cada cuatro casos de prueba deja al descubierto algún defecto (aunque no necesariamente crítico). Dichos datos son relevantes, pues una densidad de defectos como la del promedio puede tener un impacto significativo en el crecimiento de las empresas desarrolladoras, como se muestra en la figura-2. En ella la curva negra muestra el consumo “convencional” de los recursos al desarrollar un nuevo producto de software, considerando patrones de [4]; la curva verde muestra los ingresos por ventas del producto; la azul representa los costos de mantenimiento cuando el software es probado adecuadamente antes de ser liberado y se elimina la mayoría de los defectos; y la curva roja representa los costos de mantenimiento cuando no se prueba o se prueba inadecuadamente el software.

Conclusión Así como en los Estados Unidos, en México la prueba de software inadecuada también puede tener un impacto negativo severo en la industria en general. Dicho impacto se acentúa porque inhibe el crecimiento no sólo del sector de las Tecnologías de Información, sino de muchos otros que utilizan software en sus empresas. Este no es un estudio concluyente, pero genera información que debiera motivar a continuar obteniendo datos parecidos. En ese sentido, continuaremos poniendo nuestro granito de arena con el Concurso e-Quallity 2008, que lanzaremos durante el primer trimestre de este año. Estén pendientes, visiten: www.e-quallity.net

—Luis Vinicio Figura-2: Impacto económico de las pruebas.

La gráfica muestra algo que vemos en nuestra práctica diaria y posiblemente nos hemos acostumbrado a: cuando no se prueba adecuadamente el software las consecuencias recaen en los costos de mantenimiento, estos pueden mermar significativamente las utilidades, dificultando la inversión en las áreas de mercadotecnia e innovación en el producto, este factor provoca la dificultad de crecimiento en esa unidad de negocio.

www.sg.com.mx

Referencias • [1] León-Carrillo, L. “The Impact of Software Testing in small Settings”, en Oktaba H. and Piatini, M. (Eds). “Software Processes in small Enterprises”. Por publicarse. • [2] Tassey, G. “The Economic Impacts of Inadequate Infrastructure for Software Testing”. Final Report. National Institute of Standards & Technology. 2002. • [3] www.e-quallity.net/definiciones.php • [4] The Project Management Institute. “A Guide to the Project Management Body of Knowledge”. USA, 2000.

FEB-ABR 2008


// PRÁCTICAS

/*-CASO DE ESTUDIO*/

CMMi por Medio de MoProSoft Experiencia de Kernel Technologies Por Claudia N. González y Eduardo Olivares En Septiembre del 2007 Kernel Technologies Group S.A. de C.V. fue la primera empresa mexicana en alcanzar el nivel 2 de CMMi bajo la nueva versión del modelo para desarrollo de software versión 1.2. Pero más importante que esto es el hecho de que basaron su estrategia de implementación en el Modelo MoProSoft. En este artículo, compartimos algunas de nuestras experiencias y opiniones relacionadas con este proceso de mejora, esperando que le sean de utilidad a los lectores de SG. Para nosotros fue una gran ayuda contar con MoProSoft como referencia, ya que a diferencia de CMMi, MoProSoft sí cuenta con una secuencia y lista de actividades a realizar bajo un enfoque y lógica de negocio. La documentación que proporciona MoProSoft fue de gran ayuda en la implementación de CMMi ya que es muy clara en las actividades que deben realizarse, las entradas y salidas de cada proceso, así como la asignación específica de responsabilidades.

Factores críticos de éxito A continuación explicamos los que consideramos fueron factores críticos de éxito para lograr el nivel 2 de CMMi. Capacitación El proceso de mejora inició con una estrategia fuerte de capacitación en CMMi para los responsables de definición de procesos. El propósito fue que estas personas tuvieran en claro la razón de ser del modelo y las exigencias que involucra. Igual de importante fue la capacitación impartida al “sponsor” del proyecto, ya que ayudó a que comprendiera la envergadura del proyecto que estaríamos realizando y que esto requería de su fuerte compromiso y participación. Para esta capacitación nos apoyamos en la empresa Innevo. Apego a las actividades de MoProSoft Decidimos utilizar directamente las actividades de MoProSoft para hacer checklists de aseguramiento de calidad, revisando por ejemplo que se llevaran a cabo todas y cada una de las actividades de planeación para generar el plan de proyecto y plan de desarrollo. Adicionalmente se siguieron las verificaciones y validaciones tal como las propone MoProSoft. Esto nos permitió asegurar tanto calidad en los

procesos como en los productos de trabajo. La capacitación en los temas de aseguramiento de calidad se complementó internamente explicando y revisando los checklists de cumplimiento de actividades, así como los artefactos para verificación y validación. Complementar actividades utilizando el análisis de brecha Una presentación realizada por la AMCIS en marzo del 2005 para mostrar los resultados de las Pruebas Controladas de MoProSoft contenía un análisis de brecha entre el modelo MoProSoft vs. CMMI N2 en su versión escalonada, indicando que el 67% de las prácticas se cubrían en forma total, el 10% se cubrían en forma amplia, 17% en forma parcial y el 6% no estaban cubiertas. Nosotros pusimos especial atención en esta información, ya que ese 67% significaba que solo tendríamos que completar el 33% restante en cuanto a definición de procesos, ahorrando así tiempo y esfuerzo en ésta fase del proyecto. Fue así que conseguimos de parte de AMCIS el detalle de este análisis de brecha realizado por Cecilia Montero (Lead Assesor) y Gisela Rivera, donde se detalla la relación entre las prácticas de las Areas de Proceso de CMMI y los procesos/actividades que las cubrían. Tomando como base éste mapeo, iniciamos a analizar qué procedimientos, actividades y productos tendríamos que agregarle al MoProSoft para que cumpliera totalmente con cada práctica. Así que para cada brecha definida, definimos un plan de acción para cubrirla. Métricas y revisión a nivel gerencial A fin de asegurar el buen desempeño de los proyectos y el apego a los procesos, se establecieron reuniones periódicas a nivel gerencial para revisar los indicadores de los proyectos. Los indicadores que usamos son índice de cronograma, índice de esfuerzo, índice de costo, así como el uso de semáforos para mostrar cuando un indicador estaba fuera del rango establecido por la dirección. La definición de indicadores se basó en las recomendaciones del PMBOK 3ª Edición. Se agregó una actividad de revisión de los defectos encontrados en procesos y productos, a fin de tomar acciones correctivas. Se utilizó una plantilla para llevar a cabo la reunión, donde ya se establecían los puntos a revisar en la reunión y fue de gran utilidad para no dejar pasar aspectos de monitoreo como son el manejo de datos, riesgos asociados a un defecto, y obtener compromiso de los involucrados.

Claudia N. Gonzalez es Licenciada en Sistemas Computacionales por el ITESM y cuenta con reconocimiento por la AMCIS como Practicante MoProSoft, Consultor Profesional MoProSoft, y Evaluador Profesional MoProSoft. Desde 1985 ha trabajado en empresas de desarrollo de software asumiendo diferentes roles principalmente en tareas de gerencia de proyectos de desarrollo de software y de capacitación y consultoría de procesos. Eduardo Olivares es Ingeniero Administrador de Sistemas por la UANL y Maestro en Ciencias Computacionales por el ITESM. Cuenta con el certificado de PMP y con el certificado como PSP Developer y PSP Instructor por el SEI. Desde 1989 ha trabajado como desarrollador, líder de proyectos y jefe de oficina de proyectos en áreas de TI de diferentes grupos empresariales, así como docente del área de Tecnologías de Información del ITESM y de la UDEM.

32

FEB-ABR 2008

www.sg.com.mx


“La definición de los procesos fue de gran importancia para la implementación del modelo”.

Para todos los procesos se monitorearon las actividades planeadas y el esfuerzo estimado contra el real. Asignación de esfuerzo para actividades del modelo Quizá uno de los puntos más complejos, pero a la vez más importantes es estimar el esfuerzo en todas las actividades relacionadas con el modelo, tanto CMMI como MoProSoft, de manera que debe quedar asentado y asignado el tiempo para: la persona que define y establece los procesos, el encargado de las actividades de administración de configuración, aseguramiento de calidad de procesos y productos, capacitación, administración de proyectos y mantenimiento a la matriz de rastreo. Algunos roles pueden ser compartidos; por ejemplo la persona de calidad puede también dar capacitación o participar de la definición de procedimientos, el configurador puede participar en actividades de desarrollo o mantener la matriz de rastreo. En nuestra experiencia, el tiempo de todas las actividades de soporte al proyecto incluyendo tiempo para medición y análisis, planeación, monitoreo de proyecto, aseguramiento de calidad y administración de requerimientos; en un proyecto que anteriormente tomaba 1,000 horas llevando sólo MoProSoft, se incrementa en cerca del 20% del esfuerzo después de haber agregado las actividades del análisis de brecha hacia CMMi nivel 2. Lo anterior debe considerarse una inversión que paga en beneficios de calidad y confianza hacia los compromisos del proyecto con el cliente. Herramientas Es de gran ayuda apoyarse en herramientas que faciliten la adopción y aplicación del proceso. Recomendamos considerar herramientas de trabajo para administración del proceso de cambios en configuración, manejo de la matriz de rastreo, levantamiento y seguimiento a incidencias, bases de datos con datos del proyecto (WBS, costos, riesgos, cambios) o herramientas para registro y seguimiento a las actividades, son importantes para reducir el tiempo de uso de hojas electrónicas más susceptibles a errores.

Lecciones aprendidas 1. Tal vez la lección aprendida más distintiva de nuestro proyecto, fue el entender que para cubrir el 33% de actividades pendientes no significaba invertir un 33% más de esfuerzo ya que las prácticas no cubiertas en MoProSoft se trataban de cuestiones un tánto complejas de definir e implementar como lo son Administración de Configuración (CM) y Medición y Análisis (MA). 2. Aunque iniciamos las actividades de verificación y validación utilizando como guía los criterios presentados en MoProSoft, nos dimos cuenwww.sg.com.mx

ta que para asegurar la calidad de producto y proceso como requiere CMMI tuvimos que detallar checklists que apoyaran ésta práctica. 3. MoProSoft define sus procesos por área de responsabilidad, sin embargo la secuencia de actividades se da naturalmente entre las áreas. Por ejemplo, durante el proceso de venta, se requiere que se realice un entendimiento de requerimientos y una planeación para poder definir el alcance del proyecto que se está vendiendo. Para aclarar esta secuencia de actividades nos apoyamos en diagramas de flujo inter-procesos, lo que ayudó a que se entendiera mejor la relación entre ellos. 4. MoProSoft define algunas actividades de manera muy general por lo que en algunas de ellas tuvimos que definir procedimientos más detallados y/o realizar minutas para asegurar que se cumpliera completamente la práctica CMMI. Algunos de ellos son: la implementación de un procedimiento de control de cambios para revisar y autorizar cambios a requerimientos, actividades específicas de administración de configuración como lo es, establecer un plan de administración de configuración que indica nombrado de ítems, permisos, líneas base y niveles de autoridad para su promoción, auditorías físicas y funcionales a realizar. La mayoría de los requisitos de CMMi estaban cubiertos en las prácticas de MoProSoft reforzándolas con el uso de minutas para cada reunión y dando instrucciones muy específicas, sobre los acuerdos y compromisos que deben reflejarse en cada reunión, sin dejar margen a ambigüedades. En la versión de este artículo que se publicará en el sitio web de SG se incluirá un anexo con un ejemplo de una actividad que fue detallada de esta forma. 5. Implementar otros procesos MoProSoft como son la Planeación Estratégica y la Gestión de Procesos ayudaron a la implementación del proceso y a que la organización lo apoyara, así como a la operación misma del negocio.

Conclusión CMMI está enfocado principalmente a organizaciones grandes. Sin embargo el enfoque que seguimos de utilizar como marco de referencia MoProSoft fue un gran acierto que nos acercó muy rápidamente a nuestro objetivo de lograr el nivel 2 de madurez en CMMI, apenas 8 meses después de tener implantado MoProSoft. Ahora vamos por el siguiente nivel y además de seguir utilizando MoProSoft como un marco de referencia relevante nos apoyaremos en PSP/TSP para acelerar nuestro siguiente objetivo en madurez de procesos mediante CMMI.

FEB-ABR 2008

33


// PRÁCTICAS

/*ADMINISTRACIÓN DE PROYECTOS*/

No Todo son Ceros y Unos Un Espacio para la Administración de Proyectos Por Enrique Flores Afortunadamente hay publicaciones, como la que tienes en este momento en tus manos, que llevan información útil a la gente para brindarles un poco de luz acerca de la manera de trabajar o las herramientas a utilizar para ser más efectivos en su trabajo. Hoy tenemos el honor de iniciar esta sección que SG inaugura, donde se tratarán temas diversos acerca de la administración de proyectos. Esperamos que sea una columna de interés para todos ustedes y que les brinde algunas señales positivas que puedan ser aprovechadas para el crecimiento profesional de los que realizan un rol así.

La mayoría de los proyectos de software no tienen grandes problemas en los aspectos tecnológicos porque la gente en el medio suele apasionarse con el uso de la tecnología, lo cual se ve reflejado en las aplicaciones desarrolladas. Su uso en los proyectos, aunque no siempre perfecto, no representa la principal causa cuando fracasa un proyecto. Incluso en muchos de los casos en que la tecnología falla se debe a una mala administración de ésta y no porque no se contara con una tecnología adecuada o por falta de personal hábil en el uso de la tecnología.

Seguramente habrás escuchado acerca de la importancia de la administración de proyectos. También habrás escuchado que un buen porcentaje de los proyectos que fracasan se debe a causas relacionadas con la administración de proyectos: requerimientos pobres, malas estimaciones, falta de dirección, desmotivación del equipo, falta de comunicación, riesgos sin contemplar, cambios constantes, etcétera.

El problema es que los “tecnólogos” no suelen apasionarse por la disciplina, el orden, el liderazgo, y mucho menos por llenar documentos y plantillas. En muchos de los casos les interesa más sacar adelante su propio, muchas veces excesivo trabajo, que perseguir gente para que cumpla con su trabajo. Incluso, con el pretexto de los métodos ágiles, los desarrolladores encuentran muchas veces en este tipo de metodologías un excelente pretexto para justificar la ausencia de controles y planes.

Apasionados de la tecnología Por supuesto que todas tus habilidades y certificaciones en lenguajes de programación, herramientas de desarrollo, bases de datos, arquitectura, etcétera, te ayudan en gran medida, a tener un proyecto de software exitoso. Pero, debemos de entender que eso no es todo lo que se necesita para alcanzar los objetivos del proyecto (de hecho definir el objetivo del proyecto no es una actividad técnica) . La tecnología es sólo una de las torres que sostienen a esa edificación llamada proyecto, y sin una buena administración de proyectos el edificio se puede venir abajo fácilmente. Entre más grande y complejo el proyecto, más indispensable se vuelve el uso de las prácticas administrativas y de un buen proceso de desarrollo.

Tecnología vs administración de proyectos

La mala noticia es que la administración de proyectos es un mal necesario. Tan necesario, que día a día vemos sistemas que no hacen lo que el usuario quiere, que fallan constantemente fricciones permanentes entre el equipo de desarrollo y el cliente, desarrolladores que no tienen vida propia fuera del trabajo porque constantemente tienen que apagar los fuegos, resultado de una mala planeación. Consecuencias, muchas de éstas, de una mala administración de proyectos.

Confundiendo al PM En primer lugar, hay que entender que un candidato a administrador de proyectos, no necesariamente es aquella persona que ha estado haciendo un buen trabajo técnico y

que por lo tanto se ha hecho acreedor a un ascenso. Ser líder de proyecto no necesariamente debe de verse como el ascenso natural en la carrera de los programadores, de hecho esto es algo que, por la naturaleza de los programadores, debería de ser casi la excepción, más que la regla.

La ruta del PM Debe existir una ruta de crecimiento para los profesionales de la tecnología, y otra ruta diferente para la gente, que aun y cuando gusta de la tecnología, se apasiona más por las actividades administrativas. Uno y otro requieren perfiles un tanto distintos. Pero, si los programadores descubren que la única manera de recibir un aumento de sueldo importante en su empresa se logra “ascendiendo” a líder de proyecto, es natural que tanta gente ponga la mira en un rol así, sin tener el perfil ni las habilidades necesarias y con las consecuencias desastrosas que vemos día a día en los proyectos.

Administrar no es tan divertido Administrar un proyecto implica planear, documentar, comunicar, escuchar, dirigir, liderar, enfrentarse a los problemas de la comunidad que representa el equipo de trabajo y los stakeholders, implica motivar a sus compañeros de trabajo, entre otras muchas habilidades. Claro que un poco de conocimiento tecnológico es útil, pero no es lo más importante para el líder de proyecto que quiere destacar. En todo caso debe tener las habilidades para integrar gente que cuente con dichas habilidades dentro de su equipo de trabajo. Este tipo de tareas no son precisamente las que más motivan a un apasionado de la tecnología.

¿PMs sabelotodo? Claro que en proyectos pequeños, quien dirige el trabajo suele tomar responsabilidades adicionales a la administración del proyecto. Esto no ocurre pocas veces, y en dichas situaciones cubrir dichos roles requiere las

Enrique Flores es colaborador para liderdeproyecto.com, un portal gratuito para promover mejores practicas en administración de proyectos en América Latina

34

FEB-ABR 2008

www.sg.com.mx


habilidades adicionales correspondientes. Incluyendo la parte técnica si se trata de un rol de programador, por ejemplo. Un proyecto es una empresa, y el líder es el director de esa empresa. Así que piensa bien si quieres ser un líder o administrador de proyectos, pues no tiene por qué ser necesariamente así. Es importante fijar bien los intereses particulares de cada quien y buscar el crecimiento en ese sentido. El director de la orquesta es importante, pero el pianista, el trompetista y el violinista también lo son, pues sin ellos no tendríamos el placer de disfrutar una obra musical.

Poder PM Por supuesto que es tentador que lo llamen a uno líder o director del equipo, pero si de eso se trata entonces busca ser el líder técnico si tu pasión es la tecnología. Esto te pondrá en el organigrama en un nivel similar al de líder de proyecto. Sobre todo para aquellos que cuenten con habilidades de liderazgo o simplemente para quienes el estatus sea algo trascendental en sus objetivos de crecimiento profesional, pero que no cuenten con habilidades o gustos por la administración. Claro que las empresas o áreas de desarrollo tienen que hacer su parte y definir planes de crecimiento para la gente técnica como: programadores, analistas, arquitectos, testers, etcétera. Y otra ruta de crecimiento para la gente con habilidades administrativas: líderes de proyectos, gerentes de producto, gerentes de área técnica, directores de sistemas, etcétera. O simplemente podríamos definir niveles para los líderes de proyecto, tales como: junior, senior, master, etcétera. A través de estos artículos algunos expertos y gurús de la administración irán comentando algunas de las habilidades, técnicas, herramientas, tips y experiencias relacionadas con la administración de proyectos, esperando que la gente interesada en el tema obtenga un valor extra de SG. Esta columna busca ser algo así como el rincón de los administradores de proyecto. www.sg.com.mx

El que busca encuentra Adicional te recomiendo que busques una preparación formal constante. Si eres de los pocos afortunados en contar con la disciplina adecuada para auto capacitarte consigue una buena lista de libros, generalmente esto sirve para estructurar adecuadamente las buenas prácticas que has aprendido en el camino. Busca capacitación que te brinde las bases teóricas, pero sobre todo busca cursos que te transmitan la experiencia de alguien que haya estado en las trincheras, asegúrate de conocer el currículum del instructor si te decides a invertir en capacitación presencial, relaciónate con otros administradores de proyectos y busca la ayuda y opinión de gente con mayor experiencia, esto cada vez es más sencillo mediante el uso de los foros de discusión especializados en Internet o de las redes sociales. Estudia y analiza la experiencia y buenas prácticas de otros administradores, por ejemplo; en algún blog de un profesional en administración de proyectos. Y si tu objetivo profesional está claramente dirigido hacia la administración de proyectos, busca prepararte y generar la experiencia necesaria para lograr alguna certificación importante, como la del PMP.

El futuro En la medida en que las áreas, empresas y profesionales de sistemas le den su debida importancia a la disciplina de administración de proyectos, notarán que incluso los problemas técnicos se disminuyen en los sistemas. Pues esta disciplina tiene la responsabilidad de vigilar que todos los recursos (incluyendo los tecnológicos) se aprovechen al máximo para lograr los objetivos del proyecto. Afortunadamente hay suficientes fuentes de información, referencias y modelos que pueden mostrar el camino hacia una madurez en la administración de proyectos. Esperamos pronto volver a estar con ustedes compartiendo un poco de nuestras experiencias. Por lo pronto les deseamos mucha suerte en el desarrollo de su carrera profesional como administradores de proyectos. FEB-ABR 2008


// PRÁCTICAS

/*ARQUITECTURA*/

MDA

Reusabilidad Orientada al Negocio Por Valerio Adrián Anacleto Este artículo fue originalmente publicado en la base de conocimiento de Epidata Consulting (www.epidataconsulting.com) y se publica en SG con el consentimiento del autor. En los últimos años, muchas organizaciones han comenzado a prestar atención a MDA, ya que promueve el uso eficiente de modelos de sistemas en el proceso de desarrollo de software.

ted Analysis and Design) contiene, entre otros, una vista de análisis, una vista de diseño detallado y código –representando la vista de negocios de un sistema–, la vista de arquitectura y la vista de implementación. MDA agrega una capa de abstracción más, que representa el contexto de negocio del sistema. En la figura 1 se muestran las diferentes capas de abstracción (layers). El gráfico se hace más abstracto hacia la izquierda y se vuelve más concreto hacia la derecha.

MDA representa para nosotros, los desarrolladores, una nueva manera de organizar y administrar arquitecturas empresariales, basada en la utilización de herramientas de automatización de etapas en el ciclo de desarrollo y servicios. De esta forma, permite definir los modelos y facilitar trasformaciones paulatinas entre diferentes modelos. Algunos ejemplos de modelos son: el modelo de análisis, el de diseño y el de comportamiento, entre otros. Es decir que, a partir de uno de ellos, podemos generar otro de menor abstracción. Un ejemplo común de generación de modelos, es la generación de código a partir del modelo de diseño, mediante el uso de una herramienta de modelado UML. En este caso usamos una herramienta para transformar el modelo de diseño en el “modelo” de código.

¿Qué es MDA? MDA es el acrónimo de Model Driven Architecture (Arquitectura Dirigida por Modelos), un concepto promovido (pero no creado) por la OMG, que propone basar el desarrollo de software en modelos especificados utilizando UML, para que, a partir de esos modelos, se realicen trasformaciones que generen código u otro modelo, con características de una tecnología particular (o con menor nivel de abstracción). MDA define un framework para procesar y relacionar modelos. Suele escucharse que MDA es la evolución natural de UML, ya que tiende a incrementar la cantidad de código generado, a partir de especificaciones detalladas en UML.

¿Qué no es MDA? Hoy MDA es uno de los tantos acrónimos de moda y, como ocurre algunas veces con las modas, el concepto puede tender a malinterpretarse. Por lo tanto, enumeremos rápidamente que no es MDA. 1. MDA no es un proceso de desarrollo 2. MDA no es una especificación 3. MDA no es una implementación 4. MDA no es una implementación de referencia de ningún estándar particular 5. MDA no es un concepto maduro aún 6. MDA no es simplemente generar código 7. MDA no tiene, aún, una visión unificada en la industria 8. MDA no es una arquitectura ni un “arquitectural style o pattern”

Modelos MDA Los modelos juegan un rol trascendental en MDA. Como un framework para construir sistemas, MDA abstrae el sistema a construir en distintas capas de abstracción (layers). Tradicionalmente, el OOAD (Object Orien-

36

FEB-ABR 2008

Figura 1: Un ejemplo de modelo MDA y sus relaciones.

Los modelos concretos exceden en número a los modelos abstractos. A medida que avanzamos en las transformaciones, los modelos se vuelven más concretos, transformando al modelo abstracto en uno compatible con una tecnología o plataforma. La situación inversa de llevar el código hacia un modelo concreto –también conocido como ingeniería en reversa– rara vez ocurre, excepto cuando el punto de partida es el código mismo. Esto se produce debido a que MDA promueve la fuerte separación entre las responsabilidades de requerimientos del negocio y las responsabilidades tecnológicas. La ventaja de esta “separación de responsabilidades” es que ambos aspectos pueden evolucionar individualmente sin generar dependencias entre sí. De está manera, la lógica de negocio responderá a las necesidades del negocio y no dependerá de vicisitudes técnicas.

CIM (Computational-Independent Model) El CIM se centra en los requerimientos y representa el nivel más alto del modelo de negocios. Usa un lenguaje para modelar procesos de negocios que no es UML, aunque este lenguaje puede ser derivado perfectamente utilizando MOF (meta-object facility). El CIM transciende a los sistemas; www.sg.com.mx


cada proceso de negocio interactúa con trabajadores humanos y/o componente de máquina. El CIM describe solamente aquellas interacciones que tienen lugar entre los procesos y las responsabilidades de cada trabajador, sea o no humano. Un objetivo fundamental del CIM, es que cualquiera que pueda entender el negocio y los procesos del mismo puede comprenderlo, ya que éste evita todo tipo de conocimiento especializado o de sistemas. CMI debe su nombre a este foco en el negocio por sobre la tecnología, que en español se traduce como: “Modelo Independiente de la Computación”

PIM (Platform-Independent Model) El PIM, que se traduce al castellano como “Modelo Independiente de la Plataforma”, representa el modelo de procesos de negocio a ser implementado. Comúnmente se usa UML o un

www.sg.com.mx

derivado de UML para describir el PIM. El PIM modela los procesos y estructuras del sistema, sin hacer ninguna referencia a la plataforma en la (o las) que será desplegada la aplicación. A su vez, ignora los sistemas operativos, los lenguajes de programación, el hardware y la topología de red. Suele ser el punto de entrada de todas las herramientas para MDA e incluso de muchos artículos que hablan de MDA, dejando de lado el CIM.

UML, creando distintos profiles que definen un PSM para cada tecnología requerida. Los PSMs tienen que lidiar explícitamente con los sistemas operativos, los lenguajes de programación, las plataformas (CORBA, .Net, J2EE, ETC), etcétera.

PSM (Platform-Specific Model) El PSM, que se traduce al castellano como “Modelo Específico de la Plataforma”, representa la proyección de los PIMs en una plataforma específica. Un PIM puede generar múltiples PSMs, cada uno para una tecnología distinta. Generalmente, los PSMs deben colaborar entre sí para una solución completa y consistente. Normalmente, esto se realiza en

Figura 2: Los PIMs se transforman en PSMs

FEB-ABR 2008


// PRÁCTICAS

/*ARQUITECTURA*/

Code model El modelo de código representa el código desplegable (deployable), normalmente en un lenguaje de programación de alto nivel, como Java, C#, C++,VB, JSP, etc. Idealmente, el modelo de código está listo para compilar y no debería requerir la intervención humana; el despliegue de la aplicación podría ser automatizado. Según los puristas y algunos fanáticos de MDA, en un ambiente MDA maduro no deberíamos pensar en el código más que como simples archivos, o como un mero objeto intermedio para generar el ejecutable final. Pero debido a que MDA no está maduro, y difícilmente se llegue alguna vez a la utopía de no tener que tocar ningún código, los desarrolladores seguiremos necesitando conocer la tecnología para complementar la generación de código, debuguear la aplicación y, sobre todo, lidiar con muchos y variados errores inesperados, extraños y divertidos.

Decisiones de diseño Hemos visto cómo, de manera automática y paulatina, MDA promueve la transformación de modelos que representan lógicas de negocios complejas (CIM), hasta llegar al código ejecutable y desplegable (Code Model). Pero, ¿qué pasa con las decisiones de diseño, aquellas decisiones que tomamos cuando, por ejemplo, tenemos que desarrollar un sistema donde la mayoría de las transacciones sólo leen datos, pero diez de ellas hacen uso intensivo del procesador? ¿Qué pasaría si todos los mapeos se hicieran de igual manera? Nos es dado a pensar que esto degradaría la calidad final percibida de la aplicación. Para corregir este problema, MDA promueve el uso de Marks (marcas), las cuales indican aspectos específicos para tener en cuenta en cada transformación. Un PIM generado a partir de un PIM y Marcas se denomina PIM Marcado o Marked PIM. La utilización de las marcas establece que las decisiones respecto a aspectos tecnológicos queden fuera de los modelos principales.

Ahora bien, para realizar el mapeo entre un PIM marcado y, por ejemplo, un PSM, es necesario detallar cómo se mapean esas marcas; para eso se definen los Mappers (mapeadores). Puede verse la relación entre los mapeadores, las marcas y los PSM en la figura 3. Los mapeos se hacen utilizando un QVT: Query, Views, and Transformations.

Ventajas de MDA La ventaja principal de MDA radica en la clara y estricta separación de responsabilidades. Por un lado, modelaremos los PIMs, que representan los modelos de nuestro negocio, y por otro lado, los PSMs con las preocupaciones tecnológicas. Esto permitirá que ambos modelos puedan evolucionar por separado. De esta manera, si quisiéramos, por ejemplo, modificar un aspecto técnico, bastará con modificar el PSM sin que estos tengan impacto en la lógica de negocios. Esta idea viene de un concepto que, en ingeniería de software, se llama “Guías de Diseño”. Particularmente, una de esas guías dice que el modelado de la solución debe ser dirigido por el negocio. Esta guía se basa en la afirmación de que un cambio en el negocio seguramente produzca un cambio en el código, pero no lo inverso: los cambios en el código no deberían impactar en el negocio. MDA también permite: lidiar con la complejidad del negocio, modelando a éste por separado y permitiendo su análisis y mejora; disminuir costos, si se cuenta con una herramienta MDA adecuada a nuestras necesidades; mejorar la calidad de nuestros modelos y procesos, mediante su análisis y la separación de responsabilidades.

Estándares involucrados en MDA Las tecnologías más importantes involucradas, para poder llevar a la práctica los conceptos subyacentes en MDA son: Meta Object Facility (MOF), Unified Modeling Language (UML), XML Model Interchange (XMI), Common Warehouse Meta-model (CWM), Software Process Engineering Meta-model (SPEM), Action Semantics Language (ASL), Query-View-Transformation (QVT), UML profiles.

Herramientas MDA

Figura 3: Utilización de marcas y mapeos

Las herramientas MDA deberían proveer la capacidad de transformar modelos de negocios puro (CIMs) en aplicaciones completas, desplegables y capaces de ejecutar con un mínimo de decisiones técnicas. Lamentablemente, nos encontramos muy lejos de que MDA o alguna herramienta MDA provea todas estas facilidades para cualquier negocio y problemática a desarrollar. Tampoco existe un líder en herramientas MDA, debido a que son muy sofisticadas. Algunas de las herramientas más conocidas con: 1. ATL (ATLAS Transformation Language) 2. OptimalJ 3. ArcStyler 4. UMT (UML Model Transformation) 5. ArgoUML 6. Codagen 7. Rational Architect

Valerio Adrián Anacleto es socio fundador de Epidata Consulting, empresa especializada en Arquitectura de Software con oficinas en Argentina y Chile. Adicionalmente, Valerio es docente de la facultad de ciencias exactas y naturales de la UBA y dicta clases también en CEIS - Carrera de especialización de Ingenierí­a de Software - en la UCA.

38

FEB-ABR 2008

www.sg.com.mx


8. MDA Transf 9. Enterprise Architect 10. GReAT 11. AndroMDA

¿Cómo evaluar una herramienta MDA? Con el advenimiento de las palabras de moda (buzzwords), utilizadas en exceso y en muchos casos de manera inapropiada, llegan a la puerta de nuestros gerentes los vendedores de sueños y espejitos de colores comentando que, con la nueva herramienta MDA, podremos resolver todos nuestros problemas haciendo clic en el botón derecho del mouse. Como todo el mundo sabe, ese tipo de expectativas suele ser exagerada. En mi opinión personal, la forma de probar una herramienta es usarla para resolver nuestra problemática y, si hay vendedores involucrados, pedirles gentilmente que nos ayuden a resolver la problemática de nuestro negocio con un caso “testigo” elegido por nosotros. Si la herramienta realmente funciona, podrá resolverse el caso testigo y nosotros seremos unos clientes felices. Más allá del caso práctico sugerido, debemos tener en cuenta varios factores al momento de la evaluación. Estos factores tienen que ver con: El mantenimiento de la aplicación: ¿Cuánto me va a costar agregar o mantener código una vez que haya pasado por el proceso de generación? Impacto del cambio: ¿Cómo se administra un cambio en el proceso de negocio? ¿Qué costo tiene? Manejo de excepciones: ¿Cómo se administran los casos excepcionales, como por ejemplo las transacciones que hacen uso intensivo del procesador? Curva de aprendizaje: ¿Cuál es la curva de aprendizaje? ¿Tengo que aprender todo un nuevo meta-lenguaje? ¿Basta con el uso intuitivo de herramientas “visuales”? Madurez: ¿Qué tan madura es la herramienta y los frameworks involucrados? ¿Cuántos y cuáles casos de éxito existen? Como éstas, hay muchas preguntas que debemos hacernos antes de elegir una herramienta, con la cual tendremos que convivir un tiempo determinado y la cual podría llegar a transformarse en un gasto, para dejar de ser la inversión esperada.

Conclusión MDA data del año 2000, cuando la OMG publicó un white-paper titulado “Model Driven Architecture”, en el que describía la visión del desarrollo de software a través de modelos de objetos relacionados entre sí, para la generación de sistemas completos. Si bien transcurrieron casi seis años desde esa fecha, MDA no es, ni será, una bala de plata capaz de aniquilar a todas las problemáticas inherentes al desarrollo de software. Hoy día, a pesar de todo, los modelos son costosos de construir y, una vez construido el modelo, éste debe ser transformado manualmente en código. Esta tarea es tediosa, propensa a errores, repetitiva en muchos casos y, sobre todo, un proceso caro en recursos (y dinero, claro). Además, una vez que el trabajo interesante y de mayor abstracción fue realizado, sólo la transformación desde el código al ejecutable es automatizable. MDA también es el resultado de reconocer que la interoperatibilidad es algo bueno y que el modelado también lo es. Bien utilizado y teniendo en cuenta los principios de diseño subyacentes, nos puede ahorrar la escritura y generación de muchas tediosas líneas de código, ayuda siempre bien recibida. Incluso es probable que, analizando las tecnologías utilizadas hoy en nuestra organización, encontremos que algunas de ellas están fuertemente relacionadas con el concepto MDA. En ese caso, es posible organizarlas de manera que reflejen y hagan evidente el uso de MDA como concepto subyacente, más allá de las herramientas utilizadas.

www.sg.com.mx

FEB-ABR 2008


// PRÁCTICAS

/* PROGRAMACIÓN*/

Aprendiendo Ruby y Rails Parte 2. De los Arreglos a los Bloques Por Carlos Ortega

En el número anterior SG Año 03, número 06, comenzamos con una serie de artículos introductorios al lenguaje de programación Ruby y el uso del framework Ruby on Rails. En este artículo, continuamos con la serie introductoria a la representación natural del lenguaje. En esta ocasión, veremos otras de las características de Ruby, las cuales, nos ayudarán a comprender mejor el uso de RoR (Ruby on Rails) .

Más características de Ruby En la parte 1, hablamos no solamente de los antecedentes del lenguaje, sino que además vimos algunos conceptos básicos. Para continuar, seguiremos hablando de esta parte introductoria y más de sus conceptos básicos.

Arreglos Sabemos que la manera mas fácil de implementar una lista de usuarios (al igual que cualquier otro tipo de lista) es utilizando un arreglo. El código siguiente permitirá mostrar el uso de esta estructura de datos: class CListaUsuarios def initialize @arregloUsuarios = Array.new end def append( usuario ) @arregloUsuarios.push( usuario ) self

#--- Regresa una referencia a si mismo #--- Además, esto permite hacer #--- multiples llamadas encadenadas a append

end def delete_first @arregloUsuarios.shift end def delete_last @arregloUsuarios.pop end def []( indice ) @arregloUsuarios[ indice ] end end

Nótese el empleo de clase Array y la invocación del constructor mediante la palabra reservada new. En el artículo anterior, definimos la clase CUsuario y la clase CAdminSistema (SG Año 03, No. 06, pág. 36), tomando estas clases como ejemplos para incorporar varios objetos a la lista de usuarios definimos:

40

FEB-ABR 2008

admin1 = CAdminSistema.new( “Carlos”, “a9M4xSmart”, “xxx” ) admin2 = CAdminSistema.new( “Marco”, “b9D4xSmallTs”, “www” ) admin3 = CAdminSistema.new( “Luis”, “ b9D4xBigHcWTs “, “rrr” ) admin4 = CAdminSistema.new( “Pablo”, “f0H4xSmart”, “xxx” )

Una vez que tenemos los objetos con los usuarios, los agregamos a la lista: listaUsuarios = CListaUsuarios.new listaUsuarios.append( admin1 ) listaUsuarios.append( admin2 ) listaUsuarios.append( admin3 ) listaUsuarios.append( admin4 ) puts “Elemento 0:= “ + listaUsuarios[ 0 ].nombre puts “Elemento 1:= “ + listaUsuarios[ 1 ].nombre puts “Elemento 2:= “ + listaUsuarios[ 2 ].nombre puts “Elemento 3:= “ + listaUsuarios[ 3 ].nombre

La salida que se obtiene es: Carlos Marco Luis Pablo Existe otra manera para definir e inicializar explicitamente un arreglo, esta toma la siguiente forma: nombreArreglo = [ elemento0, elemento1,…elementoN ]

Observemos con atención que la declaración es muy similar a como se declara un arreglo en otros lenguajes OO como VB.NET, C# o Java, esto es, se usan corchetes cuadrados para delimitar el conjunto de elementos contenidos en el arreglo, así como también el comas para diferenciar cada uno de los elementos. En Ruby, un arreglo puede albergar diferentes tipos de elementos, por ejemplo: enteros, flotantes, caracteres, cadenas, diferentes tipos mezclados, o si se requiere no tener ningún elemento, en este sentido un arreglo en Ruby se comporta mas como un vector en Java que como un arreglo. A continuación algunos ejemplos: arregloMin= [ ] # arreglo vacio arreglo1 = [0, 1, 2, 3] arreglo2 = [‘a’, ‘b’, ‘c’, ‘d’] arreglo3 = [0, ‘a’, 1, ‘b’, 2, ‘c’] # arreglo que contiene # diferentes tipos de elementos

www.sg.com.mx


arreglo4 = [0, ‘a’, “primero”, 1, ‘b’, “segundo”, 2, ‘c’, “tercero”] arreglo5 = [1, 2, [30, 40, 50], 4] # arreglo conteniendo # otro arreglo como elemento

Los arreglos presentan el operador [ ] que permite accesar un elemento determinado; y como sucede en otros lenguajes, el indice inicial del arreglo comienza en 0. puts arreglo1[ 0 ] puts arreglo1[ 1 ] puts arreglo1[ 2 ] puts arreglo5[ 0 ] puts arreglo4[ 2 ] puts arreglo4[ 6 ] puts arreglo4[ 8 ] puts arreglo5[ 2 ]

# => 0 # => 1 # => 2 # => 1 # => primero # => 2 # => tercero # => [30, 40, 50]

Si por otra parte no deseamos utilizar la declaración explícita de un arreglo, sino queremos definirlo dinámicamente, se deberá emplear la clase Array: nombreArreglo = Array.new

La clase Array posee un gran número de métodos ya que hereda (o adquiere) mucha funcionalidad de otro mixin importante: Enumerable. Un mixin es una característica de Ruby que permite la inclusión de funcionalidades (métodos que estén definidos en otra área (module) ) dentro de una clase o método dado. El concepto es parecido al efecto que se tiene si se usan elementos definidos en otro package (si se habla de Java) o namespaces (si se habla de C#). Ahora bien, entre los métodos y operadores más importantes de la clase Array están: &, *, +, -, ==, [], at, concat, delete, delete_at, each, empty?, eql?, fetch, first, include?, insert, join, last, length, nitems, porp, push, replace, reverse, shift, size, sort, to_a, transpose. Estos métodos y operadores son similares a lo que se tienen en un Hash.

Hashes Al igual que los arreglos los hashes son colecciones indexadas, pero a diferencia de los primeros, los hashes presentan un indexado y método de acceso asociado a valores de llaves específicas dentro del hash. También se les conoce como mapas, diccionarios o arreglos asociativos, en donde las llaves y valores pueden ser de cualquier tipo. La forma de declarar un hash es: nombreHash = { llaveX> valor0, llaveZ => valor1,… llaveJ => valorN }

Observemos que a diferencia de un arreglo, cada elemento del hash es un par llave => valor en donde a diferencia de lo que pasa en un arreglo, el valor de la llave no necesariamente tiene que ser ordenado en relación con otros elementos del hash. www.sg.com.mx

FEB-ABR 2008


// PRÁCTICAS

/* PROGRAMACIÓN*/

Algunos ejemplos de hash son: ACCION = 1 DRAMA = 2 hash1 = { 0 => “PRIMERO”, 1 => “SEGUNDO”, 2=> “TERCERO” } hash2 = { ACCION => “60 Segundos”, DRAMA => “Kramer vs Kramer” } hash3 = { 1 => ‘K’, 3 => ‘L’, 5 => ‘M’ } hash4 = { 0 => 0, 1 =>1, 2 => ‘M’, 4 =>’Carlos’ }

El acceso a cualquiera de los elementos del hash es a través de los valores de las llaves, utilizando el operador [ ]: puts hash1[ 0 ] puts hash1[ 2 ] puts hash2[ DRAMA ] puts hash2[ 0 ] puts hash3[ 1 ] puts hash3[ 5 ] puts hash3[ 0 ] puts hash3[ 2 ] puts hash4[ 4 ]

La salida es:

uno de los administradores, podríamos hacerlo accesando directamente a cualquiera de sus celdas: puts “Elemento 0:= “ + listaUsuarios[ 0 ].nombre puts “Elemento 1:= “ + listaUsuarios[ 1 ].nombre … puts “Elemento 3:= “ + listaUsuarios[ 3 ].nombre

Sin embargo esto representa una gran cantidad de trabajo, más aún cuando sabemos que es posible tomar ventaja de la naturaleza del arreglo como colección, es decir, al igual que sucede en otros lenguajes de programación es posible iterar sobre el arreglo: class CListaUsuarios … def getNombres_iterando_en_arreglo tamanoArreglo = @arregloUsuarios.length if tamanoArreglo > 0 then begin ###--- !OJO! Notese que el indice inicia en 0 ---### ###--- y acaba en tamanoArreglo-1 ---### for i in 0..tamanoArreglo-1 puts @arregloUsuarios[ i ].nombre end end

PRIMERO TERCERO Kramer vs Kramer nil K M nil nil Carlos

La salida será:

Ahora bien, aun cuando tanto arreglos como hashes son estructuras sumamente útiles, es necesario incorporar otro elemento de Ruby que entre otras cosas complementa y toma ventaja de la naturaleza de estas estructuras.

Carlos Marcos Luis Pablo

El elemento al que nos referimos se conoce como bloque (block), y permite la ejecución de instrucciones interactuando con cada uno de los elementos internos de los hashes y/o arreglos, de hecho también utiliza en forma intrínseca la capacidad funcional los métodos simples o agregados a una clase.

Además de mostrar cómo se itera sobre un arreglo, este ejemplo muestra dos nuevas estructuras de control: if-then y for. La estructura if-then comprueba la veracidad de una condición, si se cumple se ejecuta el conjunto de sentencias contenidas en el siguiente bloque.

Bloques (blocks) Un bloque (block) es un mecanismo que permite la agrupación de enunciados y la llamada anónima a esta agrupación desde un método determinado. A continuación definiremos un ejemplo para explicar con más detenimiento cómo opera. Continuando con el ejemplo de los Usuarios, recordemos que habíamos agregado datos, si ahora deseamos conocer el nombre de cada

42

FEB-ABR 2008

end ### <= end del if-then end ### <= end del def nombres … end … listaUsuarios. getNombres_iterando_en_arreglo

La estructura for ejecuta repetidamente un conjunto de intrucciones, tomando como base el rango definido después de la palabra in. En ambos casos la delimitación del bloque de sentencias ocurre hasta la declaración de la palabra end (nótese los comentarios que indican los finales de bloque). El iterar sobre un arreglo parece bastante claro y útil, de hecho como se puede apreciar esta forma es muy similar a la que se tiene en otros lenguajes como VB.NET, C# o Java, sin embargo, es posible que este tipo de codificación sea más natural si empleawww.sg.com.mx


mos el concepto de bloque para accesar cada una de las celdas del arreglo: class CListaUsuarios … def getNombres_usando_Iterador_y_Bloque @arregloUsuarios.each do| elementoArreglo | puts elementoArreglo.nombre end end end … listaUsuarios.getNombres_usando_Iterador_y_Bloque

La salida será: Carlos Marcos Luis Pablo

www.sg.com.mx

Expliquemos el ejemplo que se acaba de presentar: en Ruby, un bloque (block) es una agrupación de sentencias que pueden ser invocadas desde un método de forma anónima. Formalmente se puede desglosar a un bloque a partir de la siguiente declaración: def algunMetodo( listaParametrosFormalesDelMetodo ) .... yield( param0, param1…paramN ) … end ... algunMetodo(listaParametrosAPasar) do| paramA, paramB...,paramZ | .... #...bloque de sentencias ... end

Dónde: - La definición del bloque debe hacerse inmediatamente después de la llamada al método.

FEB-ABR 2008


// PRÁCTICAS

/* PROGRAMACIÓN */

“Un arreglo puede albergar diferentes tipos de elementos”.

- La definición del bloque inicia a partir de la palabra do y hasta la palabra end; es decir abarca los parámetros y todo el bloque de sentencias que se deseen definir hasta la palabra end. - La listaParametrosFormalesDelMetodo es la definición de todos los parámetros a pasarle al método, y estos pueden o no ser los mismos parámetros que internamente se le pasen al metodo yield. - La listaParametrosAPasar es la declaración formal de todos los parámetros que se le pasan al método. - paramA, paramB,…paramZ son los párametros a pasarle al bloque; dicha lista debe declararse en medio de barras verticales, precedidas además por la palabra reservada do. En runtime, el orden de ejecución de llamadas es: 1. Se invoca algunMetodo con la listaParametrosAPasar. 2. Una vez dentro de algunMetodo se empiezan a ejecutar en orden todas las sentencias hasta que Ruby detecta la invocación a yield. 3. El intérprete de Ruby es inteligente y recuerda si existe algun bloque que previamente definido de manera adyacente a la llamada inicial de algunMetodo. 4. Si fue definido, yield actúa como la invocación anónima a ese bloque, es decir yield invoca la ejecución de bloque pasándole a este los parámetros param0, param1, …paramN, en otras palabras, paramA tomará el valor que hayamos pasado a param0, paramB tomará el de param1, paramC tomará el de param2, etcétera. 5. Una vez ejecutado el bloque, se regresa el control al método, ejecutándose la siguiente instrucción definida después de yield. Nota: Por supuesto que tanto los parámetros del método como los del bloque son opcionales y pueden o no declararse si así uno lo desea. Abordemos ahora nuestro ejemplo: @arregloUsuarios.each do| elementoArreglo | puts elementoArreglo.nombre end

Primero notemos que each es un método que pertenece a la clase Array (se puede constatar esto si accesamos la biblioteca de lenguaje: Ruby Library Reference). Si bien es cierto que en la biblioteca no podemos verificar directa-

mente cómo es que está definido internamente each, si podemos deducir que en este método existe una declaración yield que tiene un solo parámetro, y que éste le proporciona el valor correspondiente al parámetro elementoArreglo (esto es, sólo existe un parametro dentro del bloque). Ahora, lo que sucede dentro del bloque es responsabilidad del programador: en este caso sólo se deseó imprimir el nombre del elemento del arreglo en cuestión, si hubiésemos querido podríamos haber escrito un bloque de sentencias más sofisticado. Compárese la elegancia, legibilidad y agilidad que proporciona esta construcción contra la forma clásica de iterar sobre el arreglo que habiamos propuesto anteriormente (y que es similar a la que se tiene en VB.NET, Java o C# ).

Resumen En esta segunda parte se completó la revisión de los principales elementos de lenguaje Ruby. Como ya se había explicado antes, ésta no sería una revisión exhaustiva sino lo suficientemente general y breve para contar los elementos básicos necesarios para aplicar Rails. Esta revisión incluyó el manejo de arreglos, hashes y bloques. Y una breve explicación de concepto de mixin y de las estructuras de control if-then y for. En nuestra próxima entrega abarcaremos la instalación y arquitectura de Rails como framework con un ejemplo que permitará mostrar las capacidades de desarrollo ágil de Ruby y de Rails.

Referencias • Thomas David, Fowler Chad, Hunt Andy. “Programming Ruby”. 2nd Edition. The Pragmatic Bookshelf. 2005. • Thomas David, Heinemeier Hanson David, et al. “Agile Web Development with Rails”. 2nd Edition. The Pragmatic Bookshelf. 2006. • Black, David A. “Ruby for Rails”. Manning Publications Co. 2006 • Troelsen, Andrew. “Pro C# 2005 and the .NET 2.0 Platform”. 3rd Edtion. Apress. 2005. • www.ruby-lang.org/en • www.rubyonrails.org

Carlos Ortega es consultor en metodologías y prácticas ágiles (XP, TDD, Refactoring, Pair Programming), cuenta con certificaciones en RUP, OOAD, UML, etcétera. Es Certified ATAM Evaluator y Certified Professional Software Architect ambos avalados por el SEI. Ha colaborado en numerosos proyectos para diversas organizaciones como Banco de Mexico, Elektra, Banco Azteca, Fandelli, Oracle, IMSS, Heinson, Accenture, EDS. Actualmente colabora con Software Ágil, empresa dedicada al tutelaje e implementación de metodologías ágiles (SCRUM, XP, Crystal).

44

FEB-ABR 2008

www.sg.com.mx


// PUBLIRREPORTAJE

¡Microsoft Visual Studio 2008 y .NET Framework 3.5 ya están listos! Microsoft está liberando una nueva versión de su suite de herramientas para programadores: Visual Studio 2008. Esta versión tiene como objetivo habilitar a los desarrolladores para crear aplicaciones de clientes inteligentes que generen experiencias de usuario más ricas y de mayor calidad. El primer evento del lanzamiento a nivel mundial tendrá lugar en Los Ángeles, California el próximo 27 de febrero. En México se realizarán diversos eventos de lanzamiento durante los meses de marzo y abril, a los que se invitarán a socios, clientes, y miembros de las comunidades de desarrolladores. Visual Studio 2008 cumple con la visión de Microsoft de ayudar a las personas a desarrollar todo su potencial al crear herramientas que ayuden a los desarrolladores a crear aplicaciones más seguras, fáciles de administrar y confiables que aprovechen al máximo las ventajas de Windows Vista, Office 2007 y el framework de .NET. Visual Studio 2008 brinda avances clave en: • Desarrollo acelerado de aplicaciones • Colaboración efectiva entre miembros de un equipo • Experiencias de usuario fantásticas Con herramientas de desarrollo avanzadas, capacidades de depuración en tiempo de ejecución y control de flujo, funcionalidad para conectividad con diversas bases de datos y otras características innovadoras, Visual Studio 2008 facilita y acelera la creación de aplicaciones de nueva generación. El nuevo entorno de Visual Studio 2008 incluye mejoras como: herramientas de diseño visual para un desarrollo más rápido, mejoras significativas en las herramientas para desarrollo Web y nuevas capacidades en lenguajes de programación que aceleran el desarrollo. Visual Studio 2008 le da a los desarrolladores el soporte para todos los marcos de trabajo requeridos para crear aplicaciones Web expresivas y contundentes basadas en la tecnología AJAX.NET. Los desarrolladores podrán crear fácilmente aplicaciones web de nueva generación que se integren con cualquier base de datos, funcionen sobre cualquier navegador Web moderno y tengan acceso completo a los servicios tanto de ASP.NET como de la plataforma Microsoft.

Desarrollo acelerado de aplicaciones Visual Studio 2008 provee capacidades mejoradas en los lenguajes y acceso a datos, tales como LINQ (Language Integrated Query), que facilitan y hacen más rápida la construcción de soluciones que analizan y manipulan información. Visual Studio 2008 también brinda la habilidad de utilizar distintas versiones del Framework .NET desde el mismo entorno de desarrollo para construir aplicaciones en las versiones 2.0, 3.0 y 3.5 del Framework .NET, lo que significa que podrán trabajar en una gran variedad de

proyectos desde un solo ambiente de trabajo con compatibilidad para aplicaciones legacy o para migración de desarrollos a la nueva versión del Framework.

Experiencia de usuario fantástica Visual Studio 2008 ofrece a los desarrolladores nuevas herramientas que aceleran la creación de aplicaciones conectadas sobre las plataformas más modernas incluyendo Windows Vista, Office 2007, SQL Server 2008 y Windows Server 2008. Para la Web, ASP.NET, AJAX.NET y otras nuevas tecnologías habilitarán a los desarrolladores para rápidamente crear una nueva generación de experiencias web más interactivas, eficientes y personalizadas. Visual Studio 2008 tiene soporte completo para XAML, la plataforma basada en XML para descripción de animaciones en 2D y 3D, así como de gráficos y texto vectorial.

Colaboración efectiva entre miembros del equipo Visual Studio 2008 incluye nuevas capacidades que ayudan a mejorar la colaboración en los equipos de desarrollo, incluyendo herramientas que ayudan a integrar al proceso de desarrollo a distintos roles como el de profesionistas de bases de datos o diseñadores gráficos. De la misma forma, Visual Studio 2008 se integra directamente con las herramientas de Expression Studio, permitiendo una colaboración eficiente entre equipos de diseño gráfico y de desarrollo de aplicaciones para crea aplicaciones con elementos visuales sorprendentes.

Utiliza el framework .NET 3.5 El Framework .NET está diseñado para facilitar la rápida construcción de aplicaciones conectadas que proveen experiencias de usuario de alta calidad, al proveer bloques de construcción prefabricados que resuelven las tareas de programación más comunes. En conjunto, Visual Studio 2008 y el Framework .NET 3.5 reducen la necesidad de código de bajo nivel para realizar tareas cotidianas, optimizando los tiempos de desarrollo y permitiendo que los programadores puedan concentrarse en resolver los temas críticos del negocio. El Framework .NET 3.5 es una mejora incremental de la versión 3.0 del mismo que incluye nuevos beneficios en las librerías base y en Windows Workflow Foundation, Windows Communication Foundation, Windows Presentation Foundation, y Windows CardSpace.

Recursos en el web • Para conocer más sobre estas tecnologías visita www.microsoft.com/spanish/msdn/latam/visualstudio2008 • Materiales de entrenamiento sin costo blogs.msdn.com/jaimesb • Casos de éxito www.microsoft.com/mexico/casos • Sitio oficial del lanzamiento www.microsoft.com/latam/estamosconlosheroes


// UML

Uso de UML en Aplicaciones Web Páginas y Relaciones Por Charlie Macías y Sergio Orozco

Frecuentemente somos cuestionados en nuestros cursos acerca de las formas para representar de manera más explícita cierto tipo de aplicaciones utilizando UML, pero sin lo “aburrido” de la notación. Cierto es que UML es gráfico de por sí, pero usar los mismos elementos independientemente del tipo de aplicación, por ejemplo cuando estudiamos el modelado de aplicaciones web, el modelado del negocio, de sistemas de tiempo real o de bases de datos, a algunas personas les genera ruido y prefieren algo más explícito.

Estereotipos para las clases Estereotipo

Representa una página Web que tiene scripts ejecutados por el servidor. Estos scripts interactúan con los recursos que se encuentran al alcance del servidor. Sólo puede mantener relaciones con objetos que se encuentren en el servidor.

Para resolverlo aprovechamos una de las características peculiares que le dan flexibilidad a la notación de UML. Y consiste en el conjunto de mecanismos de extensión (de significado): estereotipo, restricción y valor etiquetado. Estos mecanismos le permiten a UML extender y enriquecer el significado de sus elementos y símbolos básicos de tal suerte que pueden ser empleados para representar dominios en donde nunca se tuvo una intención explícita de origen de aplicarlos. Haberlo hecho así supondría una limitante para la aplicación genérica del lenguaje unificado. Ejemplos de estos dominios son el modelado de negocio (aunque ya existe BPMN como un estándar más específico), el modelado de bases de datos, el modelado de aplicaciones web o el modelado de circuitos electrónicos, por mencionar algunos.

Representan páginas que son dibujadas por el navegador web y pueden ser una combinación de algún o algunos lenguajes de marcado, scripts del lado del cliente, islas de datos, etc.

Representa una colección de campos de entrada que forman parte con una página del lado cliente (Client Page). Tiene una correspondencia directa con la etiqueta <FORM> de XHTML.

Es una colección de scripts del lado del cliente que existe como un archivo separado y que son incluidos mediante una petición independiente por parte del navegador.

Arquitectura para web La mayoría de las aplicaciones desarrolladas hoy en día son las aplicaciones llamadas web, es decir, aquellas que tienen como elemento significativo de su arquitectura un navegador y un protocolo de comunicación HTTP. Cuando capacitamos a la gente en arquitectura y patrones, buscamos que el alumno comprenda las formas de elaborar este tipo de aplicaciones, como su ubicación en algunos de los patrones de arquitectura web: “Cliente Delgado Web”, “Cliente Robusto Web” o “Reparto Web”.

El estándar de facto en web En 1998, Jim Conallen definió una extensión a la que denominó WAE (Web Application Extension) para UML. Esta extensión es la convención más difundida y aceptada hasta nuestros días y podríamos decir que define el estándar de facto. En esta entrega, formada por dos artículos, presentaremos los elementos que definen el 20-80 en el modelado de aplicaciones web usando la WAE. El foco de este artículo es la WAE en los diagramas de clases.

Extensiones WAE para el diagrama de clases Algunos de los ejemplos más comunes de estereotipos que se pueden asociar a las clases y a las relaciones entre éstas, para representar una aplicación en web son las siguientes:

46

FEB-ABR 2008

Descripción

Estereotipos para las relaciones entre las clases Link

Representa un apuntador desde una client page hacia una client page o server page. Corresponde directamente con una etiqueta <a> (ancla) de HTML.

Submit

Esta relación siempre se da entre una form y una server page, por supuesto, la server page procesa los datos que la form le envía (submits).

Build

Sirve para identificar cuales server page son responsables de de la creación de una client page. Una server page puede crear varias client page, pero una client page sólo puede ser creada por una sola server page. Esta relación siempre es unidireccional.

Redirect

Esta es también una relación unidireccional que indica que una página Web redirige hacia otra. En caso de que la página origen sea una client page esta asociación corresponderá con la META etiqueta y valor HTTP-EQUIV de Refresh. www.sg.com.mx


“Estos mecanismos le permiten a UML extender y enriquecer el significado de sus elementos y símbolos básicos”.

Un ejemplo de sistema en web Si bien no presentaremos el modelo de casos de uso para ejemplificar el uso de esta notación, para resaltar el modelo de clases con sus extensiones, si necesitamos ubicar el ejemplo en algún escenario. Por ejemplo: en nuestro sitio nuestros alumnos pueden consultar los datos del curso en el que están inscritos y, desde este mismo lugar, pueden también contestar una encuesta de satisfacción durante el último día del mismo. En la figura 1 vemos parte del modelo de clases de dicho sistema utilizando los estereotipos propios de WAE.

Anotaciones básicas Suponemos que está de más comentar que las relaciones entre las clases en los diagramas de clases no sugieren o asumen ningún tipo de flujo, que las puntas de flechas sólo son restricciones en cuanto al sentido en que la relación puede ser transitada. Recordemos que el diagrama de clases es un diagrama estructural. También cabe señalar que el diagrama de clases que aquí se presenta tiene un punto de vista de diseño y no uno conceptual (figura 1).

cuentan con íconos alternativos que pueden utilizarse, aunque esto es algo opcional. En nuestro ejemplo se muestran directamente los nombres de los estereotipos para cada clase y relación, en lugar de los íconos asociados a cada uno de esos estereotipos. Muchas herramientas de modelado te permiten, de manera simple, elegir entre una u otra forma de representación.

Aplicación de WAE en las páginas En el diagrama de la figura 1 podemos observar varias clases a las que se les han asociado los estereotipos antes descritos, también podemos observar que entre las clases sólo existen relaciones de asociación, de las cuales algunas usan los estereotipos WAE y otras no. Las que no usan los estereotipos WAE como por ejemplo: la relación entre LoginForm y LoginValidator es la veterana relación de composición, la cual indica lo de siempre, que el script del lado del cliente LoginValidator es una pieza inseparable de la forma LoginForm.

Relaciones WAE entre las páginas del sistema También podemos ver que la página del lado del servidor llamada PresentarDatosCurso es la responsable de procesar los datos que la forma Login le envía (relación «submit»). Otra de las cosas que podemos ver es que la página del lado del servidor PresentarDatosCurso es la que se encarga de construir la página del lado del cliente CursoForm (relación «build») o, en caso de presentarse un error, redirigir el control a la página del lado del servidor que se encarga de manejarlo ReportarError (relación «redirect»). Finalmente, podemos notar también que la página del lado del cliente CursoForm mantiene una liga hacia la página del lado del servidor EncuestaParticipante (relación «link»).

Sólo el comienzo Figura 1: Modelo de sistema de cursos y encuestas con extensiones WAE.

Nombres o íconos Igual que cuando brindamos nuestra capacitación presencial, y antes de analizar este modelo de clases, consideramos conveniente recordarle a nuestro público que algunos elementos estereotipados

Existen algunos otros elementos definidos en la WAE que aquí hemos omitido. Este artículo presenta sólo unos pocos de los más utilizados. Próximamente presentaremos los estereotipos y aplicación de éstos en los diagramas de componentes; y recuerda que al elaborar tus modelos, en muchos casos, entre más simple mejor. Al fin y al cabo un modelo busca simplificar, no complicar las cosas.

Sergio Orozco es Director General e Instructor Senior, Charlie Macías es Consultor Senior e Instructor Senior,ambos especializados en temas relacionados con UML en Milestone Consulting. Milestone Consulting (UML Value Added Training Center), es una empresa especializada en capacitación práctica-intensiva y consultoría en UML, BPMN, Arquitectura de SW y PM. Milestone Consulting fue la primer empresa mexicana miembro de la OMG, además de ser REP del PMI. info@milestone.com.mx www.milestone.com.mx

www.sg.com.mx

FEB-ABR 2008

47


// COLUMNA

/*TENDENCIAS EN SW*/

Reciclando Tecnología Cómputo verde Luis Daniel Soto es Director Regional de Desarrolladores y Difusión de Plataforma en Microsoft para América Latina. Es miembro de la orden nacional al mérito de México (ministro de educación). Luis Daniel obtuvo el primer lugar en el Concurso Nacional para Software de Exportación en 1989. blogs.msdn.com/luisdans

H

emos hablado extensivamente de la nueva arquitectura de software más servicios:

Interfaz de usuarios. Clientes altamente interactivos y con múltiples cabezas, incluyendo PC multicore, dispositivos móviles, dispositivos de hogar como consolas de videojuego o sistemas de teatro en casa. Lógica de negocio. Que puede ejecutarse en el cliente mismo en un centro empresarial dedicado o virtualizado. Con la evolución de la plataforma de software a cómputo utilitario será cada vez más posible enviar este procesamiento a un Haas (hardware as a service) externo. Datos. Operando localmente, en centros de datos empresariales o detrás, en la nube de internet. No obstante, la demanda del mercado no se refiere únicamente a la capacidad de hacer todo esto. De la misma forma que el consumidor joven cada vez solicita no tomar el café en un vaso desechable, se requiere del cómputo verde que contribuya a la preservación de la energía y los recursos naturales. En los siguientes cinco años, las organizaciones de todo tipo agresivamente analizarán este tema y buscarán asegurar la sustentabilidad de los productos que utilicen. Las razones son éticas, ambientales y de relaciones públicas.

Cómputo verde

Sin duda, las prácticas verdes de operación de tecnologías de información cobrarán fuerza. Desde la adquisición inicial, el uso extendido de videoconferencias en lugar de viajes, la medición detallada de consumo de la energía hasta el reciclaje de equipos en base a sus materiales. Otro punto a considerar es el e-desecho. Seguramente encontraremos racionalización del e-mail y el uso de tipografías más pequeñas para ahorro de papel impreso, utilizando ambos lados de la hoja y enfoques en compartir documentos impresos cobrarán auge. El gobierno jugará un rol clave de diversas formas: apoyo financiero, favoreciendo la investigación y desarrollo, estableciendo normas y legislaciones, y por supuesto como comprador.

Conclusión Las oportunidades en este segmento serán amplias, incluso para los fabricantes. Por supuesto diversos empresarios tomarán ventaja del momento en nuevas empresas relacionadas a este tema. Entre las empresas que destacan en este segmento están Faronics, Verdiem, Modius y 1E. Sin duda ésta será una categoría prometedora en sí misma para competencias diversas en la búsqueda de mejores soluciones.

Participa • www.theingenuitypoint.com • www.imaginecup.com —Luis Daniel Soto

El alto número de servidores en los centros de cómputo es una fuente primaria de consumo de energía para el funcionamiento y enfriamiento de los equipos. Las tecnologías de virtualización son contribuidoras a reducción de energía en el esquema de consolidación de equipos. Se está experimentando ampliamente con centros de datos sin discos duros, basados en memorias flash y sus implicaciones cómo enviar los índices de bases de datos y mejorar la capacidad de búsqueda. En el escritorio, se incrementa la demanda de componentes verdes certificados con funciones de ahorro de energía y mejores opciones de software con el mismo objetivo. Lo que en 1992 inició en forma del programa voluntario “Energy Star”.

48

FEB-ABR 2008

www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// COLUMNA

/*CÁTEDRA Y MÁS*/

“Puedes sacar al muchacho de la programación, pero no puedes sacar a la programación del muchacho”.

Genio y Figura o… El Gusto por el Cómputo

Dr. Raul A. Trejo es profesor investigador del Instituto Tecnológico y de Estudios Superiores de Monterrey, campus Estado de México. Aunque su área de especialidad es la inteligencia artificial, siempre ha sido un apasionado de la Ingeniería de Software y de la programación en particular. Ha programado en Basic, Pascal, C y sus derivados, pasando por lenguajes más esotéricos como Lisp, Scheme y Prolog, antes de dejarse convencer por la programación orientada a objetos. Es entusiasta usuario de C# y aún encuentra ratos libres para programar.

H

ace algún tiempo conversaba con un muy buen amigo mío, un psicólogo veterano de guerra de los Estados Unidos, de ascendencia mexicana. Cómo era costumbre, me contaba de sus aventuras en el país vecino, las cuales inevitablemente tenían un final sorprendente, a lo que mi amigo solía acotar: “puedes sacar al muchacho de México, pero no puedes sacar a México del muchacho”. Llevo casi veinte años dedicado a las tecnologías de información. A lo largo de este tiempo, he enfocado mis energías a diversas y siempre cambiantes especialidades dentro de esta área. En mis inicios, también un extraño en tierra extranjera, me dediqué a ese oscuro mundo que es la complejidad computacional, analizando sistemas que detectaban fallas en circuitos y algoritmos de inteligencia artificial para navegación de robots en ambientes cerrados. Siempre ingeniero de software, al regresar a mi país me interesé en metodologías de desarrollo de software, en particular en metodologías que las pequeñas empresas pudiesen adoptar para ser más competitivas. Y de algún modo, mi investigación y trabajo fueron derivando hacia la utilización de las Tecnologías de Información en las empresas, hacia las limitantes de la industria mexicana para adoptarlas y hacia el estudio de las razones por las que una empresa debería apoyar sus procesos en TI. Según unos colegas míos (que también son colaboradores de esta revista), había “vuelto del lado oscuro de la fuerza”. Pero parafraseando a mi amigo, puedes sacar al muchacho de la programación, pero no puedes sacar a la programación del mu-

50

FEB-ABR 2008

chacho. Soy ingeniero en sistemas, y los lenguajes de programación y la algoritmia siempre me han atraído. Con mis alumnos, discuto los elementos que hacen comercialmente exitoso un portal de negocios electrónicos, pero pasamos también horas comprendiendo los mecanismos que hacen realidad dicho portal. El software sigue siendo una parte central de mi vida académica. Dedico mucha parte de mi tiempo de investigación a la inteligencia de negocios, siempre en contacto con mis colegas de administración de tecnologías de información para dimensionar herramientas de inteligencia de negocios a las necesidades empresariales, pero también devoro con pasión los artículos sobre los algoritmos de minería de datos que son el corazón de muchas aplicaciones de administración del conocimiento. Empezamos un nuevo año, lo que se ha aprovechado en esta revista para hacer un alto y reconocer a los mejores entre los mejores. Y recuerdo la razón original por la que soy parte de esta revista. Mientras preparo un escrito sobre la importancia de los nichos tecnológicos en el desarrollo de la competitividad industrial, despliego en mi escritorio los manuales de las últimas versiones de algunas herramientas de desarrollo para web. Y es que, después de estos veinte años, sigo siendo un desarrollador. El lado oscuro aún vive en mí. Le dedico esta columna a todos los desarrolladores de corazón, que a lo largo de los años mantienen esa pasión por hacer software. Les deseo lo mejor para este 2008. —Raul A. Trejo

www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// FUNDAMENTOS

¿Es Alpha o Beta? Control de Versiones Por Sonia Sánchez Parecería que el control de las versiones de software no es una tarea fácil, pero la realidad es otra. Este tipo de administración es muy sencilla si se basa en la nomenclatura adecuada. Esta nomenclatura es la que define a simple vista los detalles de las versiones que se están trabajando en nuestro desarrollo.

¿Cómo se define? El esquema para administrar estas versiones se expresa típicamente por una nomenclatura formada por tres dígitos, los cuales, de acuerdo a su posición adquieren un significado, definiendo bajo el siguiente esquema sus valores: Versión mayor.versión menor[.número de revisión[.número de modificación]]

Para las versiones comerciales de un producto, esta nomenclatura comienza a partir de la versión 1.0 identificando a las versiones alpha o beta cuando la parte de la versión mayor está por debajo de 1, y aumenta su valor cuándo el producto ha sufrido cambios relevantes en su funcionamiento.

Las bases Pre-alfa Se le llama pre-alfa a la etapa que define todas las actividades previas a las pruebas de software, pueden considerarse dentro de esta el análisis de requerimientos, diseño de software, desarrollo de software y el unit testing.

Beta Cuando el desarrollo ha alcanzado cierta madurez, es decir, cuando se tiene la primera versión completa conforme a los requisitos establecidos en la pre-alfa, entonces el producto pasa a otra etapa del control de versiones. Generalmente es aquí cuando los desarrolladores congelan la solicitud de nuevas características al producto que no hayan sido definidas en las etapas previas. Las versiones beta comienzan a definirse bajo la nomenclatura: Versión mayor.versión menor

Como la fase aún no cuenta con las caraterísticas necesarias para considerarse un producto candidato a una primera versión, el dígito mayor se define con un 0, formando el distintivo para la versión beta de 0.X. Conforme al esquema, si en esta fase existiera un cambio que no es tan relevante para catalogarlo como un producto candidato al siguiente nivel, entonces las modificaciones iniciarian en 1 e irían en una posición después del número de la revisión, es decir, se tendría definida la beta: 0.X.X.1

Indicando el cambio que ha presentado el producto en esta fase. Si esta fuera la versión 1 de la beta con una primera revisión, entonces la nomenclatura estaría formada de la siguiente manera:

Alfa Su nombre se deriva de la primera letra del alfabeto griego. Esta versión no es pública y su liberación solamente se hace dentro de las áreas internas de testing. A esta fase se le considera como la primera de desarrollo concreto de la lógica. Básicamente estamos hablando de un prototipo.

Aquí podemos realizar dos tipos de pruebas: 1. Abierta, el número de participantes que se asignan para su prueba no está limitado. 2. Cerrada, en la que un grupo de personas es seleccionado para realizarle las pruebas necesarias al producto.

Generalmente un desarrollo en esta etapa no contiene toda la funcionalidad que tiene contemplado el producto final, por lo tanto, se pueden presentar numerosos bugs en su fase de revisión.

Los testers (evaluadores) asignados, reportarán al equipo de desarrollo los errores encontrados y en ocasiones, características de menor importancia que les gustaría ver en la versión final del producto, para que se rea-

52

FEB-ABR 2008

0.1.1.1

licen las correcciones necesarias dentro de esta misma fase. Versión RC (release candidate) En esta etapa se puede considerar al desarrollo como un producto final que solamente será considerado como versión definitiva si éste no presenta fallas. Cuando se llega hasta aquí, no deben existir errores que detengan el desarrollo y avance del mismo. Debe contemplar todos los puntos que se definieron en el diseño del sistema (considerado en la etapa pre-alfa). Siguiendo la nomenclatura, en este momento ya tendríamos la versión 1 del producto y la 0 en el dígito de la versión menor. Si existieran cambios en esta etapa, se definirian después del segundo dígito separado por punto, es decir: 1.0 sería una versión RC sin modificaciones, mientras que 1.0.1 sería una versión RC con una modificación realizada. El incremento del dígito que indica la versión mayor, se realiza cuando éste ha sufrido cambios relevantes a su funcionalidad actual. Versión final En esta etapa, el producto es considerado como estable y relativamente libre de errores, aunque puede presentar algunos, pero deben ser los mínimos. En este momento, el producto está listo para ser liberado al usuario final. Generalmente a este tipo de versiones con fines comerciales, se les define con un nombre de control diferente al de la nomenclatura pasada.

Conclusión El control de versiones no solamente ayuda a la buena administración de un proyecto, sino que además brinda, a simple vista, un panorama general del estado en el que se encuentra el desarrollo de una aplicación. Esta ingeniería brinda consistencia, reproducibilidad y verificabilidad durante el proceso de desarrollo.

www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// TECNOLOGÍA INFRAESTRUCTURA

// CONCURRENCIA Y PARALELISMO

Mejorando el Desempeño de los Procesadores Modernos ¿Por qué Multicore? Por Robert Shiveley

En 1965 Gordon Moore predijo que la cantidad de transistores que se podía integrar en un chip de silicón se duplicaría cada 18 a 24 meses. Esta se conoce como la Ley de Moore, y se ha mantenido durante más de 40 años. Durante este tiempo, el incremento en la densidad de transistores ha generado aumentos proporcionales en el desempeño de los microprocesadores y la relación precio/desempeño. En general, conforme los transistores son más pequeños pueden switchear más rápido entre un estado y otro. Esto permite que al mismo tiempo que aumenta la cantidad de transistores, también se aumente la frecuencia del reloj de un procesador. Tradicionalmente, los aumentos en la frecuencia de reloj han sido más importantes que los aumentos en densidad de transistores. Esto es porque aprovechar una mayor cantidad de transistores requiere mejoras de diseño, mientras que las ganancias otorgadas por una mayor frecuencia de reloj son automáticas. El software existente se ejecuta de forma más rápida sin tener que hacerle nada. Por esta razón, el aumento de frecuencia ha sido el motor principal detrás de las mejoras en desempeño de los procesadores. La Ley de Moore se mantiene al día de hoy y se espera que la densidad de transistores se siga duplicando al mismo ritmo durante otros diez años por lo menos. Sin embargo, en años recientes el aumento de frecuencia ha encontrado obstáculos mayores. Sucede que el consumo de energía y generación de calor aumentan exponencialmente con la frecuencia de reloj. Esto no había sido un problema anteriormente porque los niveles no eran significativos, pero en los últimos años se ha convertido en un factor de crucial importancia en el diseño de procesadores. Aunque los servidores modernos proveen un desempeño por watt mucho mejor que el de sus antecesores, en total tienen requerimientos de energía y enfriamiento mayores, y muchos de los centros de datos existentes no fueron diseñados para satisfacer estas demandas de energía. El costo acumulativo de cumplir estos requerimientos se está haciendo excesivo, especialmente ante el aumento en los precios de la energía eléctrica. Por esta razón, aumentar la frecuencia de reloj ha dejado de ser el medio principal para aumentar el desempeño de los procesadores.

Se necesitan nuevas estrategias para mantener el ritmo de mejora en desempeño y precio.

Estrategias de mejora que se han aplicado A lo largo de los años, los diseñadores de procesadores han encontrado varias estrategias para aprovechar la mayor densidad de transistores sin necesidad de aumentar la frecuencia de reloj. Algunas son: • Formatos de datos mayores. Los procesadores modernos de 64 bits son el resultado de una larga evolución desde los primeros procesadores de 4 bits. Cada mejora ha provisto un procesamiento más rápido de mayores cantidades de datos, y ha permitido que los procesadores puedan apuntar directamente a mayores volúmenes de memoria. Actualmente estamos viviendo una transición donde los procesadores de 64 bits se convertirán en la norma. Para poner esto en perspectiva, recordemos que un procesador de 32 bits puede apuntar directamente hasta un máximo de 4GB de memoria, mientras que uno de 64 bits soporta espacios de dirección de 18 millones de terabytes. • Paralelismo a nivel de instrucciones. También conocido como ILP por sus siglas en inglés (Instruction Level Parallelism), permite que un procesador dinámicamente evalúe conjuntos de código para determinar qué instrucciones son independientes y se pueden procesar de forma simultánea o en otro orden. Si una instrucción está esperando una entrada de datos, entonces el procesador puede ejecutar una instrucción independiente mientras tanto. Esta estrategia ha cobrado mayor importancia conforme ha aumentado la brecha entre la velocidad de los procesadores y las memorias. A lo largo de los años, se ha hecho un uso fuerte de ILP para reducir el impacto de los tiempos de espera de memoria. Sin embargo, esta actividad es demandante en procesamiento, ya que requiere que el procesador examine código en tiempo de ejecución, encuentre oportunidades de paralelizarlo, y luego reagende las instrucciones en la cola de procesamiento. Esto hace a ILP altamente intensivo en recursos, lo cual se termina traduciendo en un alto consumo de energía y generación de calor. • Hyper-Threading. Es una técnica que permite que en un momento determinado las diferentes partes de un CPU estén trabajando en diferentes hilos (threads). De esta forma se obtiene un mayor aprovechamiento del CPU. Para obtener los beneficios de Hyper-Threading, así como de

Robert Shiveley es Gerente de Soluciones Empresariales en Intel, donde dirige las estrategias de transición en la plataforma de servidores. La versión original de este artículo está publicada en www.devx.com/go-parallel/Article/32725 y ha sido traducida y editada por SG con el permiso del autor.

54

FEB-ABR 2008

www.sg.com.mx


otras formas de paralelismo a nivel de threads, se requiere que el software a ejecutarse esté desarrollado bajo un paradigma multithreaded. • Mayor cache. La memoria cache es un espacio para almacenar datos e instrucciones cerca del procesador (típicamente en el mismo chip). Esto la hace mucho más rápida que la memoria convencional, además de consumir menos energía. De las estrategias descritas, la que puede proveer las mejoras más significativas en desempeño y consumo de energía es la de aumentar el cache. Sin embargo, esto no es suficiente para mantener el ritmo de mejora que se tenía con el aumento periódico de la frecuencia de reloj. Es así que se necesita de una estrategia nueva y diferente para mantener el crecimiento en desempeño que demanda la industria.

La estrategia multicore La respuesta de la industria a los retos de desempeño ha sido integrar más núcleos (cores) de procesamiento en cada chip de microprocesador. Al tener varios cores ejecutando instrucciones de forma simultánea, es posible brindar un gran desempeño en aplicaciones multithreaded mientras se mantiene baja la frecuencia de reloj, limitando así el consumo de energía. En esencia, un procesador multicore es similar a un servidor con varios procesadores, con la diferencia de que las unidades de procesamiento están integradas en un solo chip, lo cual brinda un mayor desempeño y eficiencia de energía. Los principales fabricantes de procesadores estiman que la estrategia multicore permitirá obtener mejoras en desempeño de hasta 10 veces durante los próximos tres a cuatro años. Mientras tanto, estas empresas están desarrollando nuevos materiales, estructuras de transistores, diseños de circuitos y otras tecnologías que permitirán aumentar la frecuencia de reloj de los núcleos pero manteniendo niveles bajos de consumo de energía.

Aprovechando multicore Queda claro que los procesadores multicore son el paradigma predominante durante los próximos años en prácticamente todas las arquitecturas de cómputo, ya que permiten brindar mejoras continuas en desempeño. Los procesadores multicore funcionan muy bien en aplicaciones que hacen un buen uso de threads, tales como aplicaciones científicas, y de alto volumen transaccional. También son ideales para ambientes virtualizados, ya que cada ambiente virtual puede ejecutarse de forma independiente en cada core. Sin embargo, en el caso de aplicaciones que no hagan un buen uso de threads, las mejoras de desempeño que se pueden obtener al aumentar el número de núcleos de procesamiento son marginales. Es por esto que las organizaciones deben revisar cuidadosamente el modelo y carga de trabajo al que están sujetos sus aplicaciones y servidores, para evaluar qué tantas mejoras pueden obtener a través de multicore. Adicionalmente deben establecer lineamientos para que las nuevas aplicaciones hagan un buen uso de threads y por lo tanto aprovechen al máximo las arquitecturas multicore. www.sg.com.mx

FEB-ABR 2008


// TECNOLOGÍA INFRAESTRUCTURA

// INFRAESTRUCTURA

Los Nuevos Paradigmas Computacionales Computación Ubicua Por Ariel García ¿Qué es computación ubicua? ¿Es una nueva tecnología orientada al servicio?, ¿un nuevo reto en tecnología?, ¿una preocupación más para los defensores de la privacidad y seguridad?

En nuestro ejemplo, el usuario podría consultar su correo electrónico o cualquier otro servicio de cómputo desde un espejo o en su recámara o baño donde podría escuchar, leer o reenviar el mensaje desde una interfaz personalizada.

Computación ubicua es el nombre de la siguiente generación de dispositivos y servicios en Tecnología de Información. Su implementación y uso tendrá un impacto radical en la vida de los usuarios tanto en el aspecto laboral, como el académico y actividades de la vida cotidiana. Con esta nueva tecnología se realizará una transición del uso tradicional de un equipo de cómputo a un nuevo paradigma donde la tecnología residirá invisiblemente en nuestra vida diaria, proveyendo servicios personalizados a cada usuario.

Origen

Cómputo tradicional Para dimensionar el impacto de esta nueva tecnología, describamos el paradigma tradicional de la computación ... Tradicionalmente, una persona requiere utilizar una computadora para tener acceso a un servicio. Además, la persona está obligada a adaptarse a las interfaces y limitaciones de dicho servicio. Por ejemplo, para revisar su correo electrónico, un usuario requiere de un equipo de cómputo con acceso a Internet, econtrándose con distintas formas de acceder su correo, cada una con diferentes interfaces que el usuario debe de saber utilizar. Al día de hoy, la experiencia de usuario y el alcance de servicio no es similar entre un cliente de correo, una página web o un dispositivo móvil. En la computación ubicua se rompe este paradigma al proponer que la tecnología de cómputo debe transformarse en una herramienta integrada a nuestra vida diaria y que por esta naturaleza debe ser más robusta y efectiva. En este nuevo paradigma el usuario no es forzado a buscar un equipo de cómputo y seleccionar entre distintas interfaces. Por el contrario, ésta propone que la interfaz de cómputo es responsable de localizar y brindar el servicio requerido por el usuario.

56

FEB-ABR 2008

El concepto de computación ubicua surge a finales de la década de los ochenta siendo elaborado por Mark Weiser durante su trabajo en Seros Palo Alto Research Center como jefe de tecnología. Él junto con John Seely Brown escribieron los primeros ensayos sobre la computación ubicua definiendo y esquematizando su importancia y alcances. Weiser reconoce la necesidad de entender los fenómenos sociales, culturales y psicológicos para poder realmente extender e integrar el poder de cómputo en escenarios de la vida real. Él describe la computación ubicua de la siguiente forma: “Estamos tratando de cambiar radicalmente la visión de cómo deberían ser los servicios de computo y redes… Nuestra propuesta preliminar es: conectar al mundo a través de cientos de dispositivos inalámbricos de todos los tamaños (desde pantallas de una pulgada hasta una pared completa) para cada persona y para cada oficina. Esta propuesta requiere de nuevos trabajos en sistemas operativos, redes, redes inalámbricas, interfaces de usuario, pantallas, y muchas otras áreas. Nosotros llamamos a esta propuesta, computación ubicua, la cual es diferente a soluciones como PDA, dynabooks o cualquier otra información disponible a través de la interacción con nuestros dedos. La computación ubicua es invisible y se encuentra en cualquier lugar. Esta no vive en un dispositivo de cómputo, sino se en encuentra en elementos comunes de nuestra vida diaria. Por más de 30 años la mayor parte de los diseños de interfaces y cómputo han sido orientados por el camino hacia la máquina “espectacular”. El ideal de este camino es lograr construir una computadora tan increíble, maravillosa e interesante que el usuario ja-

más desee separarse de la misma. Un camino menos transitado al cual le llamo “invisible” tiene como ideal construir una computadora que tenga un grado de integración y adecuación tal, que parezca algo natural y llegue a ser usada de forma transparente por el usuario sin siquiera pensarlo. (A esta noción también le llamo computación ubicua) Estoy convencido que en los próximos 20 años el segundo camino será el domínate, pero esto no será sencillo. Muy poca de la infraestructura de sistemas actuales sobrevivirá este cambio. Durante los últimos cuatro años, hemos estado construyendo en PARC distintas versiones de la infraestructura del futuro.” Es claro que Weiser no es el único que ha trabajado en este nuevo paradigma. El MIT también ha estado realizando investigación; ha contribuido significativamente en este campo. Otras instituciones o compañías que están realizando investigación en esta área son: El Colegio de Computación de Georgia Tech, el programa de telecomunicaciones interactivas de NYU, Microsoft, Apple, Intel, entre otros.

¿Computación ubicua o realidad virtual? La computación ubicua es totalmente lo opuesto a una realidad virtual. La realidad virtual coloca a un usuario en un mundo virtual generado por una computadora. La computación ubicua requiere que la infraestructura y servicios de cómputo residan en el mundo real de los usuarios. Mientras que la realidad virtual es un problema que puede ser solucionado principalmente con poder de cómputo y las interfaces apropiadas, la computación ubicua requiere de una integración de personas con conocimientos en Ciencias Computacionales, Ingeniería y Ciencias Sociales. En su esencia, los modelos de computación ubicua comparten una visión donde pequeños dispositivos de cómputo, de bajo costo y con alta conectividad, se encuentran distribuidos en gran escala en elementos cotidianos de la vida diaria para satisfacer cual-

www.sg.com.mx


quier servicio. Por ejemplo: un sistema de refrigeración donde no solo esté consciente del contenido de alimentos, sino también, la capacidad de proponer menús acorde a su contenido y alertar a los usuarios de alimentos en estado de descomposición.

los niños durante los primeros cinco años de vida. El monitoreo de estos eventos brinda apoyo a los padres e instituciones de salud en la detección de retrasos en el desarrollo como autismo o sordera para poder ser tratados de forma efectiva y oportuna.

Las interfases existentes para la comunicación entre los dispositivos de cómputo y los usuarios, aún son inadecuados para el nivel de integración que se requiere para con el mundo real. Es claro que se requiere de una interfaz robusta y adecuada a los alcances propuestos por la computación ubicua. Sin embargo, se han realizado avances prometedores en dispositivos como teléfonos móviles, dispositivos de música digital, sistemas de localización y pizarrones electrónicos. En cierta forma estos dispositivos nos ayudan a afirmar que ya estamos viviendo en cierto grado en mundo de cómputo ubicuo.

• Proyecto Fetch Fetch es un sistema de apoyo para personas con discapacidad visual. El sistema permite la localización de objetos perdidos. A través de entrevistas y trabajo conjunto con personas que padecen este problema, se descubrió la necesidad de un sistema de localización de objetos perdidos que pueda ser usado en varias localidades. El prototipo se encuentra en operación basado en un sistema con tecnología Bluetooth.

Algunos proyectos actuales El Instituto Tecnológico de Georgia se encuentra realizando trabajos en la investigación y desarrollo de cómputo ubicuo. A continuación presentamos algunos de los proyectos que se están realizando: • Proyecto: TrackSense Hoy en dia existen soluciones en el mercado para proporcionar la ubicación de un individuo dentro de un espacio cerrado. Estos sistemas requieren la instalación de infraestructura adicional en el lugar en cuestión, además de ser soluciones costosas lo cual impide una adopción masiva. Para este proyecto, también están trabajando en una solución de bajo costo que no requiere infraestructura adicional. Los prototipos del sistema actual tienen una precisión de centímetros en espacios de hasta cuatro metros cuadrados con uno o dos grados de precisión en la orientación. • Proyecto: detección temprana de retrasos en el desarrollo Se está desarrollando una tecnología que permita detectar, grabar y dar seguimiento a eventos importantes en el desarrollo de

www.sg.com.mx

La cantidad de recursos y esfuerzos orientados a la contracción de sistemas orientados a computación ubicua se ha incrementado significativamente en los últimos años. Varios expertos opinan que este es el futuro de las Tecnologías de Información, y mucho del trabajo realizado ya está dando frutos. Algunos ejemplos sencillos de esto son los sitios web que no sólo proporcionan mapas sino también direcciones y lugares de interés cercanos, sistemas GPS personales, teléfonos que integran varias funciones en una, consolas de videojuegos y entrenamiento, tan solo por mencionar algunos. Lo maravilloso de esta nueva generación de cómputo es que no sólo se da en empresas privadas, sino también en instituciones educativas. Esperemos que éstas y nuestros empresarios nacionales den cabida a la investigación y desarrollo de soluciones basadas en cómputo ubicuo que permitan el crecimiento y desarrollo tecnológico y económico de nuestro país.

Referencias: • home.cc.gatech.edu •en.wikipedia.org/wiki/Pervasive_computing •www.cc.gatech.edu/classes/cs6751_97_fall/ projects/say-cheese/marcia/mfinal.html

FEB-ABR 2008


// TEC// TECNOLOGÍA/* GADGETS */

Dell

XPS M1730 Comencemos por sus principales características: tecnología móvil AGEIA PhysX, pantalla GamePanel LCD (incorporada a la carcasa) de alta definición con tiempos de respuesta de siete milisegundos y compatibilidad con la aplicación Dell LightFX para manipular la iluminación multicolor LED en el perímetro del sistema, procesador móvil Intel Core 2 Extreme, tecnología Nvidia SLI con doble GeForce GPUs listo para DirectX 10. Es “la bestia”, una portátil diseñada, pensada e inspirada en las necesidades de los gamers. En conjunto ofrece entregas realistas e interacciones ambientales sobresalientes a grandes velocidades sin degradar el desempeño general del sistema; permite ver estadística de juego, crear nuevos macros y rastrear datos importantes del sistema sin abandonar el juego. Incluye también un teclado iluminado con área separada de 10 teclas numéricas; opciones Wi-Fi con Wireless-N (opcional), cámara web y micrófono para juegos en línea. Para cerrar la jaula de la más reciente creación de Dell se puede personalizar con cuatro colores diferentes: crimson red, sapphire blue, bone white y smoke grey. Como dato adicional, los creadores de la XPS M1730 colaboraron con los desarrolladores de títulos como The Orange Box y Bioshock para asegurarse que cumpliera con los requisitos necesarios.

Firebox Amazon

Kindle Encontrarse con esta curiosidad tecnológica ideada por Amazon puede causar cierta nostalgia en un país como el nuestro que no lee ni en defensa propia, pero para los que sí y son ávidos devoradores de novelas o cualquier otro género, y le han entrado a la era de los libros electrónicos, Kindle simplemente los va a volver locos. ¿Qué es? “Es una revolucionaria pantalla electrónica tipo papel” que se lee y se ve como si fuera papel real; no requiere de una computadora, cables o sincronización, su conectividad inalámbrica permite comprar directamente en la tienda Kindle desde donde quiera que uno se encuentre, así que el libro adquirido (de una librería de más de 90 mil títulos disponibles, incluyendo los Best Sellers del New York Times) se auto descarga en menos de un minuto. Se puede acceder también a muestras de libros para leer los primeros capítulos y después tomar la decisión de compra; así como a los mejores diarios y revistas de todo el mundo; más de 250 blogs de negocios, tecnologías, deportes, entretenimiento y política. Es ligero, delgado como una edición de bolsillo, pero con una gran ventaja: le caben hasta 200 títulos. Cuenta con batería de larga duración que no requiere recarga diaria. Ahora viajar con el libro favorito que pesa lo de diez será cosa del pasado.

58

FEB-ABR 2008

Tux Droid Para los seguidores y fanáticos de Linux, su pingüino representativo se materializa. Se llama Tux Droid y no es sólo un adorno para el escritorio, sino que es un pingüino muy activo. Se programa para recibir y transmitir todo tipo de información de Internet como correos electrónicos, RSS, noticias, clima y mucho más. Además funciona como teléfono VoIP inalámbrico. Viene acompañado de un transmisor USB en forma de pez –sí, de pez – para poder alimentarle información. Además, emite una alerta cuando llegan correos nuevos; puede bailar, girar y parpadear según se desee. Sirve también como altavoz para reproductores MP3 y despertador; y gracias a sus sensores de sonido se programa como alarma anti-intrusos. Pareciera que lo único que le falta es hablar, pero también hace esto, ya que puede consultar tu calendario de Google y avisarte con su voz robótica avisa cuando tienes una cita. Como es de esperarse, todo el software que habilita al Tux Droid es libre.

www.sg.com.mx


INDEX

DIRECTORIO

TENEMOS UN ESPACIO RESERVADO PARA TI Si deseas anunciarte contรกctanos en el (55) 5239 5502 o en ventas@softwareguru.com.mx

www.sg.com.mx

Anunciante

Pรกginas

Sitio

Adecco Alpha Avantare Compusoluciones Cutter ESI Center e-Quallity Gartner IDC Itera Linux World Microsoft Milestone Consulting Nextel Pink Elephant SafeNet SG S&C Sun Microsystems Select TenStep

2F, 1 31 55 41 59 9 39 51 61 7 53 45 F4 13 43 11 49 37 63 F3 57

www.adecco.com.mx www.alpha-consultoria.com www.avantare.com www.compusoluciones.com www.cutter.com.mx esicenter.itesm.mx www.e-quallity.net www.gartner.com www.idc-eventos.com www.itera.com.mx www.linuxworldexpo.com.mx www.microsoft.com/mexico www.milestone.com.mx www.nextel.com.mx www.pinkelephant.com www.safenet-inc.com www.sg.com.mx/sg08 www.syc.com.mx www.sun.com.mx www.select.com.mx www.tenstep.com.mx FEB-ABR 2008

31 59


// COLUMNA

// TIERRA LIBRE

La Tecnología al Servicio de la Comunidad Voluntariado Tecnológico en el Desastre de Tabasco

Emilio Osorio colabora actualmente como Consultor Asociado para Sun Microsystems México. Ha trabajado en desarrollos basados en Java desde 1996 y actualmente se dedica a ayudar a equipos de desarrollo a aprovechar las ventajas del Software Libre y los métodos ágiles en sus organizaciones. Ferviente entusiasta de la aplicación social de la tecnología, a últimas fechas está involucrado con Organizaciones de la Sociedad Civil. Emilio estará encantado de recibir sus comentarios y quejas en http://tecnonirvana.org/ y en oemilio@tecnonirvana.org

P

ocas veces me he sentido tan orgulloso de ser tabasqueño y muchas menos de ser de sistemas como en la reciente inundación de Tabasco. Tuve la fortuna de presenciar lo que un pequeño grupo de gente bien motivada, sin importar su ubicación geográfica, su experiencia o la “gurunes” de su conocimiento de tecnología pueden hacer para ayudar. Aún no termina de sorprenderme lo que lograron estos tecnólogos de diversos orígenes, excediendo en calidad y oportunidad a la respuesta de los organismos gubernamentales. Consideré importante contarles lo que presencié en esa semana caótica para nuestro estado, con el doble afán de reconocer a quienes participaron desinteresadamente en ayudar a sus hermanos y de motivarnos a todos a prestar una mano cuando veamos a los demás en necesidad. Para mí, todo comenzó con una llamada de Eduardo quien me comentó que una amiga bloguera suya: Berenice, estaba en un albergue ayudando como voluntaria y necesitaban resolver un problema de sincronización de hojas de cálculo que tenían en los dos principales albergues de Villahermosa. Al llegar allí, me encontré con una pequeña red improvisada y el problema de no poder obtener un censo fidedigno de los albergados debido a la duplicidad de los registros, era claro que se necesitaba una base de datos. Margarita, la coordinadora del albergue, me comentó que en en la televisora local TVT, había otro grupo de voluntarios que había logrado configurar una aplicación en PHP —originalmente diseñada para un congreso— como una improvisada base de datos para recibir la información que todos los demás albergues enviaban por diversos medios. Nos pidió hablar con ellos para ver si ya había algo que se pudiera aprovechar para ayudarlos con su problema. Al llegar a TVT nos encontramos con un grupo de voluntarios capturando en la aplicación que Isaac había logrado reprogramar, para que la

60

FEB-ABR 2008

televisora registrara a todas las personas y se pudieran procesar las llamadas de la gente preguntando por sus familiares. Desafortunadamente, como todo era improvisado, la red LAN de TVT no tenía acceso a Internet y eso retrazó la consulta en Internet de la página. Apareció entonces otro grupo de voluntarios encabezados por la gente de compañías de sistemas de la ciudad ofreciendo un servidor para respaldar periódicamente el sitio completo en PHP y la base de datos de MySQL a otro servidor y poder dar lo que era el servicio de información mas valioso: la ubicación de personas. La necesidad de los albergues en sí no se podía cubrir con la aplicación de PHP, porque los albergues requerían de información diferente a la que TVT estaba registrando, así que la solución que se encontró para ellos, fue hacer uso de un servicio de web 2.0 llamado Zoho Creator, que en esencia es un constructor de formas de captura en web sin necesidad de programar. Con esto se pudo crear en cuestión de minutos un sistema de captura distribuida basado en Internet que podía ser utilizado desde cualquier lugar con conexión a Internet, que a diferencia de la telefonía fija y celular, fue el único servicio estable durante la crisis. Eduardo escribió un correo a los creadores del Zoho Creator por si necesitábamos ayuda en algo que no cubriera el servicio. Charles, integrante del equipo de Zoho, se comunicó con nosotros por Gtalk desde la India para ponerse a nuestra disposición. Necesitábamos subir archivos CSV que nos llegaban masivamente a Zoho y usando la forma oficial de subirlos: una API de WebServices basado en REST, iba a requerir de programación para soportar la funcionalidad. Se ofrecieron un par de voluntarios, pero unos minutos de chat con Charles lograron que nos mandara un pequeño programa de JavaSE para hacer justamente eso. Las maravillas del Internet más la buena voluntad del otro lado del mundo.

Por otro lado, no podemos dejar de mencionar, la valiosa ayuda de algunos grandes amigos que acudieron con consejo, tiempo y algo de programación a soportar estos desarrollos, me viene a la mente la contribución de Alexandro Colorado con un desarrollo para replicar bases de datos, Suly al proveernos infraestructura de chats por scripts de Gtalk, Vicente con su código para Mashups con Google maps y decenas de voluntarios virtuales que nos acompañaron sin parar durante esos días de crisis a través del grupo de google de ayuda@tabasco. Con las aplicaciones en línea, las necesidades de información y administración de los albergados resueltas, otros voluntarios -como Romeo- se dieron a la tarea de programar Mashups para que se pudieran localizar en Google maps las ubicaciones físicas de los albergues en la aplicación de búsqueda de personas. Los datos de localización geográfica para el aplicativo fueron proporcionados por gente del gobierno, que por su parte, liberaron aplicaciones que sustituyeron los esfuerzos de los voluntarios en los albergues. Al paso de los días nos llegaron rumores de que el gobierno estaba haciendo las mismas aplicaciones oficiales en Java EE y con todas las funcionalidades corporativas comunes. Pero, el testimonio de los albergues con los que permanecimos en contacto fue que lo que ofrecía el gobierno era demasiado complejo y difícil de usar. Una satisfacción mas para los voluntarios. Estos jóvenes que prestaron un servicio inigualable en el momento justo que era requerido. Qué orgullo ver que lo que tanto disfrutamos hacer pueda ser de utilidad. ¡Muchas gracias! Eduardo, Berenice, Isaac, Romeo y todos los voluntarios por tener los ánimos y la voluntad de demostrar que la tecnología también puede ayudar a disminuir el sufrimiento, un verdadero ejemplo de cómo alcanzar el tecnonirvana... —Emilio Osorio www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


// CARRERA

El Crecimiento Empresarial y Laboral El Valor de un Plan de Carrera y el Desarrollo Personal en la Ingeniería de Software Por José Luis Flores Wayne Mondy y Robert Noe en su libro sobre la Administración de Recursos Humanos definieron a un plan de carrera como un proceso continuo por el cual un individuo establece sus metas de desarrollo profesional e identifica los medios para alcanzarlas. El desarrollo individual y las necesidades organizacionales no son cosas separadas ni diferentes. Las empresas deben ayudar a los empleados en la planeación de su carrera para que se puedan satisfacer las necesidades de ambos. El plan de carrera, es un método para el desarrollo de aptitudes, fundamentándose en la ubicación de un colaborador en puestos de trabajo cuidadosamente estudiados para proporcionarle la oportunidad de desarrollar las competencias necesarias para otros puestos de mayor responsabilidad. Una gran parte del diseño para el reclutamiento, selección, orientación y ubicación del talento/capital humano se hace en función de las necesidades de la organización y es un sistema ideal para la planificación y desarrollo de los Recursos Humanos. Puede ser implantado de acuerdo a los siguientes pasos.

Primer paso Entender los factores esenciales que deben estar presentes en la organización: Igualdad de oportunidades. Los criterios y normas de evaluación son claras y equitativas. Apoyo del reporte superior inmediato. Interés del supervisor en el crecimiento profesional de sus subordinados y su retroalimentación adecuada y oportuna. Conocimiento de las oportunidades. Esquema institucional en términos de reconocimiento y espacios disponibles para ubicarse en la organización en función de los resultados individuales. Interés del colaborador. El genuino compromiso de la persona en aprender y desempeñarse mejor. Satisfacción personal. Dependiendo de la edad y circunstancias personales y de preparación, el sentirse feliz con la contribución a la comunidad.

Segundo paso Convergencia de los procesos complementarios de desarrollo (del sistema social y del individuo). Alrededor de este paso, la organización debe estar preparada para mantener: Procesos de evaluación. Consultores internos y/o externos que lleven a cabo entrevistas y simulaciones de negocios. Pruebas psicológicas. Para orientar los intereses personales y las habilidades individuales. Evaluaciones de desempeño e integración. Con la aplicación consistente de instrumentos que evalúen aspectos técnicos o gerenciales según las características y nivel del puesto. Plan de formación. Para la actualización de conocimientos y el desarrollo de competencias. Proyecciones de ascensos. Retroalimentación de los superiores de la organización con relación a los avances y logros. Planificación de sustituto. En congruencia con el concepto de plan de carrera considerar igualmente el desarrollo de los miembros del equipo de trabajo para, eventualmente, cubrir la posición a futuro. El Colaborador debe proveerse de: Manuales de descripción de funciones. Para tener claras las responsabilidades y alcances de su actuación. Mapa de carrera. Considerando las posibilidades de ascenso fundamentadas en el organigrama presente y las proyecciones de crecimiento. Sesiones sobre planificación de carrera. Sesiones de asesoría y acompañamiento por parte de personal calificado.

Tercer paso El desarrollo profesional individual, concretado en el convencimiento y compromiso de cada persona y que comprende acciones para: Lograr mejores niveles de desempeño. Esforzarse en una ejecución de excelencia.

Tener una relación más cercana con los que toman decisiones. Establecer una relación de confianza con los superiores. Desarrollar un sentido de lealtad hacia la organización. Comprometerse y sentir afecto con el lugar de trabajo. Recurrir a expertos en el campo. Consultar a colegas respetados por su dominio técnico. Recurrir a colaboradores clave. Consultar a personal del equipo respetado por los demás. Conocer realístamente las oportunidades de progreso. Estar consciente de las condiciones en la organización que permiten o no un desarrollo.

En la ingeniería de software Hoy en día, una de las áreas de ejercicio profesional más comunes es la de las Tecnologías de la Información. Dentro de sus vertientes tecnológicas el desarrollo de aplicaciones se ha consolidado como una disciplina híbrida de lógica altamente estructurada denominada como ingeniería de software. Quien se desempeña en este campo profesional debería de considerar al definir su plan de carrera el desarrollar habilidades tanto técnicas de su especialidad como administrativas en general tales como: Habilidades “duras”: contratación, finanzas, control de costos y calendarios, medición del desempeño, monitoreo de la calidad, análisis de riesgos. Habilidades “suaves”: negociación, gestión del cambio, astucia política, empatía, comunicación oral y escrita.

Conclusión No es tan sencillo el implantar este concepto, debido al gran valor que tiene este tipo de programas, si no se diseñan e instrumentan correctamente la pérdida de credibilidad es muy difícil de recuperar posteriormente.

José Luis Flores Pérez es Director Editorial de la firma de Consultoría y Educación en Procesos de Negocio y Dirección de Proyectos TenStep Latinoamérica. José Luis tiene estudios de Doctorado en Ciencias de la Administración en la Universidad Nacional Autónoma de México (UNAM). Es graduado en Administración Estratégica de Tecnologías de Información por la Universidad de California en Berkeley y Diplomado en Administración de la Calidad y en Desarrollo de Habilidades de Dirección por el Instituto Tecnológico Autónomo de México (ITAM). Puede ser contactado en jflores@tenstep.com.mx

62

FEB-ABR 2008

www.sg.com.mx


www.sg.com.mx

FEB-ABR 2008


////BIBLIOTECA TECNOLOGÍA

Silverlight 1.0 Unleashed Adam Nathan, SAMS AIGA, 2007

01

Hablar de Silverlight 1.0 es sinónimo de desarrollar aplicaciones resultado de una mezcla de XAML (eXtensible Application Markup Language), HTMl y JavaScript, herramientas fáciles de integrar dentro de una aplicación Web ya existente. Además de ser compatibles con las bibliotecas y técnicas del ya popular AJAX (Asinchronous JavaScript and XML). Por estas características, se le considera a Silverlight la promesa alternativa a otro de los más populares dentro de las aplicaciones web: Flash. Esto lo logra a través de la creación de contenido web enriquecido y aplicaciones utilizando add-on’s que son igualmente amigables tanto para desarrolladores como para diseñadores. Para todos aquellos interesados en conocer más sobre Silverlight este libro es un buen comienzo. El libro está compuesto por 10 capítulos distribuidos en tres partes. La parte de fundamentos abarca dos temas: el inicio con Silverlight y otro capítulo dedicado a XAML. La segunda parte del libro abarca temas referentes al

contenido estático que se puede generar con esta tecnología. La última parte, está enfocada para que el lector aterrice los conceptos al mundo real, mostrando en un capítulo cómo crear una aplicación interactiva o cómo experimentar con los conceptos de animación, audio o video. Uno de los temas que trata de manera fácil de entender es XAML, el cual se muestra en su forma nata y no a través de alguna herramienta que pueda producirlo, característica que le da un valor agregado al libro y que lo distingue de otros textos similares. Indudablemente un texto que no debe faltar en el librero.

Java Persistence with Hibernate Christian Bauer, Gavin King MANNING, 2006

02

Para los amantes de Java y sus herramientas, este libro es una opción para conocer más a fondo los conceptos de Hibernate, proyecto ambicioso que tiende a ser una solución completa al problema de los datos persistentes en Java, mediando la interacción de la aplicación con una base de datos relacional, brindando al desarrollador libertad para concentrarse en los problemas relacionados con la lógica del negocio. Podemos distinguir tres secciones: la parte introductoria que llevará al lector, no solamente a repasar conceptos básicos sobre el paradigma de la programación orientada a objetos, sino que también lo guía a dar sus primeros pasos con Hibernate describiendo sus conceptos básicos. Interactuar con un administrador de bases de datos siempre es necesario, así que la segunda sección trata este tema, a través de las opciones de mapeo en Hibernate y mencionando el mapeo con archivos tipo XML y Java, mostrando al lector la convivencia

64

FEB-ABR 2008

entre el lenguaje de marcado y el lenguaje de programación. Otro punto que al igual que el uso de un DBMS también es importante y siempre está lantente,es la carga y almacenamiento de datos, proceso que se tiene presente en esta edición y los autores le dedican la última sección de este libro. Para finalizar, una introducción al framework JBoss Seam y complementar los conceptos de Hibernate y dar el paso de crear fácilmente aplicaciones Web. Aquí, podemos contemplar las mejores ideas de los autores para realizar tareas cuando se trabaja con datos persistentes en Java explicados bajo el contexto de Hibernate. www.sg.com.mx



No. 19

www.sg.com.mx

SOFTWARE GURU CONOCIMIENTO EN PRテ,TICA

Febrero-Abril 2008


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