SG #08 (Marzo - Abril 2006)

Page 1

• Frameworks Aplicativos • Mejora iterativa de Procesos • Diagramas de Clase

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

[ ENTREVISTA ]

'maddog' Hall

Presidente de Linux International

ESPECIAL

Cadena de Valor Móvil REPORTAJE

Avances PROSOFT

¿Qué tan Efectiva es tu

Seguridad? Seguridad y Protección de Aplicaciones

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

[ TUTORIAL ]

GNUpg




DIRECTORIO Edición Ejecutiva Pedro Galván

A>

EDITORIAL

Coordinación Editorial Mara Ruvalcaba Edición y Producción Edgardo Domínguez Arte y Diseño Oscar Sámano, Dafne Ortega

“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 incorporando 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 personas son una minoría. Lo que el resto de nosotros acostumbra hacer es decir “¿seguridad? 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 porcentaje de nosotros empiece a “hacer lo correcto”.

Colaboradores Luis 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

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 sociedad en general. Esperamos que disfruten la entrevista tanto como nosotros.

Distribución Daniel Velázquez

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 esfuerzo, y pone su granito de arena para desarrollar esta industria, nuestra industria.

Contacto info@softwareguru.com.mx +52 55 5239 5502

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 editorial@softwareguru.com.mx Equipo Editorial

02

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

MAR-ABR 2006

Fotografía de Portada Cecko Hanssen (flickr.com)

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: 042004-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.

www.softwareguru.com.mx


contenido mar-abr 2006

Año 2 número 02

EN PORTADA

Seguridad de Aplicaciones

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

Productos

Prácticas

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

PROCESOS Mejora Incremental de Procesos

TUTORIAL GNUpg

14

Cadena de Valor Móvil 18 Obteniendo Ventaja Competitiva

36

Angélica Su analiza los beneficios y comparte tips sobre la aplicacion del modelo iterativo en la mejora de procesos de software.

ARQUITECTURA Frameworks y MDA

40

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

Columnas Tejiendo Nuestra Red por Hanna Oktaba

09

Mejora Continua por Luis Cuellar

10

Tendencias en Software por Luis Daniel Soto

39

Prueba de Software por Luis Vinicio León

46

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

54

www.softwareguru.com.mx

24

UML Diagrama de Clases

44

En 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.

Entrevista

22

Jon ‘maddog’ Hall

En Cada Número Noticias y Eventos Reportajes Fundamentos Infraestructura Reflexiones

04 06 48 50 56

MAR-ABR 2006

03


NOTICIAS

Noticias LinuxWorld México Del 14 al 17 de febrero, en la Ciudad de México, se llevó a cabo la conferencia y exposición LinuxWorld, primer evento de clase mundial dedicado a Linux y software libre que se presenta en nuestro país. Las conferencias y la exposición tuvieron como objetivo dar a conocer diferentes soluciones de Linux y software libre, así como los beneficios 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 capacidades de la próxima versión de Novell Linux Desktop. Para mayor información, visita el blog de SG en www.softwareguru.com.mx

MoProSoft y EvalProSoft: Base para PyMEs Iberoamericanas

Inicia Operaciones Fábrica de Software de la UTM

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

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

El objetivo del proyecto es incrementar el nivel de competitividad 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 especí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 iberoamericano 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 conocimientos 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.

04

MAR-ABR 2006

El Gobernador de Oaxaca, Ulises Ruiz Ortiz y el Rector de la UTM, Modesto Seara Vázquez, en compañía de Mauricio 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 empresas 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

www.softwareguru.com.mx


Eventos 8 Marzo 2006

30 y 31 Marzo 2006

Centro Banamex, Cd. de México Info: www.idc-eventos.com/bi06 Tel: (55) 5661 3791 e-mail: idc@apsis.org.mx

30 de Marzo, Cd. de México. 31 de Marzo, Monterrey. Info: www.itera.com.mx Tel. (55) 5281 7670 e-mail: contactsalescenter@itera.com.mx

Business Intelligence & Business Process Management Conference 2006 - IDC

Seminario Optimizando los servicios de TI con ITIL - Itera

23 Marzo 2006

IT SmartSourcing Conference 2006 IDC Hotel JW Marriott, Cd. de México Info: www.idc-eventos.com/smartsourcing06 Tel: (55) 5661 3791 e-mail: idc@apsis.org.mx

5 Abril 2006

Prácticas no Recomendadas en el Uso del MS Project - MPA Capítulo México WTC, Cd. de México Tel: (55) 5523 8488 e-mail: isabel.garcia@advisicon.com

29 al 31 Marzo 2006

5 y 6 Abril 2006

San Andrés Cholula, Puebla Info: www.congreso-ids.com Tel: (222) 755 5394

Centro Banamex, Cd. de México Info: www.gartner.com/mx/appint Tel: (55) 5584 9370

Congreso Tendencias y Aplicaciones en los Sistemas de SW Universidad Madero

Integración de Aplicaciones, Servicios Web, SOA y BPM Gartner

profesionales de TI para empresas de México, Estados Unidos y Latinoamérica. Con una inversión de más de dos millones de dólares, el GDC Softtek Aguascalientes alojará a más de 1,200 desarrolladores mexicanos. Esta iniciativa se realiza con una visión compartida de Softtek, la Secretaría de Economía a través del programa ProSoft, y el Gobierno del Estado de Aguascalientes.

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 Center) Softtek Aguascalientes, el cual desarrollará soluciones y servicios

www.softwareguru.com.mx

En la ceremonia estuvo presente el Secretario de Economía, Sergio García de Alba, el Gobernador del Estado, Ing. Luis Armando Reynoso Femat, el Secretario de Desarrollo Económico de Aguascalientes, Dr. Armando Jiménez San Vicente, la Presidenta de Softtek, Blanca Treviño de Vega y empresarios de la entidad. De acuerdo con el Dr. Jiménez San Vicente, la visión de esta administración es colocar a Aguascalientes como un polo de la economía de la innovación y del conocimiento. Para mayor información, visita: www.softwareguru.com.mx

MAR-ABR 2006

05


REPORTAJE

Servicios de TI en México Una Industria en Constante Expansión Por 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).

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 latinoamericano de desarrollo de software y contenidos digitales en español.

Resultados 2005 Durante el 2005 el ProSoft consiguió posicionarse en el sector debido a su impacto favorable en esta naciente industria mexicana. El apoyo del gobierno federal aunado al de organismos promotores, sector privado 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 comprende:

• Desarrollo de competencias laborales especializadas. • Vinculación de las empresas del sector de TI con las instituciones educativas. • Implantación de programas de capacitación y actualización permanente. 2. Elevar la calidad y la capacidad de procesos, que abarca: • La implantación y certificación en modelos de calidad mediante el desarrollo de capacidades para la prestación de servicios de calidad. 3. Propiciar la innovación y el desarrollo tecnoló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 cadena de valor. • El posicionamiento y/o mejora de imagen del cluster. 8. Promoción y comercialización especializada 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 servicios de TI. 9. Desarrollo de masa crítica del sector, que impulsa: • Proyectos integrales de fortalecimiento de capacidades.

��� ��� �� �� �� ��

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

06

MAR-ABR 2006

www.softwareguru.com.mx


Monto de la Inversión ProSoft

En la parte cuantitativa del ProSoft, en el 2005 se arrojaron los siguientes números: • 110 instituciones educativas involucradas en proyectos relacionados con PROSOFT. • 4,989 personas capacitadas para las distintas competencias laborales del sector. • 2,249 personas certificadas en las diversas competencias laborales del sector. • 214 personas capacitándose en temas de calidad. • 338 empresas involucradas en capacitación, implantación y/o certificació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 investigación de la compañía INTEL que genero 30 nuevos empleos. • La Inauguración del centro de desarrollo de video juegos de la compañí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 comprobantes 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.

www.softwareguru.com.mx

Concepto

2004

2005

Acumulado Crecimiento

Presupuesto

139.7

195

334.7

40%

249.52

753.75

1003.27

202%

Factor de potenciación

2.5

3.9

3.5

56%

Proyectos aprobados

68

181

249

166%

Entidades federativas

10

19

19

90%

584

1,060

1,644

82%

1,786

6,642

8,428

272%

ProSoft (mdp) Inversión detonada por ProSoft (mdp)

participantes Empresas proyecto-atendidas Empleo proyecto

Tabla 2. Crecimiento del Monto de la Inversión

En lo referente a participación estatal, inversión, y proyectos atendidos, 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.

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

MAR-ABR 2006

07


CLUSTERS

Software de Clase Mundial

