conocimiento en prÁcticadesquer.ens.uabc.mx/afi/articulos/sg06_2_mar_abr.pdf · 2010-02-23 ·...

60
[ TUTORIAL ] GNUpg Noticias Eventos Reportajes Fundamentos Tecnología Opiniones ¿Qué tan Efectiva es tu Seguridad? Seguridad y Protección de Aplicaciones [ ENTREVISTA ] 'maddog' Hall Presidente de Linux International ESPECIAL Cadena de Valor Móvil • Frameworks Aplicativos • Mejora iterativa de Procesos • Diagramas de Clase REPORTAJE Avances PROSOFT Software Guru CONOCIMIENTO EN PRÁCTICA Año 02 No.02 Marzo-Abril 2006 • www.softwareguru.com.mx

Upload: others

Post on 10-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

[ TUTORIAL ]GNUpg

Noticias • Eventos • Reportajes • Fundamentos • Tecnología • Opiniones

¿Qué tan Efectiva es tu

Seguridad? Seguridad y Protección de Aplicaciones

Año

02

No.

02

[ ENTREVISTA ]'maddog' HallPresidente de Linux International

ESPECIALCadena de Valor Móvil

• Frameworks Aplicativos

• Mejora iterativa de Procesos

• Diagramas de Clase

REPORTAJEAvances PROSOFT

Software Guru CONOCIMIENTO EN PRÁCTICAAño 02 No.02 • Marzo-Abril 2006 • www.softwareguru.com.mx

w

ww

.sof

twar

egur

u.co

m.m

xS

OFT

WA

RE

GU

RU

CO

NO

CIM

IEN

TO

EN

PR

ÁC

TIC

A

Mar

zo-A

bril

200

6

DIRECTORIO

02 MAR-ABR 2006 www.softwareguru.com.mx 03MAR-ABR 2006www.softwareguru.com.mx

Edición EjecutivaPedro Galván

Coordinación EditorialMara Ruvalcaba

Edición y ProducciónEdgardo Domínguez

Arte y DiseñoOscar Sámano, Dafne Ortega

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 - ITESO

ColaboradoresLuis Daniel Soto, Ariel García, Jorge Palacios, Paulina Olivares, Hernán Ramírez, Mario Rodríguez, Luis Guerrero, Rafael Manjarrez, Humberto López, Angélica Su, Heidi González, Eduardo Macías, Ernst Ellmer, Sergio Orozco, Carlos Macías, Brenda Bastida, Ernesto Corona

Ventas Claudia Perea

Marketing Natalia Sánchez

DistribuciónDaniel Velázquez

Fotografía de PortadaCecko Hanssen (flickr.com)

[email protected]+52 55 5239 5502

SG Software Guru es una publicación bimestral editada por Brainworx S.A. de C.V., Malinche no. 6, Col. El Parque, C.P. 53398, Naucalpan, México. Prohibida la reproducción total o parcial del contenido sin previo aviso por escrito de los editores. Todos los artículos son responsabilidad de sus propios autores y no necesariamente reflejan el punto de vista de la editorial. Reserva de Derechos al Uso Exclusivo: 04-2004-090212091400-102. Certificado de licitud de tí-tulo: 12999. Certificado de licitud de contenido:10572. ISSN: 1870-0888. Registro Postal: PP15-5106. Se imprimió en marzo de 2006 en PrePrensa Digital. Distribuido por Sepomex.

“La aplicación debe ser segura.”

Podríamos apostar que esta frase - o una muy similar - estaba incluida en las bases o requerimientos de todos los proyectos de desarrollo de software en que hemos participado. Tal vez haya quienes hagan lo correcto, y averigüen los requerimientos específicos de seguridad, modelen las amenazas, analicen su impacto, acuerden la estrategia a seguir, y la ejecuten durante todo el proyecto, por ejemplo incor-porando mejores prácticas de seguridad en el diseño y programación, teniendo revisiones de diseño y código seguro, y asignando un rubro específico en su plan de pruebas para probar seguridad. Sin embargo, sabemos que este grupo de per-sonas son una minoría. Lo que el resto de nosotros acostumbra hacer es decir “¿se-guridad? si, no hay problema, seguramente se refieren a que identifiquemos a los usuarios con un user y un password y ya“, y seguir como si nada. Por ello, en este número hemos incluido diversos artículos para conocer un poco más acerca de los principales aspectos de seguridad informática involucrados en el desarrollo y mantenimiento de aplicaciones. Esperamos que esto sirva para que un mayor por-centaje de nosotros empiece a “hacer lo correcto”.

La entrevista de este número es con maddog Hall. Su misión es la de convencer al mundo sobre la importancia del software libre para el bienestar de la sociedad. Sin embargo, él no utiliza los mismos argumentos que otros promotores del software libre. Maddog nos habla de historia, de economía, y de un bienestar para la socie-dad en general. Esperamos que disfruten la entrevista tanto como nosotros.

Para este número también hemos preparado un reportaje con una actualización acerca de lo que está pasando con ProSoft, los avances en 2005 y las metas para este año. Al parecer, las cosas van marchando bien. Sin embargo, aun falta mucho por hacer. No hay que bajar el ritmo. Cada uno de nosotros es parte de este esfuer-zo, y pone su granito de arena para desarrollar esta industria, nuestra industria.

Agradecemos el entusiasmo de todos los colaboradores que se interesaron en participar en este número. En esta ocasión contamos con la colaboración de un colega de Venezuela. Bienvenido. Les recordamos que pueden enviar cualquier propuesta de contenido, o retroalimentación a [email protected]

Equipo Editorial

A >

EDITORIAL

contenido mar-abr 2006 Año 2 número 02

Productos

LO QUE VIENE 12Eclipse Process Framework, Microsoft Team Foundation Server, Citrix Access Gateway

TUTORIAL 14GNUpg

Prácticas

PROCESOS 36Mejora Incremental de ProcesosAngélica Su analiza los beneficios y comparte tips sobre la aplicacion del modelo iterativo en la mejora de procesos de software.

ARQUITECTURA 40Frameworks y MDAErnst Ellmer y Eduardo Macías nos explican en qué consiste un framework aplicativo, y cómo se puede relacionar con MDA.

UML 44Diagrama de ClasesEn esta ocasión, Sergio Orozco y Carlos Macías abordan el diagrama de clases, enfocándose en la forma en que se obtienen las operaciones de las clases a partir de los diagramas de interacción.

Columnas

Tejiendo Nuestra Red 09por Hanna Oktaba

Mejora Continua 10por Luis Cuellar

Tendencias en Software 39por Luis Daniel Soto

Prueba de Software 46por Luis Vinicio León

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

En Cada Número

Noticias y Eventos 04Reportajes 06Fundamentos 48Infraestructura 50Reflexiones 56

02 MAR-ABR 2006 www.softwareguru.com.mx 03MAR-ABR 2006www.softwareguru.com.mx

EN PORTADASeguridad de AplicacionesFundamentos, modelos, tecnologías y opiniones relacionadas con la incorporación de seguridad en las aplicaciones de software

24

Entrevista 22 Jon ‘maddog’ Hall

Cadena de Valor Móvil 18 Obteniendo Ventaja Competitiva

04 MAR-ABR 2006 www.softwareguru.com.mx

NOTICIAS

LinuxWorld MéxicoDel 14 al 17 de febrero, en la Ciudad de México, se llevó a cabo la conferencia y exposición LinuxWorld, primer even-to de clase mundial dedicado a Linux y software libre que se presenta en nuestro país. Las conferencias y la ex-posición tuvieron como objetivo dar a conocer diferentes soluciones de Linux y software libre, así como los benefi-cios generados en las organizaciones al adquirir estas tecnologías. Una de las conferencias más atendidas fue la de Miguel de Icaza, quién mostró las capa-cidades de la próxima versión de Novell Linux Desktop.

Para mayor información, visita el blog de SG en www.softwareguru.com.mx

Noticias

MoProSoft y EvalProSoft: Base para PyMEs Iberoamericanas

El Programa Iberoamericano de Ciencia y Tecnología de Desarro-llo, CYTED, aprobó el proyecto COMPETISOFT “Mejora de proce-sos para fomentar la competitividad de la pequeña y mediana industria de Iberoamérica”.

El objetivo del proyecto es incrementar el nivel de com-petitividad de las PyMEs iberoamericanas productoras de software mediante la creación y difusión de un marco metodológico común que, ajustado a sus necesidades es-pecíficas, pueda llegar a ser la base para establecer un mecanismo de evaluación y certificación, reconocido en toda Iberoamérica. El director general del proyecto es el Dr. Mario Piattini de la Universidad de Castilla-La Mancha, España y la directora técnica es la Dra. Hanna Oktaba de la UNAM, México.

Para lograr este objetivo se propone repetir a nivel ibero-americano lo que se ha hecho en México para generar la norma. Se tomarán como base los modelos de MoProSoft y EvalProSoft y trabajos similares realizados en otros países, como Brasil, España y Colombia. Se compartirán los conoci-mientos de 23 grupos académicos e industriales de 13 paí-ses. Se tratará de llegar a un marco metodológico común mejorado y probado en todos los países participantes.

Inicia Operaciones Fábrica de Software de la UTM

El pasado 17 de febrero fue inaugurada en Huajuapan de León, Oaxaca, la fábrica de software de la Universi-dad Tecnológica de la Mixteca, llamada Kada Software, la cual forma parte del Parque Tecnológico de la propia universidad.

El Gobernador de Oaxaca, Ulises Ruiz Ortiz y el Rector de la UTM, Modesto Seara Vázquez, en compañía de Mau-ricio Santillán, Director General de Visionaria, dieron arranque formal a las operaciones de esta fábrica, la cual inició con dos proyectos de desarrollo de software para la empresa Edutecsa.

Siendo un proyecto conjunto entre la incubadora de em-presas de tecnología Visionaria y ese centro de estudios, Visionaria aportó la transferencia de metodologías, un plan de asesorías para la definición de su oferta de valor y el establecimiento de un plan de viabilidad comercial, así como un plan para la promoción de contrataciones de empresas para proyectos y servicios tecnológicos.

Para mayor información, visita el sitio de SG en www.softwareguru.com.mx

05MAR-ABR 2006www.softwareguru.com.mx

Eventos

8 Marzo 2006Business Intelligence & Business Process Management Conference 2006 - IDCCentro Banamex, Cd. de MéxicoInfo: www.idc-eventos.com/bi06 Tel: (55) 5661 3791e-mail: [email protected]

23 Marzo 2006IT SmartSourcing Conference 2006IDCHotel JW Marriott, Cd. de MéxicoInfo: www.idc-eventos.com/smartsourcing06 Tel: (55) 5661 3791e-mail: [email protected]

29 al 31 Marzo 2006Congreso Tendencias y Aplicaciones en los Sistemas de SWUniversidad MaderoSan Andrés Cholula, PueblaInfo: www.congreso-ids.com Tel: (222) 755 5394

30 y 31 Marzo 2006Seminario Optimizando los servicios de TI con ITIL - Itera30 de Marzo, Cd. de México.31 de Marzo, Monterrey.Info: www.itera.com.mxTel. (55) 5281 7670e-mail: [email protected]

5 Abril 2006Prácticas no Recomendadas en el Uso del MS Project - MPA Capítulo MéxicoWTC, Cd. de MéxicoTel: (55) 5523 8488e-mail: [email protected]

5 y 6 Abril 2006Integración de Aplicaciones, Servicios Web, SOA y BPMGartnerCentro Banamex, Cd. de MéxicoInfo: www.gartner.com/mx/appint Tel: (55) 5584 9370

Arranca Construcción de GDC en Aguascalientes

El pasado 24 de enero en la ciudad de Aguascalientes, el Presidente de México, Vicente Fox Quezada, dio el banderazo de inicio para la construcción del Centro de Entrega Global (GDC - Global Delivery Cen-ter) Softtek Aguascalientes, el cual desarrollará soluciones y servicios

profesionales de TI para empresas de Méxi-co, Estados Unidos y Latinoamérica.

Con una inversión de más de dos mi-llones de dólares, el GDC Softtek Aguascalientes alojará a más de 1,200 desarrolladores mexicanos. Esta iniciati-va se realiza con una visión compartida de Softtek, la Secretaría de Economía a través del programa ProSoft, y el Gobier-no del Estado de Aguascalientes.

En la ceremonia estuvo presente el Se-cretario de Economía, Sergio García de Alba, el Gobernador del Estado, Ing. Luis Armando Reynoso Femat, el Secretario de Desarrollo Económico de Aguasca-

lientes, Dr. Armando Jiménez San Vicente, la Presidenta de Soft-tek, Blanca Treviño de Vega y empresarios de la entidad.

De acuerdo con el Dr. Jiménez San Vicente, la visión de esta ad-ministración es colocar a Aguascalientes como un polo de la eco-nomía de la innovación y del conocimiento.

Para mayor información, visita: www.softwareguru.com.mx

PROSOFT tiene como metas para el 2013:• Lograr una producción anual de software de 5,000 millones de dólares.• Alcanzar el promedio mundial de gasto en tecnologías de información.• Convertir a México en el líder latinoameri-cano de desarrollo de software y contenidos digitales en español.

Resultados 2005Durante el 2005 el ProSoft consiguió posi-cionarse en el sector debido a su impacto favorable en esta naciente industria mexi-cana. El apoyo del gobierno federal aunado al de organismos promotores, sector pri-vado y académico, ayudó a que en el 2005 este sector tuviera un crecimiento casi tres veces mayor que el resto de la economía del país, tal como se aprecia en los números y estadísticas presentados en la tabla 1. Las estrategias que utilizó el PROSOFT para impulsar este crecimiento fueron:1. Formación de capital humano, que com-prende:

• Desarrollo de competencias laborales es-pecializadas.• Vinculación de las empresas del sector de TI con las instituciones educativas.• Implantación de programas de capacita-ción y actualización permanente.

2. Elevar la calidad y la capacidad de proce-sos, que abarca:

• La implantación y certificación en modelos de calidad mediante el desarrollo de capacida-des para la prestación de servicios de calidad.

3. Propiciar la innovación y el desarrollo tec-nológico, que implica:

• Transferencia tecnológica.• Actividades de investigación y desarrollo.• El desarrollo y pruebas de soluciones de alta tecnología y valor agregado.

4. Proveer el acceso al financiamiento, que alcanza:

• Acceso a Fondos de Garantía y aportación de Capital Semilla y Capital de Riesgo.

5. Apoyo a los Proyectos productivos, que comprende:

• Instalación de centros de desarrollo de software y/o prestación de servicios de TI.

6. Desarrollo de capacidades empresariales y de estrategia de negocio, que implica:

• La elaboración de estudios y proyectos. • La capacitación empresarial.

7. Fortalecimiento de capacidad regional y empresarial, que fomenta:

• La formación y fortalecimiento de grupos de empresas.• La creación de nuevas empresas de TI.• La integración y fortalecimiento de la ca-dena de valor.• El posicionamiento y/o mejora de imagen del cluster.

8. Promoción y comercialización especializa-da en el sector para:

• La promoción, realización y participación en eventos.• La habilitación de oficinas de promoción de oferta de servicios.• La comercialización de productos y ser-vicios de TI.

9. Desarrollo de masa crítica del sector, que impulsa:

• Proyectos integrales de fortalecimiento de capacidades.

06 MAR-ABR 2006 www.softwareguru.com.mx

REPORTAJE

Servicios de TI en MéxicoUna Industria en Constante ExpansiónPor Jorge Palacios

Como sabemos, el Programa para el desarrollo de la industria de software (PROSOFT), coordinado por la Secretaria de Economía, inició en octubre del 2002, con el objetivo de crear las condiciones necesarias para que México desarrolle una industria de software competitiva a nivel internacional y se asegure su crecimiento a largo plazo (ver SG Oct-Dic 2004).

��

��

��

��

���

���

Tabla 1. Crecimiento del Sector de TI en México

En la parte cuantitativa del ProSoft, en el 2005 se arrojaron los siguientes números: • 110 instituciones educativas involucradas en proyectos relaciona-dos con PROSOFT.• 4,989 personas capacitadas para las distintas competencias labo-rales del sector.• 2,249 personas certificadas en las diversas competencias labora-les del sector.• 214 personas capacitándose en temas de calidad.• 338 empresas involucradas en capacitación, implantación y/o cer-tificación en modelos de calidad.• 369 empresas apoyadas en temas de negocios y estrategia. • 866 personas capacitadas en temas de negocios y estrategia. • 2,183 lugares habilitados para proyectos productivos.• 4,273 equipos nuevos o actualizados.• 125 eventos organizados o con presencia para posicionar la oferta de TI mexicana.• 10 empresas de TI en proceso de integración.• 480 soluciones de TI registradas en el portal www.software.net.mx • 19 programas estatales alineados al PROSOFT.• 4 incubadoras de empresas de software.• 14 clusters de TI con igual numero de empresas integradoras.

En la parte cualitativa del esfuerzo, se encontraron los siguientes logros en el 2005:• La inauguración en el estado de Jalisco de un laboratorio de investi-gación de la compañía INTEL que genero 30 nuevos empleos.• La Inauguración del centro de desarrollo de video juegos de la com-pañía GAMELOFT, que generó 50 nuevos empleos.• Se diseñó la Campaña de Posicionamiento de la industria de TI mexicana en EE.UU.• Se creó el “Centro Academia – Industria” para reducir la brecha recién egresado vs. persona productiva.• Se promulgó la Norma de Conservación de mensajes de datos (NOM-151-SCFI-2002).• Se realizaron las reformas en materia de firma electrónica y com-probantes fiscales electrónicos.• Se tuvo presencia mexicana en el grupo de comercio electrónico de APEC (ECSG) y en el ASPAN para el marco de comercio electrónico para Norteamérica.• Se promulgó la NMX-I-059-NYCE para el desarrollo y mantenimiento de software y se designó al NYCE como primer organismo verificador.

En lo referente a participación estatal, inversión, y proyectos atendi-dos, los resultados del 2005 se aprecian en la Tabla 2.

En el 2006, el PROSOFT ya inició sus operaciones. Las empresas de desarrollo de software, instituciones educativas y emprendedores que forman parte de la población objetivo del programa pueden presentar sus propuestas de proyectos a través de los organismos promotores, ya sean Entidades Federativas u Organismos Empresariales. Para mayor información sobre la presentación de propuestas, se puede consultar el sitio www.software.net.mx.

Con todo lo anterior, podemos concluir que la industria de software en el 2005 se posicionó fuertemente en el sector mexicano, siendo estos números un claro reflejo de la proyección esperada para el 2006, así como la búsqueda de la consolidación del sector de TI con mayores y mejores resultados.

Monto de la Inversión ProSoft

Concepto 2004 2005 Acumulado Crecimiento

Presupuesto 139.7 195 334.7 40%

ProSoft (mdp)

Inversión detonada 249.52 753.75 1003.27 202%

por ProSoft (mdp)

Factor de potenciación 2.5 3.9 3.5 56%

Proyectos aprobados 68 181 249 166%

Entidades federativas 10 19 19 90%

participantes

Empresas 584 1,060 1,644 82%

proyecto-atendidas

Empleo proyecto 1,786 6,642 8,428 272%

Tabla 2. Crecimiento del Monto de la Inversión

07MAR-ABR 2006www.softwareguru.com.mx

Agradecemos a Eduardo Rubio e Ivette García, de Secretaría de Econo-mía por la información proporcionada para elaborar este reportaje.

TI Sonora es una asociación civil constituida en septiembre de 2003, y tiene como misión integrar y coordinar proyectos que permitan el crecimiento y desarrollo competitivo de la industria de TI en el estado de Sonora.

Con el fin de producir software de clase mundial, el estado de Sonora tiene las siguientes metas:• Fortalecer empresas locales y atraer a em-presas internacionales.• Coadyuvar en al aumento de la calidad de vida de los sonorenses mediante la genera-ción de empleos de alto valor agregado.• Alinear a las necesidades de la industria los perfiles de los egresados universitarios y la ca-pacidad de formación de las universidades.• Diseñar, construir y consolidar un modelo de interrelación entre las empresas, que permita a los integrantes de la industria colaborar efi-cientemente mediante un cluster.• Buscar la interacción adecuada entre los di-ferentes sectores de Tecnologías de la Informa-ción en el Estado, y a la vez apoyar el desarrollo tecnológico de nuestras comunidades.

Para alcanzar estos objetivos, TI Sonora plan-tea las siguientes estrategias:• Mejora de Procesos: Busca certificaciones (CMMI o MoProSoft) que acrediten la madurez de los procesos de producción de software.• Certificaciones Técnicas: Generar profesio-nales con las habilidades técnicas necesarias en las herramientas que manejan.• Promoción: La principal fuente de trabajo deberá provenir de las ventas, debemos con-tar con las habilidades para competir con las empresas con mayor presencia en el mercado internacional.• Modelo de Interrelación: Modelo estandari-zado de producción que permite sumar el es-fuerzo y las capacidades de varias empresas.• Vinculación Universitaria: La industria y las universidades deben trabajar de manera conjunta con el fin de que los egresados sean profesionistas competitivos.

• Biblioteca de Componentes: Aporta compo-nentes desarrollados por las mismas empre-sas para su reutilización.• Currícula de TI: Portal que presenta infor-mación de las empresas, profesionistas y pro-yectos desarrollados.• Edificación de Parques Tecnológicos: Per-mite compartir y optimizar infraestructura de clase mundial.

Principales LogrosComo muestra de los logros alcanzados por los asociados en TI Sonora encontramos:• Las empresas C3 Technologies y Novutek han sido aceptadas como empresas con ofer-ta tecnológica de alto valor agregado para participar en el programa Technology Busi-ness Accelerator (TechBA) de la Secretaría de Economía operado por la Fundación México Estados Unidos para la Ciencia (FUMEC). • La empresa Software Site alcanzo durante 2005 la acreditación CMM SW nivel 3.• Inicio del proyecto de mejora de procesos CMMI en 11 empresas.• Alianza con Arizona Technology Council.• 10 empresas participando en el encuentro de negocios AL INVEST en ESI Center, España

• Creación del centro TIS en Hermosillo.• Mas de 70 Empresas e Instituciones asocia-das, mas de 700 empleos de expertos de TI.

Objetivos 2006Los centros TIS ofrecen servicios a los asocia-dos y la infraestructura necesaria, en general servicios de valor agregado. Se abrirán 2 nue-vos centros: Cd. Obregón y Nogales.Gracias al apoyo de PROSOFT y del Gobierno Estatal, en el 2005 se entregaron recursos por 35.2 millones de pesos, y se planea contar con más de 100 millones para este año.Para el 2006 TI Sonora busca integrar a más de 100 empresas asociadas, para exceder 1,000 empleos de expertos de TI.

Entre los proyectos a ejecutar se encuentran:1. Parques de tecnología2. Mejora de procesos CMMI en 11 empresas (Control-E, Novutek, Qualisys, Netshore, Soft-ware Site, Intersel, Interlogic, Special Compu, C3 Technologies, Ebusiness Consultores y la Integradora TI Sonora) 3. Capacitación técnica (520 expertos 2005, 230 en 2006)4. Creación y Operación de Integradora5. Portal TI Sonora con software integrado como Currícula de TI, Biblioteca de Compo-nentes y Portal Educativo6. Vinculación Universitaria7. Promoción Nacional e Internacional de Software Sonorense8. Apoyo a proyectos especiales

Sonora posee todas las condiciones para ser líder en la industria de desarrollo de software, y esta llevando a cabo las acciones necesarias para lograrlo. Les mantendremos al tanto de sus avances para producir software de clase mundial hecho en México, hecho en Sonora.

