• 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
[email protected] +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:
• Login de operador del administrador del MaxDB usuario: control contraseña: • Usuario del banco de datos MaxDB usuario: superdba contraseña: • 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>: 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. [email protected] 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. [email protected] 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. [email protected]
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