Hecho en México, Hecho en Sonora Una de las estrategias utilizadas en México para afrontar el reto de los grandes proyectos de tecnologías de la información, es la asociación de varias PyMEs en un concepto 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.

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 empresas internacionales. • Coadyuvar en al aumento de la calidad de vida de los sonorenses mediante la generación de empleos de alto valor agregado. • Alinear a las necesidades de la industria los perfiles de los egresados universitarios y la capacidad 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 eficientemente mediante un cluster. • Buscar la interacción adecuada entre los diferentes sectores de Tecnologías de la Información en el Estado, y a la vez apoyar el desarrollo tecnológico de nuestras comunidades. Para alcanzar estos objetivos, TI Sonora plantea 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 profesionales con las habilidades técnicas necesarias en las herramientas que manejan. • Promoción: La principal fuente de trabajo deberá provenir de las ventas, debemos contar con las habilidades para competir con las empresas con mayor presencia en el mercado internacional. • Modelo de Interrelación: Modelo estandarizado de producción que permite sumar el esfuerzo 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.

08

MAR-ABR 2006

• Biblioteca de Componentes: Aporta componentes desarrollados por las mismas empresas para su reutilización. • Currícula de TI: Portal que presenta información de las empresas, profesionistas y proyectos desarrollados. • Edificación de Parques Tecnológicos: Permite compartir y optimizar infraestructura de clase mundial.

Principales Logros Como muestra de los logros alcanzados por los asociados en TI Sonora encontramos: • Las empresas C3 Technologies y Novutek han sido aceptadas como empresas con oferta tecnológica de alto valor agregado para participar en el programa Technology Business 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 asociadas, mas de 700 empleos de expertos de TI.