08 MAR-ABR 2006 www.softwareguru.com.mx

CLUSTERS

Software de Clase MundialHecho en México, Hecho en SonoraUna de las estrategias utilizadas en México para afrontar el reto de los grandes pro-yectos de tecnologías de la información, es la asociación de varias PyMEs en un con-cepto de integración empresarial que se le conoce con el nombre de Cluster. Uno de los clusters de mayor tamaño en México es TI Sonora, que debido a la dimensión de la región sonorense se divide en zona norte, centro y sur.

La Dra. Hanna Oktaba es profesora en la Facultad de Ciencias de la UNAM. Es fundadora y Secreta-ria de la Asociación Mexicana para la Calidad en la Ingeniería de Software. Actual-mente dirige el proyecto con el cual se creó la norma mexicana para la industria de software.

En el número pasado dije que, a mi juicio, la acade-mia debería de involucrarse más activamente en el movimiento del fortalecimiento de la industria de

software. Hoy quiero detenerme un poco para explicar mi opinión al respecto. La pregunta que intentaré responder es: ¿cuál debería ser el papel de la academia en el forta-lecimiento de la industria de software? Veo por lo menos tres frentes en los que deberíamos actuar:

1. Transferencia de ConocimientosPropósito.- Tener un alto grado de innovación en la industria.

Problema.- ¿Cuántos proyectos de investigación y tesis se quedan solamente en papel, o como prototipos?

Posible solución.- Necesitamos buscar canales de comunica-ción entre academia y empresas para que se conozcan, se ins-piren confianza, y los frutos de la investigación se conviertan en productos innovadores que den ventaja competitiva a la indus-tria. Hay que crear espacios donde los académicos presenten su “oferta” y la industria exprese sus necesidades.

Qué se requiere.- Un nuevo enfoque en las políticas del reco-nocimiento al trabajo de investigación, dándole mayor valor a la transferencia de conocimiento y tecnología que beneficie al desarrollo de la industria.

2. Asesoría y ConsultoríaPropósito.- Apoyar a las empresas en la solución de problemas teórico-prácticos y acelerar la asimilación de innovaciones.

Problema.- Por un lado, pocas empresas cuentan con personal especializado y dedicado a la investigación y actualización cons-tante y, por el otro, a los académicos no se les exige la vinculación con la industria. Quienes lo hacen es más por interés propio que por políticas institucionales. Esta es la situación que, por lo me-nos, observo en las universidades e institutos públicos.

Posible solución.- Necesitamos fomentar las “excursiones” de los académicos al mundo real. Esto traerá beneficios para todos. Las empresas obtendrán el apoyo en la solución de sus problemas, los académicos tendrán que enfrentarse a problemas reales, con esto enfocar mejor sus investigaciones y, por consecuencia, trans-mitirán a sus alumnos conocimiento teórico-práctico que les dé mejor preparación para su vida profesional.

Qué se requiere.- Reconocer el impacto de trabajo de vincula-ción para la competitividad de la industria, la investigación y la docencia. Definir políticas nacionales que fomenten este tipo de actividades de los académicos.

3. Formación de Recursos Humanos Nuevos y Actualización de los ExistentesPropósito.- Elevar el nivel de capacidades de la industria.

Problema.- Estamos formando muchos recursos humanos en múltiples carreras, sin embargo, tendemos a descuidar aspec-tos relacionados con la incorporación a la actividad profesio-nal. Trabajo en equipo, relación con el cliente, estructura de una organización y cómo moverse dentro de ella, son temas difícilmente tratados. Ni hablar de la brecha entre los conoci-mientos tecnológicos provenientes de productos comerciales que la industria espera, y lo que la academia —sobre todo pú-blica—, puede enseñar a sus alumnos. Esto se agudiza por la velocidad de cambio en las tecnologías y herramientas que la industria tiene que asimilar para mantenerse competitiva.

Posible solución.- Necesitamos incluir en los planes de estu-dios conocimientos y habilidades relacionados con factores humanos. En las carreras que preparan profesionales para la industria de software, enseñar de manera práctica los proce-sos y técnicas estandarizadas para facilitar la incorporación de los egresados. Involucrar a los representantes de la industria en la definición y revisión de los planes de estudio.

Qué se requiere.- Cambiar “usos y costumbres” en la relación academia-industria para que entiendan que son “uno para el otro” y que busquen el beneficio mutuo.

En la UNAM ya empezamos a reflexionar al respecto. En no-viembre pasado realizamos un coloquio sobre la Computa-cíon y las Tecnologías de Información. Nos dimos cuenta que nuestro problema principal es una enorme pulverización de los recursos humanos, esfuerzos de investigación y desarrollo de sistemas de software. El primer paso que nos propusimos es crear las redes de colaboración en temas afines dentro de la UNAM. El tema de vinculación está latente y pronto tendremos que abordarlo más a fondo. Me gustaría mucho conocer la opinión de mis colegas académicos y la gente de la industria sobre estas reflexiones. Ofrezco esta columna para empezar el debate.

Cambiando de tema, les quiero dar dos noticias. Primera, que ya se publicó el reporte del primer International Workshop for Process Improvement in Small Setting. Lo pueden encontrar en el sitio del SEI como SPECIAL REPORT CMU/SEI-2006-SR-001.

También les quiero presumir que fue aprobado por CYTED el proyecto COMPETISOFT Mejora de procesos para fomentar la competitividad de la pequeña y mediana industria de Ibero-américa. La idea, a grandes rasgos, es repetir a nivel iberoame-ricano lo que hemos hecho en México para generar la norma. Nuestros modelos de MoProSoft y EvalProSoft se utilizarán como base para llegar a un marco metodológico común mejo-rado y probado en todos los países participantes. La duración es de tres años y el reto, como pueden ver, es enorme. Les se-guiré contando.

- Hanna Oktaba

CO

LUM

NAY la Academia... ¿Cuándo se va a Unir?

Papel de la Academia en la Industria de Software

09MAR-ABR 2006www.softwareguru.com.mx

TEJIENDO NUESTRA RED

La semana pasada me encontraba dando una confe-rencia en el capítulo Nuevo León de la AMCIS, y me hicieron la siguiente pregunta: “Si todos estamos

de acuerdo en los beneficios de las iniciativas de calidad, entonces ¿por qué tan pocas organizaciones lo estamos ha-ciendo? ...tic, tac, tic, tac... después de algunos segundos pude recuperar la compostura y contestar lo primero que se me ocurrió, pero la pregunta me dejó muy inquieto. ¿Por qué no lo estamos haciendo? Tras de un par de noches de insomnio, llegue a las siguientes cuatro posibles razones.

La Dirección Viene de la DirecciónEste punto ya se ha mencionado anteriormente, pero me permito volverlo a mencionar porque desafortunadamente aún veo poco cambio. Conozco a muchas organizaciones que todavía están tirándole a certificarse como el resulta-do final de un esfuerzo de calidad. El mensaje que se envía con esto es: “queremos certificarnos sin realmente enten-der qué significa”. No quiero decir que la dirección deba ser experta en CMMI o ISO9000, para eso están los expertos, pero sí debe tener clara la foto final. ¿Cómo es que la mejo-ra va a cambiar la manera de hacer negocios?, ¿de interac-tuar con el usuario?, ¿cómo se comportará la organización después de seis meses de esfuerzo?, ¿de un año?, etc. Aquí juega un rol muy importante el director de calidad. Uno de sus trabajos es constantemente interactuar con la dirección para que ambas partes estén totalmente sincronizadas en cuanto a lo que se espera del esfuerzo.

Ventas vs. ProducciónLa naturaleza de la industria de software es la de sobrevivir, y sobrevivir significa crecer, y crecer significa ventas, ventas y más ventas. Cuando yo creo una compañía que genera un producto, por ejemplo comida, lo primero que hago es asegu-rarme que mi comida es buena, que sabe bien, que le gusta a mis conocidos, que se compara con otros restaurantes de la zona. Una vez que hago esto, mantengo la calidad en la me-dida posible, reduzco costos y me dedico a vender. Desafor-tunadamente los servicios son muy diferentes en ese aspecto. Aunque el producto final es tangible (un sistema), el verdadero diferenciador está en el servicio con el que se genera ese pro-ducto, y ese servicio no es tangible. Es difícil de entender y de vender, eso muchas veces hace que se le reste importancia a cómo generamos el servicio con respecto a cómo lo vendemos. Esto al final de cuentas significa que el director de calidad debe de ayudar a la gente de ventas a entender los beneficios que trae una certificación de este tipo y ayudar a crear productos alrededor de estas nuevas posibilidades. Debe de ayudar a los vendedores a hacer tangibles los beneficios y empaquetarlos en el servicio para venderlo exitosamente. Esto no es sencillo porque pretende mejorar las ventas futuras y al mismo tiempo se debe de tomar en cuenta las ventas presentes.

La Tremenda Fuerza en Contra del CambioCitando a Maquiavelo, “Debe de ser recordado que no hay tarea más difícil de completar y de más riesgos y de mayor incertidumbre en cuanto a su éxito que liderar la introducción de una forma nueva”, creo que más claro no puede decirse. Contrario a lo que muchos piensan, el perfil del director de calidad debe ser 25% conocimiento técnico, 35% Ventas, y 40% Psicología. El punto más importante de su rol no es definir qué vamos a hacer, sino cómo vamos a guiar el com-portamiento de la organización en todos los niveles para que responda de una misma forma. Lo que quita el sueño no debe ser si estimamos de una u otra manera, sino cómo hacemos para que todos estimemos igual.

Si el Cigarro Mata, ¿Por Qué Seguimos Fumando?En los últimos diez años ha existido un gran esfuerzo para eli-minar el cigarro, debido al daño de salud que ocasiona. Desde las leyendas en los paquetes, a la suspensión de comerciales en radio y televisión, restaurantes con áreas divididas, etc. Si todos sabemos que el cigarro mata, ¿por qué ha sido tan difícil eliminarlo? Así es la naturaleza humana. Aunque todos estemos de acuerdo que llevar planes de trabajo, planes de calidad, manejo de configuración, etc. es una excelente idea, esto no se va a dar por sí sólo.

En numerosas ocasiones veo cómo contratamos personal con el conocimiento que consideramos necesario, y los soltamos para que arreglen los problemas sin jamás re-gresar a evaluar lo que está pasando, hasta que surgen graves problemas. La realidad es que el conocimiento no es suficiente, existen factores adicionales como presiones del medio ambiente, situaciones personales, actitudes, etc. Por esto se requiere una muy fuerte estrategia de convencimiento, mercadotecnia, incentivos, reglamentos, leyes y principalmente un seguimiento continuo a lo que está pasando a todos los niveles, para asegurar que todos se muevan en la misma dirección.

El trabajo de un ingeniero de calidad es eterno, los pro-blemas siempre existirán. Si en este momento es difícil vender una idea a un líder de proyecto, mañana será otra idea la que se tenga que vender, por lo que más vale que lo vayan disfrutando.

Cualquier comentario que tengan sobre este ar-tículo o ideas adicionales de por que no hace-mos lo que sabemos que es correcto, por favor háganmela llegar a: [email protected] o en www.agentesdecambio.org.

—Luis Cuellar

CO

LUM

NA

10 MAR-ABR 2006 www.softwareguru.com.mx

Si Todos Sabemos lo que se Debe Hacer... ¿Por Qué no se Hace?

MEJORA CONTINUA

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.

PRODUCTOS

Citrix Access Gateway Enterprise EditionAcceso Remoto por SSL

Las redes virtuales privadas (VPNs) basadas en SSL han tenido gran auge, y están comenzando a desplazar a las VPNs tipo IPSec como la solución más popular para lograr que los empleados, clientes y proveedores puedan acceder de manera remota y se-gura las aplicaciones de una empresa. Las soluciones modernas de VPNs SSL no solamente permiten acceder aplicaciones web, sino también aplicaciones tipo cliente-servidor, directorios de archivos en red, y hasta servicios de multimedia y voz. Gartner estima que para el 2008, las VPNs SSL serán el principal método de acceso remoto para más de dos terceras partes de los teletra-bajadores de empresas, más de tres cuartas partes de los con-tratistas y más del 90% de los empleados con acceso ocasional. Entre los principales proveedores para VPNs SSL está Citrix, con su familia Citrix Access Gateway. Recientemente Citrix extendió esta familia con el lanzamiento del Citrix Access Gateway Enter-prise Edition, el cual está dirigido al segmento de empresas que requiere la máxima escalabilidad y desempeño.

www.citrix.com

12 MAR-ABR 2006 www.softwareguru.com.mx

LO QUE VIENE

Team Foundation ServerA Punto de Liberarse

Durante la conferencia VSLive en San Francisco, Microsoft anunció que en marzo saldrá al mercado Team Foundation Server (TFS), la pieza final de Visual Studio Team System (VSTS). TFS es el compo-nente de VSTS para proveer control de versiones avanzado (en lugar de Visual SourceSafe) y gestión del cambio.

Durante el evento, Microsoft también informó que el lanzamiento de Windows Vista sigue en pie para la segunda mitad del 2006, y que la próxima generación de Visual Studio, con nombre clave Orcas, se espera para la primera mitad del 2007. Orcas explotará las capacida-des de Windows Vista, e incluirá varias de las tecnologías mostradas en el último Microsoft Professional Developer’s Conference (PDC), como LINQ (un lenguaje unificado para acceder todo tipo de datos), Atlas (un framework para aplicaciones Ajax), Visual Studio Tools for Applications (una versión de VBA en .NET), y Cider (un diseñador visual para Windows Presentation Foundation). Algunos de estos elementos ya pueden ser descargados como Community Technology Previews (CTPs) y se pueden integrar en Visual Studio 2005.

msdn.microsoft.com/vstudio/teamsystem

PR

OD

UC

TO

S

Hace tiempo que los entusiastas del Pro-ceso Unificado de Rational (RUP) se pre-guntan qué es lo que va a suceder con éste, si va a seguir como producto co-mercial, o a ser liberado a la comunidad. La respuesta en ambos casos es sí.

A finales del 2005, IBM anunció que dona-ría a la Fundación Eclipse tecnología y pro-piedad intelectual relacionada con RUP. El objetivo es que Eclipse cuente con un con-junto de herramientas base para crear y utilizar procesos de software; es decir, una plataforma para procesos (algo similar a lo que era el Rational Process Workbench) .

La Fundación Eclipse ya está trabajando en este proyecto, denominado Eclipse Process Framework, el cual además de las herramientas para administración de proce-sos incluirá un par de procesos listos para usarse: el Basic Unified Process (BUP), que es una versión simplificada del RUP, y otro proceso basado en metodologías ágiles.

Por su lado, IBM mantendrá una oferta co-mercial de RUP, aunque como producto aho-ra se llamará Rational Method Composer (RMC). Este producto estará montado sobre el Eclipse Process Framework, e incluirá di-versas configuraciones de RUP, tales como:

RUP para proyectos grandes, RUP para productos empaquetados, RUP para SOA, RUP para mantenimiento de aplicaciones.

Así que los procesos de software pronto quedarán embebidos dentro de las herra-mientas de desarrollo. Por un lado, Visual Studio ya incluye el Microsoft Solutions Framework en diferentes configuraciones, y ahora Eclipse hará lo propio a través del Eclipse Process Framework.

www.eclipse.org/epf/www-306.ibm.com/software/awd-tools/rmc/

Eclipse Process Framework y Rational Method ComposerLa evolución de RUP

PR

OD

UC

TO

S

Criptografía con GNUpgUna Herramienta Sencilla, Poderosa y GratuitaPor J. Hernán Ramírez R.

Seguramente usted, al igual que yo, ha tenido la necesidad de intercambiar información privada por Internet. Sin embargo, el correo electrónico con su protocolo SMTP no resulta seguro, debi-

do a que no hace mucho énfasis en la verificación de la ruta que atravesó el correo; tampoco verifica que la persona que lo envió es quien dice ser y, por supuesto, no tiene forma de determinar que el correo que llegó a su destino es el mismo que el que fue enviado originalmente. En este artícu-lo veremos como se puede utilizar GNUpg para cifrar mensajes.

Un Poco de HistoriaEn 1991 Philip Zimmermann creó un software para cifrado de correo electrónico llamado PGP, acrónimo de Pretty Good Privacy, que re-solvía los problemas de seguridad de SMTP. Originalmente PGP se distribuyó en forma gratuita a través de Internet, y rápidamente se convirtió en el software de cifrado de correo electrónico más utilizado en el mundo. Sin embargo, versiones posteriores de PGP comenzaron a utilizar algoritmos patentados, y por lo tanto dejó de ser gratuito. Afortunadamente, para entonces ya se había definido un estándar de Internet denominado OpenPGP (RFC 2440), que documenta el forma-to de mensajes utilizado por PGP. Fue así que Werner Koch desarro-lló GNUpg (GNU Privacy Guard) o gpg, el cual cumple con el estándar OpenPGP, pero utiliza algoritmos de cifrado de uso libre.

¿Como Obtener GPG?Gpg se puede descargar del sitio www.gnupg.org, y está disponible tanto en código fuente, como en binarios para Linux, Mac y Windows. Los ejemplos de este artículo se realizan desde línea de comandos en una máquina con Linux Ubuntu, pero se pueden realizar de la mis-ma manera sobre cualquier otra plataforma.

El ejecutable gpg se utiliza con la siguiente estructura:gpg [opciones] comando [args]

Generando Nuestra LlaveGpg utiliza un sistema de llaves asimétricas. Para empezar a utilizar (GPG) debemos crear nuestra llaves privadas y públicas, lo cual ha-remos con el comando gpg --gen-key. Gpg preguntará que tipo de llave se utilizará. Es preferible utilizar el predeterminado (DSA and Elgamal).

$ gpg --gen-key

Please select what kind of key you want:

(1) DSA and Elgamal (default)

(2) DSA (sign only)

(5) RSA (sign only)

Your selection?

Luego le preguntará el tamaño de la llave.

DSA keypair will have 1024 bits.

ELG-E keys may be between 1024 and 4096 bits long.

What keysize do you want? (2048)

En este caso, seleccionaremos el valor default (2048).

Luego preguntará si la llave debe caducar:

What keysize do you want? (2048)

Requested keysize is 2048 bits

Please specify how long the key should be valid.

0 = key does not expire

<n> = key expires in n days

<n>w = key expires in n weeks

<n>m = key expires in n months

<n>y = key expires in n years

Key is valid for? (0)

En este caso, elegiremos “0” (la llave nunca caduca). Es una opción cómoda, de lo contrario cada vez que caduque la llave tendríamos que enviarla a todas las personas que empleaban la anterior.

Después necesitamos identificar la llave con un usuario. Para esto se requiere escribir el nombre real, correo electrónico y al-gún comentario.

You need a user ID to identify your key; the software constructs

the user ID

from the Real Name, Comment and Email Address in this form:

“Heinrich Heine (Der Dichter) [email protected]

Real name: Usuario A

Email address: [email protected]

Comment: Llave de prueba

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Luego pedirá una clave para proteger la llave privada. Después de ingresarla, el programa generará el par de llaves. Curiosamente, el programa pide al usuario que durante este proceso haga dife-rentes cosas (mover el mouse, usar el teclado, etc) para generar mayor entropía en el sistema, y que así este pueda generar bue-nos números aleatorios.

14 MAR-ABR 2006 www.softwareguru.com.mx

TUTORIAL

J. Hernán Ramírez R. es Licenciado en Computación, se desempeña como System Manager del Centro de Investigaciones de Astronomía (CIDA), y dicta cursos de extensión de ofimática y programación en la Facultad de Humanidades de la Universidad de los Andes Venezuela.

TUTORIAL

You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to

perform some other action (type on the keyboard, move the mouse,

utilize the disks) during the prime generation; this gives the

random number generator a better chance to gain enough entropy

...+++++++++++++++...++++++++++.+++++.++++++++++++++++++++.+++++

..++++++++++.

++ ++++++++.+++++...+++++++++++++++++++++++++.+++++++++++++++.+++

++.++++++++++... .............................+++++

gpg: /home/hernanr/.gnupg/trustdb.gpg: trustdb created

gpg: key F6A9C36B marked as ultimately trusted

public and secret key created and signed.

gpg: checking the trustdb

gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model

gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m,

0f, 1u

pub 1024D/2D8C015B 2005-12-19

Key fingerprint = 6127 0873 9812 543E BA72 2349 0B4A 5DFD

F6A9 C36B

uid Usuario A (Llave de prueba)

<[email protected]>

sub 2048g/B1CCF967 2005-12-19

Con esto, hemos generado el par de llaves para el Usuario A.

Manejando las Llaves PúblicasPara poder intercambiar mensajes cifrados con otra persona, esta otra per-sona debe conocer nuestra llave pública, y nosotros la suya. Para generar un archivo con una llave pública utilizamos el comando export. Con la opción –u indicamos el usuario cuya llave queremos utilizar, o en este caso exportar.

$ gpg --export -a -u [email protected] > pubkey.asc

Una vez hecho esto, la llave se puede publicar a través de una página web, un servidor de claves públicas, o enviándola por correo electrónico.

En este caso, deseamos intercambiar mensajes con el Usuario B, así que vamos a importar su llave pública utilizando el comando import.

$ ls

demoGPG pubkey.asc usuariob.pubkey.asc

$ gpg --import usuariob.pubkey.asc

gpg: key D9ACD3CF: public key “Usuario B <[email protected]>”

imported

gpg: Total number processed: 1

gpg: imported: 1

Después de importar una llave pública, es posible firmarla. Esto es como darle el visto bueno, indicando que es confiable. El grado de confiabilidad de una llave puede ser uno de los siguientes:

- No se asignado o evaluado la confiabilidad

e Evaluación de confiabilidad fallida

q No existe suficiente información para realizar la evaluación

n No confiar nunca en esta llave.

m Marginalmente confiable.

f Confiable.

u Plenamente confiable.

Para firmar una llave, primero se utiliza el comando edit-key, y pos-teriormente se realizan las operaciones sign y save. Esto se muestra a continuación:

$ gpg --edit-key usuariob

pub 1024D/D9ACD3CF created: 2005-12-19 expires: never

usage: CS

trust: unknown validity: unknown

sub 2048g/862B7711 created: 2005-12-19 expires: never

usage: E

[ unknown] (1). Usuario B <[email protected]>

Command>sign

Are you sure that you want to sign this key with your

key “Usuario A <[email protected]>” (2D8C015B)

Really sign? (y/N) y

Command>save

Para listar las llaves públicas que tenemos registradas, utilizamos el comando list-key:

$ gpg --list-key

/home/usuarioa/.gnupg/pubring.gpg

---------------------------------

pub 1024D/2D8C015B 2005-12-19

uid Usuario A <[email protected]>

sub 2048g/B1CCF967 2005-12-19

pub 1024D/D9ACD3CF 2005-12-19

uid Usuario B <[email protected]>

sub 2048g/862B7711 2005-12-19

Firma de MensajesLa firma digital se utiliza para certificar el origen e integridad de un mensaje o documento. Si el documento es modificado después de haber sido firmado, la verificación de la firma fallará. La forma en que esto funciona, es que el emisor genera un documento y lo firma utilizando su llave privada. Los receptores del documento pueden verificarlo utilizando la llave pública del emisor.

15MAR-ABR 2006www.softwareguru.com.mx

PR

OD

UC

TO

STUTORIAL

gpg tiene varias maneras de aplicar firmas a los mensajes:• Firma cifrada: Firma el mensaje y su contenido queda cifrado • Firma en texto claro: Incluye el texto original (en claro), y lo firma • Firma en otro archivo: Incluye la firma en un archivo separado

