• MoProSoft en la práctica • La problemática de pruebas • Estructura de paquetes J2EE Software Guru CONOCIMIENTO EN PRÁCTICA Año 01 No.02 • Marzo-Abril 2005 EDUCACIÓN ENTREVISTA: Blanca Treviño Modelos y Tendencias CEO de Softtek EN SERIE Centros de Desarrollo de Software A Fondo Además: Noticias • Eventos • Fundamentos • Biblioteca • Tecnología • Carrera XMLSpy 2005 DIRECTORIO Edición Ejecutiva Pedro Galván A> EDITORIAL Coordinación Editorial Mara Ruvalcaba Edición y Producción Edgardo Domínguez Dirección de Arte Oscar Sámano La noción de industrializar el desarrollo de software ha sido un tema bastante popular en los últimos años. Cada que escuchamos sobre un proveedor de servicios que se autoproclama como fábrica de software, es difícil evitar pensar en qué tanto es realidad y qué tanto es moda. Definitivamente la evolución de esta industria hacia modelos de mayor productividad no es una moda, es una necesidad. Los centros de desarrollo de software son un paso importante en esta evolución, por lo que es importante conocer su modelo de trabajo. Para ejemplificar, hemos seleccionado tres empresas pioneras, que brindan un servicio de clase mundial. En este número también hablamos sobre los perfiles de carrera relacionados con TI, actualmente disponibles en México. Consideramos que este es un tema de vital importancia, dado que como todos sabemos, estamos en una industria altamente intensiva en capital humano, donde es fundamental una formación educativa competitiva a nivel mundial. Queremos agradecer las facilidades otorgadas por los diferentes centros de desarrollo, especialmente a: Blanca Treviño, Alejandro Camino, Alejandra Ancira y Yaneth Herrera en Softtek; Carlos Cevallos, Carlos López, Isabel Calderón y Vanessa Romero en IBM; Arnoldo Díaz, Sergio Durán y Alberto Balderas en Certum. Equipo Editorial P.D. Continuamos agradeciendo el apoyo por parte de todos ustedes. Estamos muy contentos por el gran recibimiento que ha tenido Software Guru, así como las expectativas que estamos generando. Agradecemos el interés de nuestra audiencia en América Latina, especialmente de Alfonsina Morgavi, nuestra primera colaboradora internacional. 02 MAR-ABR 2005 Consejo Editorial Francisco Camargo, Guillermo Rodríguez, Ralf Eder y Raúl Trejo, ITESM CEM; Hanna Oktaba, UNAM-AMCIS; Luis Cuellar, Softtek.; Luis Vinicio León, e-Quallity Colaboradores Omar Ruvalcaba, Kendra Medina, Alfonsina Morgavi, Claudia Alquicira, Ma. Julia Orozco, Luz Ma. Luckie, Ramés Rodríguez, Ramón Hernández, Alfredo López, Ariel García, Karla García, Luis Daniel Soto Ventas David González Marketing Natalia Sánchez Webmaster www.aguilahosting.com Contacto [email protected] +52 55 5239 5502 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. 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: PP155106. Se imprimió en febrero de 2005 en Litográfica Roma S.A. de C.V. Distribuido por Sepomex. www.softwareguru.com.mx contenido mar-abr 2005 EN PORTADA Centros de Desarrollo de Software: Un Nuevo Paradigma ¿Qué es un centro de desarrollo de software? ¿Cómo funcionan y cuáles son algunos ejemplos en nuestra región? Productos número 02 20 Consideraciones Legales 16 en el Desarrollo de Software Caso de Estudio LO QUE VIENE Borland Core SDP y RFID 10 MoProSoft en la Práctica A FONDO Altova XMLSpy 2005 12 Ma. Julia Orozco y Claudia Alquicira comparten su experiencia en la implantación de MoProSoft en una empresa de desarrollo de software. 32 HERRAMIENTAS Object-Relational Mapping 14 Entrevista 18 Blanca Treviño, CEO de Softtek Prácticas PRUEBAS Transitando hacia el Cambio Columnas Tejiendo Nuestra Red por Hanna Oktaba 06 Mejora Continua por Luis Cuellar 08 Cátedra y Más por Ralf Eder www.softwareguru.com.mx 41 36 Poco a poco se valora mås el valor de las pruebas de software. Alfonsina Morgavi nos comparte su experiencia en la formación y reclutamiento de ingenieros de pruebas. ARQUITECTURA Estructura de Paquetes para Sistemas J2EE 38 Organizar las clases en un sistema J2EE no es algo trivial. Ramsés Rodríguez nos recomienda una estrategia para definir una jerarquía de paquetes adecuada. Educación 28 Modelos y Tendencias En Cada Número Noticias y Eventos Fundamentos Tecnología Biblioteca Carrera 04 42 44 46 48 MAR-ABR 2005 03 CASO DE ESTUDIO Noticias ExpoComm México 2005 consolida su liderazgo Del 8 al 11 de febrero se llevó a cabo con gran éxito EXPOCOMM MÉXICO 2005. Innovación y convergencia tecnológica fueron las principales características que 23,302 profesionales de Telecomunicaciones y Tecnologías de Información (TIC) pudieron presenciar durante este foro. Ésta fue la 14a edición de EXPOCOMM, que se consolidó como el foro de Telecomunicaciones y Tecnologías de Información más importante en México. En su interés por cubrir el ámbito de software, EXPOCOMM presentó los pabellones especializados de Soluciones de Seguridad y Almacenamiento, y el de Consultores e Integradores. El programa de conferencias de EXPOCOMM incluyó conferencias magistrales de Motorola, Nortel, IBM e Intel y la realización en paralelo del Foro Tendencias de Select, lo cual reunió a expertos nacionales e internacionales para compartir su experiencia sobre retos y tendencias en México y el mundo. Para mayor información, visita: www.expocomm.com.mx IBM México obtuvo el máximo nivel del modelo Capability Maturity Model Integration (CMMI) para desarrollo de software IBM de México, a través de la organización de Servicios de Gestión de Aplicaciones (AMS, por sus siglas en inglés), obtuvo el Nivel 5 de capacidad y madurez bajo el modelo Capability Maturity Model Integration (CMMI) para desarrollo de software, que otorga el Instituto de Ingeniería de Software (SEI) de la Universidad Carnegie Mellon, Estados Unidos. “En la búsqueda por ofrecer mejores servicios y productos de alta calidad a nuestros clientes, decidimos evolucionar el programa de mejora continua de procesos, reemplazando el modelo de referencia anterior por el más reciente modelo del SEI: CMMI, el cual está siendo adoptado por la industria de software a nivel mundial como el nuevo marco de referencia para evaluar la capacidad de las organizaciones para entregar productos y servicios de alta calidad”, señaló Carlos López Santibáñez, director AMS Latinoamérica de IBM de México. Para mayor información, visita: www.software.ibm.com 04 MAR-ABR 2005 Se inaugura el Progama TechBA El pasado 28 de febrero fue inaugurada la primera Aceleradora de Negocios de Tecnología - México y Silicon Valley, conocida como el Programa TechBA. Dicha aceleradora pertenece a un programa de la Secretaría de Economía y es administrada por la Fundación México-Estados Unidos para la Ciencia (FUMEC), en colaboración con The Enterprise Network (TEN), y apoyada por el Instituto Tecnológico y de Estudios Superiores de Monterrey (ITESM), la Universidad Panamericana (UP) y el Instituto Politécnico Nacional (IPN). En el Programa TechBA ya están trabajando las primeras compañías, entre ellas 3dmx, productora de animación 3D para juegos y películas; Tralcom, proveedor de contenido de e-learning; Pess M&D Center, comisionados en plantas eléctricas, puesta en operación, y mantenimiento; BlockNetworks, proveedor de soluciones ERP y BPM; Stakeware, software de responsabilidad social; y Azertia, proveedor de soluciones personalizadas para empresas pequeñas. Todas estas compañías han desarrollado productos y servicios innovadores, y están listas para extender su mercado en Silicon Valley. Para mayor información visita: www.techba.com Secretaría de Economía Publica las Reglas de Operación de ProSoft El pasado viernes 18 de febrero, la Secretaría de Economía dio a conocer las Reglas de Operación del Programa para el Desarrollo de la Industria del Software (ProSoft), en el Diario Oficial de la Federación. Estas reglas especifican información relacionada con organismos participantes, beneficiarios, criterios de elegibilidad y tipos de apoyo, como: capital humano, calidad y capacidad de procesos, innovación y desarrollo tecnológico, proyectos productivos, desarrollo de capacidades empresariales y de estrategia, acceso al financiamiento, promoción y comercializacion, y desarrollo de masa crítica, entre otros. También lista a detalle el presupuesto asignado y montos de apoyos para las diferentes categorías, incluye el formato de la solicitud de apoyo, y muestra cada actividad a ejecutarse para llevar a cabo el proceso completo de evaluación, otorgamiento, y seguimiento de fondos. Para mayor información visita: www.software.net.mx www.softwareguru.com.mx Eventos Marzo-Abril 2005 2-3 Marzo 2005 Sun Tech Days Sun Microsystems World Trade Center Ciudad de México Info: www.suntechdays.com.mx e-mail: [email protected] 2,3,4,9,10 y 11 Marzo, 13,14,19,27 y 29 Abril Developer Days Microsoft Marzo: 2 y3 Cd. Juárez, 4 Chihuahua, 9 Los Mochis, 10 - Culiacán, 11 - Mazatlán. Abril: 13 - Cd. de México (por confirmar), 14 - Aguascalientes, 19 - Tuxtla Gtz., 27 - Zacatecas, 29 - Puebla Info: www.microsoft.com/spanish/msdn 18 Marzo 2005 Seminario Proceso de Desarrollo de Software Universidad Autónoma de Nuevo León y Kernel Dirección General de Informática Monterrey, Nuevo León Info: www.kernel.com.mx Tel: (81) 8625-2500 e-mail: [email protected] 6-7 Abril 2005 III Cumbre Gartner – Integración de Aplicaciones y Servicios Web Gartner Centro Banamex Ciudad de México Info: www.gartner.com/mx/appint Tel: (55) 5207-2695 e-mail: [email protected] 28 Abril 2005 2 y 15 Marzo, 5 y 19 Abril 2005 Talleres Software.net.mx Secretaría de Economía y Microsoft Auditorio de la Secretaría de Economía (Condesa) Ciudad de México Info: www.software.net.mx Tel: 01800-849-9959 e-mail: [email protected] Seminario Gratuito “Logrando Proyectos Exitosos con Subcontratistas de Software y Creando una Oficina de Proyectos Práctica y Efectiva” Itera Cd. de México Info: www.itera.com.mx Tel: (55) 5281-7670 e-mail: [email protected] 7-10 Marzo 2005 SEPG 2005 - Deliver Winning Products Through Process Improvement Software Engineering Institute Washington State Convention & Trade Center Seattle, Washington Info: www.sei.cmu.edu/sepg e-mail: [email protected] Eventos Mayo 2005 16-20 Mayo 2005 14-18 Marzo 2005 SD West 2005 – Develop an Advantage StarEast 2005 - Software Testing Conference CMP Media Santa Clara Convention Center Santa Clara, California Info: www.sdexpo.com e-mail: [email protected] Software Quality Engineering The Rosen Centre Hotel Orlando, Florida Info: www.sqe.com/stareast e-mail: [email protected] 18 Marzo 2005 22-26 Mayo 2005 Asociación Mexicana para la Calidad en Ingeniería de Software (AMCIS) Ciudad de México Info: www.amcis.org.mx Tel: (55) 5563-5039 e-mail: [email protected] IBM Rational Software Mandalay Bay Resort Las Vegas, NV Info: www.ibm.com/software/rational/events/rsdc2005/ Tel: +1(888) 889-0074 e-mail: [email protected] Diplomado en Calidad de Software www.softwareguru.com.mx Rational Development Conference 2005 MAR-ABR 2005 05 COLUMNA TEJIENDO NUESTRA RED Proceso y Calidad del Producto Una Preocupación Real E La Dra. Hanna Oktaba es profesora en la Facultad de Ciencias de la UNAM. Es fundadora y vicepresidenta de la Asociación Mexicana para la Calidad en la Ingeniería de Software. Actualmente dirige el proyecto para la creación de una norma mexicana para la industria de software. Barry Boehm Victor Basili 06 MAR-ABR 2005 n enero de este año me tocó viajar al sorpresivamente frío Orlando para participar en el segundo taller del International Process Research Consortium (IPRC), cuyo objetivo es definir el mapa y la ruta (roadmap) de la investigación en el área de procesos de software para los próximos cinco-diez años. En esta ocasión se incorporaron dos grandes figuras de la Ingeniería de Software, uno de ellos es Barry Boehm, el famoso autor del modelo espiral para el desarrollo de software, quien acaba de publicar, con Richard Turner, un nuevo libro bajo el muy llamativo título: Balancing Agility and Discipline, A Guide for the Perplexed. El segundo famoso es Victor Basili, conocido por su modelo GQM (Goal-Question-Metric), quien resultó ser una persona muy participativa y amena. En este taller también ya se cerró el grupo de patrocinadores, quienes por una módica cuota de $150,000 USD tienen derecho de mandar a un representante a cada taller. Entre ellos se encuentran Bosch de Alemania, Tata de la India y los demás provienen de organizaciones estadounidenses como Lockheed Martin, Florida IT Centres of Excellence, University of Pittsburgh y, por supuesto, Software Engineering Institute. Para que nos ubicáramos en el tiempo y entendiéramos mejor qué es lo que pueda pasar en un lapso de diez años, los organizadores nos pidieron recordar y compartir nuestras experiencias personales de hace diez años. Fue muy divertido y muy aleccionador escuchar experiencias personales, las cuales, en su mayoría, fueron bastante lejanas de los intereses y quehaceres actuales de los participantes. Para cumplir con el encargo, revisé mi CV para constatar que hace diez años me dedicaba a dar cursos en la maestría de Diseño OO (basada en libros y artículos de Booch, Dijkstra, Hoare y Brinch Hansen) y Tipos de Datos Abstractos y Estructuras de Datos con especificaciones algebraicas al estilo de John Guttag. ¡Ah, qué tiempos aquellos! Una buena parte del tiempo del taller nos dedicamos a familiarizarnos con la técnica de construir escenarios para imaginar lo que puede pasar dentro de diez años. Se ha hablado de grandes tensiones en el mundo entre Prosperidad & Pobreza (migración), Intangibles & Físicos (servicios, comunicación), Poder & Vulnerabilidad (más poder, más vulnerabilidad), Aceleración Tecnológica & Retroceso (problemas éticos), Laicismo & Sagrado (agnosticismo vs. religión), Gente & Planeta (en los próximos veinte años, 98% de la gente va a nacer en los países en desarrollo). Se han mencionado algunas ideas emergentes, como por ejemplo: • Cambios en los modelos organizacionales (multi-sitios, virtuales) • Crecimiento de la economía informal (también en software) • Acercamiento de sistemas de software a los humanos • Litigio y rechazo de los humanos con respecto al software • Programación por usuarios finales - ¿vamos a necesitar programadores? • Crecimiento inmenso del poder computacional. Como anécdota, que confirma algunas de estas inquietudes, les cuento que el mini-bar de mi cuarto en el hotel de Orlando era tan “inteligente” que bastaba sacar la botella, sin siquiera abrirla, para que te la cargaran a tu cuenta. Antes de retirarme del hotel me llevé la sorpresa de encontrar en mi cuenta varias cosas nada más por tocarlas. Afortunadamente, el personal de la recepción demostró todavía su lado humano y me creyó cuando juré que solamente levante las botellas por pura curiosidad. Pero el disgustó que me llevé antes de que se aclararan las cosas, nadie me lo quita. En el evento se han hecho preguntas importantes, como por ejemplo: • ¿Qué forma va a tener software en el futuro? • ¿Qué va a pasar si los procesos no progresan más? • ¿Quién controla a la tecnología? ¿Gobiernos, gente o mercado? Estas preguntas quedaron sin respuesta pero nos abrieron los ojos a un abanico de incertidumbres que debemos analizar y tomar en cuenta para hacer propuestas o predicciones. Para finalizar el taller se realizó una actividad que ya se repitió por segunda ocasión, y que se llama “chaos cocktail party”. Cada participante escribió en una tarjeta el tópico más importante, según su parecer, surgido durante este taller. Luego, durante unos minutos intercambiamos las tarjetas entre nosotros y, a la señal dada por la facilitadora Suz García, nos juntamos en parejas para asignar las calificaciones de 1 a 5 a los dos tópicos comparados. La calificación más alta se asignaba al tópico más importante según la pareja. Este “baile” se repitió cuatro veces y, finalmente, se seleccionaron los tópicos mejor evaluados. Para la sorpresa de todos, los seis tópicos más importantes rondaban alrededor del tema: Relación clara entre el proceso y la calidad del producto. Sin duda, esta es la mayor preocupación de todos los que hoy en día creen en los procesos, y algunos que hasta viven de ellos, porque la evidencia de que realmente sirven es todavía débil. Tal vez este último comentario suena un poco fuerte. Yo misma, en los últimos años, me he dedicado a predicar sobre procesos. Sin embargo, me parece importante que reflexionemos sobre este tema y nos esforcemos en demostrar que la utilidad de los procesos para lograr buenos productos es real. - Hanna Oktaba www.softwareguru.com.mx COLUMNA MEJORA CONTINUA El Proceso a Seguir Problemas en la Definición de Procesos E 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 CMM5 y Six Sigma a través de las diferentes áreas del centro de desarrollo de Softtek. n nuestra charla anterior hablamos sobre el significado de crear una organización orientada a procesos con el objetivo de generar resultados repetibles en forma eficaz y eficiente, facilitar la comunicación y generar un “framework” para administrar el conocimiento. Esto suena muy bien, pero si es tan buena idea, ¿por qué no se hace en todas las compañías? Esto se debe a problemas tanto de definición como de implantación. En esta ocasión hablaremos de los problemas de definición y en nuestra siguiente charla hablaremos de problemas de implantación. 3. La definición se tarda meses y después ya nadie tiene tiempo de implantar los procesos en la organización. El que define debe continuar con la implantación. Si la dirección define, es porque ellos van a implantar. Sino, entonces no deberían estar definiendo. El Proceso Perfecto En este punto permítanme ser lo más claro posible: NO EXISTE EL PROCESO PERFECTO. Muchas veces es mejor implantar un proceso que toda la organización esté dispuesta a seguir, en lugar de uno que un consultor diga que es el mejor proceso jamás generado. En el momento en que estamos cambiando a una organización orientada a procesos, estamos trabajando con la idea de que estos procesos son dinámicos, por lo que se requiere gente encargada de mantenerlos actualizados constantemente y entrenando a los equipos de trabajo en forma constante. Un elemento que he encontrado en forma consistente en el área de sistemas, es lo mucho que nos maravilla definir procesos, y a su vez la gran falta de entusiasmo para operar los mismos. El mercado está lleno de consultores, libros, maestros y “jefes” de corazón, vendiendo la solución a todos nuestros problemas. Esto sugiere la idea de que existe un conocimiento mágico, un proceso perfecto o una única solución al problema de desarrollo de software. Creo que esta por demás decir que este proceso, ¡NO EXISTE! En los últimos años he apoyado a varias organizaciones a alcanzar niveles de CMM y Seis Sigma. Una estrategia que he visto comúnmente es la de juntar a los grandes expertos de la organización para definir la metodología perfecta que servirá de guía sobre lo que tienen que hacer todos los demás. Esta estrategia tiene tres riesgos importantes: 1. Existen pocos incentivos a escuchar lo que actualmente sucede en los proyectos. La premisa de estos grupos acostumbra ser: “Todo lo que hacemos actualmente está mal y tenemos que definir algo nuevo para arreglar todos nuestros problemas”. Lo ideal es iniciar con aquello que actualmente funciona, asegurar que entrenamos a toda la organización para hacer el trabajo de la misma manera, y sólo cuando no estamos haciendo algo para controlar una práctica clave debemos definir algo nuevo. En la práctica, el problema de definir un proceso es diez por ciento del problema de implantarlo, por lo que si ya existe y se conoce es mejor sólo documentarlo. 2. Los nuevos procesos ya no se mejoran posteriormente. Después de todo, ¿quién puede mejorar el proceso si los mejores ya lo definieron? Desafortunadamente el proceso perfecto no existe, una de los características básicas de la definición debe de ser su facilidad de modificarse. Desde la definición se debe de estar consciente de la importancia de definir algo flexible y fácil de modificar, que se adecue a la problemática actual y futura. 08 MAR-ABR 2005 Otra estrategia es la de comprar un proceso en el mercado e implantarlo en la organización. En este caso es vital contemplar cómo se capacitará o modificará el proceso una vez que el consultor termine su trabajo. Best Practices Personalmente siento que el término “Best Practice”, es uno de los grandes frenos de la industria de software. Creado con finalidad de mercadeo, el término lleva consigo la idea de una “solución mágica” que resuelve tus problemas; que de todas las soluciones que existen en el mundo, es la mejor. Sin embargo, todas las prácticas tienen un valor con respecto a su contexto. Una práctica que fue exitosa en un ambiente abierto y con pocas restricciones puede ser inoperable en una organización con fuertes niveles de control. Desafortunadamente, cuando queremos definir nuestros procesos, todas estas grandes prácticas se atraviesan en nuestro camino generando dudas, ya que queremos que lo que definamos suene impactante cuando lo presentemos a nuestros clientes y empleados. Conclusión Lo que busco decirles con todo esto es: no existe un proceso perfecto; no existe la solución mágica que sólo tengan que copiar y obligar a su gente a seguir. El mejor proceso que podemos definir es uno que sea sencillo de aprender, operar y fácil de mejorar, que controle de alguna manera el trabajo que hacen actualmente, y que las personas estén dispuestas a implantar ellos mismos en sus proyectos. La próxima ocasión platicaremos sobre la implantación de los procesos, sus problemáticas y cómo beneficiarse al máximo de la estrategia de implantación. - Luis Cuellar www.softwareguru.com.mx LO QUE VIENE PRODUCTOS Microsoft con Visual Studio Team System, que se espera para verano 2005. Borland Core SDP PLATAFORMA BASADA EN ROLES Borland lanzó al mercado su nueva plataforma de productos llamada Core SDP (Software Delivery Platform), anteriormente conocida con el nombre clave “Themis”. Core SDP es una plataforma integrada basada en roles que incluye Core Analyst, Core Architect, Core Developer y Core Tester. Esta estrategia basada en roles, y no en productos, es similar a la que decidió aplicar tanto IBM con su Software Development Platform lanzada a finales del 2004, como Detrás del Core SDP están las herramientas que ya conocemos de Borland: Together (modelado visual), CaliberRM (administración de requerimientos), StarTeam (gestión de configuración y cambio), JBuilder (desarrollo Java) y OptimizeIt (pruebas). Sin embargo, la nueva oferta consiste en una infraestructura unificada. Cada rol puede ver información de los demás roles sin tener que utilizar productos separados. Por ejemplo, desde Core Developer se pueden acceder los requerimientos. De acuerdo con Patrick Kerpan, CTO de Borland, lo que puede llegar a diferenciar al Core SDP de sus competidores, son ciertas piezas que serán liberadas en un futuro próximo y están dirigidas hacia los roles de gerencia y dirección. El Core SDP es parte de la estrategia de Borland llamada Software Delivery Optimization (SDO), que busca traer un enfoque industrializado al desarrollo de software. Según Borland, esta estrategia difiere de la de IBM y Microsoft en cuanto a que su alcance es mayor porque no sólo llega hasta los niveles de gerencia, sino que también involucra a los niveles directivos. Además de proveer herramientas de software, la estrategia SDO busca proporcionar ayuda a las empresas en cuanto a cómo desarrollar software alineado con las metas de negocio. Para reafirmar esta iniciativa, Borland recientemente adquirió la empresa TeraQuest Metrics, una consultora especializada en procesos de desarrollo. Core SDP maneja dos versiones de Core Developer: una basada en JBuilder y otra en Eclipse. Próximamente se agregará soporte para Visual Studio. C++Builder ha quedado fuera de Core SDP. Borland ha anunciado que este producto se manejará como parte de la familia Delphi. PRODUCTOS RFID Mustang disponible en java.net PREPARÁNDOSE PARA LA OLA En los últimos meses hemos sido fuertemente bombardeados acerca de la tecnología de identificación por radiofrecuencia (RFID), sus múltiples aplicaciones y cómo cambiará la cadena de suministro. Probablemente ya estén cansados de tanto oír sobre el mismo tema —la verdad es que nosotros ya lo estamos—, sin embargo, dado que empresas de la talla de Wal-Mart la están empujando y obligando a sus proveedores a incorporar, debemos reconocer su importancia y prepararnos para ella. Es un hecho que pronto tendremos que desarrollar aplicaciones de software que soporten RFID. Para comenzar, he aquí una lista de recursos para aquellos que quieran dar los primeros pasos hacia el desarrollo de aplicaciones para RFID: 10 MAR-ABR 2005 MÁS VERSIONES PREVIAS PARA DESARROLLADORES RFID Journal www.rfidjournal.com RFID World 2005 www.rfid-world.com/rfid05/ Kit de principiantes para RFID www.intensecomp.com/rfid_store_sf.html SDK en Java para RFID www.sun.com/software/solutions/rfid/ Sun Microsystems ha hecho disponible una versión previa de la siguiente versión de J2SE, nombre clave “Mustang”, a través de java.net, un sitio para la comunidad de desarrolladores de Java. En un esfuerzo por ser más abiertos, Sun al igual que Microsoft, están brindando acceso a los desarrolladores a versiones previas de sus productos. Microsoft ha mostrado a los desarrolladores su disponibilidad a ser más transparente al brindar no solamente versiones beta de sus herramientas, sino también las llamadas CTPs (Community Technology Previews) para que los desarrolladores puedan conocerlas y proveer retroalimentación. www.softwareguru.com.mx PRODUCTOS A FONDO Altova XMLSpy XMLSpy 2005 Altova www.altova.com Calificación: 5 de 5 2005 Líder Indiscutible L Precio y Disponibilidad • Enterprise: 99 EUR • Professional: 49 EUR • Home: Gratuito • Disponible a través de la tienda en línea de Altova (http://shop.altova.com) Requerimientos de Sistema* Windows NT, 2000, XP, 2003 256 MB de RAM Procesador Pentium III o superior *La documentación de XMLSpy no especifica requerimientos mínimos más allá del sistema operativo. Los requerimientos de memoria y procesador son los recomendados por Software Guru. VEREDICTO No solamente XMLSpy es un producto muy completo, sino que también su uso es fácil y amigable. Con justa razón es reconocido como el líder en su segmento. PROS: 1. Amplia lista de capacidades. 2. Interfaz de usuario amigable. 3. Soporte a los estándares más recientes. CONTRAS: 1. Solamente funciona sobre Windows. 2. No se manejan distribuidores locales, se debe adquirir en línea. 12 MAR-ABR 2005 a tecnología XML (eXtensible Markup Language) juega un rol clave en los sistemas de información que se desarrollan actualmente y durante la próxima década por lo menos. Para adoptar esta tecnología y mejorar la productividad de los desarrolladores, es útil contar con herramientas para crear, editar, validar y depurar documentos XML. Es por ello que en este número hemos decidido analizar a fondo el XMLSpy de Altova, una de las herramientas para XML más populares del mercado. • Browser.– Permite previsualizar en HTML el contenido generado a partir de datos XML. • Authentic.– Esta vista está diseñada para que los usuarios finales, que no conocen XML, puedan administrar documentos en un ambiente similar al de un procesador de texto. Básicamente es una versión integrada de la herramienta Authentic de Altova, la cual está disponible de manera gratuita. XMLSpy es conocido principalmente como un editor XML, pero tiene muchas otras capacidades, como generación de schemas, DTDs y transformación utilizando XSL. Conozcamos las principales capacidades de este producto: Edición en Diferentes Vistas Una de las características más importantes de XMLSpy es que provee diferentes vistas para manejar documentos XML de acuerdo al perfil y propósito del usuario. Las cinco vistas que maneja XMLSpy son las siguientes: A través de la vista Schema/WSDL se pueden modelar interfases avanzadas de datos Soporte a Estándares • Texto.– Es la vista base para editar documentos XML. Contiene características útiles para la edición como sintaxis a color, auto-completar, expandir/colapsar elementos, bookmarking, y formateo automático para indentar los elementos en estructura de árbol. Esta vista también soporta corrección de ortografía en diversos lenguajes, entre ellos el español. Altova siempre ha sido uno de los pioneros en cuanto a soporte de estándares. Además de soportar los tradicionales, como XQuery, XSLT 1.0 y XPath 1.0, XMLSpy es uno de los primeros en soportar los nuevos estándares XSLT 2.0 y XPath 2.0. Éstos proveen fuertes mejoras en términos de poder, flexibilidad y eficiencia en el manejo de XML. • Grid.– La vista grid (malla o cuadrícula) permite trabajar con documentos XML de una manera similar a como si se estuviera usando una hoja de cálculo. Esto permite realizar operaciones en grupos de elementos en vez de línea por línea. Interacción con RDBMS • Schema/WSDL.– Utilizada para modelar interfases avanzadas de datos y web services. Los elementos de WSDL como operaciones, puertos y bindings se pueden visualizar y modificar fácilmente en esta vista. XMLSpy interactúa con los principales manejadores de bases de datos a través de interfase nativa. Esto permite conectarse a la BD, generar schemas XML en base a la estructura de la BD y viceversa, e importar/exportar datos. Entre los principales manejadores soportados nativamente están Oracle, SQL Server, MySQL, Sybase y DB2. www.softwareguru.com.mx En el caso de Eclipse y VisualStudio, la integración es completa ya que XMLSpy queda embebido dentro de estos. Gestión Colaborativa de Schemas Una de las principales características de XML es la capacidad de generar schemas complejos a partir de otros más sencillos utilizando imports e includes. Esto permite extender y reutilizar fácilmente los schemas generados por diferentes áreas o personas en una organización. La edición Enterprise de XMLSpy incluye SchemaAgent, un producto cliente/servidor que administra el acceso y edición colaborativa de schemas. Integración con IDEs XMLSpy se puede utilizar en modo independiente (stand-alone), pero también se integra con los IDEs más populares. En el caso de Eclipse y Visual Studio, la integración es completa ya que XMLSpy queda embebido dentro de estos. Después de instalar el producto, se instala un plug-in en el IDE para reemplazar su módulo default de XML por XMLSpy. Generación de Código XMLSpy puede generar automáticamente clases en Java, C++ y C# a partir de elementos de datos definidos en un schema XML. Al modelar los elementos de datos en el Schema Editor, XMLSpy genera los archivos de las clases con los atributos y métodos get/set correspondientes. Comparación de Elementos Es bastante común verse en la necesidad de encontrar diferencias entre elementos para conocer qué partes del código han cambiado de un archivo a otro. Para resolver esto, XMLSpy provee una utilería que compara y fusiona documentos. La herramienta los analiza y despliega las diferencias entre ambos, permitiendo que el usuario escoja las estructuras que desea inwww.softwareguru.com.mx La comparación de elementos permite visualizar las diferencias y decidir qué hacer con ellas tegrar entre ambos documentos. Esta misma funcionalidad puede ser aplicada a directorios enteros para comparar su contenido. web services con SOAP desde una sola herramienta. Depuración Otra de las fortalezas de este producto es su amplia capacidad para depuración (debugging), que seguramente ahorrará tiempo a los desarrolladores. XMLSpy revisa que los documentos estén bien formados y valida su contenido contra el DTD o schema correspondiente. En los ambientes de depuración para XSLT y XQuery es posible definir puntos de observación (watches), puntos de rompimiento condicionales (breakpoints), y ejecutar las operaciones paso a paso (single-stepping). Web Services A quienes trabajan con web services les interesará saber que este producto ofrece un fuerte soporte para SOAP. Además de las capacidades para edición de documentos WSDL y depuración de SOAP, XMLSpy incluye un cliente a través del cual podemos probar las respuestas a peticiones. Esto permite desarrollar, probar y depurar Con todas estas capacidades, es fácil entender porqué XMLSpy ha sido reconocido en diversas ocasiones como la mejor herramienta para desarrollo con XML. Los invitamos a que conozcan este producto en alguna de sus diferentes ediciones: Enterprise.– Funcionalidad completa para desarrollo empresarial. Professional.– Recomendable para proyectos sencillos. No incluye. soporte a web services, generación de código ni gestión de schemas. Home.– Versión gratuita con funcionalidad básica. MAR-ABR 2005 13 PRODUCTOS HERRAMIENTAS O.bject R.elational M.apping Brindando Persistencia a los Objetos Por Pedro Galván Es un hecho que la mayoría de los sistemas de información actuales se desarrollan utilizando lenguajes orientados a objetos. Dentro de este paradigma, los objetos en cierta manera representan objetos del mundo real. Por ejemplo, imaginemos una agenda que contiene una lista de personas con cero o más direcciones y números telefónicos. En el mundo de objetos, éstos se representarían como objetos “persona”, con atributos correspondientes a la información relevante a cada persona, como su nombre, una lista de teléfonos de diferentes tipos (casa, oficina, móvil) y otra lista de direcciones. E l problema llega cuando debemos almacenar esta información en algún medio permanente. Desde la perspectiva de un desarrollador, una posible solución sería utilizar un almacenamiento de objetos persistentes, en el que se almacenan objetos que pueden ser encontrados posteriormente. La mayoría de los lenguajes de objetos proveen algún mecanismo para lograr esto. Por ejemplo, en Java se pueden “serializar” los objetos y así almacenarlos en disco. Esto puede ser aceptable en la programación de sistemas de bajo nivel. Sin embargo, no sería útil en aplicaciones empresariales donde los usuarios deben poder acceder los datos de diferentes maneras y con diferentes clientes para obtener la información que requieran (reportes, análisis de datos, etc.). Adicionalmente, en aplicaciones empresariales el almacenamiento de información debe tener un alto desempeño y confiabilidad. Como sabemos, la solución a todas estas necesidades de almacenamiento ya existe, y son las bases de datos. La solución que podría parecer ideal en principio sería utilizar bases de datos orientadas a objetos. Sin embargo, éstas no han logrado penetrar el mercado en general, por lo que en la mayoría de las ocasiones nos vemos obligados a recurrir a bases de datos relacionales (RDBMS). Como sabemos, casi todos los manejadores de bases de datos relacionales son previos al paradigma de objetos y el soporte que tienen hacia éste es bastante pobre. 14 MAR-ABR 2005 Diferencias Entre Paradigmas El mapeo entre objetos y relaciones no es algo trivial, ya que existen diferencias fundamentales entre estos modelos. La teoría relacional se centra en los datos, mientras que la de objetos se enfoca en el comportamiento. Estos son algunos de los aspectos en que difieren: • Los objetos tienen un claro sentido de identidad y de propiedad de sus atributos. En cambio, en una base de datos es necesario construir queries utilizando llaves para relacionar y darle sentido a los datos que contienen las tablas. • Dado que la información de un objeto típicamente abarca varias tablas, se requiere de varias sentencias o del uso de JOINS para obtener toda la información de un objeto. • Las bases de datos realizan búsquedas a través de índices, pero no pueden ver objetos residentes en memoria. • Los tipos de datos manejados por ambos modelos son diferentes. • Las relaciones soportados por ambos modelos son diferentes. Por ejemplo, los RDBMS no soportan directamente la herencia. • Los RDBMS proveen mecanismos para aislar y evitar cambios a ciertos registros (locking). Object-Relational Mapping De todo esto surge la necesidad de utilizar algún mecanismo para integrar la información contenida en nuestros objetos con los datos almacenados en el RDBMS. Esto típicamente se logra a través de una capa de traducción objeto-relacional. Tal estrategia es conocida como Object-Relational Mapping (ORM). Dependiendo de que tanto se apoyan en ORM, podemos clasificar las aplicaciones en las siguientes categorías: Puramente relacional - Todo el sistema, incluyendo la interfaz de usuario, está diseñado en base al modelo relacional, utilizando statements de SQL dentro de los programas. Los queries se pueden ajustar directamente, pero a costa de poca portabilidad y dificultad en el mantenimiento. Las aplicaciones en esta categoría típicamente utilizan mucho los stored procedures, llevando la mayoría del trabajo de procesamiento hacia la capa de datos. Mapeo de objetos sencillo - Las entidades se representan como clases que se mapean manualmente a las tablas en la base de datos. Las llamadas al RDBMS se separan de la lógica de negocio a través de algún patrón de diseño como el DAO (Data Access Object). Esta estrategia es muy común y tiene éxito en aplicaciones con entidades sencillas. Mapeo de objetos medio - La aplicación se diseña en base a un modelo de objetos. Las sentencias SQL se generan en tiempo de ejecución a través un framework o generadores de código. Las asociaciones entre objetos son manejadas por el mecanismo de persistencia y es posible refinar el acceso a datos a través de expresiones en un lenguaje orientado a objetos. Típicamente se maneja un cache de objetos en la capa de persistencia. La mayoría de los productos ORM y soluciones desarrolladas internamente (in-house) soportan este nivel de funcionalidad. Este nivel es adecuado para aplicaciones de complejidad media, donde es importante la portabilidad hacia diferentes RDBMS. www.softwareguru.com.mx Mapeo de objetos completo - Se soporta modelado de objetos complejo con composición, herencia, polimorfismo, etc. La capa de persistencia implementa persistencia transparente, esto es la capacidad de manipular los datos almacenados en el RDBMS directamente a través de objetos, sin tener que implementar alguna interfaz especial o heredar una clase. Se utilizan técnicas eficientes para la obtención y cacheo de información, las cuales son transparentes hacia la aplicación. Este nivel de funcionalidad es muy difícil de lograr a través de una solución in-house, ya que requiere meses o tal vez años de desarrollo. Diferentes Técnicas En el mercado existe una gran variedad de herramientas y productos para ORM. Conozcamos algunas de las técnicas más utilizadas por estas herramientas: Mapeo directo sin identidad – El desarrollador crea clases con atributos de cuyo nombre se derivan las columnas de las tablas en la base de datos (o viceversa). Las herramientas examinan estas clases y generan los queries correspondientes. No se mantiene identidad basada en la llave primaria. Esto significa que es posible que en memoria existan dos objetos diferentes que corresponden a la misma hilera de una tabla. Si ambos objetos son actualizados, entonces se perderán los cambios en alguno de ellos. Esto implica que la lógica de la aplicación esté al pendiente de que esto no suceda. Mapeo directo con identidad – Similar al anterior, pero se mantiene un índice (típicamente un hash table) de todos los registros residentes en memoria. De esta manera se asegura que no puedan existir dos objetos que correspondan a la misma hilera de una tabla. El inconveniente de esta estrategia es que la capa ORM debe responsabilizarse de administrar el ciclo de vida de los objetos, ya que la lógica de la aplicación no tendrá forma de saber cuando se deba eliminar un objeto compartido. Esto puede presentar complicaciones dependiendo del lenguaje de programación utilizado y los mecanismos que provea para administrar el ciclo de vida de los objetos. EJB CMP - En el caso de J2EE, se puede utilizar la persistencia administrada por el contenedor o CMP. El desarrollador define clases abstractas para cada atributo de los objetos, y se generan métodos get/set que encapsulan el acceso a las variables. Se utiliza EJB QL, un lenguaje similar a SQL, para definir statements para acceder información. JDO – JDO (Java Data Objects) es un API creado por Sun para abstraer la persistencia en los objetos. Los desarrolladores se apoyan en este API para lograr que la información de su modelo de dominio se almacene en la base de datos. A diferencia de CMP, JDO está diseñado para funcionar con cualquier tipo de objetos Java, no solamente EJBs. JDO ha tenido un gran éxito y se espera que la versión 3 de EJB se base en JDO. Generación a partir de XML – Consiste en generar código a partir de definiciones escritas en XML. Es recomendable que el código generado no sea modificado posteriormente. Herramientas Existe una gran cantidad de productos para ORM. Entre los más populares estan: Hibernate (Java, Open Source) www.hibernate.org Cocobase (Java, Comercial) www.thoughtinc.com NEO (.NET, Open Source) neo.codehaus.org NHibernate (.NET, Open Source) sourceforge.net/projects/nhibernate ORM .NET (.NET, Open Source) sourceforge.net/projects/orm-net Toplink (Java, Comercial) www.oracle.com/technology/products/ ias/toplink ObjectSpaces es un ORM de Microsoft que inicialmente se esperaba en conjunto con Visual Studio Team System. Sin embargo, recientemente se anunció que este no serå lanzado hasta que WinFS esté disponible. Referencias: Autores varios, “Object Relational Mapping Articles” www.service-architecture.com/object-relational-mapping/articles Berglas, Anthony. “Object Relational Mapping Tools” www.uq.net.au/~zzabergl/simpleorm/ORMTools.html www.softwareguru.com.mx Al hablar sobre desarrollo de software, comúnmente nos viene a la mente la creación de programas de cómputo que sirven para solucionar problemas específicos, mediante la conjunción de algoritmos bajo determinados lenguajes de programación. Para unos es un misterio, para otros es un arte, mientras que para algunos cuantos es cosa sencilla y de todos los días. Para nosotros, los abogados, hablar sobre desarrollo de software es hablar sobre una convergencia de múltiples derechos y obligaciones, tanto legales como contractuales. Desarrollo de Software: Consideraciones legales Por Kendra Medina E l software, en tanto que es un bien, está sujeto a las reglas del derecho civil y, en tanto que es intangible, sujeto a las reglas de propiedad intelectual. No obstante, la actividad humana de desarrollarlo y otras relacionadas, como lo son su comercialización, implementación, integración o mantenimiento, están o pueden estar sujetas a una multiplicidad de reglas más, como lo son las del derecho mercantil, fiscal, de la propiedad industrial y de la protección al consumidor. Asimismo, en tanto más amplia y compleja sea una organización dedicada al desarrollo de software, la aplicación de reglas adicionales se hace evidente, tales como las del derecho laboral y societario. Protección Legal La protección legal que se le otorga al software varia significativamente de país a país, dependiendo de cómo se perciba, el régimen legal aplicable, e incluso su historia y cultura económica. Por ejemplo, en Asia el desarrollo de software se percibe como una industria manufacturera, en donde los desarrolladores son fabricantes y el software un bien de producción que juega un rol dentro de los procesos de otras industrias. En Norteamérica se percibe una industria, como una actividad creativa, pero con fines meramente económicos. De ahí que la protección otorgada por el Copyright se limite precisamente al derecho de prohibir o autorizar su reproducción. En México, al igual que en Europa, donde nuestro régimen legal tiene como base al llamado Civil Law o Derecho Romano-Germánico, el desarrollo de software es considerado como un arte y los programas en sí mismos son obras que merecen ser protegidas por el llamado Droit d’Auteur o Derecho de Autor, el cual no se limita únicamente al derecho de prohibir o autorizar su reproducción, sino que otorga al creador de una obra la protección al vínculo que lo une con su creación intelectual, tanto desde una perspectiva personal como real, toda vez que protege su autoría y sus derechos de propiedad sobre el mismo. Es por ello que nuestra legislación protege tanto los derechos patrimoniales como morales de los desarrolladores de software. El derecho patrimonial o económico es el que el autor tiene para explotar de forma exclusiva su software o de permitir a otros explotarlo (copyright). Es decir, de autorizar o prohibir su reproducción, publicación o transmisión en cualquier medio (papel, CD, Internet). El autor de un software puede transmitir este derecho sobre su obra sin limitación alguna. Por su parte, el derecho moral es el derecho que el autor tiene de decidir sobre si ha de divulgar o no su obra y la forma de hacerlo, así como de exigir su reconocimiento como autor de la misma, de modificarla y de oponerse a cualquier modificación, deformación o mutilación. En este caso, este derecho es irrenunciable e intransferible. Cabe señalar que la protección legal es inmediata, sin necesidad de registro alguno, desde el momento en que la obra se fija en un soporte material, por ejemplo, en un papel o en un archivo electrónico. El registro de un programa de Kendra Medina Chávez es abogada del Área Legal Corporativa, en la especialidad de Telecomunicaciones & Tecnologías de Información de PricewaterhouseCoopers, S.C. Estudió Derecho en el Instituto Tecnológico Autónomo de México, cuenta con un postgrado de Telecomunicaciones por la misma institución y una Maestría en e-Law por la Universidad de Melbourne. Es miembro del Consejo Editorial de The Sci-Tech Lawyer, revista especializada de la American Bar Association y ha impartido clases de licenciatura, de maestría y conferencias sobre Derecho de Tecnologías de Información y Telecomunicaciones en el Instituto Tecnológico de Estudios Superiores de Monterrey (Campus Monterrey), la Universidad de Monterrey y el Instituto de Investigaciones Jurídicas de la Universidad Nacional Autónoma de México. 16 MAR-ABR 2005 www.softwareguru.com.mx cómputo ante el Instituto Nacional del Derecho de Autor es meramente declarativo, más no constitutivo de derechos, por lo que su utilidad principal es como medio de prueba. Consideraciones Jurídicas Siendo el desarrollo de software una actividad que nuestros legisladores optaron por regular como un arte, no como una ciencia y mucho menos como una industria, los empresarios mexicanos que buscan expandir el desarrollo de software bajo un esquema de negocios deben tomar en cuenta no sólo este enfoque regulatorio, sino muchas otras consideraciones jurídicas más. Antes de constituirse como entidad legal, el empresario mexicano debe definir el core business de su empresa y su mercado. Decidir desarrollar software a la medida o software empaquetado, o prestar servicios de integración o implementación de software, tiene una incidencia directa en el tipo legal más adecuado bajo el cual debe constituir su empresa. No pocas veces ha sucedido que por esta falta de enfoque se elija, por ejemplo, constituir una sociedad anónima en vez de una sociedad civil, sujetándose así, sin ninguna necesidad, a un régimen fiscal mucho más estricto. Asimismo, por muy pequeña que parezca su empresa en un inicio, la integración de la definición del core business con la visión de crecimiento que se tenga a mediano o largo plazo, deben ir de la mano con el establecimiento del objeto social de la empresa y la estructura corporativa idónea. En el mejor de los casos, una falta de previsión en cualquiera de estos sentidos puede implicar gastos innecesarios en modificaciones a los estatutos de su empresa o en su representación legal; pero en el peor de ellos, podría impedir la inclusión de nuevos inversionistas en el momento y lugar adecuados, dejando pasar así valiosas oportunidades de crecimiento. Otra consideración de vital importancia es la aplicabilidad de legislación especial, como es el caso de la laboral. Hay que recordar que esta regulación es de orden público y en todo caso, en situación de conflicto, la carga de la prueba la tiene el empleador. Por lo anterior, es muy importante que queden bien documentadas todas las obligaciones que los empleados de una empresa dedicada al desarrollo de software tienen, tanto los desarrolladores, como el personal administrativo. Hay que tener en mente que la protección mínima que la ley otorga a los desarrolladores de software como empresarios es la presunción de que, salvo pacto en contrario, los derechos patrimoniales del software desarrollado por el empleado —dentro de las funciones de su cargo y bajo instrucciones del empleador únicamente—, pertenecen a este último. Por lo anterior, esta protección mínima debe complementarse con disposiciones contractuales explícitas en materia de renuncia de www.softwareguru.com.mx derechos y secretos industriales, mediante sólidos contratos laborales y cláusulas de confidencialidad. No hay que olvidar que la protección legal otorgada por la legislación en materia de derechos de autor se restringe a la protección de la obra tal cual es fijada sobre el soporte material (código fuente y código objeto), no a la idea. Por lo que debe también considerarse la protección adicional de elementos no visibles, tales como la estructura, organización, secuencia, interfaces (el llamado look & feel de un programa), así como las bases de datos y contenidos relacionados. De esta forma, en la manera de lo posible pueden tenerse maneras efectivas de combatir prácticas de clean room* de posibles competidores. Finalmente, las nuevas formas de comercialización y distribución merecen una atención legal especial. Por su naturaleza, la distribución y comercialización de software a través de medios electrónicos, como Internet, no sólo es conveniente, sino eficiente. En estos casos, no deben considerarse únicamente los términos y condiciones de la licencia de uso de los programas de cómputo así distribuidos, sino la forma y sustancia de la contratación electrónica para fines de validez y como medio de prueba. Asimismo, hay que recordar que los usuarios finales son consumidores y están amparados bajo una regulación especial y favorable en cuanto a contratación de bienes y servicios se refiere. Conclusión Es claro que la industria del software se conoce como tal porque la evolución natural del desarrollo de la tecnología la ha llevado a ser no un arte, sino una industria generadora de inversión y de empleos. Por ello, es importante que los empresarios tengan en mente que la protección legal más importante de su principal activo no proviene exclusivamente de un registro ante el Instituto de Derechos de Autor y que, para el sano desarrollo de su empresa, es necesario considerar una diversidad de normas jurídicas, por lo que no sólo es aconsejable, sino necesario, allegarse de la asesoría legal adecuada oportunamente. *Las tecnicas de “clean room” se utilizan para crear programas muy similares a los de los competidores, sin violar algún derecho de propiedad intelectual o convenio de confidencialidad. El proceso es el siguiente: • Se aísla a uno o más programadores y se les dan unos requerimientos a alcanzar. • Se les da información que no es confidencial (cómo funcionan algunas herramientas del programa, qué tan amigable debe ser, etc.). • Se cuida mucho que esos programadores no tengan acceso al programa original que se pretende “copiar” e incluso se registra todo el proceso para que pueda comprobarse que en ningún momento se trató de ingeniería inversa o copia literal del programa. ENTREVISTA Blanca TreviÑo CEO de Softtek La historia de Blanca Treviño está llena de retos. Conozcamos un poco más sobre quién es ella, la problemática que ha enfrentado y su opinión respecto a la industria de software. Software Guru.- ¿Quien es Blanca Treviño? Blanca Treviño.- Soy regia, puedes empezar por ahí. Soy orgullosa madre de dos niñas, una adolescente y otra de once años. Casada, como una señora casi normal. ¿Qué te motiva? Para mí el reto es una constante, y es algo que viene de familia. Mi mamá estudió una carrera ya teniendo seis hijos. Mi papá nunca me permitió ponerme límites. Cuando escogí mi carrera, estaba interesada en estudiar sistemas, pero me dio miedo y me apunté en mercadotecnia. Él me dijo que no me podía salir, que aceptaba que pudiera tener una hija tonta pero no miedosa. Así que para mí el ¿Sientes que el camino para las mujeres es más difícil? Reconozco que es complicado conforme van subiendo. Cuando trabajas en una oficina convencional, haces un compromiso de estar de 9 a 6, y ahí termina. Pero conforme creces profesionalmente, ya no se traduce en un horario sino en compromiso. A la mejor vas a poder estar a las 9 en tu casa, pero no vas a poder estar el día de los premios del colegio. En las mujeres esto puede provocar que te cuestiones si ese compromiso no se contrapone con tu compromiso de mamá y de esposa. Debes tener un driver muy fuerte para decir “lo hago, y hay un sentido para hacerlo”, y traducirlo en términos de tus hijos, porque no puede ser meramente un desarrollo que te alimente a ti, sino un desarrollo que se traduzca en retos para la familia. Además, cuando encuentras estas respuestas, se lo logras transmitir a tus hijos para que ellos lo entiendan. ¿Qué tan difícil es crecer profesionalmente en esta industria? Yo creo que más bien depende de la empresa. Si tú te gradúas de esta carrera y te metes al área de sistemas de una empresa tradicional, va a ser difícil poder crecer. En cambio, si te 18 MAR-ABR 2005 reto siempre ha sido algo muy fuerte y continuo. No digo que deba ser profesional, sino que debes sentirte continuamente en exigencia de mejorar, de aprender. Mis dos niñas también son un gran motor para mí. Cuando tienes hijos se te vuelve un compromiso el transmitirles esa búsqueda constante de retos. Eres una mujer que dirige una empresa de 100 millones de dólares, ¿eso pasa por tu cabeza o no le das importancia? El hecho de que sea una mujer sí me hace muy consciente de tener el privilegio de estar en una empresa que me permita desarrollarme y estar aquí. Lo reconozco como un privilegio, pero no lo subo mucho a la cabeza, no en el contexto de limitarme. metes a una empresa dedicada a TI, eso te da muchas opciones de crecimiento. Creo que las oportunidades de crecimiento van más de la mano de la empresa que de la industria. Cuéntanos sobre Softtek, ¿cuál es su alcance y presencia actual? Actualmente Softtek tiene cerca de 2,700 empleados y presencia en diez países. Somos la empresa privada de TI más grande con presencia regional en Latinoamérica. ¿Qué implica el hecho de ser una empresa privada? Ser una empresa privada tiene la connotacion positiva de decir “es mío y lo voy a hacer y no me voy a poner límites”, pero también tiene limitaciones. No tener atrás un socio capitalista hace que al momento de llegar ciertas circunstancias, atravieses dificultades que otras empresas no. Es poco común que una empresa llegue a este tamaño sin un capital detrás. Pero yo estoy segura que hoy no tendríamos el alcance que tenemos si tuviéramos un socio capitalista. El dinero nos hubiera ayudado mucho para hacer frente a problemas financieros, pero no hubiéramos llegado a esto. ¿Cuál es tu mayor orgullo en Softtek? A mi todas las épocas de Softtek me han dado orgullo, pero donde más orgullosa me he sentido es donde hemos podido demostrar que nos sabemos levantar. Así como Softtek es muy conocido, también es bien sabido que tuvimos años muy difíciles. 1999 y 2000 fueron años muy duros, y el impacto de ellos se reflejó en 2001 y 2002. Que la empresa sea nuestra ha demostrado que en las crisis Softtek sabe salir adelante. El proceso fue muy duro, nos ayudó mucha gente y afectamos a algunos otros ya que no teníamos atrás un socio capitalista que nos respaldara. Otras empresas cerraron sus puertas porque el negocio ya no daba y su socio capitalista ya no estaba dispuesto a perder dinero. En nuestro caso eso no era una posibilidad. Yo creo que una empresa que nunca ha vivido una crisis no puede sentirse del todo orgullosa. ¿Cuáles son las razones para penetrar el mercado norteamericano de software? Nuestro principal motivo fue para soportar las crisis económicas que se daban cada sexenio en México. No te voy a negar que otro factor importante fue el simple gusto de decir “sí podemos”. Un beneficio que inicialmenwww.softwareguru.com.mx “Nuestro principal reto es lograr que los clientes vean a México como un jugador en esta industria”. te no contemplamos, es todo lo que hemos aprendido y nos hemos desarrollado. El grado de exigencia del mercado norteamericano te obliga a elevar tu nivel de calidad. ¿Consideras que el interés de las empresas nacionales por incursionar en el mercado norteamericano provoque que se descuide el mercado local? No lo veo así. Al contrario, el que las empresas busquen internacionalizarse hace que se desarrollen, mejorando su oferta y calidad, y eso beneficia al mercado interno. ¿Cuál es la principal dificultad que encuentran para vender en Estados Unidos? Nuestro principal reto es lograr que los clientes vean a México como un jugador en esta industria. Los clientes primero escogen el país al que van a enviar trabajo, y ya después escogen proveedores dentro de ese país. El mercado le apuesta a un país, porque con el país vienen una serie de factores como distancia, horario, estabilidad, etc. Cuando se hacen las evaluaciones, el principal punto débil de México es la poca cantidad de proveedores. Softtek puede ser una buena opción, pero una empresa no hace una industria. www.softwareguru.com.mx ¿Qué opinas sobre la industria mexicana de software en términos de colaboración? Afortunadamente cada vez somos más los que nos damos cuenta de que para tener éxito a largo plazo, debemos colaborar. En nuestro caso, tenemos un programa de apoyo a PyMEs desarrolladoras de software, en el que las integramos en proyectos y las capacitamos para que se desarrollen. Al principio las empresas desconfían y piensan “algo ha de traer Softtek”, pero lo que pasa es que necesitamos desarrollar la industria nacional para poder vender en el extranjero. En sí, creo que la colaboración en esta industria ha mejorado bastante en los últimos años. Las asociaciones juegan un papel importante, y el gobierno también ha ido propiciando un ambiente adecuado a través de ProSoft. ro para pagarle a la gente durante esas seis quincenas. Para las empresas de esta industria es difícil obtener financiamiento por medios tradicionales, ya que no contamos con muchos activos que nos respalden, sino que al ser una industria intensiva en conocimiento los principales activos son intangibles. ¿Crees que en México se deberían dar apoyos gubernamentales a esta industria? Sí. Creo que lo más importante son apoyos financieros para sustentar el flujo de efectivo. Lo que pasa es que en esta industria, tú comienzas un proyecto y al mes de estar trabajando empiezas a facturar, y luego de ahí pasan sesenta días para que recibas tu pago. Entonces necesitas ver de dónde sacas dine- ¿Qué mensaje le dejas a nuestros lectores? Están en un sector con enormes oportunidades, lo cual implica un gran reto y compromiso. No necesitan irse al extranjero a buscar trabajos de alto nivel. Desde aquí pueden atraer oportunidades de desarrollo no sólo para ustedes sino para muchos otros. Todo esto no se da por sí solo, hay que cultivarlo y debemos hacerle frente a este reto. El siguiente rubro tiene que ver con la promoción del país. Con esto me refiero a posicionar a México como un jugador en la industria mundial. Adicionalmente hay otras cosas que se pueden lograr si se tiene más en mente a esta industria. Por ejemplo, el año pasado Aeroméxico cerró un trato para comprar muchísimos aviones a Boeing. ¿No crees que se hubiera podido acordar algo de reciprocidad para que enviaran algo de trabajo a México? MAR-ABR 2005 19 EN PORTADA Centros de Desarrollo de Software Un Nuevo Paradigma Por Pedro Galván El desarrollo de software actualmente es una actividad lenta, cara y propensa a errores que generan defectos y problemas de usabilidad, desempeño y seguridad. Según las estadísticas, menos de la tercera parte de los proyectos de software son exitosos en términos de alcance, calidad, tiempo y presupuesto. A lo largo de los años se han dado algunas mejoras en productividad, principalmente a través de la mejora de los lenguajes y herramientas, pero aún así seguimos desarrollando software casi de la misma manera que hace una década. Nuestros métodos y prácticas realmente no han cambiado, como tampoco lo han hecho los costos y riesgos. 20 MAR-ABR 2005 www.softwareguru.com.mx La clave para aclarar esta discusión es entender la diferencia entre economías de escala y economías de alcance. La demanda global de software ha aumentado constantemente en los últimos diez años, y aumentará a un ritmo mucho mayor durante la próxima década, dirigida por las fuerzas de la nueva economía, el creciente rol del software en la sociedad moderna y nuevas plataformas como dispositivos móviles y dispositivos inteligentes para el hogar. Ahora podemos entender los problemas en la comparación de otras industrias con la de software. No es posible generar economías de escala en el desarrollo de ningún producto, ya sea físico o virtual. Sin embargo, podemos buscar lograr economías de alcance a través de la industrialización del desarrollo de software. Esto nos presenta un problema de capacidad para satisfacer la demanda. No somos la primera industria en enfrentar tal problema, otras ya lo han superado. Lo lograron al evolucionar de la artesanía, donde los productos se hacen desde cero por individuos o pequeños equipos, hacia la manufactura, donde un amplio rango de variantes se ensambla rápidamente de acuerdo a componentes reutilizables creados por diferentes proveedores y a través de máquinas se automatizan las tareas repetitivas. Estas industrias estandarizaron sus procesos, diseños y empacado, utilizando líneas de producción para facilitar la reutilización, y cadenas de suministro para distribuir el costo y riesgo. Esto es a lo que llamamos industrialización. Centros de Desarrollo de Software ¿Se Puede Industrializar el Desarrollo de Software? Este ha sido un tema de amplia discusión desde hace tiempo. ¿Pueden aplicarse a la industria de software los patrones de industrialización comunes? ¿Somos una industria especial o diferente a las demás? La clave para aclarar esta discusión es entender las diferencias entre las economías de escala y de alcance. La reutilización sistemática puede generar ambas. Estos dos efectos son bien conocidos en otras industrias; aunque reducen el tiempo y costo, y mejoran la calidad de los productos, difieren en la manera en la que producen estos beneficios. • Las economías de escala surgen cuando se producen varias instancias idénticas o copias de un mismo producto. Se crea un diseño, junto con sus instancias iniciales (prototipos) a través de un proceso intensivo en recursos, llamado desarrollo, que es llevado a cabo por ingenieros. Posteriormente se crean muchas instancias adicionales, llamadas copias, a través de un proceso llamado producción, que es realizado por máquinas o mano de obra barata. Con el objetivo de aumentar la productividad, disminuir los costos y elevar la calidad de los productos y servicios ofrecidos a los clientes, recientemente se ha hecho popular el modelo de operación de “centros de desarrollo de software”. Lo que busca este modelo es generar economías de alcance en el desarrollo y mantenimiento de software. ¿Y las fábricas de software? El término fábricas de software se hizo popular hace unos años, cuando se inició el esfuerzo de industrializar el desarrollo de software para bajar costos y mejorar calidad. Sin embargo, en la mayoría de los casos, los proveedores que se etiquetaban como fábricas se limitaban a desarrollar software de manera tradicional, pero en sus propias instalaciones en lugar de las del cliente. Este modelo puede llegar a brindar beneficios de costo, pero son marginales. Lo que diferencía un centro de desarrollo del concepto manejado como “fábrica de software”, es la búsqueda de economías de alcance. Vale la pena notar que Microsoft también está usando el término fábricas de software para identificar su estrategia de desarrollo de software empresarial. Ver “Tendencias de Construcción” en la página 27. A continuación les presentamos tres ejemplos de empresas pioneras en México con el modelo de centro de desarrollo de software (CDS). • Las economías de alcance surgen cuando varios diseños similares pero distintos se producen de manera colectiva. En la manufactura de automóviles, por ejemplo, se generan varios modelos de automóvil con ciertas similitudes al combinar diseños existentes de subcomponentes como el chasis, interiores, transmisión, etc. Las variaciones entre modelos se generan por diferencias entre algunas características, como el motor, por ejemplo. Así que las mismas prácticas, procesos, herramientas y materiales se utilizan para diseñar distintos productos. MAR-ABR 2005 21 EN PORTADA Softtek Con más de 2,500 personas en 10 países, Softtek es la empresa privada de servicios de TI más grande en Latinoamérica. La firma ha estado en operación por más de 20 años y da servicio a clientes corporativos en todos los mercados en los que opera.Softtek se ha convertido en una fuerte alternativa a los servicios offshore en el mercado de Estados Unidos, segmento dominado por empresas de la India. Al explotar el concepto Near Shore, Softtek es el líder de este segmento en América. Recientemente Softtek concluyó la integración de GE Ddemesis, empresa adquirida a General Electric a finales de 2003, realizó la apertura de un Centro de Entrega de Servicios en Azcapotzalco, D.F., con lo cual suma ya tres centros de desarrollo en México (además de Monterrey y Aguascalientes), dos centros de desarrollo en Brasil y uno más en España, destinado a atender el mercado europeo. Especialización Los servicios de Softtek están divididos en tres grandes rubros: • Servicios Relativos a Aplicaciones, como desarrollo a la medida, mantenimiento de sistemas existentes, help desk y testing. • Servicios de Soporte a Infraestructura, como administración de redes, servidores y seguridad. • Outsourcing de Procesos de Negocio, que gira alrededor de la mejora y digitalización de procesos de negocio. Modelo de Entrega Los servicios de Centro de Desarrollo de Softtek están orientados primordialmente a atender las necesidades de empresas globales, mediante el modelo Near Shore. analizando los resultados para mejorar continuamente. El resultado es software de muy alta calidad, desarrollado en tiempo y costo. A nivel mundial, menos de 10% de las organizaciones evaluadas han alcanzado el nivel 5. La cultura Six Sigma, que se encuentra incrustada en Softtek, consiste en un método de administración orientado al cliente y sustentado en datos que permite lograr excelencia en procesos de negocio. La digitalización de los procesos se logra al utilizar la suite de productos de IT Governance Center de Mercury, lo cual permite tener consistencia en todos los procesos de la organización. Principales Retos La sola idea de una empresa mexicana de servicios de TI proporcionando servicios a empresas Fortune 100 en Estados Unidos, es una novedad. Softtek ha hecho frente exitosamente a las preocupaciones de sus clientes con respecto a la disponibilidad de recursos calificados en México, las barreras idiomáticas, entregas a tiempo y calidad. Los principales retos que Softtek enfrenta son: • Disponibilidad de profesionales con dominio del idioma inglés y el grado de especialización que se requiere en un ambiente globalizado. • Carencia de más jugadores en México con los niveles requeridos para competir en un mercado global, ya que esto se ve reflejado en una baja percepción de México como jugador en la industria. Asimismo, Softtek está aprendiendo a aprovechar el hecho de que México es el segundo socio comercial de Estados Unidos, comprando productos y servicios con un valor superior a $100 mil millones de dólares al año, lo que representa más de veinte veces lo que adquiere India. Perspectiva a Futuro Modelo de Calidad Los tres elementos de calidad de Softtek (CMM Nivel 5, Six Sigma y Digitalización) interactúan de manera tal que permiten entregar al cliente elementos de control, confiabilidad, predictibilidad y mejora continua. Las organizaciones CMM Nivel 5 son altamente maduras, debido a que sistemáticamente utilizan procesos cuantificables y controlables, 22 MAR-ABR 2005 Alejandro Camino, alto ejecutivo de Softtek, nos comenta lo siguiente: “Softtek continuará la estrategia de fortalecimiento de su modelo Near Shore, mediante el robustecimiento del modelo de calidad, y la apertura de más centros de desarrollo en los polos que proporcionen las condiciones de disponibilidad y fortalecimiento de recursos humanos competitivos a nivel mundial. Asimismo, continuaremos ampliando nuestro portafolio de servicios, principalmente en el segmento de outsourcing de Procesos de Negocio, donde vemos la mayor oportunidad de crecimiento. Nuestro objetivo es continuar el rol de liderazgo de una nueva generación de profesionistas mexicanos altamente competitivos y con mentalidad global.” www.softwareguru.com.mx certum certum es una empresa mexicana con más de dieciocho años de experiencia en desarrollo de software a la medida. Nació en la ciudad de Puebla en 1986 bajo el nombre de Servicios en Informática y Desarrollo de México. En 1988 cambió su domicilio a la ciudad de México, ya que sus clientes se encontraban en esta ciudad. En 1994 comienza a participar en un proyecto de la ISO llamado SPICE (Software Process Improvement and Capability dEtermination). El Director General, Arnoldo Díaz, fue nombrado ISO Project Editor y Miembro del Consejo de Administración del consorcio. Asimismo, la Herramienta de Evaluación de Procesos de Software desarrollada por esta empresa fue denominada Official SPICE Assessment Instrument. Esta iniciativa a través del tiempo dio como resultado la creación del estándar internacional para la evaluación de procesos de software ISO/IEC 15504. En 1997 lanza la marca certum, que significa “certeza” en latín. El nombre obedece a la intención de atacar uno de los problema fundamentales de la industria del desarrollo de software: la incertidumbre. Incertidumbre alrededor de lo que llaman el trinomio: calidad, tiempo de entrega y costo. Planta física de certum Especialización certum se ha enfocado desde su fundación al desarrollo de software a la medida, lo que los ha llevado a trabajar en diversos sectores tanto en el mercado nacional como en el extranjero. La forma de trabajo es a través de proyectos, los cuales son cuidadosamente seleccionados, ya que siempre buscan se encuentren alineados a la estrategia de sus clientes expresada en su Red de Servicios. Sus soluciones son independientes de la plataforma, y cuentan con experiencia en una gran diversidad de tecnologías. Modelo de trabajo Existen tres dimensiones de componentes estructurales: • Operación - planta física, herramientas de desarrollo y herramientas de soporte. • Control - procesos estándar para el desarrollo de los productos. • Desarrollo de Personas - evaluaciones de desempeño, planes de carrera y compensación. certum ha desarrollado diversas herramientas propietarias para diseño de servicios, repositorio de activos, seguimiento a proyectos y administración de incidentes, por mencionar algunas. La planta física fue diseñada bajo el paradigma de líneas de producción. A cada cliente se le dedica una línea, organizada siempre a través de proyectos, y trabajando bajo sistemas y herramientas comunes. Esta organización trabaja bajo el concepto de puertas abiertas (no hay privados ni para los Directores), lo que facilita la comunicación y crea un ambiente mucho más integrado. www.softwareguru.com.mx Modelo de calidad Desde 1993 certum adoptó el paradigma de modelos de capacidad de procesos. A lo largo de su historia ha obtenido certificaciones ISO 9001 y una evaluación Bootstrap - equivalente a SW-CMM nivel 3 gracias al estándar ISO 15504, siendo la primera empresa en Latinoamérica en obtenerlo. Su modelo de calidad se basa en métricas de: productividad (puntos de función por persona mes), calidad (defectos por puntos de función), satisfacción de cliente, costos, etc. Esto es un elemento clave para lograr la mejora sostenible de sus procesos y productos. Retos y Perspectiva a Futuro certum ha tenido una trayectoria complicada y retadora pero muy interesante y enriquecedora, que finalmente los ha posicionado con resultados exitosos, y por esta razón piensa continuar en la misma línea. Entre sus retos presentes está superar la lucha cultural alrededor de los procesos y métricas, continuar la búsqueda por mejorar aún más la capacidad de sus procesos, a fin de poder ver esto reflejado en valor superior para sus clientes a través de implementar con éxito los servicios que ofrecen. MAR-ABR 2005 23 EN PORTADA IBM Centro de Diseño y Desarrollo de Software Una de las mayores concentraciones de ingenieros de software del país se encuentra en el Centro de Diseño y Desarrollo de Software de IBM, el cual tiene más de 950 profesionistas dedicados al diseño, desarrollo y pruebas de software. Este centro tiene oficinas tanto en la ciudad de México como en Guadalajara y desde ellas atiende a múltiples clientes nacionales e internacionales. Esta historia comenzó hace quince años, cuando solamente había ocho personas desarrollando software de bajo nivel en la división de laboratorios de IBM. Los resultados que dieron, así como el aprendizaje de desarrollar software en base a una metodología con gran énfasis en calidad, provocaron que esta operación creciera poco a poco tanto en cantidad como en alcance. Desde hace cinco años operan dentro de la organización de AMS (Application Management Services), que a su vez es parte de la división IBM Global Services, ofreciendo una amplia variedad de servicios de TI. Oferta La oferta del centro de desarrollo de IBM es muy amplia. Aquí se diseña, desarrolla y da mantenimiento tanto a software para productos de IBM, como aplicaciones para clientes externos. Entre los servicios provistos están: • Servicios profesionales especializados • Desarrollo de software a la medida • Integración de aplicaciones • Mantenimiento • Outsourcing de infraestructura, administración de aplicaciones y soporte técnico • Consultoría en desarrollo de software Una parte vital de la oferta de valor de IBM es la red mundial que tiene a su disposición. Esto le permite conseguir recursos altamente especializados, así como acceso a la base de conocimiento de proyectos de todo el mundo. Modelo de Calidad IBM es reconocida como una empresa pionera en modelos de calidad y procesos, y el Centro de AMS México no es la excepción. Fueron la primera organización en México en alcanzar el nivel 5 de SW-CMM, y en diciembre de 2004 fueron reconocidos con el nivel 5 de CMMi. La mejora continua es parte fundamental de la operación diaria de IBM. Como comenta Carlos Cevallos, Gerente del Centro de Desarrollo: “lo difícil no es desarrollar software, sino hacerlo con un proceso repetible y mejorarlo continuamente”. Retos y Perspectiva a Futuro Uno de los principales retos de IBM es responder a los requerimientos de la economía globalizada. Para lograrlo, los centros de desarrollo de IBM en todo el mundo se integran bajo una misma forma de trabajo para ofrecer a sus clientes globales un mismo servicio en cualquier lugar del mundo. Acerca de AMS Latinoamérica Modelo de Entrega El modelo de entrega realmente es una oferta muy flexible que se adapta a lo que los clientes necesitan. En algunos casos IBM se encarga por completo de los proyectos, mientras que en otros solamente realiza funciones específicas como la coordinación, desarrollo o pruebas. En el caso de servicios como help desk, IBM puede hacerse cargo de todo el manejo, o solamente a partir de cierto nivel (por ejemplo, el cliente maneja el primer nivel de soporte y los niveles posteriores son realizados por IBM). 24 MAR-ABR 2005 La organización de AMS se dedica al desarrollo, mantenimiento y pruebas de aplicaciones de software, ayudando a complementar los múltiples ofrecimientos del área de servicios, enfocada tanto a clientes nacionales como internacionales. En Latinoamérica, AMS cuenta con aproximadamente 3 mil profesionistas de TI trabajando en diferentes áreas de productos, aplicaciones y servicios de Software: 950 localizados en México, 1,200 en Brasil, y el resto en Argentina y la Región Andina. El Centro de AMS en México obtuvo el nivel CMMI 5 el pasado diciembre 2004, Brasil espera obtener el nivel CMMI 5 para el segundo cuarto del 2005, y Argentina y la Región Andina buscan obtener el nivel CMMI 4 durante el 2005. www.softwareguru.com.mx La TI del Futuro se hace en México para el La Evolución de las Fábricas de Software Por Karla García Mundo La lucha de las empresas de tecnología de información en México por exportar sus servicios y productos al mercado mundial y en particular a los Estados Unidos, no es un tema reciente pero definitivamente constante y en crecimiento. El proceso no ha sido sencillo para los que hemos participado en esta transformación, pero definitivamente a los que hoy competimos con la India, Filipinas, Europa del Este, por mencionar algunos, nos es importante vernos finalmente mencionados. En un estudio reciente de Gartner Research, México aparece como una segunda alternativa después de la India para proveer outsourcing a nivel mundial. Venimos de un pasado tormentoso, en donde un país con un apellido primordialmente energético y de agricultura, tiene hoy en día una producción de más de 20,000 egresados en carreras relacionadas con informática anualmente. Estos profesionistas en conjunto con el gobierno y empresas privadas, hemos trabajado incansablemente en cambiar percepciones a nivel global, mejorar idiomas, capacidades tecnológicas y de infraestructura, y lo más importante, definir ofertas que tengan sentido para el mercado. Reportes como los emitidos por Forrester Research en el 2004, donde llaman a México “una fuerte alternativa de solución global en outsourcing” avalan nuestro esfuerzo. Un mercado en crecimiento sostenible a pesar de toda la prensa negativa generada en el mercado norteamericano, donde por lo menos 30% de las empresas con algún tipo de programa de outsourcing a nivel mundial continuarán incrementando en por lo menos dos cifras porcentuales el volumen de trabajo enviado al extranjero. ¿Le apostamos como país a la oferta de Near Shore? Absolutamente. Y no sólo a Near Shore como el modelo pionero de trabajo remoto sino en general a la industria de TI hecho en México. El trabajo de tecnología desarrollado en lo que inicialmente conocimos como fábricas de software —hoy centros globales de desarrollo—, está evolucionando para poder satisfacer las diferentes necesidades que demanda el mercado con sorprendentes resultados positivos. www.softwareguru.com.mx Existen tres áreas primordiales asociadas a los centros globales de desarrollo (CGD) que están cambiando de manera drástica y moldeando este negocio: capital humano, la propuesta de valor y las ofertas. Capital Humano En un mundo global donde ya la demanda personal y de competitividad sobre los profesionistas es mucho más alta que hace cinco años, algunos de los aspectos críticos que deben de estar enfrentando los egresados hoy de manera inmediata son: segundos idiomas en formas fluidas, foco en procesos de negocio, experiencia vertical por industria, dominio tecnológico, visión de negocio, habilidades de negociación, colaboración en equipo, trabajo remoto en tiempo real y comunicación en un mundo global, así como entendimiento de las diferencias culturales y su impacto en los negocios; esto por mencionar algunos. El apoyo de las instituciones educativas es crítico para satisfacer la masa crítica demandada y hoy en día los centros de desarrollo debemos de trabajar pro-activamente en la alineación de los programas académicos con las necesidades del mercado, ya que la evolución tan vertiginosa de las soluciones tecnológicas hace que un programa tradicional de licenciatura ya no sea suficiente. La capacidad de proveer recursos a la misma velocidad que la India —la potencia mundial en offshore— puede “hacer o deshacer” un CGD. Propuesta de Valor La propuesta de valor es el mensaje más importante que un centro global de desarrollo puede llevar al mercado; es la oportunidad del proveedor de transformar sus ventajas y diferenciadores a una expresión clara y cuantificable; en valor para el cliente. ¿Cuál es nuestra propuesta de valor? ¿En qué somos únicos?, ¿Cómo proporcionamos valor a los clientes de nuestros clientes? ¿Cuál es nuestra práctica que más valor deriva a nuestros clientes en ahorro, satisfacción y optimización? Aspectos como riesgo, comunicación efectiva, costo, productividad, medidos en base a modelos estadísticos de Six Sigma, son hoy en día el mínimo estándar requerido, tomado de la mano con modelos de CMM/CMMI, entre otros. ¿Qué tan fuerte y sostenible es nuestra propuesta de valor? Gigantes como General Electric e IBM, quienes cuentan con sus propios centros de desarrollo cautivos en la India, y pioneros en las tendencias y modelos operativos globales de offshore, determinan el comportamiento del resto de los proveedores y por lo tanto obligan a nuestras propuestas de valor a modificarse y evolucionar rápidamente para responder a los cambios. Esto exige una estructura organizacional de CGD muy delgada donde podemos ver relaciones de staff a operación de 1 a 6 ó 1 a 7. En general, operaciones orientadas a procesos y muy agresivas en sus niveles de productividad, para poder alinear estrategias cada año a bajo costo. MAR-ABR 2005 25 EN PORTADA La propuesta de valor es el mensaje más importante que un Centro Global de Desarrollo puede llevar al mercado. Oferta El tema de la oferta es algo que poco a poco se ha ido refinando. En la industria de tecnología de información, el área de Product Management tiene relativamente poco de haberse convertido en un área estratégica y que trabaja directamente con el CEO de la organización; ha tomado un significado importante y de resonancia. Hace siete años, cuando nace el concepto de fábrica en Monterrey con Softtek Near Shore Services, el acercamiento inicial al mercado fue el de proporcionar manos calificadas y entrenadas para hacer trabajos de alto volumen, como codificaciones, validaciones, migraciones y pruebas repetitivas, todo a bajo costo o a una tarifa horaria competitiva en comparación con los consultores tradicionales. Aún y cuando esto ha representado un buen comienzo, ese modelo ha quedado en el pasado. Los clientes hoy en día buscan un modelo que los lleve fase a fase a incrementar su productividad, lo cual va directamente relacionado con la oferta que compra a un proveedor. un modelo altamente efectivo operacionalmente para el negocio. Una vez que el cliente ha logrado su primera reducción de costos, estará buscando mejora y estabilización operacional y de proyectos, así como soluciones que mitiguen el riesgo de manera directa y que estén pensadas para atacar problemas específicos. Esto le traerá otra serie de beneficios que se darán a través de la optimización de procesos de negocio, minimización del riesgo y mejor desempeño de sus proveedores y CGD a través de todo su programa de outsourcing, así como a través del establecimiento de niveles de servicio más estrictos. Esta fase demanda mayor madurez por ambas partes e iniciativas más innovadoras en términos de digitalización de procesos y decisiones basadas en métricas. De manera general, observemos las fases a las cuales tendrá que responder un CGD para poder crecer y competir en este mercado: 1. La primera fase de servicio de un CGD es el outsourcing. En este esquema se ofrece al cliente optimizar costo a través de la subcontratación de su staff de TI interno. Esto brinda beneficios inmediatos, ya que el costo directo es recortado a través de tarifas más bajas. El año que un cliente decide usar un programa de outsourcing (Near Shore u offshore) como estrategia de reducción de costos, los resultados típicamente son inmediatos y el retorno de inversión (ROI) es muy satisfactorio para los accionistas. La desventaja es que este beneficio es difícilmente mejorable después de un par de años. 2. La segunda fase consiste en transformar el programa de outsourcing a 3. La tercera fase se da cuando ya se tiene capacidad de proveer soluciones globales para cualquier problema desde cualquier región. El crecimiento estratégico y la globalización darán la pauta para establecer centros de desarrollo en donde tenga sentido para los clientes, con un modelo estándar de oferta y operativo. Estos modelos estarán soportados tanto por organizaciones físicas como virtuales y donde los expertos están disponibles de manera presencial y remota en un tiempo de respuesta y calidad comparables para cualquier usuario de nuestros clientes, con conocimiento del proceso de negocio. Este modelo de alta productividad le traerá a las organizaciones la siguiente ola de valor a su negocio en su programa de outsourcing, donde la madurez de los mecanismos de comunicación y control en tiempo real, son lo que primordialmente sostendrán este modelo de entrega. Hoy en día el mercado maduro está en la fase dos, buscando modelos híbridos de CGD y demandando métricas de control a sus proveedores; preparándose para dar el salto. El reto hoy es vender México como potencia en la arena de TI, vender una propuesta de valor única que complemente, que compita y que reditúe en utilidad y poco riesgo; crecer la propuesta de valor de Near Shore, promocionar el costo total de la relación de negocio con un país en el mismo huso horario y proveer la masa crítica para satisfacer la necesidad del mercado de Estados Unidos. Un portafolio de ofertas competitivas y la creencia de que los profesionistas mexicanos podemos competir en cualquier plano con los profesionistas de la India, son las herramientas primordiales para nuestros centros globales de desarrollo. Me preguntan constantemente en las Universidades, en foros gubernamentales estatales y federales y en algunas empresas de TI, si vale la pena apostarle a esto en los próximos diez años. Analistas predicen que para el 2007 el gasto en servicios de TI realizado a través de mecanismos globales de outsourcing, como offshore y Near Shore, sobrepasará los 50 billones de dólares. Definitivamente quiero que México se lleve una rebanada de ese mercado. ¿Alguien gusta? Karla García es Directora de Product Management para Softtek US, donde es responsable de la definición de los productos y servicios para el mercado de Near Shore®. Sus principales actividades están enfocadas a promover el mercado de Tecnología en México hacia el extranjero, continuar el crecimiento en el mercado de Estados Unidos y desarrollar ofertas para los nuevos mercados de Near Shore® en Softtek como lo son Europa y Brasil. Karla es egresada de LSCA del Tecnológico de Monterrey. 26 MAR-ABR 2005 www.softwareguru.com.mx Tendencias en Construcción de Software Por Luis Daniel Soto Bjarne Stroustrup, creador de C++, señaló: “Nuestra civilización opera sobre el Software”... Luego de una inversión global valorada en más de 10 mil billones de dólares, la Tecnología de Información está presente en nuestro día a día en forma transparente. Esto sin considerar la integración de procesos entre empresas, que apenas ha iniciado. En Estados Unidos la construcción de software es un negocio, en Europa una ciencia y en Asia un arte. Lo que es claro es que la construcción de software es un proceso complejo. Muchos “nuevos alquimistas” han buscado la forma de industrializar el software, pero se ha determinado que crear software no es un proceso de manufactura; es una combinación de ciencia, arte, ingeniería y habilidades de administración de proyectos. Las tendencias son diversas: • Procesos para la construcción de software. • Plataformas, herramientas y lenguajes. • Esquemas de desarrollo: internamente, contratado al exterior, o por una comunidad. • Filosofía: el diseño es la aplicación; diseño independiente de plataforma; descripción de la intención y no la secuencia de pasos; distintas formas de licenciar y distribuir el código, etc... En este breve espacio, deseamos describir una tendencia a considerar: fábricas de software orientadas a dominios específicos. Aunque mucho se ha criticado el uso del término “fábrica de software”, lo que resulta evidente es que en todo caso una fábrica no produce por igual mesas que llantas o tazas. Los generalistas recomiendan partir de un proceso de desarrollo genérico (como es el caso del Rational Unified Process) para construir cualquier tipo de aplicaciones (v.gr. dispositivos portátiles, aplicaciones de misión crítica o aplicaciones para aviones comerciales). Existe otra visión: Microsoft, Unisys, Borland y otras empresas consideran que la simplificación en construir el software reside en una combinación de elementos acotados a un tipo de problema en particular, llamado “dominio” específico: • Herramientas de construcción de software generales pero personalizadas con “diseñadores visuales” orientados a un dominio específico (Dichas herramientas además incluirán elementos de “nueva generación” como instrumentación, desarrollo en equipo, soporte asistido a metodologías para construcción de software, etc.). • Lenguajes de programación específicos a dominio (Domain Specific Languages o DSL). • Arquitecturas de software probadas, para dominio específico y frameworks (Un framework es la solución parcial a un tipo de problema particular). • Guías y procesos para dominios específicos. • Encapsular el conocimiento de negocio específico y conocimiento técnico asociado. Por ejemplo, una fábrica de software para el sector financiero podrá producir soluciones de banca, aseguradoras, CRM y más con entidades de dicha vertical. Todo lo repetible se automatizará en lugar de crearse nuevamente para cada aplicación. Estos son algunos ejemplos de empresas que están adoptando y promoviendo la estrategia de fábricas de software para dominios específicos: Unisys tiene fábricas de software para 20 industrias verticales; Borland desarrolló lenguajes específicos a dominio basados en diagramas UML 2; Kinzan provee fábricas de software horizontales para desarrollo web; Nationwide tiene lenguajes específicos a dominio para desarrollos en sector finanzas; y Siemens cuenta con fábricas de software para dispositivos médicos Para mayor información sobre herramientas para dominio específico, pueden consultar: lab.msdn.microsoft.com/vs2005/ teamsystem/workshop/dsltools/ Estimados lectores, ¿a ustedes cuál corriente les parece más sensata? Luis Daniel Soto Maldonado es Director de Evangelización en Nuevas Tecnologías en Microsoft México. Entre sus funciones actuales están la administración de la relación con el Gobierno Mexicano para el desarrollo de la industria de software (ProSoft). Luis Daniel es jurado del “Gran Orden de Honor al Mérito Autoral” en software del INDAUTOR/SEP y fundador de diversas asociaciones de Tecnologías de Información (TI) relacionadas a inteligencia competitiva, administración del conocimiento y construcción de software. Luis Daniel Soto es Ingeniero en Sistemas de la Fundación Arturo Rosenblueth y ganó el primer lugar en el concurso nacional para software de exportación en 1989. www.softwareguru.com.mx Educación en la Economía del Conocimiento Modelos y Tendencias Por Guillermo Rodríguez En tiempos como los nuestros, las reglas del juego han cambiado radicalmente con respecto al pasado cercano y lo único constante es el cambio. Cada vez más, la influencia de los mercados toma una vertiginosa importancia en el bienestar de una nación entera dentro del ambiente globalizado que nos envuelve. L as naciones latinoamericanas en particular, han mantenido un esquema de competencia basado en mano de obra barata y abundancia de recursos naturales. Las consecuencias ya se han hecho sentir con gran impacto. La razón es muy sencilla, los recursos naturales son agotables y muy susceptibles a cambios de precio en el mercado mundial. Por otro lado, la mano de obra latinoamericana ya no se puede clasificar entre la más barata del mundo, aunque es lógico reconocer que hay grandes diferencias entre los países que constituyen este bloque. Los mercados internacionales demandan ahora que las empresas sean ágiles, basando su competitividad en su capacidad de determinar lo que ocurre en su ambiente y adaptarse al cambio de manera flexible y oportuna. Es así como se requiere que las empresas basen sus estrategias en la innovación y en la administración del conocimiento. Muchas naciones consideradas como economías emergentes han reconocido esta necesidad y generado estrategias nacionales que les permitan enfocarse a nichos específicos de competitividad basada en el capital intelectual. ¿A qué podemos adjudicar el gran éxito que han tenido estas iniciativas? Un factor común en ellas es el alto grado de articulación entre los sectores educativo, empresarial y gubernamental. Cada uno de estos sectores tiene muy claro su papel dentro de la estrategia nacional de desarrollo. En todos los casos se ha apostado muy fuertemente a la educación como base de producción del 28 MAR-ABR 2005 capital intelectual requerido para este tipo de iniciativas. En el ramo de las tecnologías de información y electrónica, a través de los años se han diferenciado muchos perfiles de acción de esta profesión. Sin embargo la relación entre ellas cada vez se hace más patente en cualquier campo profesional. Peter J. Denning, de la Universidad George Mason, hizo un análisis muy detallado de la necesidad que tienen los profesionistas en el corazón de la computación, como son los dedicados a las ciencias computacionales y la ingeniería de software, de relacionarse con otras disciplinas para poder ofrecer soluciones de calidad aplicables en la vida diaria. Perfiles Internacionales Muchas organizaciones en el mundo han realizado un gran esfuerzo por definir los parámetros mínimos que deben cumplir los perfiles profesionales en esta industria. Tal es el caso de la Association for Computer Machinery (ACM), la Association for Information Systems (AIS), el Institute for Electrical and Electronic Engineers (IEEE) y el modelo europeo de Career Space. La orientación norteamericana, basada en los modelos producidos por los primeros tres organismos mencionados, identifica cinco perfiles profesionales, variando de la visión más física de la tecnología, hasta la visión más organizacional. Dichos modelos son: 1. Ingeniería Computacional.– Orientada al funcionamiento y diseño de sistemas electrónicos computacionales, es decir al desarrollo y manejo óptimo de hardware. 2. Ciencias Computacionales.– Con una orientación científica matemática para la construcción y administración de software de base, que permita el funcionamiento óptimo del equipo y sus periféricos. Además, es el indicado para la producción de nuevo conocimiento en las áreas de inteligencia artificial, visualización y gráficas y otras áreas de corte matemático y científico. 3. Ingeniería de Software.– Especializado en la construcción de software de alto nivel de aplicación general o específica, orientado al usuario final. 4. Tecnología de Información.– Responsable de la planeación de capacidades e implantación de una infraestructura tecnológica confiable y robusta. Tiene sólidas bases teóricas de la arquitectura tecnológica y bases administrativas para su optimización. 5. Sistemas de Información.– Orientación a la estrategia tecnológica como fundamento de la estrategia competitiva de las organizaciones. Tiene sólidas bases administrativas y conocimiento aplicativo de las tecnologías. Cabe señalar que la construcción de los perfiles de ACM/IEEE/AIS obedece a la visión primariamente académica de los integrantes de estas asociaciones. Sin embargo, existe un componente importante de la industria. A diferencia de la visión norteamericana, los perfiles europeos de Career Space no definen profesiones como tales, sino puestos necesarios en las organizaciones y basan su composición en las opiniones de este consorcio de empresas de alta tecnología, donde se encuentran representados www.softwareguru.com.mx Los programas educativos deben tomar en cuenta las necesidades de su contexto los más importantes proveedores de tecnologías de información en sus diferentes ramos. Career Space define 18 perfiles de puesto, clasificados dentro de cuatro grupos principales. La composición de los perfiles europeos es como se indica a continuación: 1. Telecomunicaciones a. Ingeniería de radiofrecuencia b. Diseño digital c. Ingeniería de comunicación de datos d. Diseño de aplicaciones para el procesamiento digital de señales e. Diseño de redes de comunicación 2. Productos y sistemas f. Diseño del producto g.Ingeniería de integración, implantación y pruebas h. Especialista en sistemas 3. Software y servicios i. Desarrollo de software y aplicaciones j. Arquitectura y diseño de software k. Diseño de multimedia l. Consultoría de empresas de TI m. Asistencia técnica 4. Intersectoriales n. Dirección de marketing de TI o. Dirección de proyectos de TI p. Desarrrollo de investigación y tecnología q. Dirección de TI r. Dirección de ventas de TI La descripción de estos perfiles es muy completa, incluyendo el perfil del aspirante a los www.softwareguru.com.mx puestos, así como su actividad profesional y su posible ruta de desarrollo en las empresas. A diferencia de los perfiles norteamericanos, no es importante la carrera cursada, sino las competencias que se requieren para una inserción laboral y un desarrollo profesional satisfactorios, desde una perspectiva principalmente originada en la industria. Perfiles en México En nuestro país, el principal responsable de la definición de perfiles profesionales es la Asociación Nacional de Instituciones de Educación en Informática (ANIEI), que agrupa a cientos de instituciones de educación media superior, técnica superior, universitaria y superior. Los perfiles de ANIEI muestran cierto grado de correspondencia con los de la visión norteamericana. Sin embargo, tiene contempladas las necesidades de la industria por medio de la definición de perfiles paracurriculares que giran alrededor de los académicos y sugieren la formación de competencias específicas que demanda la industria. Con esta estrategia, se busca disminuir el tiempo y dinero que invierten las organizaciones para convertir a los egresados de las universidades en profesionistas productivos dentro de las mismas. Los perfiles definidos por la ANIEI son los siguientes: 1. Informática 2. Ingeniería de Software 3. Ciencias Computacionales 4. Ingeniería Computacional Actualmente, la ANIEI se encuentra trabajando la definición de un quinto perfil, el de Ingeniería Telemática. Los perfiles curriculares de estas organizaciones revisten una gran importancia, ya que sirven como referencia para mecanismos acreditadores y certificadores. Así, la acreditación nacional hecha por el Consejo Nacional de Acreditación en Informática y Computación (CONAIC) a programas educativos de calidad en México, se fundamenta en los perfiles de la ANIEI. De modo similar, las acreditaciones realizadas por la Accreditation Board for Engineering and Technology (ABET) en Estados Unidos, hacen referencia a los perfiles de ACM/IEEE/AIS. En el ramo individual, el Centro Nacional de Evaluación (Ceneval) también basa la composición de sus exámenes de certificación en los perfiles de la ANIEI. Cabe mencionar que todos los perfiles son meramente referenciales, no normativos. Existe el riesgo de que las instituciones educativas tomen dichos perfiles como dogma y definan sus programas de estudio como una copia fiel de los perfiles. Esto constituye un gran error debido a que la intención muchas veces es asegurar la acreditación de sus programas. Un programa educativo debe considerar los perfiles como algo muy importante, pero no debe olvidar que es vital realizar un diagnóstico detallado de las necesidades de su propio contexto. Consultar a los empreMAR-ABR 2005 29 sarios y gobierno de su región es un factor importantísimo para poder atender las necesidades de la misma. La construcción de un programa de estudios debe articular una estrategia de impulso económico de la comunidad que la rodea. En el caso de universidades de corte nacional, la definición de programas debe obedecer la misma necesidad, pero tomando en cuenta las oportunidades y estrategias de desarrollo del país. Asimismo, las instituciones deben identificar sus fortalezas para ofrecer un valor agregado a sus egresados en los campos de especialidad en que posean un mayor dominio. Es un común denominador en las recomendaciones de todas las organizaciones la inclusión de un esfuerzo muy grande por generar profesionistas cultos y con una gran visión humanista. Esto responde a la clara importancia de proveer una visión de comunidad en los egresados, así como de proveerles una formación multidisciplinaria. Estas tendencias ya han empezado a ser incorporadas por las instituciones educativas. Por ejemplo, después de más de 35 años de haber incursionado en el ámbito de la educación de computación en México, el Tecnológico de Monterrey ha evolucionado su oferta educativa con un paradigma radicalmente distinto a las renovaciones periódicas que realizaba al menos cada cinco años, así redefiniendo su oferta educativa en una profesión integradora de Tecnologías de Información y Electrónica. Las carreras incluidas en esta oferta son las siguientes: 1. Ingeniería en Tecnologías Electrónicas, con concentraciones en Sistemas Digitales, Automatización y Robótica, Telecomunicaciones y Microelectrónica. Este profesionista es especialista en hardware y programación de bajo nivel y hace frente a los retos de innovación en dispositivos que permitan mejorar la competitividad en las industrias de manufactura y comunicaciones. Es vital desarrollar una estrategia educativa basada en el impulso de las tecnologías de información y electrónica Hacia Adelante La Asociación Nacional de Universidades e Instituciones de Educación Superior (ANUIES) generó una visión de la educación superior en México para el año 2020, donde estos factores se encuentran claramente fundamentados. Se enfatizan puntos neurálgicos como la necesidad de mecanismos que aseguren la calidad académica, el uso de modelos innovadores de educación y la importancia de la cooperación interinstitucional, tanto a nivel nacional como internacional. Asimismo, se destaca la importancia de facilitar la incorporación de los egresados al mercado laboral y de proporcionar salidas intermedias. En México existe una gran cantidad de programas relacionados con las tecnologías de información y electrónica que comparten nombres, pero carecen de homogenización en los objetivos y perfiles que abarcan. Esta confusión se transmite a los empleadores, quienes deben realizar su selección basándose en competencias, en lugar de en el nombre de las carreras. Las instituciones también deben ayudar al egresado a clarificar sus competencias, construyendo un portafolio de pruebas que permita evidenciar su perfil y facilite su certificación por organismos especializados. 2. Ingeniería en Tecnologías Computacionales, con concentraciones en Animación Digital, Ingeniería de Software, Redes y Seguridad, Sistemas Inteligentes y Arquitectura de Tecnologías de Información. Este profesionista se especializa en aplicaciones de software, proveyendo a las empresas de la administración adecuada de infraestructura que permita la continuidad de las operaciones de una organización de manera óptima. 3. Licenciatura en Administración de Tecnologías de Información, con concentraciones en Aplicaciones Multimedia, Inteligencia de Negocios y Mercadotecnia de Productos y Servicios de Tecnologías de Información. Este profesionista es un estratega tecnológico para las organizaciones, facilitando su competitividad y su adaptabilidad en mercados cambiantes. 4. Ingeniería en Tecnologías de Información y Comunicaciones, con acentuaciones en Electrónica, Computación e Informática. Este profesionista atiende necesidades de integración en las disciplinas de electrónica, computación e informática, teniendo un valor muy particular en comunidades pequeñas, así como en la pequeña y mediana empresa, misma que tiene un gran impacto en la productividad de naciones en desarrollo. Es importante notar que se incluyen núcleos muy importantes de formación humanística, además de mecanismos específicos de internacionalización, experiencia profesional, investigación y desarrollo emprendedor. La fórmula del Tecnológico de Monterrey no es para todos. Cada institución educativa debe actuar de acuerdo a las tradiciones positivas que la caracterizan, buscando capitalizar en sus logros y fortaleza, pero sin olvidar que los objetivos primordiales deben ser los siguientes: 1. Atender las necesidades de su comunidad inmediata, formando los profesionistas adecuados a las mismas. 2. Articular el desarrollo e implantación de sus programas con el sector productivo y gubernamental. 3. Proveer competencias específicas que faciliten su incorporación al sector productivo. 4. Proveer una educación multidisciplinaria, ya que así son los problemas del mundo. 5. Enfatizar la formación ética, humanística y de compromiso con la comunidad. 6. Apoyar el impulso económico de la región y del país, considerando el capital intelectual como agente activo de desarrollo. Sólo resta concluir que para garantizar el desarrollo nacional y poder enfrentar la competencia global, es vital desarrollar una estrategia basada en el impulso de las tecnologías de información y electrónica en nuestro país. Esta estrategia debe apostar al mejoramiento del sistema educativo nacional y a la formación de una verdadera sociedad de conocimiento, con capital intelectual competitivo internacionalmente y con visión multidisciplinaria y comprometida. Referencias • Denning, Peter J. (1998) Computing the Profession. Preparado para el libro Computer Science and Engineering Education, Tony Greening, Editor y para Educom Review, John Gehl, Editor. • Accreditation Board for Engineering and Technology (ABET) www.abet.org • Career Space www.career-space.com/cdguide/index.htm • Asociación Nacional de Instituciones de Educación en Informática (ANIEI) www.aniei.org.mx • Programas profesionales ITESM www.sistema.itesm.mx/va/profesional.htm El Dr. Guillermo Rodríguez es Director de Sistemas de Información en el Tecnológico de Monterrey, Campus Estado de México, donde se especializa en temas como Sistemas Estratégicos, Administración del Conocimiento y Transferencia de Tecnología. Guillermo participa de manera continua en conferencias internacionales, y en 1999 recibió el reconocimiento a la mejor conferencia en el Americas Conference on Information Systems. Es presidente fundador de la Asociación de Sistemas de Información de América Latina y el Caribe. 30 MAR-ABR 2005 www.softwareguru.com.mx CASO DE ESTUDIO MoProSoft MoProSoft® es un posible medio para las organizaciones que deseen lograr una evaluación exitosa en un modelo internacional como SW-CMM® MoProSoft® es un modelo de procesos de reciente creación, para la industria de software en México que fomenta la estandarización de su operación a través de la incorporación de las mejores prácticas en gestión e ingeniería de software. El objetivo de este modelo es mejorar la capacidad de los procesos de las empresas. La estructura de MoProSoft® considera tres categorías: Alta Dirección, Gestión y Operación. Establece un mecanismo para alinear las estrategias de las tres categorías. La categoría de Alta Dirección contiene el proceso de Gestión de Negocio. La categoría de Gestión está integrada por los procesos de Gestión de Procesos, Gestión de Proyectos y Gestión de Recursos. Éste último está constituido por los subprocesos de Recursos Humanos y Ambiente de Trabajo, Bienes, Servicios e Infraestructura y Conocimiento de la Organización. La categoría de Operación está integrada por los procesos de Administración de Proyectos Específicos y de Desarrollo y Mantenimiento de Software. MoProSoft® está disponible en la página www.software.net.mx Antecedentes Desde hace varios años, ULTRASIST ha realizado un esfuerzo de mejora incremental al adoptar las mejores prácticas de diferentes modelos internacionales. Como resultado, la Organización alcanzó el nivel de madurez 4 de SW-CMM®, utilizando a MoProSoft® como marco de referencia. en la Práctica Recomendaciones para su Implantación Por Ma. Julia Orozco y Claudia Alquicira Este artículo presenta la experiencia de la implantación de MoProSoft® en una empresa de desarrollo de software y resume un ciclo de mejora considerando desde la planeación estratégica hasta su valoración. Se explica cómo se usó el modelo como marco de referencia para las partes de gestión y operación y cómo se utilizó el qué y el cómo para la parte de Gestión de Negocio. En la planeación estratégica del 2003, la Organización decidió buscar una evaluación en algún modelo reconocido en la industria. Entre los modelos candidatos se encontraban ISO 9000:2000, MoProSoft y SW-CMM®. En ese momento MoProSoft® tenía la característica de ser el documento base de la norma mexicana para la industria de software, pero por ser de reciente creación, no contaba con su método de evaluación, ni con un organismo que respaldara la aplicación del mismo. La decisión que se tomó para adoptar el modelo orientado en la industria mexicana y lograr una evaluación reconocida, fue obtener al menos un nivel 3 de SW-CMM® a través de MoProSoft®. Problemática La Organización contaba con una serie de procesos para el desarrollo y mantenimiento de software, administración de proyectos y para establecer la mejora continua de los mismos. El desempeño de los procesos de desarrollo y mantenimiento se medía a través de indicadores, lo que permitió robustecer estos procesos pero no proporcionaban el tipo de información que necesitaba saber la alta dirección para medir el cumplimiento de los objetivos estratégicos. Durante varios años la Organización establecía un Plan Estratégico para definir las metas, pero no con base en un proceso documentado. Existía una brecha entre las metas de negocio y las de los procesos de desarrollo de software por no contar con una retroalimentación bidireccional. Es decir, la dirección consideraba los resultados de la valoración de los procesos para realizar esta actividad de pla- neación, mientras que el Grupo de Procesos se preocupaba por mejorar los procesos con base en los resultados de la evaluación anterior (defectos fugados, defectos por caso de uso, plataforma de trabajo, retrabajo, entre otros) pero no se consideraban las expectativas de la alta dirección (utilidad esperada, retorno de inversión, valor presente neto, tasa interna de retorno, entre otros). Experiencia en la Implantación MoProSoft® se utilizó para alinear las estrategias de la parte operativa con las expectativas de la alta dirección. El proceso de Gestión de Negocio se estableció formalmente en la Organización. Una vez revisada la misión, visión y valores de la Organización, se revisaron los objetivos estratégicos y se definieron indicadores que permitieran evaluar el cumplimiento. <Categoría> Alta Dirección <<Dir>> + Gestión de Negocio Aborda las prácticas de Alta Dirección relacionadas con la gestión del negocio. Proporciona los lineamientos a los procesos de la Categoría de Gestión y se retroalimenta con la información generada por ellos. Los objetivos estratégicos se agruparon en cuatro perspectivas como sugiere el Cuadro de Mando Integral (Balanced ScoreCard). Claudia Alquicira trabaja en Avantare Consutores como consultor en programas de mejora en organizaciones de desarrollo de software. Sus áreas de interés son la ingeniería de software, calidad y tecnología orientada a objetos. Claudia cuenta con una Maestría en Ciencias de la Computación y participó como ponente en el SEPG LA 2004 32 MAR-ABR 2005 www.softwareguru.com.mx En la Perspectiva Financiera se agruparon aquellos objetivos que tienen que ver con el cumplimiento de las expectativas de los accionistas. En la Perspectiva del Cliente los objetivos que nos llevan a satisfacer las necesidades de nuestros clientes. En la Perspectiva Interna los relacionados con la mejora de aquellos procesos en los cuales debemos ser excelentes, y finalmente, la Perspectiva de Aprendizaje y Crecimiento que considera los aspectos críticos para mantener la excelencia. Se definieron los procesos de negocio requeridos en la Organización para dar cumplimiento a los elementos del Plan Estratégico, la estructura organizacional se revisó y actualizó principalmente en lo que respecta al Grupo de Procesos definiendo responsables de procesos y especialistas. El Plan de Comunicación se instituyó como un mecanismo de difusión de los Planes a los miembros de la Organización. Se consideró un Proyecto de Inversión y se identificaron los proyectos internos y externos para dar cumplimiento a los objetivos. Como proyectos internos se establecieron el Proyecto de Mejora y el de Infraestructura y Fortalecimiento. Se establecieron las estrategias para dar cumplimiento a los objetivos estratégicos y se definieron metas e indicadores para poder valorar el avance. <<Categoría>> Gestión <<Ges>> Gestión de Procesos <<Ges>> Gestión de Proyectos <<Ges>> Gestión de Recursos Establecer los procesos de la organización, en función de los procesos requeridos identificados en el Plan Estratégico. Así como definir, planear, e implantar las actividades de mejora en los mismos. Categoría de Gestión La alta dirección dio la responsabilidad al Grupo de Procesos para detallar los Procesos de Negocio y definir los procesos de apoyo para cumplir con los objetivos estratégicos planteados. tablecieron fueron aquellas que permitieran retroalimentar a la Organización en cuanto al cumplimiento de los objetivos estratégicos. El aspecto más importante que se tomó en cuenta para definir una métrica fue que el costo de producirla estuviera balanceado con el beneficio potencial que será ganado en la organización. El registrar, recolectar y evaluar métricas lleva implícito un costo, que para la mayoría de las empresas mexicanas de desarrollo de software puede resultar prohibitivo si no se garantiza un retorno de inversión a corto plazo. Si bien es sabido que no se puede mejorar lo que no se puede medir, también es cierto que hay que empezar por mejorar aquellos procesos que impacten a las metas prioritarias de la Organización. La implantación del proceso de Gestión de Negocio dio orden y disciplina a las actividades de la alta dirección, lo que permitió establecer la alineación de las metas de negocio con las de Gestión y Operación. La estrategia que estableció el Grupo de Procesos para implementar los cambios en la Organización, consistió en realizar las actividades en forma iterativa e incremental de acuerdo a las prioridades establecidas. El aspecto más importante para definir una métrica fue que el costo de producirla estuviera balanceado con el beneficio potencial que será ganado en la organización Categoría de Gestión y Operación El Grupo de Procesos realizó un análisis de brecha de las prácticas establecidas en la Organización con respecto a las establecidas en las otras categorías de MoProSoft®. Como resultado se obtuvo que la Organización contaba con procesos que cubrían gran parte de la categoría de Gestión y toda la categoría de Operación. Con base en el análisis realizado, se priorizaron los objetivos con la Dirección y se elaboró el Plan de Procesos que contiene la estrategia para definir, implantar, medir y evaluar los procesos. Las métricas que se eswww.softwareguru.com.mx Al finalizar cada incremento se evalúo el cumplimiento de los objetivos establecidos en el Plan Estratégico. Estas evaluaciones fueron más frecuentes que las establecidas en los años anteriores por ser un modelo de procesos nuevo, que impactaba a toda la Organización. Para este proyecto, se acordó contar con el apoyo de consultores internos y externos con conocimientos en CMM® y MoProSoft® para asegurar el apego a los modelos. Durante la definición y el ajuste del proceso se establecieron las diferencias significativas entre los modelos MoProSoft® y SW-CMM®. Con respecto al proceso de Gestión de Proyectos, se dividió en dos procesos, Ventas y Oficina de Proyectos, tomando como base las prácticas ya establecidas en la Organización. Para los procesos de Gestión de Recursos y sus subprocesos asociados, se estableció una arquitectura diferente a la definida por MoProSoft®. La Organización contaba con un proceso que considera un Plan de Capacitación para cumplir con las metas planteadas en los objetivos estratégicos de aprendizaje y crecimiento; considera los requerimientos de los proyectos, las sugerencias del personal e incluye el desarrollar las habilidades que se desea que adquieran los miembros de la Organización, como es el trabajo en equipo, habilidades gerenciales, y manejo de conflictos. La capacitación que plantea se ofrece en diferentes modalidades: interna, externa, seminarios sobre nuevas tendencias tecnológicas y capacitación en la práctica. El proceso de Recursos Humanos establecido por MoProSoft® se maneja dentro del Proceso de Gestión de Proyectos por la Oficina de Proyectos. En él se establecen los elementos a considerar en la selección, asignación, aceptación, evaluación y desempeño de los recursos humanos. Para la evaluación de los miembros de la Organización se provee un mecanismo que permite valorar su crecimiento en dos direcciones: la horizontal con respecto al desarrollo de habilidades y la vertical con respecto a los conocimientos y responsabilidades. El objetivo de esta evaluación es permitir un crecimiento gradual de los miembros de la Organización para cumplir con los objetivos estratégicos planteados en la perspectiva de aprendizaje y crecimiento. En cuanto al Plan de Infraestructura y Ambiente de Trabajo, se considera dentro del Proyecto de Infraestructura derivado del Plan Estratégico. Si bien la Organización contaba con una Base de Conocimiento con la información referente a las Categorías de Gestión y de Operación, no consideraba la generada por la Alta Dirección. Hoy en día el repositorio considera toda la información de la Empresa. SW-CMM® a Través de MoProSoft® Como resultado de este esfuerzo, la empresa pudo comprobar que es factible implantar MoProSoft® y que es un posible medio para las organizaciones que deseen lograr una evaluación exitosa en un modelo internacional como SW-CMM®. Para lograrlo es necesario cuidar las prácticas establecidas en CMM® y no consideradas en MoProSoft®, por ejemplo: • En el proceso de Gestión de Negocio, escribir una política que contenga los lineamientos que rijan los procesos definidos consideranMAR-ABR 2005 33 CASO DE ESTUDIO <Categoría> Alta Dirección <<Dir>> + Gestión de Negocio <<Categoría>> Gestión Optimizado Administrado Categorías <<Ges>> Gestión de Procesos Definido Repetible Inicial marco de referencia. do los compromisos establecidos en el nivel que se desea alcanzar de SW-CMM®. • En el subproceso Recursos Humanos y Ambiente de Trabajo del proceso de Gestión de Recursos, definir un mecanismo de renuncia a la capacitación asignada. • En el subproceso de Conocimiento de la Organización del proceso de Gestión de Recursos, incluir las prácticas de administración de configuración establecidas en CMM®. • MoProSoft® no considera el Grupo de SQA que maneja CMM®, pero sí establece verificaciones y validaciones a productos y a procesos, sin embargo, para cumplir con CMM® hay que conformar un Grupo de SQA que sea independiente al proyecto. • En cada uno de los procesos de MoProSoft incluir las verificaciones de las actividades por el SQA de acuerdo a cada área clave de CMM®. • En las evaluaciones externas (proceso de gestión de procesos) considerar un SQA externo. Ambos modelos llevan al mismo fin, pero cada uno sigue un camino diferente. Fortalezas de MoProSoft® Gestión de Negocio, sirve como vínculo entre la parte de operación, gestión y dirección para que los esfuerzos de la organización estén alineados para alcanzar la misión y visión. Para empresas de reciente creación pueden utilizar el qué y el cómo que define MoProSoft® <<Ges>> Gestión de Recursos <<Categoría>> Operación <<Oper>> Administración de Proyectos Específicos Diagrama 1: MoProSoft® como <<Ges>> Gestión de Proyectos CMM como un medio que facilite la transición a un modelo internacional. Los modelos internacionales por lo general consideraran una gran variedad de roles que una micro y pequeña empresa mexicana no puede implantar. MoProSoft® no restringe a ningún rol para que pueda ser realizado por una misma persona, o por diferentes personas dentro del mismo proyecto y en la medida que la empresa crece, éstos pueden paulatinamente ser asignados a personas diferentes. Se recomienda cuidar en la medida de lo posible que una persona no sea juez y parte. Esto permite a la micro y pequeña empresa crear la cultura de procesos y fomentar la disciplina. Aunque MoProSoft® fue pensado principalmente para la pequeña y mediana empresa, puede ser usado como marco de referencia para toda empresa que se inicia en un programa de mejora, para asegurar que las estrategias a lo largo de la organización están alineadas y para asegurar que los procesos ya establecidos, contemplan las mejores prácticas. Recomendaciones Generales para Implantar MoProSoft® Es importante conservar las mejores prácticas con las que cuenta una organización y, en caso de ser requerido, ajustarlas para el cumplimiento con el propósito, los <<Oper>> Desarrollo y Mantenimiento de Software objetivos, la descripción del proceso establecidos por el modelo MoProSoft®. Como ejemplo, definir un proceso de Gestión de Recursos que incorpore los elementos de los subprocesos de Recursos Humanos e Infraestructura, Bienes, Servicios y hacer un proceso en Gestión de Conocimiento de la Organización. La participación de consultores con experiencia en el modelo que se desea implantar siempre es recomendable. En MoProSoft® por ser un modelo de reciente creación que no cuenta con experiencia documentada, se considera indispensable. Para las organizaciones que inician un programa de mejora, el proceso de Gestión de Procesos podría ser el primero a definir e implantar puesto que con este proceso se genera el resto de los procesos. Se recomienda una estrategia incremental de acuerdo a las prioridades de la organización que permite reducir los riesgos que conlleva la introducción de muchos cambios y permita a la Dirección observar resultados a corto plazo. La responsabilidad de asignación de recursos humanos a los proyectos se puede atribuir al responsable de Gestión de Proyectos y la parte de registro de recursos humanos a un área administrativa. Ma. Julia Orozco ocupa la Dirección Técnica en la empresa Ultrasist. Es Matemática con estudios de Maestría en Ciencias de la Computación. Ha impartido cursos en universidades, gobierno e iniciativa privada y ha sido ponente en diversos foros internacionales. 34 MAR-ABR 2005 www.softwareguru.com.mx PRÁCTICAS PRUEBAS M i intención al escribir artículos es poder compartir con los lectores mis experiencias y visión sobre el control de calidad del software en la Argentina, su problemática, y lo que he observado sobre su evolución a lo largo de la última década. a darle un lugar preponderante dentro del ciclo de vida de desarrollo del software. Sin embargo, aunque ya hemos recorrido un largo camino, no es poco ni simple lo que queda por delante. Una Mirada Retrospectiva A pesar de que la actividad ya está en gran medida incorporada al “quehacer cotidiano” de muchas de las organizaciones, esto no significa que como disciplina esté madura, aún queda mucho por mejorar, refinar, expandir y aprender. Permítanme entonces, señalar algunos de los puntos sobre los que debemos trabajar. Durante los últimos años de mi trabajo en sistemas, me he dedicado con exclusividad al control de calidad de software. Una de mis principales actividades ha sido el reclutamiento y entrenamiento de ingenieros de pruebas. Esta tarea no me ha resultado sencilla, dado que es un mercado donde dicha actividad era considerada, hasta hace unos años, como una profesión de segunda categoría, a la cual se podía acceder: • Como castigo por haber cometido algún error o tener un bajo rendimiento en otro área de sistemas de la organización. • Como la vía de ingreso de principiantes para trabajar en sistemas y prepararse para mejorar su desarrollo profesional incipiente, el cual desembocaría en el área de desarrollo. • Como pasajeros en tránsito, que colaboraban en el área de pruebas mientras el área de recursos humanos buscaba para ellos un nuevo proyecto de desarrollo, porque su asignación anterior había terminado. Sólo unos pocos accedimos por elección a esta singular profesión, recientemente considerada como tal. A partir del año 2000, y como resultado de haber mostrado a clientes internos y externos, el valor de la actividad, la percepción sobre la misma está cambiando considerablemente. La industria comienza a reconocerla, a valorarla, y T La Problemática de la Actividad El factor humano en la calidad.- La calidad debe ser liderada desde la cúpula de la organización. Necesita ser patrocinada y respaldada a lo largo del tiempo. Además, es responsabilidad de todos y de cada uno de los integrantes de la organización y no sólo del área de calidad. El entrenamiento.- Pocas organizaciones tienen previsto un plan de capacitación para el área de pruebas. Es habitual capacitar a los desarrolladores, pero de alguna manera es como si realizar pruebas fuera un don con el que se nace, en lugar de tratarse de una disciplina que se aprende con capacitación y trabajo metodológico. Realizar pruebas es una disciplina de la ingeniería y no un arte. Sigue persistiendo el prejuicio de que probar es algo que cualquiera puede realizar profesionalmente, sin entrenamiento. Pretender cambiar certeramente esta idea es difícil; aplica una cita de Einstein: “Es más fácil desintegrar un átomo que un prejuicio”. Definitivamente cuanto mayor y mejor sea el entrenamiento que recibe un ingeniero de pruebas, mejor será su desempeño y el valor que podrá agregar al producto a probar. RANSITANDO HACIA EL CAMBIO LA PROBLEMÁTICA DEL INGENIERO DE PRUEBAS Por Alfonsina Morgavi Los vínculos participativos.- No es frecuente que se genere una relación participativa entre ingenieros de pruebas y desarrolladores. Es usual, encontrar dos equipos enfrentados “pasando el juego (el software) del lado del campo del adversario”, lo que desde luego no es beneficioso para el proyecto. Alfonsina Morgavi es socia fundadora de QASoft en Argentina, donde se desempeña como consultora en Aseguramiento de Calidad de Software. Dedicada desde el año 1989 exclusivamente a esta actividad. Uno de sus principales intereses es el entrenamiento de ingenieros de pruebas y el coaching en proyectos de la especialidad. Alfonsina está certificada por el Quality Assurance Institute como Ingeniera en Control de Calidad de Software, así también como Consultora en Implementación ISO 9001:2000 por la Fundación Cane. Es miembro activo del subcomité de normas de calidad de software del Instituto Argentino de Racionalización de Materiales (Miembro ISO, COPANT y AMN). 36 MAR-ABR 2005 www.softwareguru.com.mx La calidad debe ser liderada desde la cúpula de la organización ¿Cuándo probar?.- La prueba, por lo general, es incluida sólo al final del desarrollo, cuando hay un “ejecutable” a evaluar. Entonces, por ser la última actividad (antes de la prueba de aceptación y de la entrega del producto), las etapas previas de desarrollo suelen tomar para sí, parte del tiempo destinado a la etapa de pruebas. Esto significa que es la actividad cuyo tiempo es más factible que se recorte, poniendo en peligro la cobertura de las pruebas y, por ende, la calidad del producto. Sin lugar a dudas, el momento más apropiado para el comienzo de las actividades de pruebas es al inicio del proyecto, lo antes posible, y desde la etapa de requerimientos. Se trata de no llegar al final del desarrollo con un producto que por ejemplo, funciona correctamente “en el escritorio”, pero que no responde a los requerimientos especificados y no le permitirá al usuario llevar adelante la operatoria de su negocio en el “mundo real”. El final del proyecto es, definitivamente, el momento menos adecuado para enterarnos de esto. Por unanimidad, los libros de la especialidad dicen claramente: “Test often and test soon”, “realice pruebas con frecuencia y tempranamente”. Acerca de los Procesos Es prioritario definir la prueba como un proceso, a efectos que, toda la organización tenga en claro cuál es su propósito, las actividades que se realizan, los roles y responsabilidades, dejando en claro que no es la solución “para enderezar” un proceso de desarrollo desordenado y caótico. Como contracara, un proceso de desarrollo ordenado y disciplinado permitirá realizar una mejor evaluación del estado de los productos, permitiendo a los ingenieros de pruebas poner el foco de atención sobre sus debilidades. Algunas Conclusiones Ya no buscamos la famosa bala de plata, pero sólo porque ninguno de nosotros ha conocido a alguien que alguna vez la haya visto, y sin ánimo de ser aguafiestas, tampoco deberíamos reemplazar la ilusión de la bala de plata por fórmulas mágicas, porque tampoco nadie las ha visto. Es tiempo de crecer y cambiar, de diseñar planes de acción realistas, que nos permitan mejorar nuestros procesos de control de calidad. Es tiempo de capacitarnos para enfrentar un mercado que día a día, pide lo mejor. Y por último y a modo de cierre, quisiera rescatar las palabras de John Ruskin: “La calidad nunca es un accidente; siempre es el resultado del esfuerzo de la inteligencia”. PRÁCTICAS ARQUITECTURA ESTRUCTURA DE PAQUETES Por Ramés Rodríguez ORGANIZANDO LOS ELEMENTOS DEL SISTEMA E n el número anterior expusimos la forma de abordar la complejidad de un sistema J2EE a través de su organización en capas conceptuales. En esta ocasión aplicaremos este método para organizar los elementos de un sistema. Es decir, definiremos una jerarquía de paquetes para contener las clases que componen el sistema. Aunado a la aplicación de las capas conceptuales, y con el objeto de diseñar un Sistema J2EE de la vida real, aplicaremos el patrón MVC (ver Fundamentos, pg. 42) a esta arquitectura que será diseñada. ¿Qué beneficios ofrece esto? Reducir la duplicidad del código, facilidad de mantenimiento y una arquitectura robusta, la cual puede ser empleada como plantilla en el diseño de un Sistema J2EE. Diseño de la Arquitectura Una vez que hemos entendido la importancia del Patrón MVC en sistemas que poseen varios tipos de clientes, ha llegado el momento de mostrar en dónde encaja el método de organización en capas conceptuales. La organización consiste en la estructura de paquetes en que globalmente será dividido un sistema. Para esto nos apoyaremos en un sistema cuya arquitectura de referencia será basa- La organización consiste en la estructura de paquetes que agruparán a los elementos da en los Patrones MVC y Fachada (un patrón donde se provee una interfaz sencilla hacia objetos o subsistemas complejos). La figura 1 muestra la arquitectura de este sistema. En la imagen se puede observar que se cuenta con un solo cliente, el cual es una aplicación JFC/Swing, y además de que el sistema, desde la perspectiva del cliente, sólo está dividido en tres partes: Vista, Controlador y Modelo. Figura 1. Una arquitectura basada en los Patrones MVC y Fachada. Si analizamos con detalle la arquitectura encontraremos varios puntos interesantes. El objeto Modelo, desde la perspectiva del Controlador, funciona como un Proxy de toda la Lógica de Negocios tanto local como remota (EJB’s). Gracias a esto, al Controlador le resulta transparente el hecho de que está obteniendo datos de una fuente local (un archivo a través del ModeloLocal) o remota (Servidor de Aplicaciones a través del ModeloRemoto); desde su perspectiva, debe de relacionarse exclusivamente con un solo objeto, el Modelo. Ahora definiremos la estructura de paquetes que será organizada a través de las capas conceptuales. Primero definiremos el espacio de nombres, éste viene dado por el nombre de dominio en Internet de la organización, pero en orden invertido. Por ejemplo, mx.edu.loyola sería el espacio de nombres para el dominio loyola.edu.mx. Después hay que agregar el acrónimo del Sistema a nuestro espacio de nombres. Por ejemplo, SIL es el acrónimo de un proyecto que lleva por nombre “Sistema Integral Loyola”. Posteriormente se define un paquete para cada una de las cinco capas conceptuales. La plantilla se muestra en el Listado 1. mx.com.miempresa.misistema. Presentacion Aplicacion Servicios Dominio Persistencia Listado 1. Esquema de paquetes genérico. Ramés Rodríguez Vargas es Desarrollador de J2EE desde el 2002. Su especialidad es el empleo de software libre aplicado a Java y el diseño de arquitecturas orientadas a objetos. Actualmente se desempeña como Arquitecto de Sistemas en la Universidad Loyola del Pacífico. 38 MAR-ABR 2005 www.softwareguru.com.mx El Listado 2 muestra cómo sería la estructura de paquetes para el ‘SIL’, el Sistema de ejemplo: mx.edu.loyola.sil.presentacion mx.edu.loyola.sil.aplicacion mx.edu.loyola.sil.servicios mx.edu.loyola.sil.dominio mx.edu.loyola.sil.persistencia Como la Lógica de Negocios está programada a través de EJBs, se declara el paquete ‘ejbcontainer’ en cada una de las tres últimas capas. En la de servicios se almacenarán nuestras fachadas; en la de dominio, el modelo conceptual; y en la de persistencia, todas aquellas clases que colaboran en el almacenamiento de nuestro modelo conceptual. Listado 2. La estructura de paquetes en un Sistema Real. Los paquetes para clientes y la Lógica de Negocios Los clientes cuya arquitectura está basada en el Patrón MVC sólo emplearán las tres primeras capas (presentación, aplicación y servicios) para almacenar las clases de los objetos Controlador, Vista y Modelo. Las otras dos capas son exclusivas para la programación del lado del servidor, sin embargo, la capa de servicios es compartida tanto por el cliente como por el servidor. El siguiente paso es agregar en cada una de estas tres capas un paquete para cada tipo de cliente. Por ejemplo, el Listado 3 muestra al SIL con dos tipos de cliente: uno de tipo inalámbrico basado en MIDP (Mobile Information Device Profile) y una aplicación JFC/Swing. servicios.ejbcontainer mx.edu.loyola.sil. persistencia.ejbcontainer Listado 4. El paquete para los EJB’s. Los Paquetes para los Módulos del Sistema Un sistema suele dividirse en módulos cohesivos que encapsulan una funcionalidad muy específica e independiente de otros módulos. El siguiente paso es agregar los paquetes para los módulos en cada uno los paquetes de tipo de cliente y en el de los EJBs. Por ejemplo, el SIL puede estar dividido en dos módulos: cobranza y control escolar. El Listado 5 muestra como deben estar organizados estos paquetes. midp. presentacion. midp jfc mx.edu.loyola.sil. aplicacion. servicios. midp jfc Listado 3. La estructura para dos tipos de cliente. cobranza controlEscolar jfc. midp jfc dominio.ejbcontainer cobranza controlEscolar ejbcontainer. cobranza controlEscolar Listado 5. Los Módulos en cada uno de los clientes y en el paquete de los EJB’s. Un sistema suele dividirse en módulos cohesivos que encapsulan una funcionalidad muy específica e independiente de otros módulos. www.softwareguru.com.mx PRÁCTICAS ARQUITECTURA Lo que aquí se ha expuesto es una plantilla de referencia que puede servirnos como guía al momento de crear un nuevo sistema J2EE Conclusión Lo que resta es definir dónde se deben almacenar cada uno de los objetos que componen nuestro sistema en base al Patrón MVC. Las clases que componen las vistas son almacenadas en la capa de presentación; el controlador en la de aplicación; y el modelo en la de servicios. El Listado 6 muestra las clases que formarían parte de un módulo y de un cliente. La figura 2 muestra cómo se comportaría este módulo en tiempo de ejecución. Las Vistas mx.edu.loyola.sil.presentacion.jfc.cobranza.Ventana1 Hemos mostrado la forma en que las capas conceptuales nos pueden auxiliar en la organización de un sistema cuya arquitectura referencial está basada en los patrones MVC y Fachada. Todo esto nos ofrece beneficios tales como: mejorar la organización del código, desacoplar el modelo de negocios con el de presentación, un fácil mantenimiento, reutilización de código y facilidad al momento de agregar un nuevo tipo de cliente. mx.edu.loyola.sil.presentacion.jfc.cobranza.Ventana2 mx.edu.loyola.sil.presentacion.jfc.cobranza.Ventana3 El Controlador mx.edu.loyola.sil.aplicacion.jfc.cobranza.Controlador Lo que aquí se ha expuesto es una plantilla de referencia que puede servirnos como guía al momento de crear un nuevo Sistema J2EE. Esperamos que les pueda ser de utilidad. El Modelo mx.edu.loyola.sil.servicios.jfc.cobranza.Modelo mx.edu.loyola.sil.servicios.jfc.cobranza.ModeloLocal mx.edu.loyola.sil.servicios.jfc.cobranza.ModeloRemoto La Fachada mx.edu.loyola.sil.servicios.ejbcontainer.cobranza.ServiciosDeCobranza El Modelo de Dominio mx.edu.loyola.sil.dominio.ejbcontainer.cobranza.Entidad1 mx.edu.loyola.sil.dominio.ejbcontainer.cobranza.Entidad2 mx.edu.loyola.sil.dominio.ejbcontainer.cobranza.Entidad3 La Persistencia mx.edu.loyola.sil.persistencia.ejbcontainer.cobranza.DACB1 mx.edu.loyola.sil.persistencia.ejbcontainer.cobranza.DACB2 mx.edu.loyola.sil.persistencia.ejbcontainer.cobranza.DACB3 Listado 6. Algunas de las clases que conforman un solo Módulo: cobranza. Figura 2. El módulo en operación. Referencias: Marinescu, Floyd. EJBTM Desing Patterns. Wiley, 2002. Singh, Stearns, et al. Designing Enterprise Applications with the J2EE Platform, Second Edition. Addison-Wesley, 2002. 40 MAR-ABR 2005 www.softwareguru.com.mx CÁTEDRA Y MÁS COLUMNA Centros de Desarrollo de Software La Opción para México L a industria del software interviene en todos los procesos que habilitan a la nueva “economía digital”, siendo el software elemento inherente de las tecnologías de información. De acuerdo a las características de cada empresa, éstas desarrollarán su software o lo adquirirán de otras compañías o divisiones. Existen varios esquemas para adquirir software de manera externa: software general (off-the-shelf ), outsourcing, nearsourcing y centros de desarrollo. El que me ocupa hoy es este último. Un centro de desarrollo de software (CDS) es una empresa que ofrece servicios de desarrollo de software a la medida, garantizando estándares internacionales. Ya se ha comentado anteriormente en esta columna sobre la necesidad de que en el país se fomente la industria del software. Dado esto, ¿qué tan apropiado o conveniente es que un desarrollador de software se consolide como CDS? Comento algunos hechos que se han estado dando sobre este tema en México: a) La Secretaría de Economía de México lanzó en el año 2003 el Programa para el Desarrollo de la Industria del Software (ProSoft). El objetivo fijado es lograr exportaciones de cinco mil millones de dólares para el año 2010. b) Tal como comenta Rocío Ruiz Chávez, Subsecretaria de Comercio Interior de la Secretaría de Economía, la industria a nivel mundial está interesada en encontrar países con bajos costos y mano de obra calificada. Están conscientes en la Secretaría de Economía que se debe crear primero el marco legal para los productos que desarrollen estos centros, así como un mercado interno que consuma los productos. Apunta también al hecho de que en México hay únicamente cuatro sectores compradores de soluciones de software: industria automotriz, bancos, gobierno y las grandes cadenas comerciales. Comenta que se ha creado el Instituto del Desarrollo de la Economía Digital, que promoverá la creación del mercado interno de productos. c) Los datos de la Cámara Nacional de las Industrias Electrónicas de Telecomunicaciones e Informática (CANIETI), revelan que el gasto en TI como porcentaje del PIB apenas llega en México a 1.3%. Sin embargo, en países como Brasil y Argentina alcanza 2.7%; mientras que en Chile se eroga 2.2%. Ni hablar de economías grandes como la de Gran Bretaña, que destina 4.5%. Se ha comentado anteriormente que la industria del software debe mirar primero hacia el mercado interno del país, antes de fijarse en objetivos de exportación. Ante www.softwareguru.com.mx este punto de vista, la idea de establecer CDSs resulta atractiva, ya que un centro establecido puede entonces hacer el movimiento al mercado de exportación. En mi opinión, se requiere de un programa nacional de desarrollo en el que el gobierno mexicano se ocupe de ser el promotor de la industria mexicana, a la vez que también sea el principal consumidor de productos de software desarrollados a la medida. Se deben crear las condiciones, además de generar la demanda por productos, para que valga la pena el establecer estos centros en el país. Ya contamos con CDSs en Aguascalientes, Baja California, Guanajuato, Jalisco, Morelos, Nuevo León, Puebla, Sinaloa, Sonora y Yucatán. Si el interés por apalancarse en Tecnologías de Información para apoyar la operación de sus negocios no se propaga entre las PyMEs, si por el otro lado no tenemos suficientes cuadros técnicos que estén egresando de las diversas opciones educativas en el país para satisfacer las necesidades de los CDSs, y si además tenemos un marco regulatorio incipiente para la creación de dichos centros con todo y los recursos requeridos, pienso que no habrá forma de exportar a los niveles que ProSoft se propone lograr en algunos años. Deben primero generarse las condiciones internas en el país, que ayuden a madurar el modelo de negocios propio, que no copie o imite a otros países, para que en segundo término podamos incidir en exportaciones de productos de software. No podremos atraer suficientes inversiones en este sentido si no hay demanda interna y no hemos podido afinar un esquema de producción requerido para el exigente mercado exterior. El Dr. Ralf Eder Lange es Profesor ConsultorExtensionista del Departamento de Sistemas de Información en el Tec de Monterrey, Campus Estado de México, donde ha sido Director de los Programas de Graduados en Ciencias Computacionales y Sistemas de Información, y Director del Centro de Investigación en Informática. Sus áreas de especialidad incluyen Reingeniería de Procesos y Administración de Innovación Tecnológica. Ralf es miembro fundador de la Asociación Latinoamericana y del Caribe de Sistemas de Información (LACAIS). Estamos ante una oportunidad histórica de coordinar esfuerzos, que esperamos nos rindan los frutos deseados. Nos debemos de poner a trabajar para orquestar un enfoque viable. Existe la necesidad y se requiere actuar a tiempo para cubrirla. La consolidación de CDSs en el país presenta un gran potencial económico y de desarrollo que no debe ser pasado por alto. - Ralf Eder Referencias Fábricas de software: "Cómo se inventa una nueva industria" www.microsoft.com/mexico/gobierno/entrevistas/Rocio_Ruiz.asp Varela, Rogelio. "CANIETI propone inversión en TI para elevar productividad" www.canieti.net MAR-ABR 2005 41 FUNDAMENTOS El Patrón MVC Separando Responsabilidades para Brindar Flexibilidad Por Alfredo I. López En general, un patrón es la descripción de una solución a un problema común. En el desarrollo de software se utilizan mucho los patrones, ya que nos permiten aprovechar y replicar las soluciones que los expertos han generado. Uno de los patrones más comunes y utilizados en las aplicaciones de software modernas es el patrón Modelo-Vista-Controlador (Model-View-Controller en inglés), conocido por sus siglas como MVC. Alfredo López nos explica cuál es el problema que resuelve este patrón y cómo es que lo logra. En muchas ocasiones nos encontramos desarrollando aplicaciones donde toda las reglas del negocio, accesos a fuentes de datos y hasta código de presentación se encuentran en una sola clase, librería o, peor aún, en una sola página (hablando de JSP, ASP o similar). La experiencia nos ha demostrado que estas aplicaciones son muy difíciles de mantener y casi imposibles de reutilizar adecuadamente. • Requiere desplegar su información en diferentes tipos de clientes. La figura 2 muestra un ejemplo de un sistema que requiere proveer información a través de clientes web, móviles, applets y web services. Variaciones del Patrón Las variaciones del MVC suelen girar en torno a las diferentes opciones de implementación para las vistas. Solución El patrón MVC consiste en separar las diferentes responsabilidades en una aplicación, en elementos de tres tipos: • Modelos que contengan el estado (datos) y los mecanismos para alterarlo. • Vistas que desplieguen información o la comuniquen a otros sistemas. • Controles que administren los eventos que afectan a los modelos y escojan las vistas adecuadas para desplegar los resultados. Esto se aprecia en la siguiente figura. Aplicaciones El MVC es muy útil cuando tenemos componentes o subsistemas con una o más de las siguientes características: 42 MAR-ABR 2005 necesidades. Es por esto que se necesita visión y un análisis cuidadoso para implementar el elemento de forma que no se impongan restricciones específicas a una aplicación sobre él. • Tiene múltiples comportamientos debido a distintos usos que se puedan dar a la lógica de negocios. • Se requiere readaptar o reutilizar bajo distintas circunstancias con un mínimo de trabajo adicional. Ventajas y desventajas El patrón MVC proporciona una forma excelente de hacer que un elemento sea flexible y adaptable a distintas situaciones. Esta flexibilidad puede ser aprovechada ya sea de manera estática o dinámica. Estática cuando se agregan nuevas clases de vistas o controladores, y dinámica cuando los objetos de vista o controlador se escogen en tiempo de ejecución. Usualmente, el mayor desafío del MVC consiste en determinar la base; es decir, definir interfaces adecuadas para que interactúen modelo, vistas y controlador. A menudo, como en la mayor parte del software, un elemento MVC se desarrolla para satisfacer un conjunto específico de • Push vs. Pull.– Un esquema “push” (empujar) es aquel en que el modelo envía actualizaciones de datos hacia las vistas, mientras que “pull” (jalar) es cuando las vistas obtienen información del modelo conforme lo van requiriendo. • Vistas múltiples.– Un modelo puede proporcionar información a más de una vista. Esto resulta muy útil en algunas implementaciones de interfaces gráficas, porque los mismos datos deben llevar algunas veces a distintas representaciones. • Vistas de sólo lectura.– No todas las vistas necesitan un controlador. Algunas proporcionaran sólo una represtación visual de los datos del modelo, pero no soportan ningún cambio en el modelo. Con esto concluimos nuestro estudio acerca de este patrón. Esperamos que les traiga beneficios en sus próximos proyectos. Referencia: Stelting, Stephen & Maassen, Olav. Applied Java Patterns. Prentice Hall, 2002 www.softwareguru.com.mx TECNOLOGÍA Candados de Hardware Protección y Flexibilidad Por Ariel García La piratería es un mal que aqueja a todas las compañías dedicadas al desarrollo de software. Recientes estudios de la BSA (Business Software Alliance) indican que la piratería de software en México se ubica en 56% y que va en aumento. En un estudio de impacto económico de abril de 2003, IDC concluyó que la reducción de la piratería en 10 puntos porcentuales en cuatro años agregaría más de un millón de nuevos trabajos y generaría 400 mil millones de dólares en crecimiento económico mundial. L as grandes compañías de software han implementado nuevos esquemas de licenciamiento y creado mecanismos de activación de productos, como la distribución de actualizaciones o patches para controlar el software pirata. ¿Qué tipo de solución podemos adoptar aquellos desarrolladores que no contamos con la infraestructura de las grandes compañías? ¿Cómo podemos implementar mecanismos que no limiten la funcionalidad de nuestras aplicaciones y logren protegernos de la piratería? 44 Si la llave no está conectada o la respuesta es incorrecta, la aplicación no se ejecuta o se ejecuta en modo restringido, de acuerdo a la configuración. Esta verificación se realiza continuamente durante la ejecución de la aplicación, y cada vez se envía un mensaje diferente para evitar su emulación. De hecho, en los dispositivos más avanzados, la mitad de los mensajes son falsos, para así despistar a los crackers. Una solución fácil de implementar y de gran robustez son los candados o llaves físicas. Esta solución se basa en hardware que se integra con aplicaciones de software. Este candado se distribuye a los usuarios finales junto con la licencia de software. La aplicación protegida verifica la presencia de esta llave durante la ejecución para asegurar que el software se utilice dentro de los parámetros acordados en la licencia. Algunos de estos productos cuentan con características avanzadas como relojes de tiempo, actualización remota y memoria no volátil, para almacenar información de diferentes aplicaciones. Estas características permiten restringir la ejecución del software de diferentes formas, ya sea por tiempo, usuarios concurrentes, o acceso a componentes específicos. Todo esto facilita la implementación de diferentes modelos de licenciamiento, como renta de software, pago por uso, demos y compra por Internet, permitiendo así que los productores de software lleguen a más clientes potenciales sin tener que preocuparse por la protección de sus productos. Estas llaves contienen un motor de cifrado impenetrable y de alta seguridad. Durante la ejecución, el software protegido envía secuencias cifradas que la llave descifra produciendo una respuesta que no se puede emular. Si la respuesta de la llave es correcta, la aplicación sigue funcionando. Las llaves normalmente se venden junto con un kit de herramientas para desarrollo —utilerías y APIs para que la aplicación de software pueda interactuar con la llave—. Antes de adquirir una solución de este tipo es importante asegurarse de que el kit de desarrollo soporte el lenguaje y ambiente deseados. Para casos en los cuales no se cuenta con el código fuente de una aplica- MAR-ABR 2005 ción o no se desea modificar éste, algunos proveedores ofrecen utilerías que pueden agregar una capa de seguridad a aplicaciones existentes, forzándolas de esta manera a requerir de una llave para su ejecución. Las generaciones anteriores de los candados se conectaban a través del puerto de la impresora, lo cual llegaba a provocar problemas de compatibilidad, sin embargo, las nuevas generaciones se conectan a través del puerto USB, facilitando así implantar esta solución en ambientes multiplataforma. Dado el incremento de la piratería en nuestro país, es necesario implementar mecanismos dentro de nuestros desarrollos que protejan nuestra propiedad intelectual, nuestro modelo de licenciamiento y sea adaptable a cambios del mismo. Una solución que cumple con todos estos requisitos y ofrece una implementación sencilla y robusta son los candados o llaves físicas. Estos no sólo ofrecen una protección contra el uso ilegal de nuestro software, sino que tienen una flexibilidad asombrosa para el diseño de modelos de ventas y licenciamiento. En el mercado existen diferentes marcas de estos productos. Típicamente se diferencian entre sí por la facilidad de adopción y nivel de protección que ofrecen. Las dos marcas líderes a nivel mundial son Sentinel de SafeNet y HASP de Aladdin. Ambas tienen distribución en México y Latinoamérica. www.softwareguru.com.mx TECNOLOGÍA Apple Mac Mini Lo más impresionante de la reciente MacWorld Expo, celebrada en enero pasado, fue la presentación de Mac Mini, la propuesta de Apple para competir en el mercado de las PCs de escritorio de precio accesible. Con un diseño minimal y todo el estilo tradicional de la marca, esta computadora integra un procesador G4 de 1.25 ó 1.42GHz, disco duro de hasta 80GB, unidad CD-R/DVD-ROM y 256MB en RAM —expansible hasta 1GB—, en un espacio breve. Dos puertos USB 2.0, un Firewire, entrada DVI/VGA, módem integrado y puerto ethernet 10/100 Base T, complementan la oferta, precisamente haciendo gala de un precio reducido; a pesar de esto, la Mac Mini tiene poder suficiente para trabajar con todo tipo de aplicaciones para desarrollo e incluso con software para diseño. Obviamente el paquete no incluye monitor, teclado y mouse, pero es prudente aclarar que cualquier marca de periféricos funciona con la Mac Mini, con lo cual se puede obtener un equipo de buena capacidad por un bajo precio. Para los que necesiten algunas otras características, es posible incluir un SuperDrive (DVD-R/RW), Bluetooth integrado y una tarjeta AirPort Extreme para trabajar en redes Wi-Fi. ATI Buffalo El mercado de las estaciones de trabajo no es muy grande; los principales consumidores son los usuarios de CAD/CAM y las compañías de ingeniería y diseño. Las tarjetas de video que se utilizan en estas aplicaciones usualmente alcanzan precios muy altos, pero al ser el componente de hardware que puede mejorar el desempeño de un equipo de manera dramática, el costo es secundario. La ATI FireGL X3-256 es una tarjeta diseñada con las estaciones de trabajo de rango medio en mente, pero con el desempeño necesario para darle batalla a las más avanzadas en un par de pruebas. Ideal para trabajar con shaders HLSL o en el desarrollo de aplicaciones con animaciones complejas, esta es una opción de buen precio —alrededor de $800 dólares—, y ofrece una solución, por lo menos hasta que las tarjetas basadas en PCI Express se convierten en el estándar. Este pequeño disco duro es la propuesta de Buffalo Technology al problema de almacenamiento que vivimos diariamente ya sea en el trabajo o en casa. Con capacidades desde 120 y hasta 300GB, el LinkStation se puede instalar fácilmente en cualquier red local vía ethernet o Wi-Fi, opera con un simple pero efectivo sistema que permite a los usuarios utilizar un navegador para revisar los archivos almacenados. FireGL X3-256 www.softwareguru.com.mx LinkStation Cuenta con dos puertos USB 2.0 para conexión directa y, dependiendo del modelo, también incorpora un servidor de impresión y un FTP, además se puede configurar para auto respaldar la información contenida en otro LinkStation o cualquier computadora de la red, por medio de calendarios predefinidos. Su fuente de poder es de bajo consumo de energía y además se puede programar para encendido y apagado automático. MAR-ABR 2005 45 BIBLIOTECA 01 Design Patterns: Elements of Reusable Object Oriented Design Erich Gamma, Richard Helm, Ralph Johnson , John Vlissides Addison Wesley, Enero 1995 Dado que en este número hemos comenzado a hablar de patrones, y con la esperanza de que haya quienes quieran aprender más sobre el tema, les recomendamos este excelente libro que es considerado la biblia de patrones de diseño. Citando a los autores, podemos decirles lo siguiente: “Cuando entiendan los patrones de diseño y digan ¡Aha!, en lugar de ¿Huh?, podrán diseñar sistemas más flexibles, modulares y reutilizables, que a fin de cuentas es la razón por la que nos interesa la tecnología orientada a objetos”. Debido a su largo nombre, este libro es comúnmente llamado como el “Gang of Four” o “GoF”, haciendo referencia al cuarteto de autores. Así que si alguna vez alguien les pregunta sobre el “GoF”, ya saben de que les están hablando. Les avisamos que el GoF no es un libro que puedan leer y pretender entender por completo a la primera. Es un material de referencia que describe soluciones a diferentes problemas posibles. Conforme se vayan encontrando con tales problemas, entenderán las soluciones recomendadas y apreciarán su valor. Uno de los inconvenientes de Design Patterns, es que dado que data de 1995, los ejemplos están modelados en una notación pre-UML y varios de los ejemplos de código están en Smalltalk. Si esto no es de su agrado, pueden recurrir al libro “Applied Java Patterns” de Stephen Selting, el cual describe los mismos patrones que el GoF (y otros más), modelados en UML y con ejemplos de código en Java. Design Patterns está disponible tanto en formato impreso como en edición electrónica (CD-ROM). Adicionalmente existe una edición en español, pero solamente fue publicada en España. Software Factories: 02 Assembling Applications with Patterns, Models, Frameworks and Tools Jack Greenfield Wiley, Agosto 2004 No podrán negar que el mero título de este libro es bastante atractivo. La idea de ensamblar aplicaciones de software de una manera industrializada, apoyándose en patrones, modelos, marcos de referencia y herramientas, ha sido un tema recurrente de los últimos años. Tanto así que abarca el tema central de éste número de SG. El autor principal de esta obra es Jack Greenfield, un reconocido Guru de la industria. Actualmente Jack es arquitecto de herramientas empresariales en Microsoft, y es la mente maestra detrás de Visual Studio Team System, la próxima generación de herramientas de software de Microsoft para el desarrollo de software en equipo. Antes de eso Jack fue arquitecto en jefe en Rational Software 46 MAR-ABR 2005 y también fue uno de los principales colaboradores en el desarrollo de UML y J2EE. En Software Factories el Sr. Greenfield y Cía. describen una nueva visión para el desarrollo de software. Actualmente esta es una actividad altamente intensiva en mano de obra, que depende de una cantidad limitada de desarrolladores talentosos. Conforme la demanda de software global supere la capacidad de esta fuerza laboral, los métodos actuales de desarrollo serán reemplazados por métodos automatizados, haciendo el desarrollo de software más rápido y barato. Como explicamos en el artículo principal de este número, el término “Fábricas de Software”, se hizo popular hace unos años, aunque para muchas empresas simplemente significaba desarrollar software fuera de las instalaciones del cliente. En el caso de este libro, las fábricas de software representan un concepto mucho más completo y maduro, donde juegan un rol crucial los procesos y las herramientas. En general, Software Factories es un libro interesante con contenido valioso para todos aquellos que dirigen áreas de sistemas o centros de desarrollo de software. Recomienda un libro para esta sección, escribe a: [email protected] www.softwareguru.com.mx INDEX DIRECTORIO TENEMOS UN ESPACIO RESERVADO PARA TI Anunciante Páginas Sitio AMCIS Avantare e-Quality Gartner IBM Imexsoft Innevo Intersoftware Itera Mayen PM Microsoft Ssistemas Softtek Tec de Monterrey 47 39 37 07 F4 17 09 11 31 15 F2-1 26 35 F3 www.amcis.org.mx www.avantare.com www.e-quallity.net www.gartner.com www.ibm.com/mx www.imexsoft.com.mx www.innevo.com www.intersoftware.com.mx www.itera.com.mx www.mayen-project.com.mx www.microsoft.com/mexico www.ssistemas.com www.softtek.com www.itesm.mx Si deseas anunciarte contáctanos en el (55) 5239 5502 o en [email protected] www.softwareguru.com.mx MAR-ABR 2005 47 CARRERA Project Manager Professional La Certificación para Directores de Proyecto Por Ramón Hernández L a certificación de PMP (Project Management Professional) es la credencial más importante para los individuos relacionados con la profesión de Dirección de Proyectos, otorgada desde 1984 por el PMI (Project Management Institute), fundado en 1969 y reconocido como la asociación más importante a nivel mundial relacionada con la Dirección de Proyectos. El examen para obtener esta certificación está basado en un estándar aceptado por la comunidad relacionada, llamado “A Guide to the Project Management Body of Knowledge (PMBOK® Guide)”, la traducción oficial al español se llama “Guía de los Fundamentos de la Dirección de Proyectos (Guía del PMBOK®)”. Datos Enero 2005 MEMBRESIA Total de miembros Total de países con miembros 153,952 146 COMPONENTES 239 Capítulos - Grupos de miembros del PMI que se localizan en un área geográfica específica. 31 SIGs (Specific Interest Groups) - Grupos de miembros del PMI de industrias similares. 2 Colleges - Grupos de miembros del PMI interesados en el estudio detallado de un área de conocimiento. INDUSTRIAS CON MAYOR NÚMERO DE MIEMBROS Tecnología de Información Hardware/Software Servicios Financieros Servicios de Administración de Negocios Telecomunicaciones 22,172 21,551 9,377 9,088 9,000 CERTIFICACIÓN Total de PMP’s 105,088 Requisitos para Obtener la Certificación como PMP Se deben cubrir los siguientes requisitos: Educación y Experiencia Categoría 1 • A la fecha de aplicación del examen, el candidato cuenta con un título profesional o el equivalente en su país. • Demostrar un mínimo de 4,500 horas de experiencia en Dirección de Proyectos con participación en los cinco Grupos de Procesos (Iniciación, Planeación, Ejecución, Seguimiento y Control, y Cierre) demostrando una experiencia de al menos tres años. • Haber tomado 35 horas de capacitación relacionada con la Dirección de Proyectos. Las horas deberán incluir las nueve Áreas de Conocimiento de la Dirección de Proyectos (Calidad, Alcance, Tiempo, Costes, Recursos Humanos, Comunicaciones, Riesgos, Adquisiciones e Integración). Categoría 2 • A la fecha de aplicación del examen, el candidato no cuenta con un título profesional o equivalente, pero tiene al menos estudios de nivel medio superior o el equivalente. • Demostrar un mínimo de 7,500 horas de experiencia en Dirección de Proyectos, en los cinco Grupos de Procesos, demostrando una experiencia de al menos cinco años. • Haber tomado 35 horas de capacitación relacionada con la Dirección de Proyectos. Aceptar el Código de Ética del PMI, que básicamente contiene las responsabilidades para con la profesión, y las responsabilidades para con los clientes y la sociedad. Aprobar el Examen de Certificación como PMP, el cual se presenta en computadora en cualquiera de los sitios autorizados por el PMI. Para una lista completa visitar www.2test.com. En el caso de México, se cuenta con tres lugares, ubicados en la Ciudad de México, Guadalajara y Monterrey. El examen comprende 200 preguntas de opción múltiple, y para acreditar se requiere acertar 137 preguntas. Es posible presentar el examen en idioma español. Requisitos para Mantener la Certificación como PMP Aquellos individuos que hayan conseguido la certificación de PMP deberán demostrar su compromiso continuo con la Dirección de Proyectos, para ello deberán acumular al menos 60 Professional Development Units (PDUs) durante cada ciclo. El primer ciclo de un PMP termina el 31 de Diciembre del tercer año completo siguiente a su fecha de examen. Por ejemplo, una fecha de examen del 31 de Julio de 2004 tendría una fecha de expiración del 31 de Diciembre de 2007. El resto de los ciclos tiene una duración de tres años exactos iniciando al primer día de la expiración del ciclo anterior. ¿Qué son los PDUs? Es una unidad de medida utilizada para cuantificar el aprendizaje y actividades profesionales relacionadas con la Dirección de Proyectos. Generalmente un PDU se obtiene por cada hora invertida en el aprendizaje o actividad profesional. Los PDUs están organizados en cinco categorías: 1. Educación Académica Formal. 2. Actividades Profesionales y Auto-estudio. 3. Educación recibida por REPs (Registered Education Providers). 4. Educación recibida por otro proveedor. 5. Servicio Voluntario a Organizaciones Profesionales o a la Comunidad. Conclusión Como se puede apreciar en las estadísticas del PMI, la industria de TI han dado un gran impulso a la profesión de la Dirección de Proyectos. México no podía quedarse atrás en esta gran iniciativa y en 1996 inició operaciones el PMI Capítulo México, que desde sus inicios se ha dedicado a promover la profesión de la Dirección de Proyectos en México. Referencias The Project Management Institute (PMI) www.pmi.org PMI Capítulo México chapter.pmi.org/mexico/ Ramón Hernández es gerente de proyecto con más de diez años de experiencia en Tecnología de Información, concentrado en proyectos para el sistema financiero. Ramón es PMP certificado desde 1999 y colabora en el capítulo del PMI en la Ciudad de México. 48 MAR-ABR 2005 www.softwareguru.com.mx Año 01 No. 02 www.softwareguru.com.mx SOFTWARE GURU CONOCIMIENTO EN PRÁCTICA Marzo-Abril 2005