Objetivos 2006 Los centros TIS ofrecen servicios a los asociados y la infraestructura necesaria, en general servicios de valor agregado. Se abrirán 2 nuevos 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ía 2. Mejora de procesos CMMI en 11 empresas (Control-E, Novutek, Qualisys, Netshore, Software 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 Integradora 5. Portal TI Sonora con software integrado como Currícula de TI, Biblioteca de Componentes y Portal Educativo 6. Vinculación Universitaria 7. Promoción Nacional e Internacional de Software Sonorense 8. 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.

www.softwareguru.com.mx


TEJIENDO NUESTRA RED

COLUMNA

Y la Academia... ¿Cuándo se va a Unir? Papel de la Academia en la Industria de Software

E

n el número pasado dije que, a mi juicio, la academia 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 fortalecimiento de la industria de software? Veo por lo menos tres frentes en los que deberíamos actuar:

1. Transferencia de Conocimientos Propó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 comunicación entre academia y empresas para que se conozcan, se inspiren confianza, y los frutos de la investigación se conviertan en productos innovadores que den ventaja competitiva a la industria. 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 reconocimiento 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ía Propó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 constante 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 menos, 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, transmitirá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 vinculació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 Existentes Propósito.- Elevar el nivel de capacidades de la industria. www.softwareguru.com.mx

Problema.- Estamos formando muchos recursos humanos en múltiples carreras, sin embargo, tendemos a descuidar aspectos relacionados con la incorporación a la actividad profesional. 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 conocimientos 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 estudios 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 procesos 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.

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

En la UNAM ya empezamos a reflexionar al respecto. En noviembre pasado realizamos un coloquio sobre la Computací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 Iberoamérica. La idea, a grandes rasgos, es repetir a nivel iberoamericano 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 mejorado 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 seguiré contando. - Hanna Oktaba MAR-ABR 2006

09


COLUMNA

MEJORA CONTINUA

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

L

a semana pasada me encontraba dando una conferencia 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 haciendo? ...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ón 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.

Este 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 resultado final de un esfuerzo de calidad. El mensaje que se envía con esto es: “queremos certificarnos sin realmente entender 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 mejora va a cambiar la manera de hacer negocios?, ¿de interactuar 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ón La 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 asegurarme 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 medida posible, reduzco costos y me dedico a vender. Desafortunadamente 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 producto, 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.

10

MAR-ABR 2006

La Tremenda Fuerza en Contra del Cambio Citando 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 comportamiento 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 eliminar 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 regresar 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 problemas 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 artículo o ideas adicionales de por que no hacemos lo que sabemos que es correcto, por favor háganmela llegar a: lcuellar@agentesdecambio.org o en www.agentesdecambio.org. —Luis Cuellar www.softwareguru.com.mx



PRODUCTOS

LO QUE VIENE

Eclipse Process Framework y Rational Method Composer La evolución de RUP

Hace tiempo que los entusiastas del Proceso Unificado de Rational (RUP) se preguntan qué es lo que va a suceder con éste, si va a seguir como producto comercial, o a ser liberado a la comunidad. La respuesta en ambos casos es sí. A finales del 2005, IBM anunció que donaría a la Fundación Eclipse tecnología y propiedad intelectual relacionada con RUP. El objetivo es que Eclipse cuente con un conjunto 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 procesos 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 comercial de RUP, aunque como producto ahora se llamará Rational Method Composer (RMC). Este producto estará montado sobre el Eclipse Process Framework, e incluirá diversas configuraciones de RUP, tales como:

Team Foundation Server A Punto de Liberarse

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 herramientas 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/awdtools/rmc/

PRODUCTOS

Citrix Access Gateway Enterprise Edition Acceso Remoto por SSL

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 componente 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 capacidades 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.

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 segura 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 teletrabajadores de empresas, más de tres cuartas partes de los contratistas 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 Enterprise Edition, el cual está dirigido al segmento de empresas que requiere la máxima escalabilidad y desempeño.

msdn.microsoft.com/vstudio/teamsystem

www.citrix.com

12

MAR-ABR 2006

www.softwareguru.com.mx



PRODUCTOS

TUTORIAL

Criptografía con GNUpg

Una Herramienta Sencilla, Poderosa y Gratuita Por J. Hernán Ramírez R.

S

eguramente 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, debido 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ículo veremos como se puede utilizar GNUpg para cifrar mensajes.

Un Poco de Historia En 1991 Philip Zimmermann creó un software para cifrado de correo electrónico llamado PGP, acrónimo de Pretty Good Privacy, que resolví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 formato de mensajes utilizado por PGP. Fue así que Werner Koch desarrolló 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 misma manera sobre cualquier otra plataforma.

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 algún comentario. You need a user ID to identify your key; the software constructs

El ejecutable gpg se utiliza con la siguiente estructura:

the user ID

gpg [opciones] comando [args]

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

Generando Nuestra Llave

“Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de”

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

Real name: Usuario A

$ gpg --gen-key

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 diferentes cosas (mover el mouse, usar el teclado, etc) para generar mayor entropía en el sistema, y que así este pueda generar buenos números aleatorios.

Please select what kind of key you want: (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection?

Email address: usuarioa@dominio.com Comment: Llave de prueba Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

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.

14

MAR-ABR 2006

www.softwareguru.com.mx


You need a Passphrase to protect your secret key. -

No se asignado o evaluado la confiabilidad

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

e

Evaluación de confiabilidad fallida

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

q

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

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

n

No confiar nunca en esta llave.

random number generator a better chance to gain enough entropy

m

Marginalmente confiable.

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

f

Confiable.

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

u

Plenamente confiable.

++ ++++++++.+++++...+++++++++++++++++++++++++.+++++++++++++++.+++ ++.++++++++++... .............................+++++ gpg: /home/hernanr/.gnupg/trustdb.gpg: trustdb created gpg: key F6A9C36B marked as ultimately trusted

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

public and secret key created and signed. $ gpg --edit-key usuariob gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model

pub

gpg: depth: 0

usage: CS

valid:

1

signed:

0

trust: 0-, 0q, 0n, 0m,

1024D/D9ACD3CF

0f, 1u pub

sub

1024D/2D8C015B 2005-12-19 Key fingerprint = 6127 0873 9812 543E BA72

2349 0B4A 5DFD

2048g/862B7711

created: 2005-12-19

expires: never

trust: unknown

validity: unknown

created: 2005-12-19

expires: never

usage: E [ unknown] (1). Usuario B <usuariob@dominio.com>

F6A9 C36B uid

Usuario A (Llave de prueba)

<usuarioa@dominio.com> sub

Command>sign

2048g/B1CCF967 2005-12-19 Are you sure that you want to sign this key with your

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

key “Usuario A <usuarioa@dominio.com>” (2D8C015B)

Manejando las Llaves Públicas

Really sign? (y/N) y

Para poder intercambiar mensajes cifrados con otra persona, esta otra persona 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.

Command>save

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

$ gpg --export -a -u usuarioa@dominio.com > pubkey.asc $ gpg --list-key

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.

/home/usuarioa/.gnupg/pubring.gpg --------------------------------pub

1024D/2D8C015B 2005-12-19

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

uid sub

2048g/B1CCF967 2005-12-19

$ ls

pub

1024D/D9ACD3CF 2005-12-19

demoGPG

pubkey.asc

usuariob.pubkey.asc

$ gpg --import usuariob.pubkey.asc gpg: key D9ACD3CF: public key “Usuario B <usuariob@dominio.com>” 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: www.softwareguru.com.mx

uid sub

Usuario A <usuarioa@dominio.com>

Usuario B <usuariob@dominio.com> 2048g/862B7711 2005-12-19

Firma de Mensajes La 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. MAR-ABR 2006

15


PRODUCTOS

TUTORIAL

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

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

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

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 <usuarioa@dominio.com>”

2D8C015B gpg: Good signature from “Usuario A <usuarioa@dominio.com>”

Cifrado para Recipientes Exclusivos Ya hemos visto como se utilizan las firmas para verificar el origen e integridad 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.

1024-bit DSA key, ID 2D8C015B, created 2005-12-19 $ gpg -a –o MensajeCifrado.txt –-encrypt --recipient Enter passphrase:

usuariob@dominio.com

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 archivo prueba1.txt.asc, que es la versión firmada del archivo original. Para verificarlo se utiliza el comando verify:

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

MensajeOriginal.txt

$ gpg --decrypt MensajeCifrado.txt gpg: encrypted with 2048-bit ELG-E key, ID 862B7711, created 2005-12-19

$ gpg --verify prueba1.txt.asc gpg: Signature made Mon Dec 19 07:43:01 2005 VET using DSA

“Usuario B (Llave b) <usuariob@domain.com>” gpg: decryption failed: secret key not available

key ID 2D8C015B gpg: Good signature from “Usuario A <usuarioa@dominio.com>”

Sin embargo, el Usuario B si puede hacerlo:

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

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

$ 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.

Conclusión Hemos 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.

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 original 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:

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 hr@hernanramirez.info. Mi llave pública está en: hernanramirez.info/pubkey.asc

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

16

MAR-ABR 2006

www.softwareguru.com.mx



ESPECIAL

Cadena de Valor Móvil Obteniendo Ventaja Competitiva Por Mario R. Rodríguez

E

n los últimos años ha aumentado considerablemente la cantidad de PDAs y teléfonos celulares; estos dispositivos comparten la característica de “movilidad”, que sumada a la facilidad de sincronizació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 aprovechar la movilidad y traer beneficios a la empresa? Para responder a esta pregunta primero debemos tomar en cuenta que no todas las organizaciones 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 continuació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 Competitiva en Costo-Diferenciación

El 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 estraté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 & Govindarajan, 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. mrodrigu@itesm.mx

18

MAR-ABR 2006

www.softwareguru.com.mx


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

Posición relativa

Inferior

Superior

Ventaja en

Ventaja en

Superior

diferenciación

ambas

Inferior

Atorado en

Ventaja en

el camino

costo

en diferenciación

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: Superioridad en Diferenciación

Superioridad en Costo

Acceso a la cartelera cinematográfica.

Distribución de catálogos en

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 organizació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 creación física y entrega del producto o servicio. • Actividades de soporte.- Contribuyen con las actividades primarias (Ver figura 1).

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

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

telefónica. Publicidad inteligente en función de

Optimización de rutas de

la ubicación de la persona.

personal de mantenimiento o entregas.

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 inversiones en capacitación. A cambio de una pequeña inversión, puede diferenciarse de sus competidores, agregar valor a sus productos o servicios y reducir algunos costos.

Aplicaciones que Apoyan las Actividades en la Cadena de Valor

El análisis de la cadena de valor puede ayudar a una organización a determinar 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. www.softwareguru.com.mx

Aunque no todas las organizaciones realizan las actividades primarias o secundarias como las expresa Porter, este análisis debe servir para examinar 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 ventaja 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. MAR-ABR 2006

19


ESPECIAL

Administración de Recursos Humanos: estas actividades están relacionadas con el reclutamiento, 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 movimiento, por lo que hay que analizar con detenimiento 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, habilidades o resultados de evaluación. • Consulta de indicadores personales, posicionamiento y concursos internos. Desarrollo Tecnológico: incluye la tecnologí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 equipos 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 desabastecimiento 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, manipulació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.

20

MAR-ABR 2006

Operaciones: conformada por la transformació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 componentes 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 almacenaje 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 facturas pagadas Comercialización y Ventas: lo conforman las actividades involucradas en la inducción y fácil adquisición de los productos como publicidad, 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, reparación, entrenamiento, suministro de repuestos y ajustes del producto. Aplicaciones móviles para servicio: • Monitoreo de desempeño de equipos y productos entregados.

• Consultas de saldos y líneas de crédito. • Optimización de rutas de servicio a distribuidores o a domicilio. • Cambios en configuración en productos entregados al cliente. • Consultas de especificaciones de ensamblado 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 naturaleza 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 Internet es una buena base para la explotación y transferencia de datos y esto puede lograrse al incorporar tecnologías como Bluetooth o WiFi, 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 advantage: 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

www.softwareguru.com.mx



ENTREVISTA

Jon “maddog” Hall Presidente 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 universitario, y actualmente forma parte del consejo de diversas organizaciones. Sin duda, es una de las personas más conocedoras, interesantes y agradables de la industria. Veamos cuales fueron sus palabras para los lectores de SG. ¿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 encontrar al próximo Einstein de las computadoras. 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 distribuyendo 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 software, 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 empresa, 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 software? Yo creo que es mejor tener a 80 mil personas millonarias, que a un 80 mil millonario. Definitivamente es mejor para la economía. ¿Qué se puede hacer para mejorar la educación universitaria? Antes que nada, creo que la gente debe darse cuenta que las personas que están enseñando

22

MAR-ABR 2006

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 termina afectando la calidad de la enseñanza que dan. Debería haber programas para que cada cierto tiempo los profesores dejen la academia, 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 trabajo. Eso no es cierto. Las universidades existen 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 alumnos, es cómo aprender nuevas cosas; es decir, prepararlos para una vida de aprendizaje. ¿Los grandes desarrolladores aplican la ingenierí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 software 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 personas, es que no sólo son buenos programadores, 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 durante 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 arquitecto de Digital Unix, y estaba enfurecido porque é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 contento 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 patentes de 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 perdía. Otro problema es que nadie podía decir “oye, tengo una idea que puede mejorar tu idea”, porque nadie conocía la idea original, 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 secundarios. Esto es una gran inversión, y requieres 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 particular, llega un abogado diciendo: “¿podemos patentarlo?”, “¿cuánto dinero le podremos sacar?”, “tal vez no le podamos sacar dinero, pero www.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 instrumento 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 instrumentos. Si lo patento, nadie querrá pagar para construirlo, y entonces nadie escribirá música para él. En cambio, si publico cómo construirlo, 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 piano 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 concedieran todas las patentes que están solicitando, 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 pintando la Capilla Sixtina durante veinte años, y justo cuando está terminando, llega Leonardo da Vinci y le dice “buen trabajo, pero tienes 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 lados, y toda la sociedad se beneficia de él. El software nos puede ayudar a resolver muchos de los problemas que enfrentamos, y creo que sería mejor si 6.3 billones de mentes 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 olvidamos esto. Si quieren ver a la persona más importante para el software libre, miren en un espejo. www.softwareguru.com.mx

MAR-ABR 2006

23


EN PORTADA

¿ESTÁS SEGURO?

CONOCIENDO LOS FUNDAMENTOS El tema de la seguridad informática ha sido de gran importancia en los últimos años. Como usuarios, estamos muy conscientes de amenazas como virus, adware, spyware, phishing, etc. Sin embargo, como desarrolladores 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. Fundamentos de la seguridad

Existen diversos pilares sobre los que descansa la seguridad de una aplicación. Entre los principales están: Autenticación. La autenticación se enfoca en resolver la pregunta “¿y tú quién eres?”. Es el proceso de identificar de manera única a los clientes de nuestras aplicaciones y servicios. Estos pueden ser usuarios finales, otros servicios, procesos o computadoras. 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 autorización se preocupa por averiguar “qué” es lo que puede hacer. Es el proceso que gobierna los recursos y operaciones que los clientes autentificados pueden acceder. Los recursos pueden incluir datos (archivos, bases de datos, tablas, renglones

24

MAR-ABR 2006

específicos), así como elementos de bajo nivel como archivos de configuración, o llaves del registry. Las operaciones incluyen la realización de transacciones, que pueden tener una gran variedad dependiendo de cada aplicación. Auditoria. El registro (auditing) y manejo de bitácoras es de vital importancia en cualquier aplicació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 privacidad, es el proceso de asegurar que los datos se mantienen confidenciales y no pueden ser consultados 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 reforzar la confidencialidad. Otro mecanismo comú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 (maliciosa). En las aplicaciones web, cuya información cruza a través de la red, esto es de gran importancia, ya que queremos asegurar que la informació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 autenticación de mensajes. Disponibilidad. Desde la perspectiva de seguridad, la disponibilidad significa que un sistema esté disponible para sus usuarios legítimos. En algunos casos, se pueden recibir ataques de “negación de servicio”, cuyo objetivo es saturar una aplicación o servidor de tal manera que sus usuarios no puedan accederla.

www.softwareguru.com.mx


Estrategia Integral de Seguridad

Para 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.

Consideración

Descripción

Parches y Actualizaciones

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

Protocolos y Servicios

Un servidor solamente debe tener activados aquellos 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 Directorios

Los archivos y directorios se deben proteger de manera 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.

Tabla 2. Consideraciones de seguridad en el host

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.

Categoría

Descripción

Validación de entradas de datos

¿Cómo sabemos que las entradas de datos que 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 la configuración de seguridad

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

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 de parámetros

Las aplicaciones web acostumbran utilizar cookies, 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 Excepciones

Cuando falla una llamada a una operación, ¿qué 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?

Asegurando la Red

El 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 componentes básicos para infraestructura de red segura. 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

Switch

Un firewall bloquea los puertos y protocolos que querramos proteger. Además, pueden analizar y filtrar el tráficoo para bloquear comunicaciones maliciosas. Los switches se utilizan para separar segmentos de red.

Tabla 1. Componentes de seguridad en la red

Asegurando el Host

El 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ón

Una vez que contamos con una red y hosts seguros, podemos enfocarnos en desarrollar aplicaciones seguras, o asegurar las existentes. La tabla 3 provee una guía sobre los principales aspectos a tener en cuenta.

Conclusiones

Hemos 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. www.softwareguru.com.mx

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

Además de esto, se requiere diseñar y construir las aplicaciones utilizando lineamientos y mejores prácticas de seguridad.Cualquier aplicación está sujeta 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. MAR-ABR 2006

25


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, alcanzar los objetivos de seguridad de la empresa y reducir los riesgos. El modelado de amenazas también nos provee 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 aplicación es “suficientemente segura”. Existen diferentes métodos para modelar las amenazas. 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 aplicables a cualquier otro sistema de información, independiente de su plataforma.

un aplicativo, un activo podría ser la disponibilidad de información o la información en sí misma, 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 Arquitectura

Posteriormente, 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 permite identificar amenazas específicas comunes en esa tecnología, y sus soluciones. Normalmente, se parte de un diagrama de bloques 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

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 potencialmente maligna”, se debe hacer una validación de los datos que intercambian los subsistemas, y se deben identificar los puntos de entrada al sistema. 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 preguntarse cuál es el mecanismo de autenticación, qué privilegios se necesitan para realizar las operaciones 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 considerar los diferentes equipos periféricos y considerarlos 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

MODELADO DE AMENAZAS UN CAMINO HACIA SISTEMAS MÁS SEGUROS Por Luis Guerrero

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 vulnerabilidades. Antes de iniciar una sesión de modelado de amenazas, hay que hacer un poco de tarea. Primero, todos los participantes deben estar familiarizados con los conceptos del modelado (amenazas, vulnerabilidades, contramedidas). También deben estar conscientes 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 Activos

El primer paso es evidente. Un activo es un recurso de valor, y varía según la perspectiva. Para

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 autenticació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 productos. Sólo los usuarios autenticados pueden administrar 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 Arquitectura

La descomposición funcional es el tercer paso, con el fin de lograr el perfil de seguridad de la aplicación. Una comprensión detallada de la mecánica

las interfaces de usuario, pero no son los únicos. Hay que identificar los puntos adicionales, como interfaces programáticas o procedimientos almacenados 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 Amenazas

Una amenaza es un evento no deseado. Una posible ocurrencia, a menudo descrita como un efecto que podría dañar o comprometer un activo u objetivo. Puede que tenga o no carácter malintencionado. 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.

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


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 limitados 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, estableciendo 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 Amenazas

Cuando se documentan las amenazas, se les otorga un nombre y un identificador ú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 contrarrestar 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 Vulnerabilidades

Una 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 operativas. Atender cada vulnerabilidad no es práctico, por lo que es importante 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 producto 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 vulnerabilidad Daño (Damage potential), facilidad de Reproducir (Reproducibility), 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ón

Aunque 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

www.softwareguru.com.mx

MAR-ABR 2006

27


EN PORTADA

SEGURIDAD Y PRIVACIDAD RETOS EN LA SOCIEDAD MODERNA Por Carl Adams y Vasilios Katos

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. La seguridad informática y los asuntos relacionados 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 controlar 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 internacionalmente en los lineamientos de la OCDE (Organización para la Cooperación y el Desarrollo 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 cuantas 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 importancia necesario a la protección de la informació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 reevaluación de los sistemas seguridad.

Privacidad

El tema de la privacidad de la información personal es tal vez uno de los que mayor preocupación provoca. Los avances tecnológicos, tanto en términos de poder de procesamiento y almacenamiento, como en sistemas de comunicación y

monitoreo, permiten captar y acceder a una enorme 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 digital, para dar soporte a actividades económicas como el comercio electrónico y el Customer Relationship Management. Es un asunto complicado, ya que se debe balancear la protección de la privacidad, con el soporte y habilitación de actividad económica basada en tecnología, donde se requiere utilizar, almacenar y transmitir datos personales para poder realizar transacciones. Los gobiernos de algunos países ya han respondido 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 legislació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 privacidad 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 privacidad, 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ámbricas

El auge de las redes inalámbricas y la tendencia 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 propias instalaciones, sino que gracias a la tecnologí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 seguramente provocará la creación o modificación de iniciativas para proteger la privacidad tanto individual como corporativa. Referencias 1. OECD. Implementation Plan for the OECD Guidelines for the Security of Information Systems and Networks: Towards a Culture of Security. OECD, 2 July 2003. 2. OECD. OECD Guidelines on the Protection 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 Conference on Electronic Commerce Research (ICECR-6), Dallas, Texas, USA, 23-26 October 2003, pp. 396-403.

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

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

28

MAR-ABR 2006

www.softwareguru.com.mx


IDENTIDAD FEDERADA

EL 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 Management”. 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 importancia. Entendamos en qué consiste la identidad 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 importantes 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 recientemente nuestras comunicaciones se están digitalizando (celulares, VoIP), y ahora también nuestro entretenimiento (música por demanda, TV por demanda). 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 proveedor, es la identidad federada. En términos básicos, FIM es un sistema que permite 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 usuarios 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 servicios individuales son proporcionados por distintos proveedores externos: uno se encarga de la cobranza, otro del correo de voz, otro de la identificación de llamadas, otro del soporte a fax, etc.

Estándares

En 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, autenticación y seguridad. Si es difícil lograr que una misma empresa se estandarice alrededor de una sola www.softwareguru.com.mx

tecnología o producto, imagínense lo complicado que sería estandarizar con todos sus clientes y socios de negocio. Desgraciadamente, existen varias especificaciones, creadas por diferentes organizaciones, y que no son completamente compatibles entre sí. Echemos un vistazo a las principales especificaciones:.

OASIS

El enfoque de OASIS (Organization for the Advancement of Structured Information Standards) es hacia lograr interacción y single sign on a través de empresas (business-to-business). Para ello, OASIS 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 Alliance

A diferencia de OASIS, cuyo interés original son las interacciones entre empresas, la Liberty Alliance 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 patrocinadores 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 navegació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 Specifications (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 direcciones, calendarios, o aplicaciones que utilicen informació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-Federation

WS-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 organización para estándares. Recientemente, IBM y RSA se han inclinado por Liberty Alliance. En el 2005, Liberty Alliance 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 estándar a nivel mundial, pero esto no se ve viable en el futuro próximo. Afortunadamente, se espera que la interoperabilidad entre los productos que manejan estos estándares tenga fuertes mejoras en el corto plazo.

Conclusión

La identidad federada ha dejado de ser una tendencia interesante y se convierte en realidad. Los estándares disponibles e infraestructura tecnológica que los soporta ya tienen un grado de madurez suficiente 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 Project www.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 MAR-ABR 2006

29


EN PORTADA

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.

TRANSFERENCIAS DE ARCHIVOS ELEMENTOS A CONSIDERAR Por Rafael Manjarrez

En la automatización de procesos B2B (business 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 camino, y que al recibirlos pueden procesarlos automáticamente sin riesgo. Existen muchas formas de transportar archivos de manera segura. Una de ellas es utilizar 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 información se rompe en pedazos o paquetes que son a su vez enviados y reensamblados del lado receptor, 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 transferencias de archivos se logran a través de una arquitectura de transferencia de datos avanzada (AFTS), la cual debe poder proveer lo siguiente: a) Autenticación.– Asegurarnos que la persona que envía es quien dice ser. El uso de contraseñas es un mecanismo simple de autenticación. b) Privacidad de los datos.– Asegurarnos de que si los datos llegan a una persona no autorizada, ésta no pueda descifrarla. Esto normalmente se realiza cifrando la información. c) Integridad de los Datos.- Asegurarnos de que el mensaje está íntegro y no ha sido

Este modelo se extiende cuando las variables de seguridad se aplican. Existen muchos lugares 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 guardado 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 relacionados con firmas digitales. • Interacción con el Firewall.- Algunos firewalls pueden tener problemas con archivos cifrados si esto se hace a nivel de paquetes. También influye mucho si éstos pueden permitir 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 especí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 Iberoamericana. Actualmente es Chief Information Officer en Computer-Tel, Inc.

30

MAR-ABR 2006

www.softwareguru.com.mx


debe iniciar la transmisión y entonces uno se convierte 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 enviar 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 variables 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

Un ejemplo real En este artículo compartimos el caso de estudio acerca de la solución que la empresa PROSA recientemente implantó para resolver sus necesidades de transferencia segura de información digital hacia sus clientes.

Antecedentes

PROSA es el switch de transacciones electró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éxico 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 movimientos correspondientes.

Necesidad

Como parte de su operación, PROSA requiere transferir archivos con grandes cantidades 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 realizaron sus usuarios, y que deben ser procesadas. Por obvias razones, esta transferencia de información se debe realizar de manera segura y confiable. Anteriormente, PROSA resolvía este problema de diferentes maneras con distintos 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 corrupwww.softwareguru.com.mx

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.

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

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

En conclusión, garantizar la seguridad y confiabilidad en las transferencias de archivos 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 transferencia de información. Una vez que tengamos respuesta a estas preguntas, podemos definir una solución adecuada al proceso de negocio correspondiente.

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

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

Nueva Solución

Resultados

Una 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 entre las que destacan la conveniencia y rapidez para contar con la solución. Entre las opciones comerciales, se evaluaron productos de diferentes proveedores, y finalmente se decidió que el producto que mejor satisfacía sus necesidades era Connect Direct de Sterling Commerce. Actualmente, PROSA utiliza Connect Direct con sus clientes más grandes que requieren 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ón

La definición de la solución deseada llevó 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 automatizar 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.

Gracias a la nueva solución, se ha logrado una reducción de costos, tiempos de procesamiento, y tiempo necesario para agregar a nuevos clientes. Al automatizar y simplificar 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 nuevos procesos, o atender excepciones.

Aplicaciones de una Solución Similar

Una 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 continúen digitalizando, cada vez habrá una mayor necesidad de transferencia de información digital que sea segura, confiable y automatizada.

Perspectiva

Hacia 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 datos, y XML como formato para su representación e intercambio.

Retos

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

Agradecemos la colaboración de Jose Luis Andrade Vera, Director de Sistemas en PROSA, para la realización de este artículo. MAR-ABR 2006

31


EN PORTADA

BIOMETRÍA CON

HUELLA DIGITAL REGRESANDO A LOS ORÍGENES DE LA IDENTIFICACIÓN Por Humberto López Gallegos

Cuando interactuamos con otras personas, estamos acostumbrados a identificarlos por su apariencia física, su voz, o alguna otra información sensorial. Cuando necesitamos 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 computadora, 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 credenciales que pueden extraviarse, duplicarse o transferirse a terceros para tener acceso a beneficios, 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 autentificarnos con seguridad en medios electrónicos ante otras personas o aplicaciones. De todos los biométricos disponibles, incluyendo 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 seguros. 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 siglos para la identificación, y tenemos una cantidad 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 digitales es única, diferente una de otra y a su vez distinta de las huellas de cualquier otra persona. Aún los gemelos cuentan con huellas digitales únicas. • A diferencia de otros mecanismos para identificación, como contraseñas y smart cards, nuestras huellas digitales no se pueden perder u olvidar y nunca pueden ser robadas.

sino por grupos definidos de personas o a nivel de toda la organización. • Ahorros en disminución de fraudes (falsificación, venta de turnos, préstamo de tarjetas, posiciones de poder) y malos manejos de informació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 expidiendo y administrando sistemas de tarjetas. • Información en línea y con oportunidad, sin tener que esperar a transferencias de dispositivos cada quincena o semana, para tomar acciones necesarias.

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 podemos 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.

Programas de Lealtad o Cliente Frecuente

Entre muchas otras aplicaciones, podemos destacar las siguientes:

Registro de Personal

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

• Asegurarnos de que el bien, beneficio o derecho, se otorga a la persona que queremos. • El cliente no tiene que estar cargando tarjetas 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 asignación de equipo, libros, información, etc. • Autorización de transacciones con la huella 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 recientemente 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.

32

MAR-ABR 2006

www.softwareguru.com.mx


• La infraestructura con la que cuenta la organización (aplicaciones, equipos y comunicaciones) y los planes existentes a mediano y largo plazo. • Estrategia y políticas de seguridad. • Procesos de negocio estratégicos (internos o que involucran a clientes o proveedores) 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 (positivas y negativas) en lo que se refiere a la operación, sino también las oportunidades que podamos detectar si empleamos esta tecnología. Diagrama 1. Ejemplo de Arquitectura y Servicios utilizando huella digital.

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 recuento de:

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 oportunidad de tomar la iniciativa y empezar a obtener beneficios importantes en su organización.


EN PORTADA

EL

ABC

Por Ignacio Mendivil

Dos problemas aquejan a los documentos electrónicos: la Confidencialidad y la Autenticidad. La Confidencialidad se refiere a la capacidad de mantener un documento 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 determinadas han establecido su reconocimiento y/o compromiso sobre el contenido del documento electrónico. Al problema de la Confidencialidad se le relaciona comúnmente con técnicas denominadas 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 funcionamiento de dichos procedimientos.

Algoritmos Simétricos

La 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 encriptado al sujeto B, sucede lo siguiente:

DE LOS DOCUMENTOS SEGUROS individuos tengan que acordar claves secretas con quienes desean intercambiar información confidencial resulta poco práctico. Una mejor solución la ofrece la criptografía de llave pública.

Algoritmos Asimétricos o de Llave Pública

La criptografía de llave pública ofrece algoritmos de encripción y desencripción. Si un documento se encripta con una llave pública, entonces sólo se puede desencriptar 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 documento, sólo el sujeto B puede desencriptarlo. 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.

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

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 asimétricos son cerca de 100 veces más lentos que los simétricos. Además, algunos algoritmos de clave pública pueden ser sujetos de ataques matemáticos cuando son utilizados de esta forma.

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 acordar otra clave secreta. El hecho de que los

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

simétrico. Posteriormente encripta la palabra clave utilizando un algoritmo asimétrico, 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, obteniendo así la palabra clave original con la cual puede entonces desencriptar el documento. Esta solución, además de brindar un mejor desempeño en la velocidad de encripción/desencripció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 Digital

El 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 firma, constituyen el documento firmado. El proceso de autenticación consiste en alimentar a un programa de cómputo un documento firmado, junto con la llave pública del supuesto firmante. Si una llave pública autentifica un documento firmado, entonces quiere decir que el documento fue firmado con la correspondiente llave privada. Es conveniente señalar que si el documento o la firma son modificados después de haberse generado la firma, el procedimiento de autenticación arrojará 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

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

34

MAR-ABR 2006

www.softwareguru.com.mx



PRÁCTICAS PROCESOS

Proceso Incremental de Mejora DISCIPLINAS Y SU APLICACIÓN

E

n 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 algunos de los errores comunes que se cometen en la administració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 administradores, pero difícil para el equipo de mejora. En cambio, la mejora incremental permite al equipo de mejora y a la gerencia identificar resultados a corto plazo, con el inconveniente de que genera mayor complejidad en la administración. Sin embargo, los beneficios bien valen la pena.

El proceso incremental El proceso incremental de mejora tiene como objetivo asegurar la implantación de la capacidad de los modelos de

Por Angélica Su y Heidi González

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 arquitectura del proceso, el cuál provee un acercamiento disciplinado para la asignació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 aplicá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 estático de la descripción del proceso en términos de componentes, disciplinas, actividades, flujos de trabajo, artefactos y roles. (Ver Figura 1)

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

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.

36

MAR-ABR 2006

www.softwareguru.com.mx


Disciplinas A continuación describo las diferentes disciplinas, y las principales actividades asociadas a cada una. Iniciativas. La gerencia debe entender el estado actual del proceso de desarrollo organizacional en términos de documentació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 parte 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 organizacional para facilitar la identificación del estado actual con respecto a los estándares, 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 administració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 plantillas para el proceso de desarrollo organizacional utilizado por el grupo de procesos. La intención es evolucionar la arquitectura del www.softwareguru.com.mx

proceso de forma sistemática, tomando en cuenta el ambiente organizacional. • Desarrollar la plantilla para documentar el proceso • Planear y establecer el ambiente organizacional 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 directa e indirectamente Instrumentación. Identificar el tipo de entrenamiento 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 confianza, motivación, realización y alineación en el proceso y herramientas. • Estudiar los niveles de competencia a travé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 proceso. Estas serán utilizadas para implementar 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 ambiente piloto los procesos mejorados y validar las mejoras en el desempeño. • Probar la solución establecida para determinar qué funciona y qué no funciona. • Revisar y modificar la solución para incorporar nuevos conocimientos y entendimientos. • Determinar que se ha logrado hasta el momento. • Iterar en caso de ser necesario.


PRÁCTICAS PROCESOS

A través de un ciclo de vida incremental, es posible mostrar resultados rápidos a aquellas partes afectadas.

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

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 estrategias: a) Equipo, b) Liderazgo, c) Alineación, d) Comunicación, e) Incentivos, f ) Entrenamiento, g) Valoración y h) Recursos Cambios y Configuración. Es esencial para controlar los artefactos que se han generado por el proceso de mejora. Controla los cambios a los requisitos así como las versiones del proceso por lo que ayuda a evitar costosas confusiones con los artefactos y asegura la integridad de los artefactos resultantes, 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 administració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