Para realizar nuestro ejercicio, usaremos un archivo de texto plano denominado prueba1.txt que contenga cualquier pedazo de texto. Primero lo vamos a firmar utilizando el comando sign. Usaremos la opción -a para que el resultado sea un archivo 7-bit ASCII y no un archivo binario.

$ gpg -a --sign prueba1.txt

You need a passphrase to unlock the secret key for

user: “Usuario A <[email protected]>”

1024-bit DSA key, ID 2D8C015B, created 2005-12-19

Enter passphrase:

Vale la pena notar que siempre que se realiza una operación que requiera acceso a una llave privada, el sistema nos pedirá la clave asociada a esta llave. Una vez hecho esto, el sistema genera el ar-chivo prueba1.txt.asc, que es la versión firmada del archivo original. Para verificarlo se utiliza el comando verify:

$ gpg --verify prueba1.txt.asc

gpg: Signature made Mon Dec 19 07:43:01 2005 VET using DSA

key ID 2D8C015B

gpg: Good signature from “Usuario A <[email protected]>”

Si abre este archivo en un editor de texto, notará que su contenido original ahora está cifrado. Para descifrar el archivo utilizamos el co-mando decrypt. En este caso, deseamos que el resultado sea envia-do al archivo prueba1_descifrado.txt, así que usamos la opción –o.

$ gpg -o prueba1_descifrado.txt --decrypt prueba1.txt.asc

Si comparamos el contenido de prueba1_descifrado.txt nos daremos cuenta que es idéntico al archivo original.

Para realizar una firma en claro, utilizamos la siguiente sintaxis:

$ gpg --clearsign prueba1.txt

Esto genera un archivo prueba1.txt.asc, el cual contiene el texto ori-ginal del mensaje, y adiciona un pedazo con una firma digital. Este tipo de firma es el más común para enviar correo electrónico.

También es posible que deseemos plasmar la firma en un archivo independiente, sin alterar el original. Esto es muy útil cuando se van a enviar archivos binarios como imágenes y archivos comprimidos. Esto se logra de la siguiente manera:

$ gpg -o archivo.sig --detach-sign archivo.zip

Una vez generado el archivo con la firma, se puede validar si este es una firma válida del archivo original.

$ gpg --verify archivo.sig archivo.zip

gpg: Signature made Fri Dec 23 07:22:46 2005 VET using DSA key ID

2D8C015B

gpg: Good signature from “Usuario A <[email protected]>”

Cifrado para Recipientes ExclusivosYa hemos visto como se utilizan las firmas para verificar el origen e integri-dad de un mensaje. Ahora veamos el escenario en que el Usuario A quiere generar un mensaje que solamente el Usuario B pueda descifrar. En este caso se utiliza el comando encrypt, acompañado de la opción recipient para indicar que el mensaje debe ser cifrado con la llave pública del Usuario B.

$ gpg -a –o MensajeCifrado.txt –-encrypt --recipient

[email protected] MensajeOriginal.txt

Este mensaje solamente podrá ser descifrado por el Usuario B, utili-zando su llave privada. De hecho, si el Usuario A intenta descifrarlo, el sistema le dirá que no cuenta con la llave necesaria para hacerlo:

$ gpg --decrypt MensajeCifrado.txt

gpg: encrypted with 2048-bit ELG-E key, ID 862B7711, created 2005-12-19

“Usuario B (Llave b) <[email protected]>”

gpg: decryption failed: secret key not available

Sin embargo, el Usuario B si puede hacerlo:

[usuariob]$ gpg -o MensajeDeUsuarioA.txt --decrypt MensajeCifrado.txt

ConclusiónHemos visto como utilizar gpg para administrar llaves, firmar mensajes (sign) y cifrarlos (encrypt). Para una máxima seguridad, es posible tanto firmar como cifrar un mismo mensaje. De esta manera, el emisor asegura que solo los receptores deseados puedan leer el mensaje, y los receptores a su vez aseguran que dicho mensaje viene del emisor.

Existen varios programas que nos permiten manejar GnuPG de manera gráfica:• KGPG (http://developer.kde.org/~kgpg/screenshots.html)• GNU Privacy Assistant (GPA) • Enigmail es una herramienta que integra gpg con el cliente de correo Thunderbird Mail (nave.escomposlinux.org/productos/extensiones/enigmail) y enigmail.mozdev.org)

Quienes deseen escribirme mensajes cifrados, lo pueden hacer a través de mi correo electrónico [email protected]. Mi llave pública está en: hernanramirez.info/pubkey.asc

Referencias• www.debian.org/doc/manuals/reference/ch-gnupg.es.html• www.insflug.org/COMOs/GPG-Mini-Como/GPG-Mini-Como.html

16 MAR-ABR 2006 www.softwareguru.com.mx

18 MAR-ABR 2006 www.softwareguru.com.mx

ESPECIAL

Cadena de Valor MóvilObteniendo Ventaja CompetitivaPor Mario R. Rodríguez

En los últimos años ha aumentado considerablemente la cantidad de PDAs y teléfonos celulares; estos dispositivos comparten la ca-

racterística de “movilidad”, que sumada a la facilidad de sincroniza-ción y a la tecnología inalámbrica, han extendido las posibilidades de comunicación y transferencia de datos. Las aplicaciones más comunes incorporadas a los dispositivos móviles son de propósito general, como agenda, calculadora, cámara fotográfica, correo electrónico, juegos y sincronización de datos.

Pero más allá de esto, ¿cómo una aplicación de negocio puede aprove-char la movilidad y traer beneficios a la empresa? Para responder a esta pregunta primero debemos tomar en cuenta que no todas las organiza-ciones tienen a su personal en movimiento y que además, al igual que sus clientes, no todos requieren acceder a información en cualquier

momento o lugar, por lo que no en todas las áreas organizacionales se necesita de las aplicaciones móviles. El análisis que se presenta a conti-nuación no está hecho para alguna industria en particular, y considera la cadena de valor como base para determinar el tipo de aplicaciones de las que se puede obtener un provecho para la organización.

Aplicaciones que Apoyan la Estrategia Competi-tiva en Costo-DiferenciaciónEl análisis de la cadena de valor es una técnica que sirve para dividir la secuencia (cadena) de las funciones de negocio en actividades es-tratégicas relevantes cuya utilidad (valor) es sumada a los productos y servicios. El análisis de la cadena de valor se realiza para entender el ambiente de costo y recursos de diferenciación (Shank & Govin-darajan, 1993).

Mario Ricardo Rodríguez Somohano se ha especializado en desarrollo de aplicaciones y tecnologías de Internet y es coordinador de consultoría de e-services y consultor en modelos de calidad CMMI y MoProSoft en el ESICenter México, organización del Tecnológico de Monterrey que se dedica a contribuir al desarrollo de la industria en México, Centro y Norte América, incrementando su competitividad a través de la difusión, la mejora continua y el conocimiento en tecnologías de información. [email protected]

19MAR-ABR 2006www.softwareguru.com.mx

Michael Porter argumentó que una organización puede desarrollar una ventaja competitiva sustentable basada en costo, diferenciación, o am-bas, tal como se muestra en la tabla 1.

Tabla 1. Shank and Govindarajan (1993, p. 49).

Para sobrevivir en un ambiente de negocio altamente competitivo, cualquier organización debe alcanzar (al menos temporalmente) una ventaja competitiva. Una estrategia de bajo costo/precio se enfoca en proveer bienes o servicios a un costo menor que la competencia, o un valor superior del bien o servicio al mismo costo. Algunos ejemplos de cómo las aplicaciones móviles pueden contribuir son:

Debe tomar en cuenta que implantar las aplicaciones móviles requiere de una infraestructura mínima para operar el acceso y transferencia de datos. El costo de desarrollo de la aplicación puede variar de acuerdo a sus características y complejidad, y no se requieren cuantiosas inversio-nes en capacitación. A cambio de una pequeña inversión, puede dife-renciarse de sus competidores, agregar valor a sus productos o servicios y reducir algunos costos.

Aplicaciones que Apoyan las Actividades en la Cadena de ValorEl análisis de la cadena de valor puede ayudar a una organización a de-terminar qué tipo de ventaja competitiva debe perseguir y cómo. Hay dos componentes en este análisis: la cadena de valor de la industria y la cadena de valor interna a la organización. La primera se compone de todas las actividades que generan valor dentro de la industria y se identifican con las cinco fuerzas competitivas que interactúan en una industria (Porter, 1980) estas fuerzas son:

1. Rivalidad entre competidores existentes.2. Barreras de entrada a nuevos competidores.

3. Amenaza de productos substitutos.4. Poder de negociación de clientes.5. Poder de negociación de proveedores.

La cadena de valor interna consiste en las actividades dentro de la or-ganización encaminadas a agregar valor para el cliente. La clave para este análisis es entender qué actividades son las que crean una ventaja competitiva y en cuáles es factible incorporar aplicaciones móviles y administrarlas de tal forma que se hagan mejor que los competidores de la misma industria.

Porter sugiere que las actividades de un negocio pueden agruparse en dos categorías:• Actividades primarias.- Están involucradas directamente con la crea-ción física y entrega del producto o servicio.• Actividades de soporte.- Contribuyen con las actividades primarias (Ver figura 1).

Aunque no todas las organizaciones realizan las actividades primarias o secundarias como las expresa Porter, este análisis debe servir para exa-minar los procesos internos e identificar en qué actividades es adecuado incorporar una aplicación móvil ya sea para agregar valor, disminuir costos o aumentar la productividad, y que esto se traduzca en una ven-taja competitiva.

Analicemos entonces qué tipo de aplicaciones pueden contribuir en cada una de las actividades de la cadena de valor, tomando en cuenta que la utilidad de una aplicación móvil radica en que, a diferencia de una de escritorio, puede actuarse en momentos críticos en los que el personal no esté físicamente en su lugar ya sea por la naturaleza de su trabajo o porque requiera trasladarse en momentos específicos.

Infraestructura: incluye administración general, planeación, asuntos legales, finanzas contabilidad, calidad, etc.

Aplicaciones móviles para infraestructura:• Consulta de estados financieros e indicadores clave.• Consulta y transferencia de mensajes y correos urgentes.• Seguimiento de actividades de planes.• Consulta de itinerarios, directorio de clientes.• Programación de juntas o actividades.• Conectividad a sistemas ERP o CRM.• Transferencia de archivos.

Posición relativa en costo

Inferior Superior

Ventaja en Ventaja en

Superior diferenciación ambas

Inferior Atorado en Ventaja en

el camino costo

Posición relativa

en diferenciación

Superioridad en Diferenciación Superioridad en Costo

Acceso a la cartelera cinematográfica. Distribución de catálogos en

línea en vez de impresos.

Búsqueda de libros por sucursal. Registro de datos en el sitio

y no registro en papel y captura.

Existencia de medicinas específicas Consulta de itinerarios y

en sucursales. optimización de tiempos.

M-commerce, posibilidad de compras Acceso a registros en lugar

desde el dispositivo. de personal de atención

telefónica.

Publicidad inteligente en función de Optimización de rutas de

la ubicación de la persona. personal de mantenimiento

o entregas.

Figura 1. Cadena de valor según Porter (1985).

20 MAR-ABR 2006 www.softwareguru.com.mx

ESPECIAL

Administración de Recursos Humanos: es-tas actividades están relacionadas con el reclu-tamiento, selección, capacitación, retención, reconocimientos a empleados y en general con asuntos relacionados directamente con el personal y sus actividades. No es común que el personal de recursos humanos esté en mo-vimiento, por lo que hay que analizar con de-tenimiento el tipo de aplicaciones móviles que puedan ser de utilidad en esta actividad.

Aplicaciones móviles para administración de los recursos humanos:• Consulta de historial de capacitación, habi-lidades o resultados de evaluación.• Consulta de indicadores personales, posicio-namiento y concursos internos.

Desarrollo Tecnológico: incluye la tecnolo-gía que soporta las actividades de la cadena de valor como desarrollo, automatización de procesos, diseño, etc.

Aplicaciones móviles para desarrollo tecnológico:• Reportes y pruebas de campo.• Estadísticas de desempeño y uso de equi-pos remotos.• Estadísticas de productos entregados a cliente final.

Compras: son las actividades involucradas en las adquisiciones de materia prima, suministros y artículos consumibles así como los activos.

Aplicaciones móviles para compras y abastecimiento:• Recepción de información de estado de pedidos.• Alertas de punto de reorden y desabasteci-miento estimado por ritmo de consumo. • Consulta de catálogos y listas de precios de proveedores.

Logística de Entradas: se conforma por las actividades de recepción, almacenaje, mani-pulación de materiales, inventarios, vehículos, devoluciones, entre otros.

Aplicaciones móviles para logística de entradas:• Recepción de información de estado de pedidos.• Estado y disponibilidad de almacenamiento en el punto de destino.• Seguimiento de abastecimiento a líneas de producción.• Inventario en tránsito.• Consulta de ubicación física de artículos en almacenes.

Operaciones: conformada por la transfor-mación del producto final como montaje, etiquetado, mantenimiento, verificación y operaciones de integración del producto.

Aplicaciones móviles para operaciones:• Envío de instrucciones a equipos de forma remota (Control de equipos).• Alarmas de estado de equipos e instrumentos.• Recepción de lectura de indicadores de com-ponentes y operación de equipos.• Notificaciones a supervisores.• Consulta de calendarios y juntas programadas.

Logística de Salidas: está conformada por la distribución del producto acabado, como al-macenaje de mercancías acabadas, manejo de materiales, vehículos de reparto y pedidos.

Aplicaciones móviles para logística de salidas:• Registro y autorizaciones de salidas.• Estado y disponibilidad de inventario de productos terminados.• Inventario de productos terminados en tránsito.• Ubicación de camiones de distribución y transporte.• Consulta de liberación de artículos y factu-ras pagadas

Comercialización y Ventas: lo conforman las actividades involucradas en la inducción y fácil adquisición de los productos como pu-blicidad, fuerza de ventas, cuotas, selección de canales de distribución y precios.

Aplicaciones móviles para comercialización y ventas:• Estudios de mercado.• Acceso a catálogos y listas de precios.• Información de productos y características a clientes.• Estado de pedidos de cliente.• Consulta de comisiones acumuladas.• Paridad de cambios de moneda.• Registro en línea de cotizaciones o pedidos.• Existencia de artículos en sucursales.

Servicio: son aquellas actividades que tratan de mantener y aumentar el valor del producto después de la venta, como instalación, repara-ción, entrenamiento, suministro de repuestos y ajustes del producto.

Aplicaciones móviles para servicio:• Monitoreo de desempeño de equipos y pro-ductos entregados.

• Consultas de saldos y líneas de crédito.• Optimización de rutas de servicio a distri-buidores o a domicilio.• Cambios en configuración en productos en-tregados al cliente.• Consultas de especificaciones de ensambla-do y montaje.• Solicitud de procedimientos de diagnóstico o instrucciones de mantenimiento.• Recepción de retroalimentación de clientes (fallas, sugerencias, quejas).

La integración de los servicios móviles depende en gran medida de la adaptación de los sistemas actuales pero, aunque es relativamente fácil hacer las adecuaciones necesarias, por su misma natu-raleza inalámbrica, la información se expone a acceso y uso no autorizados. La seguridad en la transmisión de datos es un factor crítico en la implantación de este tipo de servicios. Por otro lado, la adaptación de los servicios se complica con la gran variedad de equipos que existen en el mercado porque no todos tienen las mismas características de operación.

La mayoría de las aplicaciones mencionadas requieren de equipos o servidores que provean la información a los dispositivos móviles. El In-ternet es una buena base para la explotación y transferencia de datos y esto puede lograrse al incorporar tecnologías como Bluetooth o Wi-Fi, por ello, la empresa estará en condiciones de crear aplicaciones de valor agregado a los clientes y contará con más ventajas competitivas.

Referencias• Arehart, Charles et al. Profesional WAP with WML, WMLScript, ASP, JSP, XML, XSLT, WTA, Push and VoiceXML, Wrox Press Ltd. 2000• Porter, M. Competitive advanta-ge: Creating and sustaining superior performance. New York: The Free Press. 1985• Porter, M. Strategy and the Internet. Harvard Business Review, 79(3), 62-78. 2001• Shank, J. K., & Govindarajan, V. Strategic cost management: The new tool for competitive advantage. New York: The Free Press. 1993

ENTREVISTA

¿Qué te motiva a promover el Software Libre?Soy un gran creyente de la colaboración. Creo que tres personas colaborando para resolver un problema generan una mejor solución que la persona más brillante trabajando sola.

La primera distribución de Linux que se podía instalar en el sistema de archivos FAT sin tener que reparticionar el disco, la desarrolló un niño de 14 años. La única persona que lo ayudó, fue alguien a través del Internet, a quien nunca había conocido, y que también tenía 14 años. Quiero encontrar a estas personas. Quiero en-contrar al próximo Einstein de las computado-ras. Y no pienso que solamente puede salir de Estados Unidos. Puede ser de México, Brasil, China o un país como Finlandia. Pero estoy seguro de que si tenemos que filtrar a estas personas a través de Redmond o Silicon Valley, nunca las vamos a encontrar.

¿Qué impacto tiene el software libre en la economía local?Si vas a una expo de computación en México, encontrarás a muchas empresas distribuyen-do productos extranjeros. El inconveniente de esto es que están enviando al extranjero dinero que se podría quedar en el país para hacer otra cosa, ya sea pagarle a un desarrollador de soft-ware, comprar comida, o simplemente bajar el costo de los servicios para otros sectores. De cualquier forma es bueno para la economía.

Imaginemos un escenario extremo en el que todo el software fuera hecho por la misma em-presa, en Estados Unidos. ¿Cómo podrían los diferentes países desarrollar una economía local del software? ¿Qué caso tendría que las universidades enseñaran desarrollo de soft-ware? Yo creo que es mejor tener a 80 mil per-sonas millonarias, que a un 80 mil millonario. Definitivamente es mejor para la economía.

¿Qué se puede hacer para mejorar la edu-cación universitaria?Antes que nada, creo que la gente debe darse cuenta que las personas que están enseñando

a sus hijos, están construyendo su futuro. Si no tenemos a las mejores personas educándolos, entonces, vamos a perder como sociedad.

Por otro lado, es común ver que los profesores se pierdan en las actividades académicas, y pierdan contacto con el mundo real. Esto ter-mina afectando la calidad de la enseñanza que dan. Debería haber programas para que cada cierto tiempo los profesores dejen la acade-mia, trabajen en la industria, y posteriormente regresen con ideas renovadas.

Por último, creo que debemos entender el rol de las universidades. Mucha gente piensa que es ayudar a sus hijos a conseguir un buen tra-bajo. Eso no es cierto. Las universidades exis-ten para generar gente capaz de contribuir al desarrollo de la industria, y capaz de evaluar lo que se debe hacer en la política y gobierno para mejorar la economía y la sociedad. Es erróneo creer que las universidades deben entrenar a sus alumnos para hacer un trabajo específico, o con una herramienta en particular. No, lo que las universidades deben enseñar a sus alum-nos, es cómo aprender nuevas cosas; es decir, prepararlos para una vida de aprendizaje.

¿Los grandes desarrolladores aplican la ing-eniería de software, o simplemente se sientan a programar?He conocido desarrolladores que al principio de un proyecto, van a un pizarrón y sistemá-ticamente analizan el problema, diseñan una solución, evalúan los algoritmos posibles, y entonces generan software muy bueno. Por otro lado, he visto a quienes directamente se ponen a programar, y también generan soft-ware muy bueno. Posiblemente tengan un pizarrón mental y en 30 segundos hagan lo mismo que hicieron los otros. Lo que hay que entender acerca de estas per-sonas, es que no sólo son buenos programa-dores, sino que cuentan con otras habilidades, que son las que les permiten ser tan buenos. Por ejemplo, en el caso de Linus (Torvalds), es

un excelente escuchador. Hace unos años du-rante una conferencia, Linus estaba dando una plática sobre lo que estaban haciendo para soportar multiprocesamiento simétrico (SMP). La persona que iba conmigo, había sido arqui-tecto de Digital Unix, y estaba enfurecido por-que él sabía lo complicado que esto era, y que Linus no estaba considerando muchas cosas. Así que después de la plática fue a buscarlo y habló con él durante más de media hora, en la que Linus se limitó a decir “ah sí... ok, ...es cierto”. Al terminar, mi amigo regresó más con-tento y me dijo “ja, ya lo puse en su lugar”. A lo que le contesté “sí, supongo que le dijiste todo acerca de cómo implementamos SMP en Digital Unix y el simplemente te escuchó”, y entonces mi amigo exclamó “¡oh no, le acabo de revelar toda la propiedad intelectual!”. Así es Linus, puede sentarse y absorber todo.

¿Cuál es tu opinión sobre las patentesde software?Antes de que se crearan las patentes, la única forma de proteger un invento, era no revelándolo. El problema con esto es que al morir el inventor, este conocimiento se per-día. Otro problema es que nadie podía decir “oye, tengo una idea que puede mejorar tu idea”, porque nadie conocía la idea origi-nal, solamente su creador.

La industria médica es una buena razón para tener patentes. A un científico le toma veinte o más años crear una medicina. Y después de crearla deben pasar otros cinco o diez para probarla, y verificar que no tenga efectos se-cundarios. Esto es una gran inversión, y requie-res patentes para evitar que los competidores simplemente copien la fórmula.

El caso de la industria de software es diferente. He estado en ella más de 35 años, y la mayoría de las veces lo que sucede es que en cuanto un ingeniero tiene una idea para un problema par-ticular, llega un abogado diciendo: “¿podemos patentarlo?”, “¿cuánto dinero le podremos sa-car?”, “tal vez no le podamos sacar dinero, pero

Jon “maddog” HallPresidente de Linux International

Durante LinuxWorld México tuvimos oportunidad de platicar con Jon ‘maddog’ Hall, Presidente de Linux International, una organización sin fines de lucro que promueve la adopción del software libre. Durante su carrera, maddog ha ocupado un sinfín de posiciones técnicas, ha sido maestro universita-rio, y actualmente forma parte del consejo de diversas organizaciones. Sin duda, es una de las perso-nas más conocedoras, interesantes y agradables de la industria. Veamos cuales fueron sus palabras para los lectores de SG.

22 MAR-ABR 2006 www.softwareguru.com.mx

23MAR-ABR 2006www.softwareguru.com.mx

podemos evitar que la competencia lo use”. Lo que yo me pregunto es, ¿eso es beneficioso para la sociedad?, ¿la empresa realmente hizo una gran inversión, o la va a recuperar en las primeras veinte copias que venda?

A principios del siglo XVIII, un señor llamado Bartolomé Cristofori inventó cierto instrumen-to musical. Cristofori bien sabía lo que era una patente, ya que ésta había sido inventada 400 años antes en la misma ciudad donde el vivía (Florencia, Italia). Sin embargo, él pensó “no existe música escrita para este instrumento, y sin música, no habrá demanda de instrumen-tos. Si lo patento, nadie querrá pagar para construirlo, y entonces nadie escribirá música para él. En cambio, si publico cómo construir-lo, posiblemente haya gente interesada en hacerlo, y entonces habrá gente interesada en hacer música para él, y algunos vendrán a comprar mis instrumentos.”. Así que eso es lo que hizo. El instrumento que inventó es el pia-no forte, que es la base del piano moderno, y si Cristofori no hubiera tenido esta visión, tal vez no conoceríamos el piano.

Si a empresas como Microsoft se les conce-dieran todas las patentes que están solicitan-do, entonces cada que escribimos una línea de código tendríamos que preguntarnos: “¿estará esto patentado?, ¿tendré que pagar regalías a alguien si lo desarrollo así?”. Es como si Miguel Ángel después de estar pin-tando la Capilla Sixtina durante veinte años, y justo cuando está terminando, llega Leonar-do da Vinci y le dice “buen trabajo, pero tie-nes que hacerlo otra vez, porque la semana pasada patenté esa pincelada de allá. Y ni te molestes en taparla, porque también patenté esa de allá, y esa otra”.

Actualmente, el software está en todos la-dos, y toda la sociedad se beneficia de él. El software nos puede ayudar a resolver mu-chos de los problemas que enfrentamos, y creo que sería mejor si 6.3 billones de men-tes pudieran colaborar para resolverlos. Por esto, creo que las patentes de software no tienen lugar en la sociedad moderna, y que al igual que las matemáticas y las artes, el software debería ser libre.

¿Algún mensaje para los lectores?Sí, deben divertirse. Parece que a veces olvida-mos esto. Si quieren ver a la persona más impor-tante para el software libre, miren en un espejo.

EN PORTADA

24 MAR-ABR 2006 www.softwareguru.com.mx

El tema de la seguridad informática ha sido de gran importancia en los últimos años. Como usuarios, esta-mos muy conscientes de amenazas como virus, adware, spyware, phishing, etc. Sin embargo, como desarrolla-dores de software es posible que no estemos haciendo suficiente énfasis en la seguridad de las aplicaciones que desarrollamos y administramos. Conozcamos entonces algunos aspectos fundamentales sobre la seguridad de aplicaciones de software.

¿ESTÁS SEGURO?CONOCIENDO LOS FUNDAMENTOS

Fundamentos de la seguridadExisten diversos pilares sobre los que descansa la seguridad de una aplicación. Entre los prin-cipales están:Autenticación. La autenticación se enfoca en re-solver la pregunta “¿y tú quién eres?”. Es el proce-so de identificar de manera única a los clientes de nuestras aplicaciones y servicios. Estos pueden ser usuarios finales, otros servicios, procesos o com-putadoras. En el argot de la seguridad, los clientes autentificados se conocen como “principals”.Autorización. Mientras que la autenticación se enfoca en saber “quién” es alguien, la autoriza-ción se preocupa por averiguar “qué” es lo que puede hacer. Es el proceso que gobierna los re-cursos y operaciones que los clientes autentifica-dos pueden acceder. Los recursos pueden incluir datos (archivos, bases de datos, tablas, renglones

específicos), así como elementos de bajo nivel como archivos de configuración, o llaves del re-gistry. Las operaciones incluyen la realización de transacciones, que pueden tener una gran varie-dad dependiendo de cada aplicación.Auditoria. El registro (auditing) y manejo de bi-tácoras es de vital importancia en cualquier apli-cación, ya que hace posible la no-repudiación. Esto es, que un usuario no pueda negar haber realizado una operación.Confidencialidad. La confidencialidad, o priva-cidad, es el proceso de asegurar que los datos se mantienen confidenciales y no pueden ser con-sultados por personal no autorizado, o por alguien que espíe un flujo de información a través de una red. La encripción típicamente se utiliza para re-forzar la confidencialidad. Otro mecanismo co-mún son las listas de control de acceso (ACLs).

Integridad. La integridad es la garantía de que los datos están protegidos de ser modificados de manera accidental o deliberada (malicio-sa). En las aplicaciones web, cuya información cruza a través de la red, esto es de gran impor-tancia, ya que queremos asegurar que la infor-mación que el usuario recibe es exactamente la misma que el servidor envió. La integridad de los datos y mensajes comúnmente se resuelve utilizando técnicas de hash y códigos para au-tenticación de mensajes.Disponibilidad. Desde la perspectiva de se-guridad, la disponibilidad significa que un sistema esté disponible para sus usuarios legí-timos. En algunos casos, se pueden recibir ata-ques de “negación de servicio”, cuyo objetivo es saturar una aplicación o servidor de tal ma-nera que sus usuarios no puedan accederla.

Estrategia Integral de SeguridadPara construir aplicaciones seguras, es necesario utilizar una estrategia integral donde no solo se considera la aplicación, sino también el host donde se ejecuta, y la red donde fluyen sus datos. Una vulnerabilidad en cualquiera de estos elementos puede comprometer la seguridad de todo el ambiente.

En cada uno de estos elementos existen diferentes aspectos a tener en cuenta, a continuación damos una breve descripción de algunos de los más representativos.

Asegurando la RedEl primer elemento que se debe asegurar es la red. Una red segura no solamente debe proteger de ataques por TCP/IP, sino que también debe asegurar la integridad del tráfico que viaja a través de ella, y debe proveer la capacidad de aislar ataques. La tabla 1 describe los compo-nentes básicos para infraestructura de red segura.

Asegurando el HostEl siguiente elemento a asegurar es el host. Con esto nos referimos al servidor o servidores de base de datos, web, aplicación, etc. La tabla 2 lista las principales consideraciones que se deben tener en cuenta para asegurar un host.

Asegurando la AplicaciónUna vez que contamos con una red y hosts seguros, podemos enfocar-nos en desarrollar aplicaciones seguras, o asegurar las existentes. La ta-bla 3 provee una guía sobre los principales aspectos a tener en cuenta.

ConclusionesHemos visto algunos aspectos básicos que se deben tomar en cuenta para tener aplicaciones de software seguras. Es importante recalcar que asegurar la infraestructura (redes y hosts) es indispensable, pero no suficiente.

Además de esto, se requiere diseñar y construir las aplicaciones utilizando lineamientos y mejores prácticas de seguridad.Cualquier aplicación está su-jeta a ataques. Debemos tomar las precauciones necesarias para evitar que alguien pueda dañar los activos que protegemos; ya sean estos información, o el prestigio de una empresa. Ante todo, debemos estar conscientes de que la seguridad informática no es un destino, es un camino.

Componente Descripción

Ruteador Los ruteadores proveen el punto de contacto hacia el Internet. Canalizan los paquetes de datos hacia la aplicación. Algunas vulnerabilidades comunes de TCP/IP se pueden resolver en este punto.

Firewall Un firewall bloquea los puertos y protocolos que querramos proteger. Además, pueden analizar y filtrar el tráficoo para bloquear comunicaciones maliciosas.

Switch Los switches se utilizan para separar segmentos de red.

Consideración Descripción

Parches y Continuamente se encuentran y se resuelven nuevasActualizaciones vulnerabilidades en los sistemas operativos y software de infraestructura. Mantener un servidor actualizado es el primer paso para asegurarlo.

Protocolos y Un servidor solamente debe tener activados aquellos Servicios servicios y protocolos que realmente utilice. Con esto minimizamos las puertas de entrada posibles.

Puertos Se debe conocer y monitorear continuamente los puertos abiertos en un servidor.

Cuentas de Acceso Un servidor debe poder acceder aquellas cuentas que utilice, y nada más. Adicionalmente, se deben aplicar políticas tales como el manejo de contraseñas fuertes, y la expiración de cuentas.

Archivos y Los archivos y directorios se deben proteger de maneraDirectorios que sólo se provea acceso a los usuarios requeridos.

Bitácoras (logs) Las bitácoras son de especial utilidad como información forense para determinar cómo se llevó a cabo un ataque.

Categoría Descripción

Validación de ¿Cómo sabemos que las entradas de datos que entradas de datos recibe nuestra aplicación son válidas y seguras?

Autenticación La autenticación es el proceso a través del cual una entidad verifica la identidad de otra, típicamente se realiza a través de un usuario y contraseña, aunque existen otros mecanismos, como son los biométricos.

Autorización El control de acceso a los recursos y operaciones

Administración de ¿Bajo qué usuario se ejecuta la aplicación? ¿A quéla configuración bases de datos se conecta? ¿Cómo se administra? de seguridad

Información sensible Se refiere a cómo es que la aplicación maneja la información confidencial que se debe proteger ya sea en memoria, en el canal de comunicación, o en la base de datos.

Manejo de sesiones En una aplicación web, una sesión se refiere a un conjunto de interacciones entre un usuario y la aplicación. Debemos asegurar que las sesiones se mantengan protegidas durante su ciclo de vida.

Criptografía Cómo se asegura la confidencialidad de la información. Manipulación Las aplicaciones web acostumbran utilizar cookies, de parámetros query strings, y formas como parámetros para proveer información. ¿Cómo es que la aplicación asegura que estos no sean manipulados, y que sean procesados adecuadamente?

Manejo de Cuando falla una llamada a una operación, ¿qué Excepciones hace la aplicación? ¿Qué tanta información interna revela? ¿Regresa información comprensible y amigable al usuario? ¿La aplicación puede seguir siendo utilizada sin problema?

Bitácoras. ¿Quién hizo qué, y cuando lo hizo?

Tabla 1. Componentes de seguridad en la red

Tabla 2. Consideraciones de seguridad en el host

Tabla 3. Categorías de seguridad en la aplicación

25MAR-ABR 2006www.softwareguru.com.mx

Luis Guerrero es Arquitecto de Sistemas en el Sistema de Administración Tributaria (SAT). Sus áreas de especialidad son procesos, ingeniería de software, seguridad y métodos ágiles. Durante su trayectoria profesional ha trabajado en México, Las Antillas y Centroamérica, en proyectos empresariales y para el gobierno federal.

26 MAR-ABR 2006 www.softwareguru.com.mx

EN PORTADA

El modelado de amenazas es una técnica que se puede usar para identificar amenazas, ataques, vulnerabilidades y contramedidas que podrían afectar a una aplicación. También se puede usar para dar forma al diseño de una aplicación, al-canzar los objetivos de seguridad de la empresa y reducir los riesgos.

El modelado de amenazas también nos pro-vee de una guía estructurada para evaluar e incorporar seguridad en las aplicaciones. Esto es mucho más eficiente y efectivo que resolver problemas de seguridad al azar, ya que de esta última forma es difícil juzgar cuando una apli-cación es “suficientemente segura”.

Existen diferentes métodos para modelar las ame-nazas. En este artículo estudiamos un método desarrollado por Microsoft. Vale la pena recalcar que este método no es exclusivo a sistemas con tecnología Microsoft, sino que son prácticas apli-cables a cualquier otro sistema de información, independiente de su plataforma.

Los pasos de tal método son los siguientes:1) Identificar los activos.2) Crear una perspectiva general de la arquitectura. 3) Desmantelar la arquitectura. 4) Identificar las amenazas.5) Documentar las amenazas.6) Catalogar las amenazas e identificar vulne-rabilidades.