38

MAR-ABR 2006

Gestión de Procesos. Establece un proceso organizacional acorde a la estrategia del negocio, definiendo, planeando e implementando 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 viabilidad para el negocio y el retorno de inversión (ROI) en la organización y/o áreas afectadas.

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

Implicaciones de la mejora incremental A través de la aplicación de un ciclo de vida incremental para mejorar los procesos, es posible mostrar resultados rápidos a aquellas partes “afectadas”, y así obtener un mayor apoyo con convencimiento a través de resultados medibles. Una estrategia de mejora alineada a objetivos 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 encontrar bajo el desarrollo de los requisitos, diseño e instrumentación son detectas previo 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 estatus d) Grupos de interés que requieren observar evidencia concreta del estatus cuantitativo del proyecto e) Comunicación a través de resultados dirigidos a los diferentes partícipes e involucrados.

Conclusión Aunque el modelo de mejora iterativo e incremental genera mayor complejidad en su ejecución que la forma tradicional, la inversión fuerte se realiza 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 mejora 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.

www.softwareguru.com.mx


TENDENCIAS EN SOFTWARE

COLUMNA

F# El lenguaje script/funcional/imperativo/orientado a objetos

F

# (f sharp) se define como un lenguaje de programació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 ancestral 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.

Capacidades No 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 “arreglos” pero no cuentan con el soporte de tuplas (secuencias de objetos de diversos tipos) en F#, donde hay validación de cada tipo incluido de forma independiente: www.softwareguru.com.mx

La Tupla (1, "2", 3, "cuatro") contiene (int*string*int*string)

Las capacidades de recurrencia, iteración, desdoblamiento y mapeo, por nombrar algunas, son mucho más poderosas 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 directa 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ón Considere 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 nuevo o es una simple implementación OCaml/ML pero sin duda es un meta-lenguaje específico que provee resultados reales. En el futuro comentaremos sobre lenguajes de programació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 plataformas y lenguajes de programación!

Luis Daniel Soto Maldonado es Director de Evangelización en Nuevas Tecnologías en Microsoft México. Entre sus funciones actuales están la administración de la relación con el Gobierno Mexicano para el desarrollo de la industria de software (ProSoft). Luis Daniel es jurado del “Gran Orden de Honor al Mérito Autoral” en software del INDAUTOR/SEP y fundador de diversas asociaciones de Tecnologías de Información (TI) relacionadas a inteligencia competitiva, administración del conocimiento y construcción de software. Luis Daniel Soto es Ingeniero en Sistemas de la Fundación Arturo Rosenblueth y ganó el primer lugar en el concurso nacional para software de exportación en 1989. blogs.msdn.com/ luisdans

- 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 MAR-ABR 2006

39


PRÁCTICAS ARQUITECTURA

Framework Aplicativo y MDA DETONADORES DE CALIDAD Y PRODUCTIVIDAD