Antes de iniciar una sesión de modelado de amena-zas, hay que hacer un poco de tarea. Primero, todos los participantes deben estar familiarizados con los conceptos del modelado (amenazas, vulnerabili-dades, contramedidas). También deben estar cons-cientes de los objetivos de seguridad del sistema, para saber en qué momento detenerse, y poder hacer el análisis e identificación de los elementos elegidos. En este momento hay que plantearse preguntas como ¿qué es lo más importante en el sistema?, ¿qué es lo peor que puede ocurrir?, ¿qué se puede prevenir?

Identificar ActivosEl primer paso es evidente. Un activo es un re-curso de valor, y varía según la perspectiva. Para

un aplicativo, un activo podría ser la disponibi-lidad de información o la información en sí mis-ma, como los datos del cliente. También podría ser abstracto, como la reputación de la empresa. Para un atacante, un activo podría ser la capacidad de utilizar de forma indebida la aplicación para obtener un acceso no autorizado a los datos o las operaciones con privilegios.

Perspectiva de la ArquitecturaPosteriormente, se define una perspectiva general de la aplicación. Aquí es necesario ser claro con la función de la aplicación, el cómo se piensa lograr esa funcionalidad, y qué tecnología se requiere para poner en marcha el diseño. Esto último per-mite identificar amenazas específicas comunes en esa tecnología, y sus soluciones.

Normalmente, se parte de un diagrama de blo-ques de la aplicación, con las distintas piezas de la arquitectura física (servidor web, browser o cliente GUI, servidores de base de datos, protocolos de comunicación). Aquí también se identifican los

emplazamientos de las distintas tecnologías, para saber cómo se instalará la solución en los distintos servidores de la plataforma tecnológica.

Teniendo a la vista los distintos componentes de la arquitectura tecnológica, se puede diseñar la au-tenticación, identificando la delimitación entre las secciones disponibles para los usuarios anónimos y los usuarios identificados con credenciales, y los flujos de autorización, que identifican las distintas operaciones que hay en el sistema, y los grupos de usuarios que pueden realizarlas. Por ejemplo, todos los usuarios pueden ver el catálogo de pro-ductos. Sólo los usuarios autenticados pueden ad-ministrar su carrito de compras, en una relación estricta uno a uno, y sólo los administradores pueden agregar o eliminar elementos del catálogo de productos. Ningún usuario tiene acceso a las contraseñas.

Desmontar la ArquitecturaLa descomposición funcional es el tercer paso, con el fin de lograr el perfil de seguridad de la aplica-ción. Una comprensión detallada de la mecánica

de la aplicación facilita el descubrimiento de las amenazas más relevantes. También se identifican las divisiones de confianza del sistema, los flujos de datos, los puntos de entrada y salida y el código privilegiado. Partiendo del axioma “Toda entrada de datos debe ser considerada como potencial-mente maligna”, se debe hacer una validación de los datos que intercambian los subsistemas, y se deben identificar los puntos de entrada al siste-ma. Las divisiones de confianza se identifican en base a los datos, respondiendo las preguntas ¿se puede confiar en el dato?, ¿se puede confiar en el usuario? De aquí surgen naturalmente los puntos de acceso al sistema. En estos puntos hay que pre-guntarse cuál es el mecanismo de autenticación, qué privilegios se necesitan para realizar las opera-ciones y dónde se realizan los controles de acceso. Los diagramas de flujos de datos funcionan muy bien para hacer este análisis. No olvidemos consi-derar los diferentes equipos periféricos y conside-rarlos también en los flujos de información. Los puntos de entrada son los principales blancos de ataque. Los puntos de ataque más evidentes son

las interfaces de usuario, pero no son los únicos. Hay que identificar los puntos adicionales, como interfaces programáticas o procedimientos alma-cenados de bases de datos. Igual de importantes son los puntos de salida del sistema: reportes, archivos de interfaz, mensajes de error, tablas en bases de datos. No se puede asumir nada con estos datos, y es necesario limpiarlos con cuidado antes de depositarlos en los puntos de salida.

Identificar AmenazasUna amenaza es un evento no deseado. Una posi-ble ocurrencia, a menudo descrita como un efecto que podría dañar o comprometer un activo u ob-jetivo. Puede que tenga o no carácter malinten-cionado. Un enfoque integral considera todo el sistema, desde las amenazas de la red, pasando por las amenazas del equipo para llegar a las amenazas de la aplicación.

Para categorizar los diferentes tipos de amenaza, se utiliza el modelo STRIDE, que es un acrónimo de Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of Privilege.

MODELADO DE AMENAZASUN CAMINO HACIA SISTEMAS MÁS SEGUROSPor Luis Guerrero

27MAR-ABR 2006www.softwareguru.com.mx

He aquí los significados de cada uno:• Spoofing. Intento de obtener acceso a un sistema usando una identidad falsa.• Tampering. Modificación no autorizada de datos.• Repudiation. Capacidad de los usuarios —legítimos o no— para negar que hicieron ciertas actividades o transacciones.• Information disclosure. Exposición no deseada de datos privados.• Denial of service. Proceso para lograr que un sistema o aplicativo no este disponible.• Elevation of privilege. Ocurre cuando un usuario con privilegios limi-tados asume la identidad de un usuario con mayores privilegios para tener esos niveles de acceso a una aplicación.

Una buena manera de analizar una aplicación es usando árboles de ataque. La idea es identificar los objetivos del ataque, e irlos refinando, establecien-do qué condiciones se deben cumplir para que el ataque tenga éxito. Se puede usar un diagrama jerárquico, o una lista delineada. Lo importante es tener el perfil de ataque del sistema al final.

Documentar AmenazasCuando se documentan las amenazas, se les otorga un nombre y un iden-tificador único, una breve descripción, las técnicas que se podrían usar para perpetrar el ataque y una estrategia para manejar el riesgo. Por ejemplo, en un ataque de inyección SQL, el objetivo es la base de datos, y la técnica es que el atacante escriba comandos en una caja de texto que se agregan a una sentencia SQL sin que ocurra una validación en el cliente. Para contrarres-tar este ataque, se deben usar expresiones regulares para validar el correo electrónico del cliente y comandos paramétricos para acceder a la base de datos. Cuando se documentan amenazas, es útil documentar el objetivo, el riesgo la técnica de ataque y la contramedida.

Identificar VulnerabilidadesUna vulnerabilidad es un punto débil en algún aspecto o característica de un sistema que posibilita un ataque. Las vulnerabilidades pueden existir en la red, el equipo o los niveles de la aplicación, e incluir prácticas opera-tivas. Atender cada vulnerabilidad no es práctico, por lo que es importan-te hacer una evaluación de los riesgos para priorizarlos y atender los más importantes. Una forma de catalogarlos es calcular el riesgo como el pro-ducto de la probabilidad de que sea descubierto por el potencial de daño. Podemos utilizar el modelo DREAD para valorar las vulnerabilidades. DREAD es un acrónimo de cinco atributos clave para medir la vulnera-bilidad Daño (Damage potential), facilidad de Reproducir (Reproducibili-ty), facilidad de Explotar (Exploitability) usuarios Afectados (Affected users) y facilidad de Descubrir (Discoverability). Se asignan tres valores en cada categoría —3 Alto, 2 Medio, 1 Bajo— y luego se suman. Esto resulta en una clasificación de amenazas entre 5 - 15. Los riegos entre 12 y 15 son de alta prioridad, los riesgos entre 8 y 11 son de mediana prioridad y los riesgos entre 5 y 7 son de baja prioridad.

ConclusiónAunque es posible mitigar el riesgo de un ataque, no se mitiga o elimina a la amenaza misma. Las amenazas existen independientemente de las acciones y contramedidas que se tomen. En el mundo de la seguridad, lo que sucede es que se acepta la presencia de amenazas, y se administran los riesgos asociados. El modelado de amenazas es una herramienta que facilita la administración y comunicación de estos riesgos.

Referencias• Swiderski Frank, Snyder Window. Threat Modeling. Microsoft Press,.• Howard Michael, LeBlanc David. Writing Secure Code. 2da edición, Microsoft Press, 2002• Schneider Bruce, Secrets and Lies, Wiley, 2004

28 MAR-ABR 2006 www.softwareguru.com.mx

EN PORTADA

La seguridad informática y los asuntos relacio-nados con ésta, evolucionan continuamente conforme la tecnología, el contexto de negocio y la sociedad van cambiando. Mientras que en los ochenta el enfoque de la seguridad era con-trolar acceso a archivos en mainframes, hoy en día el énfasis es en temas como el spyware o la confidencialidad de la información conforme viaja a través de redes públicas.

Tales cambios y enfoque son reconocidos inter-nacionalmente en los lineamientos de la OCDE (Organización para la Cooperación y el Desa-rrollo Económico) para promover una “cultura global de seguridad” [1]. Dichos lineamientos hacen patente un cambio de enfoque y actitud hacia la seguridad informática, que hasta hace unos años era algo de poca importancia, o por lo que solamente se debían preocupar unas cuan-tas organizaciones. Esto se debe al alto grado de dependencia en tecnologías de información, que tiene la sociedad y economía moderna.

En esta cultura de seguridad, se espera que las empresas, como dueños y operadores de sistemas y redes de información, le den el nivel de impor-tancia necesario a la protección de la informa-ción. Esto incluye asignar suficientes recursos y tomar las medidas correspondientes, realizando acciones como identificación de riesgos, diseño e implementación de mecanismos de seguridad, administración de dichos mecanismos, y reeva-luación de los sistemas seguridad.

PrivacidadEl tema de la privacidad de la información per-sonal es tal vez uno de los que mayor preocupa-ción provoca. Los avances tecnológicos, tanto en términos de poder de procesamiento y almace-namiento, como en sistemas de comunicación y

monitoreo, permiten captar y acceder a una enor-me cantidad de información sobre los individuos. La OCDE ha desarrollado lineamientos que rigen la protección de la privacidad, pero que al mismo tiempo habilitan el flujo libre de información di-gital, para dar soporte a actividades económicas como el comercio electrónico y el Customer Rela-tionship Management. Es un asunto complicado, ya que se debe balancear la protección de la priva-cidad, con el soporte y habilitación de actividad económica basada en tecnología, donde se requie-re utilizar, almacenar y transmitir datos personales para poder realizar transacciones.

Los gobiernos de algunos países ya han respon-dido a esta preocupación, y han modificado su legislación para asegurar que los derechos de sus ciudadanos sean protegidos en términos de privacidad de su información personal. Los lineamientos de la OCDE buscan proveer un punto de partida o de acuerdo, para la legisla-ción particular de los diferentes países en este sentido. Estos son algunos de los principios que la OCDE recomienda tomar en cuenta en la legislación de cada país respecto a la pri-vacidad de la información:• Limitaciones en la colección de información• Limitaciones en el uso de ésta• Especificación del propósito del uso• Controles de seguridad• Responsabilidad (accountability) en caso de que la seguridad sea violada y/o la privacidad comprometida.

El empuje de la sociedad hacia un ambiente de negocios que sea responsable de la priva-cidad, y que esté respaldado por la legislación adecuada, resultará en mayores obligaciones para las empresas e instituciones. Esto ya se ve en la Unión Europea y los Estados Unidos.

El Reto de las Redes InalámbricasEl auge de las redes inalámbricas y la tenden-cia de la sociedad hacia la tecnología móvil ha extendido el alcance de las empresas. El alcance corporativo ya no se limita a sus pro-pias instalaciones, sino que gracias a la tec-nología inalámbrica puede llegar a cualquier lugar, traslapándose con el espacio de otras organizaciones e incluso invadiendo el espacio personal de los individuos. Este fenómeno se-guramente provocará la creación o modifica-ción de iniciativas para proteger la privacidad tanto individual como corporativa.

Referencias1. OECD. Implementation Plan for the OECD Guidelines for the Security of Informa-tion Systems and Networks: Towards a Culture of Security. OECD, 2 July 2003.2. OECD. OECD Guidelines on the Pro-tection of Privacy and Transborder Flows of Personal Data. OECD, 23 September 1980.3. Adams, C., D.E. Avison, & P. Millard. Personal Trust Space in Mobile Commerce. Proceedings of the 6th International Con-ference on Electronic Commerce Research (ICECR-6), Dallas, Texas, USA, 23-26 October 2003, pp. 396-403.

Carl Adams y Vasilios Katos forman parte de la Facultad de Sistemas de Información y Aplicaciones Computacionales en la Universidad de Ports-mouth en el Reino Unido.

SEGURIDAD Y PRIVACIDADRETOS EN LA SOCIEDAD MODERNAPor Carl Adams y Vasilios Katos

Este contenido fue proporcionado como cortesía de Cutter Consor-tium, una empresa proveedora de conocimiento e información para la toma de decisiones en TI.www.cutter.com.mx

En esta cultura de seguridad, se espera que las empresas le den el nivel de importancia necesario a la protección de la información.

IDENTIDAD FEDERADAEL SUEÑO DEL SINGLE SIGN-ON

por Pedro Galván