E

l ambiente de negocio de empresas exitosas es por definición dinámico y cambiante. Para mantener su ventaja competitiva, una compañía tiene que responder al cambio rápida y adecuadamente. Así, la capacidad de desarrollar sistemas de información cumpliendo los requerimientos del negocio, con la calidad requerida, en el tiempo que permita al negocio lograr sus objetivos, y a un costo competitivo, está directamente ligado con el éxito de la compañía.

En este artículo vamos a presentar el esquema de “Industrializació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).

Por Eduardo Macías y Ernst Ellmer

clase debe estar cerrada para su modificación de código fuente) utilizando patrones 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 comunes 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 diferencia primordial es que un framework controla el ciclo de vida de los componentes montados sobre éste y contiene lógica de orquestación de ciertos flujos.

¿Qué es un Framework Aplicativo? Un framework aplicativo es una “aplicación semi-terminada” que está montada sobre una tecnología base como .NET o J2EE. Contiene una capa general que provee servicios 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 dominio 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 estructura base en la cual se montan varias aplicaciones de negocio, 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 complejo, por lo que al momento de diseñar, se debe estar consciente 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 “openclose” de la programación orientada a objetos (una clase debe soportar extensibilidad o modificación de su comportamiento sin la necesidad de modificar su código, la

Figura 1. Librerías vs Framework

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

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 posteriormente se dedicó a definir arquitecturas de software empresarial para diferentes empresas en USA y México.

40

MAR-ABR 2006

www.softwareguru.com.mx


Figura 2. Disección en capas

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

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

MDA MDA son las siglas de “Model Driven Architecture”, un concepto promovido por la OMG, www.softwareguru.com.mx

que propone basar el desarrollo de software en modelos de análisis y/o diseño especificados en UML, y que a partir de estos se realicen transformaciones que generen código fuente u otro modelo con características específicas para una tecnología. Este concepto permite dos tipos de modelos 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 negocio 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 restricciones tecnológicas—, y los aspectos tecnoló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 generarán modelos para plataformas tecnológicas especificas (PSM ) como .NET o J2EE.


PRÁCTICAS ARQUITECTURA

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 definida 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 mapeo 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 diferencial 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 manera 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 modelo 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 necesariamente tiene que ser un modelo UML ). Es fácil darse cuenta que el modelo PIM que sirve como entrada al proceso es el artefacto más preciado ya que detalla de manera precisa la

Figura 3. Flujo para aplicar MDA

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 transformar el actual proceso de desarrollo de software artesanal a un proceso de software que sea una disciplina de ingeniería”.

Logrando los Objetivos de una Fábrica de Software La 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 software 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 aplicaciones están montadas sobre el framework que promueve la divisió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 reutilizació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 “Software 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, telecomunicaciones 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.

42

MAR-ABR 2006

www.softwareguru.com.mx


tuvo el cuidado de tener en cuenta aspectos arquitectónicos fundamentales de una aplicación y lo cual se está reutilizando en cada aplicación que lo esté usando. En segundo término la reutilización de funcionalidad común que se encuentra encapsulada en componentes del framework. Estandarización. El framework aplicativo forza 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 debido a que éste debe ser flexible para poder cubrir las diferentes variaciones de funcionalidad que existirán en las aplicaciones que serán montadas sobre este y por ende las aplicaciones de negocio montadas sobre éste también heredará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 framework por lo que la productividad del programador se ve incrementada. Facilidad de Mantenimiento. Esta característica se refiere a la habilidad de realizar un cambio de una funcionalidad existente en una aplicación de manera rápida y eficiente sin afectar otra funcionalidad existente. Esta característica es uno de los criterios de servicio más complejos 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 componentes 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 mantenimiento de las aplicaciones. www.softwareguru.com.mx

Como siguiente paso natural de maduración en el proceso de “industrialización” está la herramienta de MDA que genera automáticamente un porcentaje de código fuente de una aplicación por lo que impacta drásticamente la productividad del desarrollo de software.

Caso Real En la fábrica de software de IIDEA Solutions empezamos a trabajar en la visión de la “industrialización” del desarrollo 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 plataformas estratégicas .NET y J2EE desarrollando varios proyectos para un cliente principal. Sobre todo para la parte de .NET estuvimos en una fase exploratoria durante estos años. Al principio de 2005 estuvimos en la posición de poder integrar el conocimiento tecnoló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 optimizarlo y madurarlo lo suficiente para usarlo como base para la generación de código bajo el esquema MDA. Todas las aplicaciones que actualmente 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 empezamos a finales del 2005 a desarrollar un generador de código basado en el kernel de AndroMDA que está disponible sin costo bajo licenciamiento 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

Modelando con Clase

EL REY DE LA ORIENTACIÓN A OBJETOS Por Sergio Orozco y Carlos Macías

S

i 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 orientació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 valor 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 mejor 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, todos estos elementos aportan para llegar al punto que trataremos en esta ocasión: el diseño de las clases que constituirán nuestro sistema.

Efectos del Diagrama de Interacción en las Clases Vamos a ver cómo es que las decisiones que tomamos en los diagramas de interacción se pueden ver reflejadas en el diagrama de clases. Estas decisiones pueden afectar tanto la funcionalidad de las clases, como las relaciones que debe haber entre éstas. De acuerdo con lo trabajado previamente, hasta el momento nuestro diagrama de clases 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).

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

Figura 1. Modelo conceptual del punto de venta.

El diagrama de clases de diseño al que llegaremos, por lo menos en la capa de negocio, probablemente tenga un gran parecido al modelo conceptual que mostramos. Entre los cambios más importantes está la aparició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 mecanismo de comunicación entre ellas, respectivamente.

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 relaciones entre dos clases basta con observar 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

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

Las relaciones mostradas en el diagrama de clases de diseño pudieron o no haber existido durante el modelo conceptual, pero es en este momento (en el diseño) donde se toma la decisión final con respecto a las relaciones a incluir en la construcción (implementació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 relación se define de una manera más elaborada, tema que será tratado en ediciones

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 objetos. info@milestone.com.mx www.milestone.com.mx

44

NOV-DIC 2005

www.softwareguru.com.mx


Si volvemos al ejemplo ilustrado en la figura 2, podemos observar cómo los cuatro mensajes corresponden a llamadas a operaciones de las clases. Dos de estas operaciones corresponden a constructores 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 agregarRenglonVenta( ) y registrarPago( ), lo cual se traduce en el diagrama de clases como dos operaciones en dicha clase, como podemos observar en el siguiente diagrama:

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 relaciones aquí mostradas corresponden a una dependencia y composición, respectivamente.

Los Mensajes y las Operaciones Las operaciones son uno de los elementos de UML más relevantes para la implementación del sistema, pues proveen el elemento fundamental para ubicar la funcionalidad de nuestro sistema. Una identificació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 ayudar a identificar y a ubicar de una mejor manera estas operaciones en sus correspondientes clases. Cuando existe un mensaje 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.

www.softwareguru.com.mx

Figura 4. Operaciones obtenidas del diagrama de secuencia.

Conclusión Diseñar un sistema orientado a objetos no es cosa fácil, pues requiere tomar diferentes decisiones que sólo el conocimiento de las técnicas y una apropiada experiencia nos permiten lograr. Naturalmente resulta 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 facilitarles el uso de UML como una buena herramienta de desarrollo.


COLUMNA

PRUEBA DE SOFTWARE

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

E

Luis Vinicio León Carrillo es profesorinvestigador del Departamento de Electrónica, Sistemas e Informática del ITESO, y director general de e-Quallity S.A. de C.V., empresa especializada en prueba de software. Luis Vinicio es doctorando por la Universidad Técnica de Clausthal, Alemania; su trabajo predoctoral giró alrededor a la aplicación de los lenguajes formales en la Ingeniería de Software. 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-fundador del Capítulo Guadalajara de la AMCIS y su Secretario actual.

n 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 disciplina en sí misma, con sus propias técnicas, procesos, métricas y herramientas, que requiere de perfiles 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 software, que puede usarse para tomar a tiempo decisiones 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 futuros posibles.

La Industria Mexicana de Prueba de Software Actual Existen 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, coautor del modelo de calidad Test Process Improvement), resumí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 perder credibilidad, pues se colocan como juez y parte. Ciertamente, hemos tenido ciertos avances como industria: hoy en día existen varias empresas que ofrecen algunos servicios con valor agregado en prueba de software, y la oferta de servicios se ha incrementado.

46

MAR-ABR 2006

También es cierto que —en buena medida por las demandas 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 Futuro Para 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 especificación formal de software y en model checking para probar aplicaciones críticas, que puedan modelar requerimientos utilizando métodos formales, que sepan utilizar métodos estadísticos durante la prueba, que puedan diagnosticar arquitecturas usando Architecture Languages, 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 vinculació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 podría enfocarse a especialidades, maestrías y doctorados.

Algunas Conclusiones Uno de mis maestros en Alemania decía “hoy no es suficiente con saber mucho. Es necesario además, que muchos 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 engranes. Es necesario intensificar la interacción y cooperació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 www.softwareguru.com.mx



FUNDAMENTOS

Administración de la Configuración Organización y Control para Lograr el Éxito Por Brenda Bastida Martínez

Tal vez para algunos, el término "administración de la configuración" se refiere a la configuración de una máquina, el cómo hacer funcionar cierto software en alguna computadora, o modificar ciertos parámetros del sistema operativo. Esto podría ser correcto, siempre y cuando no estemos hablando del concepto dentro de la cultura de procesos. Dentro de este contexto, 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; entendiendo por productos de trabajo: planes, código 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 Configuració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 resultados conforme a aquellos requerimientos” [ICM 1998]. Como podemos apreciar, esta definición también incluye al proceso en sí, y sus procedimientos referentes.

Mejor Organización de los Productos La Administración de la Configuración nos ayuda a localizar más fácilmente nuestros productos, ya sean para uso propio o de algún otro involucrado en el proyecto. Adicionalmente, nos ayuda a tener un control sobre las versiones de lo que vamos desarrollando. De hecho, nació con la idea de poder establecer mecanismos para tener el control sobre lo que se estaba creando en el ciclo de desarrollo de software. Esto fue porque se tenían sistemas 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 administración de la configuración suelen tener 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 administració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 organizamos los archivos, dónde guardamos cada cosa, cómo la nombramos para identificarla 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 mejor aseguramiento de la calidad, reducción de defectos y errores, mejora la productividad del desarrollo, desarrollo que no depende de la persona o personas que lo están desarrollando sino del proceso y de la documentación que se está generando.

Control de Versiones En los proyectos o desarrollos pequeños, es común pensar que se puede tener el control sobre todos los productos, sin necesidad 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 versiones adecuado, no podemos saber cuales son los productos modificados en cierto punto y cuales son las últimas versiones. Esto puede provocar que trabajemos utilizando versiones inadecuadas, generando así un doble trabajo.

Figura 1. Ramificación de versiones.

La administración de la configuración nos provee de un nivel de servicio, control y soporte 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 desarrollo 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: informació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 relacionadas con el ciclo de desarrollo de software en la administración de sus productos de trabajo.

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 Información en el UNITEC.

48

MAR-ABR 2006

www.softwareguru.com.mx


El Rol del Administrador de Configuración Este 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 desarrollando 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ón Al 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 deshacer cambios. • La manera en que se controlará y autorizará la realización de los cambios o las eliminaciones de ciertas versiones. Cuando ya se tomaron y documentaron esas decisiones es necesario comunicarlas a la organización para que las personas puedan entender la nomenclatura y sepan cómo se está trabajando con la administración de la configuración.