Sin duda, uno de los “buzz words” de la industria en el 2003, fue el de “Federated Identity Mana-gement”. Hoy en día, este término ha perdido popularidad, y se encuentran pocos artículos al respecto. Sin embargo, esto no le ha restado im-portancia. Entendamos en qué consiste la iden-tidad federada y cuál es el panorama.

La identidad federada, o FIM por sus siglas en inglés, es tal vez una de las tecnologías más im-portantes hacia los próximos diez años. ¿Por qué? Pues tal vez muchos no estemos conscientes de esto, pero a nuestras vidas les falta poco para estar digitalizadas por completo. Nuestro trabajo está digitalizado desde hace tiempo, más recientemen-te nuestras comunicaciones se están digitalizando (celulares, VoIP), y ahora también nuestro entrete-nimiento (música por demanda, TV por deman-da). Lo que permite que estos servicios se puedan ejecutar de manera remota y desagregada a través de la red, es la administración de identidad, y lo que permite que estos servicios puedan converger sin necesidad de ser provistos por el mismo pro-veedor, es la identidad federada.

En términos básicos, FIM es un sistema que per-mite que los individuos puedan utilizar la misma información de identificación para acreditarse en distintas redes, de distintas empresas. Con esto se haría efectivo el single sign-on (identificarse una sola vez) para múltiples redes.

Los participantes en un sistema FIM dependen uno de otro para autenticar a sus respectivos usua-rios respectivos y validar sus niveles de acceso. Así, los participantes generan un “anillo de confianza”.

Por ejemplo, gracias a un sistema de identidad federada, AT&T ofrece una red en la que los ser-vicios individuales son proporcionados por dis-tintos proveedores externos: uno se encarga de la cobranza, otro del correo de voz, otro de la identi-ficación de llamadas, otro del soporte a fax, etc.

EstándaresEn el caso de la identidad federada, los estándares permiten que las compañías puedan compartir aplicaciones sin necesidad de utilizar los mismos productos para directorio de servicios, autentica-ción y seguridad. Si es difícil lograr que una mis-ma empresa se estandarice alrededor de una sola

tecnología o producto, imagínense lo complicado que sería estandarizar con todos sus clientes y so-cios de negocio.

Desgraciadamente, existen varias especificaciones, creadas por diferentes organizaciones, y que no son completamente compatibles entre sí. Eche-mos un vistazo a las principales especificaciones:.

OASISEl enfoque de OASIS (Organization for the Ad-vancement of Structured Information Standards) es hacia lograr interacción y single sign on a través de empresas (business-to-business). Para ello, OA-SIS desarrolló SAML (Security Assertions Mark-up Language), una especificación basada en XML que provee un lenguaje común para:• Autenticación• Autorización• Atributos (detalles particulares sobre el usuario)

Liberty AllianceA diferencia de OASIS, cuyo interés original son las interacciones entre empresas, la Liberty Allian-ce se origina en base al interés de proveedores de servicios de interactuar de una misma manera con sus clientes (business-to-consumer). Entre los pa-trocinadores originales de Liberty Alliance están empresas de telefonía (Ericsson, Nokia, Telefó-nica) y financieras (American Express, Bank of America). Las especificaciones que han generado son las siguientes:• Liberty Identity Federation Framework (ID-FF). Orientado a single sign-on y nave-gación anónima.• Liberty Identity Web Services Framework (ID-WSF). Provee capacidades orientadas a la administración de identidades en el contexto de servicios web. Por ejemplo, averiguar servicios existentes y atributos de información disponibles.• Liberty Identity Services Interfaces Speci-fications (ID-SIS). Capacidades para generar servicios interoperables de alto nivel, basados en bloques de bajo nivel de ID-WSF. Por ejemplo, se pueden generar servicios como listas de direccio-nes, calendarios, o aplicaciones que utilicen infor-mación de la localización del usuario.

Diversas empresas de infraestructura de software apoyan a la Liberty Alliance. Entre las más notables están Sun, Oracle, HP, y recientemente IBM.

Microsoft y WS-FederationWS-Federation, o WS-Fed, es una iniciativa impulsada principalmente por proveedores de infraestructura tecnológica como Microsoft, IBM, RSA y BEA. Las especificaciones están fuertemente basadas en tecnología de Web Services, y se apoyan en mecanismos de uso específico, tales como WS-Security, WS-Trust y WS-Policy. Estrictamente, WS-Fed es una especificación, y no un estándar, ya que no fue creado de manera abierta a través de una orga-nización para estándares.

Recientemente, IBM y RSA se han inclinado por Liberty Alliance. En el 2005, Liberty Allian-ce y OASIS decidieron estandarizarse alrededor de la nueva versión de SAML (SAML 2.0). Con esto, la cantidad de estándares disponibles para manejo de identidad federada prácticamente queda reducida a dos: WS-Fed, impulsado por Microsoft, y SAML 2.0, impulsado por el resto del mundo. Idealmente, tendríamos un solo es-tándar a nivel mundial, pero esto no se ve viable en el futuro próximo. Afortunadamente, se es-pera que la interoperabilidad entre los productos que manejan estos estándares tenga fuertes me-joras en el corto plazo.

ConclusiónLa identidad federada ha dejado de ser una tendencia interesante y se convierte en realidad. Los estándares disponibles e infraestructura tecnológica que los sopor-ta ya tienen un grado de madurez sufi-ciente para ser aplicados en escenarios de negocio complejos. Esperamos que este artículo despierte su curiosidad y lo ayude a conocer más al respecto, para que pueda aplicarlo en su organización.

Referencias• Liberty Alliance Projectwww.projectliberty.org• MSDN Library. “WS-Federation”msdn.microsoft.com/library/• Network World. “SAML 2.0 Simplifies Federation”. www.networkworld.com/news/tech/2005/120505techupdate.html

29MAR-ABR 2006www.softwareguru.com.mx

30 MAR-ABR 2006 www.softwareguru.com.mx

EN PORTADA

En la automatización de procesos B2B (bu-siness to business), la capacidad de transferir archivos a clientes y proveedores de manera segura es indispensable. En este escenario, las empresas transfieren archivos sabiendo que no serán interceptados ni modificados en el ca-mino, y que al recibirlos pueden procesarlos automáticamente sin riesgo.

Existen muchas formas de transportar archi-vos de manera segura. Una de ellas es utili-zar protocolos de aplicación como HTTPS, FTPS, y SSH, que corren sobre el protocolo de comunicación TCP/IP. Una característica clave para este protocolo es que la informa-ción se rompe en pedazos o paquetes que son a su vez enviados y reensamblados del lado re-ceptor, con lo que en caso de haber pérdida de

un paquete durante la transmisión, éste puede ser retransmitido.

La seguridad y la confiabilidad en las transfe-rencias de archivos se logran a través de una arquitectura de transferencia de datos avan-zada (AFTS), la cual debe poder proveer lo siguiente:a) Autenticación.– Asegurarnos que la per-sona que envía es quien dice ser. El uso de contraseñas es un mecanismo simple de au-tenticación.b) Privacidad de los datos.– Asegurarnos de que si los datos llegan a una persona no auto-rizada, ésta no pueda descifrarla. Esto normal-mente se realiza cifrando la información.c) Integridad de los Datos.- Asegurarnos de que el mensaje está íntegro y no ha sido

modificado por personal no autorizado. Esto normalmente se logra con la digestión (hash) y con firmado digital.d) No repudiación.– Poder demostrar que un mensaje específico fue enviado por una entidad o persona determinada. Esto se llama no repudiación de origen. También se puede aplicar a un receptor que firma digitalmente la recepción de un mensaje y entonces es no repudiación del receptor.

Este modelo se extiende cuando las variables de seguridad se aplican. Existen muchos lu-gares donde se debe aplicar la seguridad. Los siguientes aspectos de seguridad aplican:• Seguridad en tránsito.- Esto implica que el mensaje “viaja” cifrado. Sin embargo, en cuanto llega al otro lado, es descifrado y guar-dado sin cifrar.• Seguridad permanente.- Esto implica que cuando llega al destino se almacena cifrado. Se requiere descifrar para poderlo trabajar.• Integridad de datos y no repudiación.- Esto implica tener la capacidad de procesar y almacenar de manera segura artefactos relacio-nados con firmas digitales.• Interacción con el Firewall.- Algunos fi-rewalls pueden tener problemas con archivos cifrados si esto se hace a nivel de paquetes. También influye mucho si éstos pueden per-mitir proxies inversos o clientes delgados que van en la zona desmilitarizada (DMZ) para no exponer a los sistemas internos a problemas de seguridad.Otras variables que también influyen en la transferencia de archivos son: • Tipo o formato.- Algunos protocolos sólo pueden transportar archivos de formatos es-pecíficos como texto y otros pueden enviar binario, XML o EDI. • Tamaño de los mensajes o archivos.- Por ejemplo, el FTP es un protocolo bueno para archivos grandes, sin embargo, éste consume mucho ancho de banda y en caso de pérdida de la conexión tiene que volver a empezar a transmitir desde cero, entre otros problemas.• Cliente a Servidor.- El mismo ejemplo del FTP aplica, ya que alguna de las dos puntas

Rafael Manjarrez es Licenciado en Ingeniería Industrial y de Sistemas con maestría en Ingeniería de Sistemas Empresariales ambas de la Universidad Iberoameri-cana. Actualmente es Chief Information Officer en Computer-Tel, Inc.

TRANSFERENCIAS DE ARCHIVOSELEMENTOS A CONSIDERARPor Rafael Manjarrez

Un ejemplo realEn este artículo compartimos el caso de es-tudio acerca de la solución que la empresa PROSA recientemente implantó para resol-ver sus necesidades de transferencia segura de información digital hacia sus clientes.

AntecedentesPROSA es el switch de transacciones elec-trónicas más grande de Latinoamérica, y uno de los 12 más importantes del mundo. La mayoría de las transacciones realizadas con tarjeta de crédito y débito en Méxi-co son manejadas por PROSA. PROSA se encarga de centralizar y procesar dichas transacciones, y posteriormente enviar los resultados a los clientes (instituciones financieras) para que apliquen los movi-mientos correspondientes.

NecesidadComo parte de su operación, PROSA re-quiere transferir archivos con grandes can-tidades de información a cada uno de sus clientes. PROSA les envía diariamente uno o más archivos que contienen el detalle de las transacciones electrónicas que realiza-ron sus usuarios, y que deben ser procesa-das. Por obvias razones, esta transferencia de información se debe realizar de manera segura y confiable.

Anteriormente, PROSA resolvía este pro-blema de diferentes maneras con distin-tos clientes, desde transferencias por FTP puro, hasta conexiones punto a punto por desarrollos a la medida. La limitante de esta solución es que dichos mecanismos carecen de capacidades para garantizar la entrega de información, lo cual provoca que llegue a haber problemas por interrupciones de conexión, archivos incompletos o corrup-

tos, etc. Adicionalmente, la falta de estan-darización eleva los costos y complejidad de administración de los sistemas.

Nueva SoluciónUna vez que PROSA decidió estandarizar una solución para la transferencia segura de archivos a sus clientes, comenzó a evaluar opciones. El primer criterio de elección era decidir entre un producto comercial o un desarrollo a la medida. La elección fue un producto comercial, por varias razones en-tre las que destacan la conveniencia y rapi-dez para contar con la solución. Entre las opciones comerciales, se evaluaron produc-tos de diferentes proveedores, y finalmente se decidió que el producto que mejor sa-tisfacía sus necesidades era Connect Direct de Sterling Commerce.

Actualmente, PROSA utiliza Connect Di-rect con sus clientes más grandes que re-quieren una solución avanzada, y Connect Enterprise con clientes que requieren algo más sencillo y con un menor costo total de propiedad (TCO).

ImplantaciónLa definición de la solución deseada lle-vó un par de meses. Posteriormente hubo un periodo de cerca de cuatro meses para implantar la nueva solución basada en la herramienta, entrenar a la gente y automa-tizar los procesos. El esfuerzo posterior y que es el que más tiempo llevó, consistió en ir convenciendo a los clientes para que adoptaran la solución. En algunos casos esto nos llevó hasta un año.

RetosUno de los principales retos en la defini-ción, fue diseñar una solución que fuera lo suficientemente segura, pero sin llegar a restringir o entorpecer el modelo de nego-

cio. El otro reto importante fue lograr que convencer a los clientes de realizar el cam-bio y moverse hacia la nueva herramienta.

ResultadosGracias a la nueva solución, se ha logrado una reducción de costos, tiempos de proce-samiento, y tiempo necesario para agregar a nuevos clientes. Al automatizar y simpli-ficar los procesos, se hace más productivo tanto a los recursos humanos como físicos. El personal ahora se dedica a actividades de mayor valor agregado, como diseñar nue-vos procesos, o atender excepciones.

Aplicaciones de una Solución SimilarUna solución similar es aplicable en una gran variedad de escenarios de negocio, en diferentes industrias. A fin de cuentas, conforme los procesos de negocio se con-tinúen digitalizando, cada vez habrá una mayor necesidad de transferencia de infor-mación digital que sea segura, confiable y automatizada.

PerspectivaHacia futuro, PROSA pretende continuar con la estandarización y automatización de sus procesos para poder atender más clientes a un menor costo. En términos de las tecnologías, lo que PROSA percibe es cada vez un mayor empuje hacia estándares abiertos. En el contexto de la transferencia de información electrónica, todo va hacia usar TCP/IP para el transporte de los da-tos, y XML como formato para su repre-sentación e intercambio.

Agradecemos la colaboración de Jose Luis Andrade Vera, Director de Sistemas en PROSA, para la realiza-ción de este artículo.

31MAR-ABR 2006www.softwareguru.com.mx

debe iniciar la transmisión y entonces uno se con-vierte en el servidor y el otro en el un cliente.• Punto a punto.- Existen protocolos como el AS2 en donde en ambas puntas se puede en-viar o recibir. Ambos tienen una solución por medio de la cual pueden iniciar comunicación en cuanto sea necesario.Además de esto, hay que tener en cuenta va-riables de negocio, como:• Estabilidad.– Se refiere a que si el protocolo es nuevo o ya está probado.• Mandatos de la industria.– Se refiere a si un protocolo es requerido por cierta industria.• Adopción.– Se refiere a qué tan utilizado está un protocolo. Por ejemplo, el http es uno

de los más usados, ya que permite visualizar páginas de Internet.• Balanceo de carga y alta disponibilidad.– Se refiere a qué tan posible es tener más de un cliente escuchando para balanceo de carga y alta disponibilidad.• Escalabilidad.– Se refiere a qué tan factible es crecerlo para aguantar mayor carga.

Los protocolos básicos como el HTTP, FTP y el SMTP pueden ser suficiente si no se nece-sita una entrega segura de la información. Si se requiere seguridad y características adicio-nales, algunas opciones son: HTTPS, FTPS, SSH, Connect Direct, RNIF (Rosetta Net

Implementation Framework), y los Protoco-los EDIINT (AS1, AS2, AS3).

En conclusión, garantizar la seguridad y confiabilidad en las transferencias de archi-vos no es algo fácil, se tienen que considerar muchas variables. Para tomar una decisión respecto al método a utilizar, debemos tener en cuenta cuándo (tiempo), dónde, cómo (formato y protocolo) y con qué niveles de seguridad queremos que se realice la trans-ferencia de información. Una vez que ten-gamos respuesta a estas preguntas, podemos definir una solución adecuada al proceso de negocio correspondiente.

32 MAR-ABR 2006 www.softwareguru.com.mx

EN PORTADA

Cuando interactuamos con otras personas, estamos acostumbrados a identificarlos por su apariencia física, su voz, o alguna otra información sensorial. Cuando necesita-mos una prueba de identidad que vaya más allá de la apariencia física, se obtiene una firma autógrafa o buscamos la foto en una tarjeta de identificación.

En las aplicaciones de cómputo actuales y en muchas de las actividades cotidianas, como puede ser el registro de personal, en donde las personas requieren interactuar entre ellas o confirmar su identidad a través de la com-putadora, usualmente no tenemos medios de autentificación completamente seguros, ya que en muchos casos éstos se reducen a contraseñas, números o datos personales que son riesgosos de manejar o que puedan olvidarse, o a cre-denciales que pueden extraviarse, duplicarse o transferirse a terceros para tener acceso a bene-ficios, instalaciones, etc. En casi todos los casos, no podemos ver, oír u obtener una firma de la persona con la que estamos interactuando.

La biometría, que es la medición de una característica física, es una solución ideal para el problema de la identificación de las personas. Hace posible identificarnos a sistemas digitales, y a través de ellos auten-tificarnos con seguridad en medios electró-nicos ante otras personas o aplicaciones.

De todos los biométricos disponibles, inclu-yendo el escaneo de la cara, el iris y la retina, o la identificación de voz entre otros, la huella digital es uno de los más convenientes y segu-ros. Entre las ventajas del biométrico de huella

digital para la identificación de personas están las siguientes:• Las huellas digitales han sido utilizadas por si-glos para la identificación, y tenemos una canti-dad significante de información en cada huella como para poder basarnos en ella y asegurar la unicidad y autenticidad de cada huella.• Todas y cada una de nuestras diez huellas digita-les es única, diferente una de otra y a su vez distin-ta de las huellas de cualquier otra persona. Aún los gemelos cuentan con huellas digitales únicas.• A diferencia de otros mecanismos para iden-tificación, como contraseñas y smart cards, nuestras huellas digitales no se pueden perder u olvidar y nunca pueden ser robadas.

Aunque existen diversos términos en el manejo de huellas digitales, lo importante es saber que existe la suficiente información en cada huella para certificar la identidad de una persona. La tecnología ha avanzado mucho y ahora pode-mos decir que además de segura es accesible a pequeñas y medianas empresas, junto con los beneficios que esta brinda y que se derivan de la seguridad que nos da la identificación a través de la huella digital.

Entre muchas otras aplicaciones, podemos destacar las siguientes:

Registro de Personal• Se hace infalsificable, intransferible, no se extravía.• Obtiene una medida objetiva del compor-tamiento del personal que nos sirve como he-rramienta para el análisis y toma de decisiones basado en información real (acceso a informa-ción histórica). Esto no sólo por individuo,

sino por grupos definidos de personas o a ni-vel de toda la organización.• Ahorros en disminución de fraudes (falsifi-cación, venta de turnos, préstamo de tarjetas, posiciones de poder) y malos manejos de in-formación, que al mismo tiempo fomenta que empleados no dependan de tener que caer en este tipo de chantajes.• Ahorros en mantenimiento y consumibles, así como en el tiempo que el personal pasa expi-diendo y administrando sistemas de tarjetas.• Información en línea y con oportunidad, sin tener que esperar a transferencias de dis-positivos cada quincena o semana, para tomar acciones necesarias.

Programas de Lealtad o Cliente Frecuente• Asegurarnos de que el bien, beneficio o de-recho, se otorga a la persona que queremos.• El cliente no tiene que estar cargando tarje-tas para cada plan, sino que sólo es necesario presentar la huella digital para identificarse.

Otros• Acceso a áreas restringidas, sin los riesgos de tarjetas falsificadas, extraviadas, etc.• Firmas digitales para resguardos y asigna-ción de equipo, libros, información, etc.• Autorización de transacciones con la hue-lla digital en lugar de teclear contraseñas visibles a otras personas.

En cada empresa podemos encontrar diversas aplicaciones en las que la huella digital nos brinda nuevos e interesantes beneficios. Pero antes de dejarnos llevar por alguna solución, debemos ir más allá y diseñar una estrategia

Humberto López Gallegos es Director General de Ingressio, empresa especializada en estrategias de verificación de identidad con tecnología biométrica, y que re-cientemente fue seleccionada para el programa TechBA. Humberto es egresado de la ingeniería en Computación del ITAM, cuenta con una maestría en Tecnología por la Universidad de Londres (UCL) y es egresado del programa D1 del IPADE.

BIOMETRÍA CONHUELLA DIGITALREGRESANDO A LOS ORÍGENES DE LA IDENTIFICACIÓNPor Humberto López Gallegos

completa que nos permita hacer una inversión redituable no sólo en los ahorros en la operación, sino también en los beneficios que podamos prestar a nuestros clientes: mejor servicio, mayor seguridad, hacerle ver que estamos a la vanguardia en tecnología, etc.

Para diseñar una buena estrategia, es recomendable hacer un re-cuento de:

• La infraestructura con la que cuenta la organización (aplicaciones, equipos y co-municaciones) y los planes existentes a mediano y largo plazo.• Estrategia y políticas de seguridad.• Procesos de negocio estratégicos (in-ternos o que involucran a clientes o pro-veedores) en los que se ve involucrado el aspecto de la autentificación.

Esto servirá como base para determinar no sólo las implicaciones en el negocio (posi-tivas y negativas) en lo que se refiere a la operación, sino también las oportunidades que podamos detectar si empleamos esta tecnología.

El diagrama 1 muestra un ejemplo de una arquitectura utilizando una solución de

huella digital, indicando algunos servicios posibles para cada tipo de usuario.

Las soluciones biométricas están mucho más al alcance en todos los sentidos de lo que usted se puede imaginar. No pierda la opor-tunidad de tomar la iniciativa y empezar a obtener beneficios im-portantes en su organización.

Diagrama 1. Ejemplo de Arquitectura y Servicios utilizando huella digital.

34 MAR-ABR 2006 www.softwareguru.com.mx

EN PORTADA

EL ABC DE LOS DOCUMENTOS SEGUROSPor Ignacio Mendivil

Ignacio Mendivil es matemático egresado de la Universidad Nacional Autónoma de México y obtuvo la Maestría en Ciencias de la Computación en la Universidad de Tucson, Arizona. Actualmente, es Presidente del Consejo de Administración de SeguriData Privada S. A. de C. V., compañía especializada en el desarrollo de sistemas de seguridad criptográfica, a cuya investigación, diseño e implementación ha estado abocado desde 1992..

Dos problemas aquejan a los documentos electrónicos: la Confidencialidad y la Au-tenticidad. La Confidencialidad se refiere a la capacidad de mantener un documen-to electrónico inaccesible a todos, excepto a una lista determinada de personas. La Autenticidad se refiere a la capacidad de determinar si una o más personas determi-nadas han establecido su reconocimiento y/o compromiso sobre el contenido del documento electrónico.

Al problema de la Confidencialidad se le re-laciona comúnmente con técnicas denomi-nadas de “encripción”, y al problema de la Autenticidad, con técnicas denominadas de “firma digital”, aunque ambos en realidad se reducen a procedimientos criptográficos de encripción y desencripción. El siguiente artículo explica a grandes rasgos el funcio-namiento de dichos procedimientos.

Algoritmos SimétricosLa idea de los algoritmos simétricos es codificar o cifrar un mensaje y producir un documento “ilegible” utilizando como base una palabra clave o contraseña. Para que el sujeto A envíe un mensaje encripta-do al sujeto B, sucede lo siguiente:

El sujeto A encripta el mensaje utilizan-do una palabra clave, digamos “abcxyz”. El resultado es un documento encriptado, que se envía al Sujeto B. Éste toma el do-cumento y lo alimenta a un algoritmo de desencripción aplicando la palabra clave “abcxyz”, obteniendo como resultado el documento original.

Observe que ambos sujetos comparten el secreto de la palabra clave “abcxyz”. Si el sujeto A desea intercambiar información encriptada con un sujeto C, y que éste no pueda leer los mensajes intercambiados con B, entonces A y C tendrían que acor-dar otra clave secreta. El hecho de que los

individuos tengan que acordar claves secre-tas con quienes desean intercambiar infor-mación confidencial resulta poco práctico. Una mejor solución la ofrece la criptogra-fía de llave pública.