Herramientas Existen diversas herramientas de software que facilitan y automatizan la administración de la configuración, donde se pueden ver: el estado de los productos, ya sea check-in (proceso de revisión, aprobación www.softwareguru.com.mx

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

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

SCM y CMMI En el modelo de CMMI, podemos encontrar a la administración de la configuració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, reporte 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.

Conclusión Es importante tener una administració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 retrabajo, administrar y controlar los cambios que se tienen dentro del proyecto y sus productos.


INFRAESTRUCTURA

SIP: Session Initiation Protocol El Futuro de las Telecomunicaciones Por Ariel García

Con base en nuestra serie de artículos pasados dedicados a tecnología de VoIP y redes convergentes, podemos 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. La era de las redes de voz y datos independientes 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 comunicación, y además de los beneficios en reducció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.

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.

Nunca antes había sido tan sencillo el desarrollo de aplicaciones para una red de comunicaciones. 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 combinamos este estándar junto con el poder y simplicidad de la tecnología de Java, obtenemos 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.

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.

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 Partnership 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 tenemos que esperar grandes cosas por parte de la gente dedicada al desarrollo de aplicaciones en las telecomunicaciones. Durante las entregas de este artículo, estaremos revisando los conceptos alrededor del protocolo SIP. Revisaremos el rol que juegan

50

MAR-ABR 2006

¿Que es SIP?

Un punto importante a resaltar es que al protocolo SIP no le concierne la naturaleza o el contenido de la llamada que inicia y coordina. Como consecuencia les permite a los usuarios decidir el tipo de uso que hará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 contenido.

Conceptos de SIP El 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 permite a los usuarios crear y administrar la comunicació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 (llamante) invita a otro UA (llamado) a integrarse 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 respuestas. 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íticas del ruteo de llamadas y se encarga de las autenticaciones y autorizaciones. Su tarea primaria se asegurar que cualquier petición sea enviada a la identidad más cercana al usuario destino. El proxy interpreta y, en caso de ser necesario, reescribe partes específicas de un mensaje antes de reenviarlo. Un mensaje SIP puede pasar a través de varios 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 conocería como Outbound Proxy.

Cualquier tipo de multimedia puede ser intercambiado durante una sesión y puede utilizarse cualquier protocolo. SIP usualmente trabaja con Session Description Protocol (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.

www.softwareguru.com.mx


• 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 comunicaciones. 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:user@194.195.100.20 Típicamente se configuran las direcciones SIP con el dominio de la compañía en cuestión, por ejemplo: sip:ariel@softwareguru. com.mx. 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 tipos 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 notifican 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 muestras de código de ambos.

Una Llamada representa todos los mensajes que son intercambiados entre un UA llamante y un UA, o varios, llamado(s). Un Diálogo es la relación SIP que persiste durante un periodo de tiempo entre dos UAs. Este consiste en todos los mensajes 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 desde la primera petición enviada del cliente al servidor, hasta la respuesta final enviada del servidor al cliente.


TECNOLOGÍA

Apple - Intel

iMac y MacBook Pro

Sony

Photo Vault Mini CD-R Station Este nuevo dispositivo de Sony es el compañero perfecto para los fotógrafos aficionados que prefieren no cargar con una computadora. El Photo Vault permite quemar en un Mini CD las imágenes contenidas en cualquier cámara digital, conectándola directamente 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 normal, y un filtro hace que las imágenes se ajusten perfectamente en cuanto a resolución y profundidad de color para su visualización en pantalla.

Después de un relativamente corto periodo de tiempo desde el anuncio de la llegada de Intel como proveedor de procesadores 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 tecnologí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 traduce 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 propia 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. Lamentablemente, 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.

ViewSonic

VP Series Lo 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 monitores VP720 y VP920b, de ViewSonic ofrecen estas características, además de un alto rango de procesamiento de imagen y un amplio ángulo de visualización. Su diseño delgado es ideal para maximizar el espacio, y sus múltiples entradas analógicas y digitales lo hacen ideal incluso para los fanáticos de los videojuegos.

52

MAR-ABR 2006

Creative

Wireless Headphones La 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 constante 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.

www.softwareguru.com.mx



COLUMNA

CÁTEDRA Y MÁS

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

H

El Dr. Raúl A. Trejo es Profesor Investigador del Departamento de Sistemas de Información en el Tecnológico de Monterrey, Campus Estado de México. Sus áreas de especialidad incluyen Ingeniería de Software, Representación del Conocimiento y Algoritmos Computacionales. El Dr. Trejo gusta de participar en proyectos que involucren el trabajo cercano con estudiantes, como el concurso Imagine Cup de creatividad. El Dr. Trejo ha presentado ponencias en conferencias tales como Americas Conference on Information Systems, Internacional Joint Conference on Artificial Intelligence y el Internacional Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics y publicado artículos en la revista Artificial Intelligence. Es miembro fundador de la Asociación de Sistemas de Información de América Latina y el Caribe.

54

MAR-ABR 2006

ace unos meses, me tocó renovar el equipo de cómputo portátil que mi institución me proporciona para cumplir con mi trabajo diario. De acuerdo con las políticas de seguridad establecidas, mi computadora portátil requeriría de una cuenta personalizada para mi uso. En un esfuerzo por incrementar el nivel de seguridad, 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 recordar. 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 encargado 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 intrusos. 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 organización. Existen muchos factores para esto, pero podemos 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 contraseña debe ser de un número específico de caracteres y con una combinación de letras, signos, números, mayúsculas 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 acceso 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, confidencial o meramente privada que pueda contener su computadora personal. Y que ahora piense en las medidas de seguridad que tiene para prevenir el acceso no autorizado a dicha información, como candados, firewalls, 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 admitiremos que hemos dejado nuestras contraseñas pegadas junto al monitor, o en un inocente archivo llamado “passwords.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 instantá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 discos 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 comparadas 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íticas de seguridad informática de una empresa, y que el administrador 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

www.softwareguru.com.mx


INDEX

DIRECTORIO

TENEMOS UN ESPACIO RESERVADO PARA TI

Anunciante

Pรกginas

Sitio

AMCIS Avantare Edutecsa Gartner IDC Imexsoft Ingressio Itera Marx Milestone Hauri Microsoft Milestone Roca Sistemas SafeNet Sterling Commerce Vision Consulting

55 41 45 F3 13 33 49 17 43 35 53 F2-1 45 F3 47 21 51

www.amcis.org.mx www.avantare.com www.edutecsa.com www.gartner.com/mx/appint www.idc-eventos.com www.imexsoft.com.mx www.ingressio.com www.itera.com.mx www.marx.com www.milestone.com.mx www.haurimexico.com www.microsoft.com/mexico www.milestone.com.mx www.rocasistemas.com.mx www.safenet-inc.com www.sterlingcommerce.com.mx www.visionconsulting.com.mx

Si deseas anunciarte contรกctanos en el (55) 5239 5502 o en ventas@softwareguru.com.mx

www.softwareguru.com.mx

MAR-ABR 2006

55


REFLEXIONES

Despreocupados

Atendiendo Nuestro Entorno Por Ernesto Corona

Uno de los signos de estos tiempos es la alta preocupación (ocuparnos antes de que ocurran las cosas) por temas triviales, de escaso trasfondo o contenido. Inclusive, hay una tendencia clara a preocuparnos por aquello que ocupa mucho espacio o hace mucho ruido, pero desocuparnos del entorno, del contexto cercano, de lo que afectamos directamente. 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 idealiza, 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 humano e intelectual es más tangible que en otro tipo de industrias, es fácil detectar cuándo estamos despreocupándonos de lo cercano. Por ejemplo, no poniendo atenció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 ganamos. 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 procesos de inicio y fin de proyecto son pobres. No hay compromisos aceptados, ni lecciones aprendidas. Monitoreamos los proyectos de manera reactiva. Funciona la

máxima: “si algo malo pasa, nos enteraremos”. O la clásica metodología YDV: “Y, Después Vemos”. No leemos comprensivamente la informació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 sobredimensionamos 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 cobranza, 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 afectan al servicio que nuestros clientes reciben es esencial. Capacitación, logística, gestión, conocimiento técnico, conocimiento del negocio, ciclo de producto, calidad de servicio interno 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 tecnológica, estudiar un modelo de organización y aplicarlo, adquirir conocimiento y desarrollar el capital intelectual, son puntos de partida para que los clientes comiencen a sentirse satisfechos, y sentirnos enfocados en ellos. Ser oportuno y eficiente de manera 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 adopció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 Software es sólo la mitad de lo que hay que hacer. La otra mitad es salir a buscar 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 generar 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.

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. ecorona@innevo.com

56

MAR-ABR 2006

www.softwareguru.com.mx



Aテアo 02 No. 02

www.softwareguru.com.mx

SOFTWARE GURU CONOCIMIENTO EN PRテ,TICA

Marzo-Abril 2006


Turn static files into dynamic content formats.

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