Algoritmos Asimétricos ode Llave PúblicaLa criptografía de llave pública ofrece al-goritmos de encripción y desencripción. Si un documento se encripta con una llave pública, entonces sólo se puede desencrip-tar con la correspondiente llave privada. En algunos algoritmos, también sucede a la inversa, lo que se encripta con la llave privada sólo se desencripta con la llave pú-blica. El proceso de encripción con llave pública se ilustra a continuación:

Observe que, una vez encriptado el docu-mento, sólo el sujeto B puede desencrip-tarlo. Ni siquiera el sujeto A, que es quien originalmente lo encriptó, puede hacerlo.

El modelo de llave pública más conocido y utilizado mundialmente es el denominado “RSA” por las siglas de los apellidos de los descubridores Rivest, Shamir y Adelman.

En la práctica, no es conveniente encriptar todo un documento mediante algoritmos de llave pública. Uno de los inconvenientes es el desempeño, ya que los algoritmos asi-métricos son cerca de 100 veces más lentos que los simétricos. Además, algunos algo-ritmos de clave pública pueden ser sujetos de ataques matemáticos cuando son utili-zados de esta forma.

Por esto, es común encontrar una solución denominada “Sobre Digital”, la cual apro-vecha las ventajas tanto de los algoritmos simétricos como de los asimétricos. El fun-cionamiento es el siguiente:El sujeto A proporciona una palabra clave y encripta el documento con un algoritmo

simétrico. Posteriormente encripta la pala-bra clave utilizando un algoritmo asimétri-co, con la llave pública del sujeto B.

Juntas, la clave y el documento encriptados constituyen el “Sobre Digital”. Cuando el sujeto B lo recibe, extrae la clave secreta y la desencripta con su llave privada, obtenien-do así la palabra clave original con la cual puede entonces desencriptar el documento.

Esta solución, además de brindar un mejor des-empeño en la velocidad de encripción/desen-cripción, también es versátil porque si se desea producir un mensaje para —digamos— cinco personas, lo único que debe hacerse es anexar la llave de encripción simétrica encriptada con la llave pública de cada uno de los destinatarios.

La Firma DigitalEl procedimiento de firmado consiste en que, mediante un programa de cómputo, un sujeto alimenta un documento a firmar y su llave privada. El programa produce como resultado un mensaje digital denominado firma digital. Juntos, el documento y la fir-ma, constituyen el documento firmado.

El proceso de autenticación consiste en ali-mentar a un programa de cómputo un docu-mento firmado, junto con la llave pública del supuesto firmante. Si una llave pública auten-tifica un documento firmado, entonces quiere decir que el documento fue firmado con la correspondiente llave privada. Es convenien-te señalar que si el documento o la firma son modificados después de haberse generado la firma, el procedimiento de autenticación arro-jará un resultado negativo.

La versión original y completa de este artículo se puede obtener en el sitio web de SeguriData.www.seguridata.com.mx

PRÁCTICAS

36 MAR-ABR 2006 www.softwareguru.com.mx

Angélica Su es Consultor en Procesos de Software y Administrador de Proyectos en Itera. Participó en la elaboración de MoProSoft y EvalProSoft. Ha trabajado en proyectos de mejora en la realización de diagnósticos y evaluación formal CBA-IPI y asesoría en procesos basados en SW-CMM, CMMI e ISO 9000.

Heidi González es Consultor de Procesos de Software en Itera. Ha trabajado en el desarrollo de metodologías de evaluación de proveedores a través de CBA-IPI del SW-CMM.

En este artículo se describen las fases y algunos de los retos de la Mejora Iterativa del Proceso de Software (MIPS), así como la descripción de algu-

nos de los errores comunes que se cometen en la admi-nistración de un proceso de mejora. La información que se presenta surge de experiencias en consultoría, así como reportes o historias relacionadas de nuestros colegas.

Tradicionalmente, la mejora de procesos de software se realiza en un solo ciclo. Esto es más sencillo para los admi-nistradores, pero difícil para el equipo de mejora. En cam-bio, la mejora incremental permite al equipo de mejora y a la gerencia identificar resultados a corto plazo, con el in-conveniente de que genera mayor complejidad en la admi-nistración. Sin embargo, los beneficios bien valen la pena.

El proceso incrementalEl proceso incremental de mejora tiene como objetivo ase-gurar la implantación de la capacidad de los modelos de

software a través de ciclos de vida incrementales orientados a organizaciones y objetivos de negocio como se presenta en la figura 1. Esta figura ilustra la ar-quitectura del proceso, el cuál provee un acercamiento disciplinado para la asig-nación de tareas y responsabilidades en la organización. Como podrán apreciar, estamos tomando la misma idea del ciclo de vida del Proceso Unificado, y apli-cándola a la mejora de procesos.

La gráfica muestra el esfuerzo variado a través del tiempo. Por ejemplo, en iteraciones tempranas el esfuerzo se encuentra concentrado en el desarrollo de la iniciativa y en las iteraciones tardías en la entrega. Esta contiene dos dimensiones:• El eje horizontal representa el tiempo y muestra los aspectos del ciclo de vida del proceso claramente. La primera dimensión ilustra el aspecto dinámico del desempeño del proceso el cual está expresado en términos de fases, el ciclo de vida incremental y los entregables.• El eje vertical representa a las disciplinas que de manera lógica agrupa las actividades por naturaleza. Esta segunda dimensión representa el aspecto es-tático de la descripción del proceso en términos de componentes, disciplinas, actividades, flujos de trabajo, artefactos y roles. (Ver Figura 1)

Proceso Incremental de MejoraDISCIPLINAS Y SU APLICACIÓN Por Angélica Su y Heidi González

PROCESOS

Figura 1. Modelo de ciclo de vida para la mejora de procesos incremental

Proceso Incremental de Mejora

www.softwareguru.com.mx

DisciplinasA continuación describo las diferentes disci-plinas, y las principales actividades asocia-das a cada una.Iniciativas. La gerencia debe entender el estado actual del proceso de desarrollo organizacional en términos de documenta-ción, conocimiento, uso y comunicación, así como las herramientas que lo soportan a través de la organización. Esta información servirá para identificar problemas y áreas potenciales de mejora. También se debe complementar con información acerca del ambiente o contexto, y tendencias. Cuando esta evaluación se encuentra completa, se desarrolla el “Plan de Mejora”. Estas son las principales actividades que forman par-te de esta disciplina:• Especificar metas de negocio y objetivos que serán realizados o soportados• Comienzo de la planeación estratégica a través de las metas y objetivos de negocio• Diagnóstico del proceso de desarrollo or-ganizacional para facilitar la identificación del estado actual con respecto a los están-dares, métodos o modelos de referencia a implantar (estado deseado alineado al del modelo o estándar) • Mejorar las áreas y procesos que necesitan ser mejorados en primera instancia• Identificar el impacto en otras iniciativas y en el trabajo del día a día• Herramientas a ser usadas por la organización• Establecer una infraestructura para la adminis-tración específica de la implementación• El equipo seleccionado, incluidos su nivel de competencia, habilidades y motivación, deben asegurar el soporte requerido para ejecutar el cambio razonable para el éxito

Diseño. Desarrollar la arquitectura y planti-llas para el proceso de desarrollo organiza-cional utilizado por el grupo de procesos. La intención es evolucionar la arquitectura del

proceso de forma sistemática, tomando en cuenta el ambiente organizacional.• Desarrollar la plantilla para documentar el proceso• Planear y establecer el ambiente organizacio-nal con el objetivo de decidir el ambiente robusto de desarrollo con las adecuaciones necesarias• Estructurar el comité de procesos y sus funciones• Identificar grupos de interés afectados di-recta e indirectamente

Instrumentación. Identificar el tipo de entre-namiento que se necesita y las estrategias para facilitar el acercamiento del uso de los procesos y herramientas con el objetivo de implementar en proyectos piloto así como pruebas controlados para generar confian-za, motivación, realización y alineación en el proceso y herramientas.• Estudiar los niveles de competencia a tra-vés de las personas en la organización• Desarrollar el plan de entrenamiento • Preparar los mentores que soportarán el proyecto• Desarrollar guías para implementar el pro-ceso. Estas serán utilizadas para implemen-tar tanto los procesos como herramientas• Identificar los proyectos piloto, los cuales serán de importancia para la organización pero no de alto riesgo en su ejecución• Definir una secuencia y decidir la ejecución del proyecto piloto

Verificación y Validación. Verificar en el am-biente piloto los procesos mejorados y vali-dar las mejoras en el desempeño. • Probar la solución establecida para deter-minar qué funciona y qué no funciona.• Revisar y modificar la solución para incorpo-rar nuevos conocimientos y entendimientos.• Determinar que se ha logrado hasta el mo-mento.• Iterar en caso de ser necesario.

PRÁCTICAS

PROCESOS

Liberación. Manejar la transición/cambio en términos de la madurez de: las personas, el ambiente y la infraestructura. • Identificar a los agentes del cambio• Definir y comunicar las siguientes estrate-gias: a) Equipo, b) Liderazgo, c) Alineación, d) Comunicación, e) Incentivos, f ) Entrena-miento, g) Valoración y h) Recursos

Cambios y Configuración. Es esencial para controlar los artefactos que se han genera-do por el proceso de mejora. Controla los cambios a los requisitos así como las ver-siones del proceso por lo que ayuda a evitar costosas confusiones con los artefactos y asegura la integridad de los artefactos re-sultantes, permitiendo establecer una línea base de conocimiento. • Definir la estructura de la base de conocimiento• Identificar el proceso de cambio

Administración de Proyectos. Esta disciplina se enfoca principalmente a aspectos de ad-ministración, monitoreo y control de manera iterativa a través del ciclo de vida.• Administración de riesgos • Planeación de todo el proyecto, y de las iteraciones individuales• Monitoreo del progreso de un proyecto iterativo.• Monitoreo del progreso en términos de métricas.• Identificar barreras potenciales

Gestión de Procesos. Establece un proceso organizacional acorde a la estrategia del ne-gocio, definiendo, planeando e implemen-tando las actividades de mejora. • Estructura y definición de actividades del equipo de mejora• Ejecución y análisis controlado de la mejora a través del líder de mejora y apoyo del comité• Análisis de las mejoras a través de la viabi-lidad para el negocio y el retorno de inversión (ROI) en la organización y/o áreas afectadas.

Disciplinas e iteracionesLas diferentes disciplinas se aplican de ma-nera cíclica en cada una de las iteraciones del proyecto de mejora. Haciendo la analogía con el ciclo de mejora Planear, Hacer, Verifi-car, Actuar (PHVA), quedaría de la siguiente forma ilustrada en la figura 2.

Implicaciones de la mejora incrementalA través de la aplicación de un ciclo de vida incremental para mejorar los procesos, es posible mostrar resultados rápidos a aque-llas partes “afectadas”, y así obtener un ma-yor apoyo con convencimiento a través de resultados medibles.

Una estrategia de mejora alineada a objeti-vos de negocio y acotada bajo una definición del alcance nos permite contar con: a) Metas evidentes (a corto plazo)b) Lecciones aprendidas (reacciones) de

aquellas inconsistencias que se puedan en-contrar bajo el desarrollo de los requisitos, diseño e instrumentación son detectas pre-vio a la liberación por lo que se tiene una mejora continua.c) Verificaciones y validaciones continuas para asegurar los objetivos, integración y su estatusd) Grupos de interés que requieren observar evidencia concreta del estatus cuantitativo del proyectoe) Comunicación a través de resultados dirigi-dos a los diferentes partícipes e involucrados.

ConclusiónAunque el modelo de mejora iterativo e incremental genera mayor comple-jidad en su ejecución que la forma tradicional, la inversión fuerte se rea-liza la primera vez que se utiliza, y los beneficios serán permanentes. Una vez que se entiende como hacerlo de manera “correcta”, el equipo de me-jora comprende y piensa de manera incremental, este método es mucho mejor en el sentido que la mejora se enfoca primero a los principales problemas de la organización y esto habilitará a la gerencia a través de resultados palpables y apoya para desarrollar mejoras complejas dentro de la organización.

A través de un ciclo de vida incremental, es

posible mostrar resulta-dos rápidos a aquellas

partes afectadas.

38 MAR-ABR 2006 www.softwareguru.com.mx

Figura 2. Ejecución dentro de una iteración

Luis Daniel Soto Maldonado es Direc-tor 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 Or-den de Honor al Mérito Autoral” en software del INDAUTOR/SEP y fundador de diversas asociaciones de Tec-nologías de Informa-ción (TI) relacionadas a inteligencia competiti-va, administración del conocimiento y cons-trucció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 ex-portación en 1989. blogs.msdn.com/luisdans

CO

LUM

NAF#

El lenguaje script/funcional/imperativo/orientado a objetos

39MAR-ABR 2006www.softwareguru.com.mx

TENDENCIAS EN SOFTWARE

F# (f sharp) se define como un lenguaje de progra-mación que provee la muy solicitada combinación entre seguridad en tipos de datos y velocidad en

escritura (scripting), con todas las ventajas de un lenguaje de alta calidad, soportado por un ambiente de ejecución moderno. El lenguaje de programación F# proporciona:• Scripting interactivo, como Python• Un modelo matemático de programación, como MatLab• Validación fuerte de tipos de datos, como ML• Compilación cruzada con OCaml• Soltura similar a la de C#• Riqueza en bibliotecas compatibles con Visual Basic 2005 y .NET (v.gr. LINQ)• Originado de la misma raíz de Scheme• Integración con Microsoft Visual Studio• Desarrollado por investigadores expertos en lenguajes de programación

F# no es un producto, es un proyecto de investigación de Microsoft Research Cambridge, que fue liberado en Enero del 2005. Ha ganado adeptos debido a su origen ances-tral en una fuerte base matemática y lógica. Siendo muy apropiado su uso para la enseñanza de la programación, especialmente con científicos.

CapacidadesNo pretendemos dar una reseña completa del lenguaje, sino “abrir el apetito” de las capacidades de otro de los lenguajes “sharp”:

En F#, al igual que en otros lenguajes funcionales, todo opera en base a funciones. Por ejemplo la función addThree se define:

let addThree = add 3

Los lenguajes funcionales no poseen control de flujo, sino que se implementa internamente:

let boolToString x = if x then “True” else “False”

La búsqueda de patrones es sumamente poderosa:

type temperatura =

| Centigrados of float

| Fahrenheit of float

| Kelvin of float

| Unknown

Lenguajes como Java ofrecen las típicas “listas” y “arre-glos” pero no cuentan con el soporte de tuplas (secuen-cias de objetos de diversos tipos) en F#, donde hay valida-ción de cada tipo incluido de forma independiente:

La Tupla (1, "2", 3, "cuatro")

contiene (int*string*int*string)

Las capacidades de recurrencia, iteración, desdoblamien-to y mapeo, por nombrar algunas, son mucho más podero-sas que en otros lenguajes.

let d = new OpenFileDialog() in

if d.ShowDialog() = DialogResult.OK then

match d.OpenFile() with

| null -> Printf.printf “Nos se puede leer el

archivo...\n”

| stream -> ...

let r = new StreamReader(stream) in

Printf.printf “La primera línea del archivo

es: %s!\n” (r.ReadLine());

En si, F# cuenta con las capacidades de un lenguaje ML, pero con la ventaja de poder interactuar de manera di-recta con C#, lo cual le da acceso a todos los APIS del Framework .NET. De igual forma, las librerías generadas en F# son fácilmente accesibles desde otros lenguajes de esta plataforma.

ConclusiónConsidere las capacidades de este lenguaje combinadas con otras herramientas, como con el Toolkit para sensores inalámbricos (research.microsoft.com/nec/msrsense) y estaremos hablando de alta productividad para resolver problemas muy complejos (al compararlos con el actual paradigma de lenguajes de programación).

Muchas personas opinarán que F# no tiene nada de nue-vo o es una simple implementación OCaml/ML pero sin duda es un meta-lenguaje específico que provee resul-tados reales.

En el futuro comentaremos sobre lenguajes de programa-ción basados en algebras distintas, como el “calculo pi” o lenguajes que se proponen específicamente para mayor manipulación de XML, ¡Que viva la diversidad de platafor-mas y lenguajes de programación!

- Luis Daniel Soto

Conocer más• research.microsoft.com/fsharp/fsharp.aspx • blogs.msdn.com/dsyme • www.strangelights.com/FSharp/• www.dotnetlanguages.net/DNL/Resources.aspx • www.msdnaacr.net/curriculum/repository.aspx

PRÁCTICAS

40 MAR-ABR 2006 www.softwareguru.com.mx

Eduardo Macías, MSc, Chief Architect de IIDEA Solutions, es el responsable de la definición e implantación de la visión tecnológica en la Fábrica de Software. Eduardo trabajó en GE Nuclear Energy para abrir el departamento de arquitectura de software encargado de las aplicaciones de J2EE/MatrixOne, y posterior-mente se dedicó a definir arquitecturas de software empresarial para diferentes empresas en USA y México.

El ambiente de negocio de empresas exitosas es por definición dinámico y cambiante. Para mantener su ventaja competitiva, una compañía tiene que respon-

der al cambio rápida y adecuadamente. Así, la capacidad de desarrollar sistemas de información cumpliendo los requeri-mientos del negocio, con la calidad requerida, en el tiempo que permita al negocio lograr sus objetivos, y a un costo com-petitivo, está directamente ligado con el éxito de la compañía.

En este artículo vamos a presentar el esquema de “Indus-trialización” de la fábrica de software de IIDEA Solutions basado en tres conceptos que identificamos como claves para la operación interna de la misma: los conceptos de frameworks aplicativos, EOM (Enterprise Object Model) y MDA (Model Driven Architecture).

¿Qué es un Framework Aplicativo?Un framework aplicativo es una “aplicación semi-termina-da” que está montada sobre una tecnología base como .NET o J2EE. Contiene una capa general que provee servi-cios comunes para todo tipo de aplicaciones tales como seguridad, acceso a datos, manejo de errores, etc., y una capa que provee servicios específicos para un cierto do-minio de negocio. Este tipo de frameworks son diseñados por arquitectos experimentados; donde queda plasmado mucho de su conocimiento adquirido a través de los años y que está empaquetado y listo para ser reutilizado.

Los frameworks aplicativos son creados para ser la estruc-tura base en la cual se montan varias aplicaciones de ne-gocio, las cuales compartirán requerimientos similares de infraestructura, mientras otros requerimientos de negocio serán totalmente diferentes. Esta característica hace al desarrollo de un framework aplicativo particular y comple-jo, por lo que al momento de diseñar, se debe estar cons-ciente de que su estructura de clases sea muy flexible en puntos donde se detecte que pueda haber requerimientos muy variables. Esto se logra siguiendo el principio “open-close” de la programación orientada a objetos (una clase debe soportar extensibilidad o modificación de su com-portamiento sin la necesidad de modificar su código, la

clase debe estar cerrada para su modificación de código fuente) utilizando pa-trones de diseño que nos apoyan en establecer “hooks” o ganchos dentro la estructura de una clase para colgar nuevos comportamientos a esta. También se debe tener la previsión para saber cuáles son los requerimientos más comu-nes en las aplicaciones de cierto nicho y así proveer estos mecanismos.

Un error muy común en la interpretación del concepto del framework aplicativo es confundirlo con una librería de clases o API; el framework va más allá. La dife-rencia primordial es que un framework controla el ciclo de vida de los componen-tes montados sobre éste y contiene lógica de orquestación de ciertos flujos.

En la figura de la izquierda, la aplicación usa los componentes que provee una librería y nada más. En la figura de la derecha la aplicación usa componentes que provee el framework y además éste controla el ciclo de vida de los objetos (IoC) y los flujos dentro de ciertos procesos para orquestar los componentes que fueron montados sobre éste.

Para explicar cómo está conformado un framework aplicativo en la figura tenemos una disección en capas. Existen frameworks genéricos como .NET o Java los cuales fueron hechos para uso genérico y tienen mil y una formas de realizar una misma funcionalidad. Sobre éste están los frameworks aplicativos, que son la realización de una arquitectura de software específica (componentes de software) para un cierto tipo de aplicaciones. Si hacemos un zoom de un framework aplicativo, podemos ver que existen 2 capas importantes, una dedicada a ofrecer funcionalidades comunes orientadas a servicios de infraestructura, y otra que se refiere a servicios específicos para un tipo de negocio en particular; lo cual da como resultado la capa que se llama

Framework Aplicativo y MDADETONADORES DE CALIDAD Y PRODUCTIVIDAD

Por Eduardo Macías y Ernst Ellmer

ARQUITECTURA

Figura 1. Librerías vs Framework

Framework Aplicativo y MDADETONADORES DE CALIDAD Y PRODUCTIVIDAD

Por Eduardo Macías y Ernst Ellmer

www.softwareguru.com.mx

“Domain Specific Language” (DSL). Entre más especializado sea un framework, su valor se incrementa debido a que se ve afectada positi-vamente la productividad del desarrollo de soft-ware y como veremos más adelante se puede generar mayor porcentaje de código automáti-camente usando una herramienta de MDA.

Enterprise Object ModelPara desarrollar la capa de DSL se debe realizar previamente un proyecto de EOM (Enterprise Object Model). El concepto de EOM está basa-do en la idea de crear un modelo de dominio representando los objetos de negocio para toda una organización empresarial. Para obte-ner este modelo se requiere realizar un análisis de procesos de la organización e identificar los objetos de negocio, así como su objetivo, pro-piedades, responsabilidades y variaciones que pueden tener dentro de los diferentes procesos o contextos de negocio en que son usados. Des-pués se deben encontrar agrupaciones funcio-nales de objetos y englobarlos en subsistemas funcionales. En base a este modelo se pueden identificar, diseñar y construir subsistemas fun-cionales parametrizables según los hallazgos de variabilidad de los objetos encontrados por el EOM. Estos componentes funcionales parame-trizables de negocio se integran al framework aplicativo formando la capa de DSL.

MDAMDA son las siglas de “Model Driven Archi-tecture”, un concepto promovido por la OMG,

que propone basar el desarrollo de software en modelos de análisis y/o diseño especi-ficados en UML, y que a partir de estos se realicen transformaciones que generen códi-go fuente u otro modelo con características específicas para una tecnología.

Este concepto permite dos tipos de mode-los de UML: Modelo PIM (independiente a la tecnología) y Modelo PSM (específico a una tecnología). Esto sucede debido a que MDA intenta separar en el desarrollo de software las preocupaciones de requerimientos del ne-gocio y las preocupaciones tecnológicas. La ventaja que nos da este desacoplamiento es que ambos aspectos pueden evolucionar en su propio tiempo y espacio sin estar atados entre sí; la lógica de negocio responde a las necesidades del negocio —y no a las restric-ciones tecnológicas—, y los aspectos tecno-lógicos pueden tomar ventaja de los nuevos desarrollos tecnológicos.

La propuesta se basa en tener un modelo de UML que contenga el comportamiento y ló-gica del negocio de una aplicación neutral a la tecnología (PIM), esto quiere decir que el modelo PIM no es consciente de lenguajes de programación, restricciones tecnológicas, estilos arquitectónicos o protocolos. Ahora mediante transformaciones (punto clave del concepto MDA) del modelo PIM se genera-rán modelos para plataformas tecnológicas especificas (PSM ) como .NET o J2EE.

Figura 2. Disección en capas

PRÁCTICAS

ARQUITECTURA

42 MAR-ABR 2006 www.softwareguru.com.mx

Para llevar a la práctica el concepto de MDA necesitamos lo siguiente:

1) Una arquitectura de software que define los componentes claves del sistema y sus responsabilidades, la organización de los componentes del sistema y cómo se intercomunican entre sí. Esta puede estar defi-nida en dos niveles, una arquitectura de software base que define los componentes claves y la organización de los componentes sin tener detalles de implementación; y como segundo nivel una arquitectura de software que se basa en la definición de la arquitectura base mas los detalles de implementación referentes a una plataforma o tecnología.

2) Documentar los mecanismos de diseño que son la especificación de las reglas de mapeo y transformación entre un modelo PIM y un modelo PSM.

3) Definir un perfil de UML (UML Profile) el cual es la definición de “estereotipos” y “tagged values” que es el mapeo de los tipos de componentes y roles que se definen en la arquitectura de software y los cuales serán usados para “marcar” el modelo PIM.(Cuando se tiene un Framework Aplicativo con DSL éste agrega más definiciones al perfil).

4) El Transformador es el componente que implementa las reglas de ma-peo y transformación definidas en las mecánicas de diseño. En caso de existir un framework aplicativo, el Transformador será consciente de éste y generará código para ser montado sobre el framework.

Existe un quinto componente que es opcional (éste es el sello dife-rencial de un MDA), el cual es tener un Framework Aplicativo sobre el cual se basará el componente Transformador para la generación de código fuente y así lograr generar una mayor cantidad de código automáticamente por medio del DSL.

Ya teniendo estos componentes, el flujo del proceso sería realizar un modelo de UML PIM que especifique la lógica del negocio de mane-ra precisa y de manera agnóstica a la tecnología de una aplicación, luego este modelo PIM se “marca” con el Perfil de UML que se tiene y que fue definido por la arquitectura de software, en este momento del proceso es cuando se le agrega al modelo el conocimiento de la arquitectura de software de manera conceptual. Después este mo-delo PIM “marcado” sirve como entrada para el Transformador que en base a las “marcas” que se agregaron al modelo PIM determina la transformación a realizar y genera el modelo PSM, que puede ser el código fuente de la aplicación u otro modelo UML (no necesariamen-te tiene que ser un modelo UML ).

Es fácil darse cuenta que el modelo PIM que sirve como entrada al pro-ceso es el artefacto más preciado ya que detalla de manera precisa la

lógica y comportamiento del negocio y el cual puede ser transformado a diferentes plataformas tecnológicas (ver figura anterior).

“El concepto de MDA es otro pequeño paso en el largo camino de trans-formar el actual proceso de desarrollo de software artesanal a un proce-so de software que sea una disciplina de ingeniería”.

Logrando los Objetivos de una Fábrica de SoftwareLa Productividad y Calidad de Software son los objetivos primarios en una Fábrica de Software y como detonadores de estos atributos está el uso de un framework aplicativo y una herramienta de MDA.

Las características que impactan directamente a la calidad del soft-ware y que se obtienen por usar un framework aplicativo son:

Modularidad. Esta característica se refiere a la composición de una aplicación en componentes o módulos desacoplados. Como las apli-caciones están montadas sobre el framework que promueve la divi-sión de la aplicación en componentes desacoplados mejorando la modularidad de las aplicaciones y por consecuencia se incrementa la velocidad en el desarrollo en cambios de funcionalidad o extensión.

Reusabilidad. Lo más valioso de un framework aplicativo es la reuti-lización de la experiencia de la gente que diseñó el framework y

Ernst Ellmer, PhD, es subdirector de IIDEA Solutions, y es responsable de la fábrica de software de IIDEA Solutions. Después de terminar su doctorado en el área de “Soft-ware Process Technology” en la universidad de Vienna, Austria, trabajó en University College London, UK, dedicándose a tecnologías orientadas a objetos para desarrollo de aplicaciones distribuidas (CORBA y J2EE). Después se integró a la consultoría suiza Zuehlke Engineering trabajando para clientes en las áreas de finanzas, telecomunicacio-nes y transporte en Inglaterra, Alemania y Suiza. En el 2003, tomó la responsabilidad de la fábrica de software de IIDEA Solutions, en Monterrey, México.

Figura 3. Flujo para aplicar MDA

ARQUITECTURA

www.softwareguru.com.mx

tuvo el cuidado de tener en cuenta aspectos arquitectónicos fundamentales de una apli-cación y lo cual se está reutilizando en cada aplicación que lo esté usando. En segundo término la reutilización de funcionalidad co-mún que se encuentra encapsulada en com-ponentes del framework.

Estandarización. El framework aplicativo for-za al desarrollador a programar en un modelo determinístico lo cual estandariza la manera de desarrollar aplicaciones.

Extensibilidad. Extensibilidad es la habilidad para agregar nuevas funcionalidades a una aplicación existente. Este criterio de servicio es fundamental en un framework aplicativo debi-do a que éste debe ser flexible para poder cubrir las diferentes variaciones de funcionalidad que existirán en las aplicaciones que serán monta-das sobre este y por ende las aplicaciones de negocio montadas sobre éste también hereda-rán esta característica casi “out of box”.

Simplicidad. Esta característica se refiere a que el framework aplicativo oculta muchos detalles para el programador referente a complejidad técnica y parte de la orquestación de procesos que se realizan entre componentes del fra-mework por lo que la productividad del progra-mador se ve incrementada.

Facilidad de Mantenimiento. Esta característica se refiere a la habilidad de realizar un cambio de una funcionalidad existente en una aplica-ción de manera rápida y eficiente sin afectar otra funcionalidad existente. Esta característica es uno de los criterios de servicio más comple-jos por cubrir y se requieren muchos años de experiencia para lograr un nivel aceptable en las aplicaciones de este criterio de servicio; el framework promueve la arquitectura en capas, composición de una aplicación en componen-tes desacoplados y parametrizables, manejo de errores y rastreo de errores, lo cual es un punch directo en la facilidad de mantenimiento de la aplicación. Cuando se tiene un conjunto de aplicaciones empresariales con una misma organización de componentes debido a que se montaron sobre un framework aplicativo, está comprobado por la industria de software que esto incrementa la productividad en el mante-nimiento de las aplicaciones.

Como siguiente paso natural de maduración en el proceso de “industrialización” está la herra-mienta de MDA que genera automáticamente un porcentaje de código fuente de una aplica-ción por lo que impacta drásticamente la pro-ductividad del desarrollo de software.

Caso RealEn la fábrica de software de IIDEA So-lutions empezamos a trabajar en la visión de la “industrialización” del de-sarrollo de software en el año 2003.

Los primeros dos años nos dedicamos a formar una organización estable y acumular conocimiento en las platafor-mas estratégicas .NET y J2EE desarro-llando varios proyectos para un cliente principal. Sobre todo para la parte de .NET estuvimos en una fase explora-toria durante estos años. Al principio de 2005 estuvimos en la posición de poder integrar el conocimiento tecno-lógico a un framework aplicativo que se estaba desarrollando durante la primer mitad del 2005. En la segunda mitad tuvimos oportunidad de usar el framework en varios proyectos dentro de la fábrica de software para optimi-zarlo y madurarlo lo suficiente para usarlo como base para la generación de código bajo el esquema MDA.

Todas las aplicaciones que actual-mente se están desarrollando están basadas en este framework. Además estamos trabajando con nuestro cliente principal en el desarrollo de un EOM y servicios reutilizables para enriquecer al framework en la parte del DSL. En el área de MDA empeza-mos a finales del 2005 a desarrollar un generador de código basado en el kernel de AndroMDA que está disponible sin costo bajo licencia-miento GNU. Actualmente se está usando en un proyecto piloto para cuantificar el potencial de aumentar la productividad en el desarrollo sin disminuir la calidad.

UML

El diagrama de clases de diseño al que lle-garemos, por lo menos en la capa de nego-cio, probablemente tenga un gran parecido al modelo conceptual que mostramos. Entre los cambios más importantes está la apa-rición de operaciones y el refinamiento de las relaciones, que se verán reflejadas en el código, como la funcionalidad asignada en cada clase de nuestro sistema y en el meca-nismo de comunicación entre ellas, respec-tivamente.

Las Relaciones y los Mensajes¿Cómo nos puede ayudar el diagrama de interacción para refinar nuestras clases de diseño? En primer lugar, para identificar re-laciones entre dos clases basta con obser-var cuáles son las que se comunican en el diagrama de interacción, y representarlas con algún tipo de relación en el diagrama de clases. ( Ver Figura 2 )

Como ejemplo, en el diagrama de secuencia ilustrado en la figura 2, se ve cómo la clase

Modelando con ClaseEL REY DE LA ORIENTACIÓN A OBJETOSPor Sergio Orozco y Carlos Macías

Sergio Orozco es director general e instructor senior certificado por la OMG en Milestone Consulting. Carlos Macías es arquitecto en jefe e instructor senior en Milestone Consulting. Primer empresa mexicana miembro de la OMG, especializada en la capacitación práctica y consultoría en UML, CMM y orientación a [email protected] www.milestone.com.mx

Si alguien se lleva la corona en UML, lo más probable es que sean las clases.

Finalmente, todo surgió en un principio en UML debido a la necesidad de unificar los criterios para la representación de la orienta-ción a objetos, y las clases son un elemento básico en este paradigma. Podríamos decir que lo que hemos visto hasta el momento en ediciones anteriores de esta sección, es el preámbulo para llegar a un buen diseño de clases.

Por supuesto que cada artefacto tiene un va-lor importante en el ciclo de vida. Los casos de uso ayudándonos a identificar y a validar mejor con el usuario sus necesidades; el modelo conceptual (un previo del diagrama de clases) permitiéndonos comprender me-jor el problema del usuario; el diagrama de interacción, mostrándonos la colaboración entre los objetos para ejecutar un proceso o un caso de uso. Pero a fin de cuentas, to-dos estos elementos aportan para llegar al punto que trataremos en esta ocasión: el di-seño de las clases que constituirán nuestro sistema.

Efectos del Diagrama de Interac-ción en las ClasesVamos a ver cómo es que las decisiones que tomamos en los diagramas de interacción se pueden ver reflejadas en el diagrama de cla-ses. Estas decisiones pueden afectar tanto la funcionalidad de las clases, como las rela-ciones que debe haber entre éstas.

De acuerdo con lo trabajado previamente, hasta el momento nuestro diagrama de cla-ses debe contar con las clases candidatas a ser de diseño, así como algunos posibles atributos y relaciones (las obtenidas en el modelo conceptual). La figura 1 ilustra una parte del modelo conceptual obtenido al analizar una terminal punto de venta (TPV).

44 NOV-DIC 2005 www.softwareguru.com.mx

Figura 1. Modelo conceptual del punto de venta.

TPV (en realidad las instancias de esta cla-se) requiere comunicarse con Venta para enviarle mensajes, y a su vez Venta requiere comunicarse con los objetos de la clase Ren-glonVenta. Esto significa que en el diagrama de clases tendremos que mostrar una re-lación con navegabilidad de TPV a Venta, y otra de Venta a RenglonVenta. (Ver Figura 3)

Figura 2. Diagrama de secuencia para “Realizar Venta”.

Las relaciones mostradas en el diagrama de clases de diseño pudieron o no haber existi-do durante el modelo conceptual, pero es en este momento (en el diseño) donde se toma la decisión final con respecto a las relacio-nes a incluir en la construcción (implemen-tación) del sistema orientado a objetos, de conectar o no dichas clases. Recuerda que con fines de diseño, el modelo conceptual no es más que un previo o bosquejo de lo que podría ser nuestro sistema.

Cabe aclarar que el tipo específico de rela-ción se define de una manera más elabo-rada, tema que será tratado en ediciones

www.softwareguru.com.mx

Figura 3. Relaciones obtenidas del diagrama de

secuencia.

posteriores de esta sección. Sólo para no dejar un hueco en la descripción de nuestro ejemplo, hay que mencionar que las relacio-nes aquí mostradas corresponden a una de-pendencia y composición, respectivamente.

Los Mensajes y las OperacionesLas operaciones son uno de los elemen-tos de UML más relevantes para la imple-mentación del sistema, pues proveen el elemento fundamental para ubicar la fun-cionalidad de nuestro sistema. Una iden-tificación adecuada de las operaciones de cada clase es clave para el desarrollo de un sistema de calidad. Incluso facilitará el contar con cualidades como el “reuso” y “mantenibilidad” del mismo.

El realizar un diagrama de secuencia con una perspectiva de diseño nos puede ayu-dar a identificar y a ubicar de una mejor manera estas operaciones en sus corres-pondientes clases. Cuando existe un men-saje entre dos objetos tenemos que tomar la decisión de diseño de usar o no dicho mensaje como una llamada a operación, esto significa que la clase receptora del mensaje tendrá asignada dicha operación en el diagrama de clases de diseño.

Si volvemos al ejemplo ilustrado en la fi-gura 2, podemos observar cómo los cua-tro mensajes corresponden a llamadas a operaciones de las clases. Dos de estas operaciones corresponden a constructo-res de las clases y las otras dos a métodos tradicionales implementadas en las clases que reciben los mensajes.

La clase Venta recibe los mensajes agrega-rRenglonVenta( ) y registrarPago( ), lo cual se traduce en el diagrama de clases como dos operaciones en dicha clase, como pode-mos observar en el siguiente diagrama:

Figura 4. Operaciones obtenidas del diagrama de

secuencia.

ConclusiónDiseñar un sistema orientado a ob-jetos no es cosa fácil, pues requie-re tomar diferentes decisiones que sólo el conocimiento de las técnicas y una apropiada experiencia nos permiten lograr. Naturalmente resul-ta complejo compartir, en un artículo tan breve, todo este conocimiento y experiencia. Pero, en cada uno de estos artículos esperamos poder transmitir lo más relevante para faci-litarles el uso de UML como una bue-na herramienta de desarrollo.

En la primera aparición de esta columna (mayo, 2005) les propuse hacer un recorrido por la disciplina de la prueba de software, buscando

proporcionar una panorámica general de la misma. Espero haber podido mostrar que se trata de un dis-ciplina en sí misma, con sus propias técnicas, proce-sos, métricas y herramientas, que requiere de perfi-les profesionales particulares, y que puede generar, a lo largo de todo el proceso de desarrollo de software, información acerca de la calidad del producto de soft-ware, que puede usarse para tomar a tiempo decisio-nes importantes, y reducir tanto el time to market, como los costos de mantenimiento.

Estos últimos comentarios pretenden bosquejar el estado actual de la industria de prueba de software en nuestro país, y brindar elementos que nos permitan discernir fu-turos posibles.

La Industria Mexicana de Prueba de Soft-ware ActualExisten estudios recientes que muestran que la prueba de software es un nicho en el que nuestro país tiene buenas posibilidades de competir con éxito en el mercado global (v.gr. los del COECyTJal).

Hace unos diez años, Hanna Oktaba mencionaba en un congreso que no conocía gente en México con posgrados en prueba; hoy comienzan a aparecer y a reproducir sus conocimientos.

En el 2001 asistí al EuroSTAR (Software Testing Analysis and Review) en Estocolmo. Martin Pohl (neerlandés, coau-tor del modelo de calidad Test Process Improvement), re-sumía así sus impresiones de la industria de prueba en México, luego de su reciente viaje a nuestro país:• Se ve una industria poco estructurada, con muy pocos servicios de alto valor agregado (muy concentrados en la renta de testers), sin fuerte respaldo teórico;• Las pocas empresas que ofrecen esos servicios no son especializadas, por lo que suelen ser poco efectivas y poco productivas; lo que es peor: suelen ofrecer también el servicio de desarrollo de software, lo que les hace per-der credibilidad, pues se colocan como juez y parte.

Ciertamente, hemos tenido ciertos avances como in-dustria: hoy en día existen varias empresas que ofre-cen algunos servicios con valor agregado en prueba de software, y la oferta de servicios se ha incrementado.

También es cierto que —en buena medida por las de-mandas de calidad del cliente— la prueba es hoy más solicitada que hace algunos años.

Sin embargo, los comentarios de Martin aplican hoy, como hace cinco años; aún no tenemos una industria de prueba de software suficientemente grande y especializada, con una oferta integral de servicios de alto valor agregado bien diferenciados.

Del FuturoPara aprovechar la oportunidad de jugar en el mercado global es necesario contar con una industria nacional de prueba (mucho) más grande, realmente especializada y objetiva, pujante, que sea capaz de posicionarse a la vanguardia tecnológica internacional en esa disciplina: necesitamos (muchos) más especialistas en especifica-ción formal de software y en model checking para probar aplicaciones críticas, que puedan modelar requerimien-tos utilizando métodos formales, que sepan utilizar métodos estadísticos durante la prueba, que puedan diagnosticar arquitecturas usando Architecture Langua-ges, una industria nacional con altos grados de madurez en modelos de calidad especializados en prueba, que desarrolle sus propias herramientas, y que genere sus propios foros de intercambio.

Para lograr todo esto, es indispensable intensificar la vin-culación entre la academia, la industria y el gobierno. Una estrategia de corto plazo podría ser ofrecer cursos cortos y diplomados, mientras que una de mediano y largo plazo po-dría enfocarse a especialidades, maestrías y doctorados.

Algunas ConclusionesUno de mis maestros en Alemania decía “hoy no es sufi-ciente con saber mucho. Es necesario además, que mu-chos sepan”. Para poder jugar globalmente, necesitamos especialización y cierta masa crítica.

Pero volumen no es todo lo que nos hace falta: los países industrializados tienen desde hace muchas décadas una industria con engranes bien engrasados y sincronizados. Nosotros debemos continuar construyendo esos engra-nes. Es necesario intensificar la interacción y coopera-ción entre organizaciones relacionadas con la prueba. En e-Quallity buscamos aportar nuestro granito de arena.

¡Nos vemos en el siguiente congreso de prueba!—Luis Vinicio León

CO

LUM

NA

46 MAR-ABR 2006 www.softwareguru.com.mx

La Industria de Prueba de Software en MéxicoBuenas Oportunidades si nos Especializamos y Crecemos

PRUEBA DE SOFTWARE

Luis Vinicio León Carrillo es profesor-investigador del Depar-tamento de Electrónica, Sistemas e Informática del ITESO, y director general de e-Quallity S.A. de C.V., empresa especializada en prue-ba de software. Luis Vinicio es doctorando por la Universidad Técnica de Clausthal, Alemania; su trabajo predoctoral giró alrede-dor a la aplicación de los lenguajes formales en la Ingeniería de Soft-ware. Es coautor de un marco tecnológico que hoy permite a e-Quallity desarrollar empresas de prueba de software. En el contexto de ese marco, su tesis doctoral tiene que ver con aplicaciones de métodos y lenguajes formales para hacer más eficiente y efectiva la prueba de software. Tambien es co-funda-dor del Capítulo Gua-dalajara de la AMCIS y su Secretario actual.

PRUEBA DE SOFTWARE

48 MAR-ABR 2006 www.softwareguru.com.mx

FUN

DA

ME

NTO

S

Administración de la ConfiguraciónOrganización y Control para Lograr el ÉxitoPor Brenda Bastida Martínez

Brenda Bastida Martínez es consultor en Avantare Consultores. Sus áreas de especialidad incluyen el Aseguramiento de la Calidad del Software y la Administración de la Configuración. Brenda es Licenciada en Ciencias de la Computación egresada de la UNAM, y actualmente cursa la Maestría en Dirección de Tecnologías de Informa-ción en el UNITEC.

Tal vez para algunos, el término "administración de la configuración" se refiere a la configura-ción de una máquina, el cómo hacer funcionar cierto software en alguna computadora, o mo-dificar ciertos parámetros del sistema operati-vo. Esto podría ser correcto, siempre y cuando no estemos hablando del concepto dentro de la cultura de procesos. Dentro de este con-texto, la administración de la configuración, o SCM (Software Configuration Management), es el arte de identificar, relacionar, almacenar y trabajar con los productos de trabajo; enten-diendo por productos de trabajo: planes, códi-go fuente, librerías, modelos, documentación; es decir, todo lo que se genera en el ciclo de desarrollo de software.

El Instituto de Administración de la Configu-ración (ICM), la define como: “el proceso de administrar el espectro de los productos de la organización, facilitando y procesando la administración de todos los requerimientos, incluyendo cambios, y actualizando los re-sultados conforme a aquellos requerimien-tos” [ICM 1998]. Como podemos apreciar, esta definición también incluye al proceso en sí, y sus procedimientos referentes.

Mejor Organización de los ProductosLa Administración de la Configuración nos ayuda a localizar más fácilmente nuestros productos, ya sean para uso propio o de al-gún otro involucrado en el proyecto. Adicio-nalmente, nos ayuda a tener un control sobre las versiones de lo que vamos desarrollando. De hecho, nació con la idea de poder estable-cer mecanismos para tener el control sobre lo que se estaba creando en el ciclo de desarro-llo de software. Esto fue porque se tenían sis-temas complejos y se quería reducir el tiempo de respuesta al momento de buscar algún producto de trabajo en los proyectos.

Los proyectos donde no se aplica la admi-nistración de la configuración suelen te-ner un mayor costo en tiempo y esfuerzo, dado que la falta de control y organización provoca re-trabajo y pérdida de tiempo. Por ejemplo, cuando estamos buscando en algún cajón donde no tenemos orden, nos es más complicado encontrar algo, en cambio si tenemos ordenado ese cajón se nos reduce el tiempo de búsqueda, nos acordamos más de las cosas que tenemos guardadas en el cajón y encontramos lo que andamos buscando.

Es recomendable tener una buena admi-nistración de la configuración no solo para ayudarnos a encontrar más rápidamente algún producto, sino que también nos da orden sobre la manera en cómo organiza-mos los archivos, dónde guardamos cada cosa, cómo la nombramos para identifi-carla más rápidamente y también cómo vamos versionándola para que podamos realmente saber cómo ha ido cambiando y poder regresar a un cierto estado, en caso de ser necesario.

Entre los beneficios que encontramos al aplicar la administración de la configuración tenemos: la disminución de los costos de mantenimiento del software, se tiene un me-jor aseguramiento de la calidad, reducción de defectos y errores, mejora la producti-vidad del desarrollo, desarrollo que no de-pende de la persona o personas que lo están desarrollando sino del proceso y de la docu-mentación que se está generando.

Control de VersionesEn los proyectos o desarrollos pequeños, es común pensar que se puede tener el con-trol sobre todos los productos, sin necesi-dad de llevar un control de versiones. Sin

embargo, la realidad es que los sistemas son cada vez más complejos, y con mayor número de componentes que interactúan entre sí. Si no tenemos un control de ver-siones adecuado, no podemos saber cuales son los productos modificados en cierto punto y cuales son las últimas versiones. Esto puede provocar que trabajemos utili-zando versiones inadecuadas, generando así un doble trabajo.

La administración de la configuración nos provee de un nivel de servicio, control y so-porte para la organización o para el equipo de trabajo: • Servicio. Es un servicio que se ofrece a aquellos que están relacionados con el de-sarrollo de software para dar soporte a las personas y la información que se deba de controlar dentro de un proyecto. • Control. Se llevan a cabo actividades de control sobre los productos de trabajo: in-formación, documentos, especificaciones, versiones, requerimientos, herramientas. Es decir, sobre todo los artefactos que se vayan necesitando para realizar y administrar el desarrollo del software.• Soporte. Ayuda a los desarrolladores, ingenieros y a las personas que están re-lacionadas con el ciclo de desarrollo de software en la administración de sus pro-ductos de trabajo.

Figura 1. Ramificación de versiones.

www.softwareguru.com.mx

El Rol del Administrador de ConfiguraciónEste rol se encarga de controlar los artefactos que se van creando durante los proyectos, organizándolos en sus diferentes versiones, y administrando los permisos de acceso y escritura hacia estos. Las tres características más importantes para este rol son: 1. Debe de estar capacitado en herramientas de planeación para ejecutar sus actividades de forma eficiente y eficaz. 2. Debe de tener un control y conocimiento sobre los productos que se irán desarrollan-do a lo largo de cada proyecto.3. Debe ser flexible, para poder ajustarse a las necesidades y requerimientos de los desarrolladores, clientes, programas y a la organización.

ImplantaciónAl decidir que se tendrá una administración de la configuración en la organización, se debe tomar en cuenta el establecimiento de ciertas reglas para saber: • Cómo se van a generando las diferentes versiones de los elementos• Cómo se manejarán los estados que estos tendrán• Cómo se llevará a cabo el manejo de los cambios, lo cual incluye la capacidad de des-hacer cambios. • La manera en que se controlará y autoriza-rá la realización de los cambios o las elimi-naciones de ciertas versiones.

Cuando ya se tomaron y documentaron esas decisiones es necesario comunicar-las a la organización para que las per-sonas puedan entender la nomenclatura y sepan cómo se está trabajando con la administración de la configuración.

HerramientasExisten diversas herramientas de software que facilitan y automatizan la administra-ción de la configuración, donde se pueden ver: el estado de los productos, ya sea check-in (proceso de revisión, aprobación

y estado en un ambiente controlado) o check-out (proceso para modificación de productos y autorización previa de los pro-ductos antes de ser implantados); en qué fase del ciclo de vida del desarrollo del software se encuentran y como interpre-tar más fácilmente la nomenclatura que se está utilizando en la organización.

SCM y CMMIEn el modelo de CMMI, podemos encon-trar a la administración de la configura-ción como un área de proceso, donde su propósito es el establecer y mantener la integridad de los productos de trabajo mediante la identificación, control, repor-te y auditoria a la configuración. Donde se establecen las líneas base (son las especificaciones o productos desde los cuales se partirá como base del ciclo de desarrollo), se rastrean y controlan los cambios y se establece la integridad de los productos de software.

Figura 2. Proceso check-in, check-out.

ConclusiónEs importante tener una adminis-tración de la configuración cuando se está trabajando en un proyecto, para poder tener el control sobre los productos de trabajo que se están creando, disminuir el tiempo de re-trabajo, administrar y controlar los cambios que se tienen dentro del proyecto y sus productos.

La era de las redes de voz y datos indepen-dientes está gradualmente llegando a su fin. Como hemos revisado antes, en el futuro sólo existirán redes convergentes que serán la base para todas las formas de comunica-ción, y además de los beneficios en reduc-ción de costos de operación, la convergencia habilitará una nueva gama de servicios para los usuarios finales. Todas estas nuevas aplicaciones tendrán al Session Initiation Protocol (SIP) como el mecanismo de control central para su comunicación.

Nunca antes había sido tan sencillo el de-sarrollo de aplicaciones para una red de co-municaciones. En el pasado era inevitable el uso de interfases y protocolos propietarios, afortunadamente ahora podemos utilizar un estándar abierto a la comunidad de Internet, el Session Initiaton Protocol. Cuando com-binamos este estándar junto con el poder y simplicidad de la tecnología de Java, obtene-mos un SIP Servlet API. Con estos Servlets un desarrollador puede crear y distribuir nuevos servicios en fracciones de tiempo del que antes se requería cuando se utilizaba tecnología propietaria.

La adopción de SIP está creciendo; son cada vez más los proveedores de equipo de redes y telecomunicaciones que utilizan SIP como el protocolo estándar de sus aplicaciones. Adicionalmente la 3GPP (3rd Generation Par-tnership Project) ha adoptado a SIP como el mecanismo de control de llamadas para la nueva generación de redes. Esto, sumado con el crecimiento acelerado en la adopción de VoIP por las empresas, nos indica que te-nemos que esperar grandes cosas por parte de la gente dedicada al desarrollo de aplica-ciones en las telecomunicaciones.

Durante las entregas de este artículo, esta-remos revisando los conceptos alrededor del protocolo SIP. Revisaremos el rol que juegan

los User Agents (UA) y los SIP Proxy Servers, además de entender cómo establecer la comunicación entre dos dispositivos. Esto nos proveerá las bases para continuar con el SIP Servlet API, donde revisaremos sus conceptos, su comportamiento como Proxy actuando como origen y terminación UA, y cuando actúa como Back-to-Back User Agent (B2BUA); y por último, muestras de código con SIP Servlets que ilustren lo sencillo que es la programación con el API.

¿Que es SIP?SIP es un Protocolo de señalización que se utiliza para iniciar y administrar sesiones interactivas de media entre dispositivos de redes IP. En 1999 la Internet Engineering Task Force (IETF) aprobó a SIP como el RFC 2543, desde entonces SIP ha ido evolucionando a través de varias revisiones que nos llevan al actual RFC 3261.

Un punto importante a resaltar es que al protocolo SIP no le concierne la naturale-za o el contenido de la llamada que inicia y coordina. Como consecuencia les permite a los usuarios decidir el tipo de uso que ha-rán de las sesiones e intercambios de media. Las sesiones no están limitadas sólo a voz; una vez establecida la sesión, los usuarios pueden intercambiar cualquier tipo de con-tenido.

Conceptos de SIPEl RFC de SIP define varios conceptos y elementos claves que se requieren para una red SIP.

• Un User Agent (UA), o punto de fin, le per-mite a los usuarios crear y administrar la co-municación de una sesión. Un UA, ya sea un teléfono SIP o una aplicación de software, maneja las características de la sesión y la administración de tareas como transferencia, terminación, y la invocación de servicios, por nombrar algunos. Adicionalmente los UAs pueden identificar disponibilidad del usuario y negociar las capacidades de un sesión.• Una sesión se establece cuando un UA (lla-mante) invita a otro UA (llamado) a integrar-se a una sesión de comunicación.• Un mensaje SIP es una entidad de texto. Existen dos tipos de mensajes, peticiones y respuestas. Las peticiones son enviadas de un UA a otro, quién en su caso envía res-puestas. Cualquier mensaje que pasa de un llamante a un llamado se mueve en dirección downstream, y a la inversa, los mensajes que se viajan de forma opuesta se mueven en dirección upstream.• Un SIP Proxy Server típicamente realiza el manejo de registros, implementa las políti-cas del ruteo de llamadas y se encarga de las autenticaciones y autorizaciones. Su ta-rea primaria se asegurar que cualquier peti-ción sea enviada a la identidad más cercana al usuario destino. El proxy interpreta y, en caso de ser necesario, reescribe partes es-pecíficas de un mensaje antes de reenviarlo. Un mensaje SIP puede pasar a través de va-rios SIP Proxy Server antes de llegar a su UA destino. Un UA puede estar configurado para enviar todas sus peticiones específicamente a un SIP Proxy Server. Este último se conoce-ría como Outbound Proxy.

50 MAR-ABR 2006 www.softwareguru.com.mx

INFRAESTRUCTURA

Con base en nuestra serie de artículos pasados dedicados a tecnología de VoIP y redes convergentes, pode-mos dar paso a uno que es de mayor interés y propiedad para la comunidad de desarrolladores, pues es aquí donde se unen las soluciones de hardware con las de software.

SIP: Session Initiation ProtocolEl Futuro de las TelecomunicacionesPor Ariel García

Cualquier tipo de multimedia puede ser intercambiado durante una sesión y puede utilizarse cualquier protocolo. SIP usualmente trabaja con Session Description Pro-tocol (SDP) (RFC 2327), que se utiliza para determinar el tipo de media a utilizarse; y Real Time Protocol (RTP) (RFC 1889), quién es el encargado de transportar la media durante la sesión.

• Una dirección SIP, también conocida como SIP URL, es única e identifica a un usuario durante la creación de una sesión de comu-nicaciones. Esta dirección se asemeja a una dirección de correo con la particularidad de tener el formato: sip:prefijo. Por ejemplo, un teléfono en nuestro escritorio puede tener configurada la siguiente dirección SIP: sip:[email protected]

Típicamente se configuran las direcciones SIP con el dominio de la compañía en cuestión, por ejemplo: sip:[email protected]. De esta forma, SIP nos permite registrar un proceso que asocie nuestra dirección SIP con uno o varios UAs. Cuando una llamada es realizada a una dirección SIP, ésta es enviada a un SIP Proxy Server. Este último ejecuta una búsqueda en sus registros para determinar a cuál UA se ruteará la llamada. La información contenida en estos registros puede ser modificada o eliminada en cualquier momento.

El registro de varios UAs con una sola dirección SIP causará que todos los teléfonos suenen al llamar a esta dirección, a este proceso se le conoce como bifurcación (forking). Existen dos ti-pos de bifurcación: secuencial y paralela. Cuando tenemos una bifurcación secuencial, cada UA será notificado en secuencia

después de estar llamando por cierto periodo de tiempo. En contraste, en una bifurcación paralela todos los UAs se noti-fican al de forma simultánea, y la sesión se establece con el primer UA en tomar la llamada o, dependiendo del tiempo, con más de un UA.

En el próximo artículo revisaremos los conceptos básicos de los SIP Servlets, los comportamientos del SIP Proxy Server y mues-tras de código de ambos.

Una Llamada representa todos los mensajes que son inter-cambiados entre un UA llamante y un UA, o varios, llamado(s). Un Diálogo es la relación SIP que persiste durante un perio-do de tiempo entre dos UAs. Este consiste en todos los men-sajes SIP intercambiados entre los UAs incluyendo aquellos que pasan a través de los Proxy. Una transacción existe entre un cliente y un servidor e involucra todos los mensajes des-de la primera petición enviada del cliente al servidor, hasta la respuesta final enviada del servidor al cliente.

Creative

Wireless HeadphonesLa línea de audífonos inalámbricos de Creative utiliza la especificación Bluetooth 1.2, revisada, que evita interrupciones en el stream del audio, brindando un sonido cons-tante y de alta calidad. Funcionan con cualquier dongle a una distancia de hasta 20 metros —sin obstrucciones—, y dan hasta 8 horas de música contínua con baterias.

52 MAR-ABR 2006 www.softwareguru.com.mx

TECNOLOGÍA

ViewSonic

VP SeriesLo más recomendable para proyectos de CAD, editoriales y de publicidad, es tener monitores de alto rendimiento, con resolución de punto ultra fino y mayor fidelidad de color. Los moni-tores VP720 y VP920b, de ViewSonic ofrecen estas características, además de un alto ran-go de procesamiento de imagen y un amplio ángulo de visualización. Su diseño delgado es ideal para maximizar el espacio, y sus múlti-ples entradas analógicas y digitales lo hacen ideal incluso para los fanáticos de los vide-ojuegos.

Apple - Intel

iMac y MacBook ProDespués de un relativamente corto periodo de tiempo desde el anuncio de la llegada de Intel como proveedor de proce-sadores a Apple, la nueva línea de computadoras Mac está ya disponible.

El cerebro ha cambiado, y con ello también las prestaciones de la tradicional iMac, así como la rebautizada MacBook, que cuentan con procesadores Intel Core Duo, una tecnolo-gía revolucionaria que cambia la estructura del caché nivel 2 (L2) para optimizar su funcionalidad entre los dos procesos centrales de toda máquina. Esto, básicamente, se reduce a una mejor ejecución de aplicaciones, más velocidad en las mismas, y, obviamente una sonrisa de satisfacción por parte de los usuarios.

Otro detalle importante del Intel Core Duo es que consume menos poder que los procesadores previos, lo que se tradu-ce en menor calentamiento —una bendición para las Mac—, y mayor duración de la carga de batería en la MacBook Pro.

En cuanto a las aplicaciones, como en toda transición pro-pia de Apple, existe un soporte a las nativas del procesador G4 y G5, denominado Rosetta, que corre detrás del sistema frontal y no requiere configuración alguna. Lamentablemen-te, Rosetta no soporta aplicaciones profesionales de Apple, como Final Cut Pro, Motion y Shake; esperemos que pronto se lancen versiones de éstas para Core Duo.

Sony

Photo Vault Mini CD-R StationEste nuevo dispositivo de Sony es el compañero perfecto para los fotógrafos aficionados que prefieren no cargar con una computa-dora. El Photo Vault permite quemar en un Mini CD las imágenes contenidas en cualquier cámara digital, conectándola directa-mente y visualizándolas en su pantalla LCD, para elegir las que se transferirán al CD. También se pueden transferir archivos de una Memory Stick o un dispositivo USB, además, el Photo Vault se puede conectar a cualquier televisión con un conector A/V nor-mal, y un filtro hace que las imágenes se ajusten perfectamente en cuanto a resolución y profundidad de color para su visualiza-ción en pantalla.

Hace unos meses, me tocó renovar el equipo de cómputo portátil que mi institución me proporcio-na para cumplir con mi trabajo diario. De acuerdo

con las políticas de seguridad establecidas, mi computa-dora portátil requeriría de una cuenta personalizada para mi uso. En un esfuerzo por incrementar el nivel de segu-ridad, el acceso a todos los sistemas de mi institución (correo electrónico, administración de recursos humanos, biblioteca digital, etc.) se hace con una sola contraseña unificada, un solo fragmento de información que debo re-cordar. Al ir a recibir mi equipo nuevo, me preguntaba si la unificación de contraseña incluiría mi cuenta de acceso a la portátil, dado el problema técnico que a mi parecer presentaba lograr esa homologación. El técnico encarga-do del departamento de portátiles me informó mientras configuraba el equipo que, efectivamente, la contraseña se mantendría igual a las anteriores y, acto seguido, me proporcionó un pedazo de papel para que escribiera dicha contraseña y él pudiera incluirla en la configuración.

En este número de Software Guru, ustedes seguramente encontrarán información sobre estrategias en hardware y software para garantizar la seguridad de la información en un sistema, la mayoría de ellas diseñadas como una muralla alrededor de un castillo, evitando el acceso de in-trusos. Pero, como es evidente en la historia anterior, las brechas de seguridad pueden encontrarse hacia el interior de la organización. De hecho, la mayoría de los problemas potenciales de seguridad surgen del interior de la orga-nización. Existen muchos factores para esto, pero pode-mos considerar que el modo de pensar de las personas es el principal de ellos. Consideremos, por ejemplo, una política estándar de contraseña, que indica que una con-traseña debe ser de un número específico de caracteres y con una combinación de letras, signos, números, mayús-culas y minúsculas, que no formen una verdadera palabra o frase. Cierto, esto hará más difícil que un programa de descifrado pueda descubrir la contraseña, pero hará que, de manera inevitable, el dueño de la misma la escriba en algún papel o archivo en su computadora, que puede ser obtenido con facilidad por alguien que desee obtener ac-ceso al sistema o incluso por algún observador casual. Del mismo modo, uno puede proteger un portal con una contraseña, pero una vez que se obtiene un documento del mismo, nada impide a un usuario reenviarlo por correo electrónico fuera de la organización.

Pido al lector que haga una pausa en este momento y realice un inventario de la información sensitiva, con-fidencial o meramente privada que pueda contener su computadora personal. Y que ahora piense en las me-didas de seguridad que tiene para prevenir el acceso no autorizado a dicha información, como candados, fi-rewalls, contraseñas, etc. Ahora considere en cuantas ocasiones ha dejado su computadora sola, quizá para ir por un café. Y por supuesto, ni el lector ni yo admitire-mos que hemos dejado nuestras contraseñas pegadas junto al monitor, o en un inocente archivo llamado “pas-swords.txt” en la carpeta de Mis Documentos.

Consideremos ahora la facilidad con que se puede enviar un mensaje por medio de un servicio de mensajería ins-tantánea, o lo fácil que es introducir un virus al sistema al intentar bajar canciones de la red (ninguno de nuestros empleados acepta tener este comportamiento, pero su biblioteca musical rebasa en mucho a mi colección de dis-cos compactos), y podremos percatarnos de la magnitud del problema. La seguridad empieza por las personas, y el software de seguridad más avanzado no será de gran utilidad si no se combina con prácticas como contraseñas sencillas de recordar para los usuarios. El ejército puede necesitar de oscuras y complicadas contraseñas; pero las posibilidades de que un hacker ataque nuestra empresa con software especializado son muy pequeñas compara-das con la posibilidad de que un intruso interno husmee en una máquina sin protección.

Por todo lo anterior es que sugiero que se consideren las limitaciones de la naturaleza humana al generar las políti-cas de seguridad informática de una empresa, y que el ad-ministrador recuerde que la defensa más fuerte no servirá si se descuida el interior de la organización.

De este modo cierro mi columna, e iré a tomar un café. Y esta vez, recordaré dejar el protector de pantalla con la contraseña habilitada. Sólo por si acaso.

- Raúl A. Trejo

CO

LUM

NA

54 MAR-ABR 2006 www.softwareguru.com.mx

Troya fue Atacada Desde AdentroSeguridad en el Interior de la Organización

CÁTEDRA Y MÁS

El Dr. Raúl A. Trejo es Profesor Investigador del Departamento de Sistemas de Informa-ción en el Tecnológico de Monterrey, Campus Estado de México. Sus áreas de especialidad incluyen Ingeniería de Software, Representa-ción del Conocimiento y Algoritmos Compu-tacionales. El Dr. Trejo gusta de participar en proyectos que involu-cren el trabajo cercano con estudiantes, como el concurso Imagine Cup de creatividad. El Dr. Trejo ha presentado ponencias en confe-rencias tales como Americas Conference on Information Syste-ms, Internacional Joint Conference on Artificial Intelligence y el Inter-nacional Symposium on Scientific Com-puting, Computer Ari-thmetic and Validated Numerics y publicado artículos en la revista Artificial Intelligence. Es miembro fundador de la Asociación de Sistemas de Informa-ción de América Latina y el Caribe.

INDEX

Anunciante Páginas SitioAMCIS 55 www.amcis.org.mxAvantare 41 www.avantare.comEdutecsa 45 www.edutecsa.comGartner F3 www.gartner.com/mx/appintIDC 13 www.idc-eventos.comImexsoft 33 www.imexsoft.com.mxIngressio 49 www.ingressio.comItera 17 www.itera.com.mxMarx 43 www.marx.comMilestone 35 www.milestone.com.mxHauri 53 www.haurimexico.comMicrosoft F2-1 www.microsoft.com/mexicoMilestone 45 www.milestone.com.mxRoca Sistemas F3 www.rocasistemas.com.mxSafeNet 47 www.safenet-inc.comSterling Commerce 21 www.sterlingcommerce.com.mxVision Consulting 51 www.visionconsulting.com.mxTENEMOS UN ESPACIO

RESERVADO PARA TISi deseas anunciarte contáctanosen el (55) 5239 5502 o en [email protected]

DIRECTORIO

55MAR-ABR 2006www.softwareguru.com.mx

máxima: “si algo malo pasa, nos entera-remos”. O la clásica metodología YDV: “Y, Después Vemos”.

No leemos comprensivamente la infor-mación que recibimos, y que en muchos casos tiene más que transmitir que las revistas especializadas.

También es común que no respetamos a los equipos de trabajo. Sub y sobredi-mensionamos sus capacidades.

Y lo que es aún peor: perdemos continuamente nuestra capacidad analítica. Porque aunque parezca lo contrario, estamos fuera de contexto por exceso de preocupación.

Las personas con responsabilidad de gestión en las empresas deben involucrarse en el negocio, porque es lo que hace una empresa exitosa. Y que no se malentienda: la cobran-za, facturación, nóminas y bancos son tareas archiconocidas, de las que hay que analizar su efectividad y eficacia, pero no desplazar el tiempo de reflexión.

Nuestro core y su forma de moverse, crecer y conectarse, es lo que nos va a poner en vuelo o bajo tierra. Comprender las variables que afec-tan al servicio que nuestros clientes reciben es esencial. Capacitación, logística, gestión, conocimiento téc-nico, conocimiento del negocio, ciclo de producto, calidad de servicio in-terno y externo, son algunos de los factores que encienden la luz para

ver mejor hacia dónde vamos y qué debemos corregir.

Seleccionar una plataforma tec-nológica, estudiar un modelo de organización y aplicarlo, adquirir co-nocimiento y desarrollar el capital in-telectual, son puntos de partida para que los clientes comiencen a sentirse satisfechos, y sentirnos enfocados en ellos. Ser oportuno y eficiente de ma-nera interna transmite ese valor hacia fuera. Ocuparse de lo que nos ocupa. Si nuestros equipos pasan 80% de su tiempo desarrollando software, comprender cómo lo están haciendo, infundir disciplinas y medir su adop-ción y resultados.

Es una manera de buscar proyectos que a menudo nos faltan. Ser más sólidos, atractivos y respetados como organización de Ingeniería de Soft-ware es sólo la mitad de lo que hay que hacer. La otra mitad es salir a bus-car las oportunidades. Generarlas. Y acá entra en juego la preocupación: si no podemos contestarnos quiénes somos, qué tenemos para ofrecer y qué queremos, será imposible gene-rar negocios y transmitir confianza.

Preocupémonos, como la palabra bien lo indica. Pensemos antes de que las cosas ocurran. Y comencemos por lo que tenemos a mano, nuestro entorno inmediato.

Uno de los signos de estos tiempos es la alta preocupación (ocuparnos antes de que ocurran las cosas) por temas tri-viales, de escaso trasfondo o conteni-do. Inclusive, hay una tendencia clara a preocuparnos por aquello que ocupa mucho espacio o hace mucho ruido, pero desocuparnos del entorno, del contex-to cercano, de lo que afectamos direc-tamente. Sin analizar cómo nos afecta en lo cotidiano, hagamos el ejercicio de comprender cómo estas preocupaciones interfieren en nuestro trabajo.

¿Podemos realizar lo que nuestra visión anuncia o ideali-za, sin preocuparnos por el funcionamiento del ecosistema que la organización requiere para operar y luego crecer?

En el caso de las empresas de software, cuyo capital hu-mano e intelectual es más tangible que en otro tipo de industrias, es fácil detectar cuándo estamos despreocu-pándonos de lo cercano. Por ejemplo, no poniendo aten-ción en los proyectos que estamos operando.

Consideremos, como ampliación del párrafo anterior, que las industrias que procesan materiales producen “cosas” más tangibles que el software, muchas veces con menos capital intelectual.

La primer y más efectiva manera de ganar proyectos de largo plazo es haciendo bien los de corto, los que ya gana-mos. Administrando bien nuestro combustible actual. Es común, aunque erróneo, que una vez ganado el proyecto el cliente pase a un plano secundario, de desatención.

Frecuentemente no entregamos ni de manera cercana la calidad mínima esperada de un servicio. Nuestros proce-sos de inicio y fin de proyecto son pobres. No hay compro-misos aceptados, ni lecciones aprendidas.

Monitoreamos los proyectos de manera reactiva. Funciona la

56 MAR-ABR 2006 www.softwareguru.com.mx

Ernesto Corona es Vicepresidente y Director de Calidad de Productos y Servicios en Innevo, empresa mexicana acreditada CMMI 2. Es además socio consultor para Vates y Kanav, ambas empresas argentinas de software, acreditadas CMM 3 y CMMI 2 respectivamente. [email protected]

RE

FLE

XIO

NE

S

DespreocupadosAtendiendo Nuestro EntornoPor Ernesto Corona

Año

02

No.

02

w

ww

.sof

twar

egur

u.co

m.m

xS

OFT

WA

RE

GU

RU

CO

NO

CIM

IEN

TO

EN

PR

ÁC

TIC

A

Mar

zo-A

bril

200

6