Você está na página 1de 46

EN PORTADA

En un mundo de cambios constantes y GUÍA DEL


competencia global, las organizaciones
de desarrollo de software son presio-
nadas a alcanzar mayor eficiencia con
VIAJERO
Por Mara Ruvalcaba
menores costos. Para poder lograr este
objetivo, es necesario adoptar una for-
ma de trabajo que permita entender,
controlar, comunicar, mejorar, predecir
y certificar el trabajo realizado.
Actualmente existe una gran diversidad de
opciones relacionadas con procesos de de-
sarrollo. Constantemente se escuchan di- ¿Por qué contar con un proceso de software?
ferentes acrónimos como CMM, CMMI, Hasta hace poco tiempo, la producción de software era realizada con un
RUP, ISO, PSP, TSP, etc., que causan con- enfoque artístico, a diferencia de un enfoque industrial. Ante la constante presencia de
fusión, principalmente debido a la mala proyectos fallidos, y con el objetivo de mejorar la calidad de los productos, en los últi-
interpretación de los mismos. mos años las organizaciones introdujeron los métodos de ingeniería de software. (Ver
Fundamentos – Desarrollar software es mucho más que programar, pág. 42)
Revisemos entonces los principales pro-
cesos de desarrollo y modelos más utiliza- A partir de estos, se formalizó el enfoque de ingeniería de producto para desarrollar software.
dos al momento, así como los estándares Factores como la globalización han obligado a las organizaciones a contar con marcos de tra-
relacionados. bajo que las ayuden hacer las cosas de la manera más eficiente. Fue entonces que se incorporó
la ingeniería de procesos al desarrollo de software.

20 ENE-FEB 2005 www.softwareguru.com.mx


Proceso
Antes de definir lo que es un proceso de desarrollo de software, entendamos lo que Elementos Típicos del Proceso de Software
es un proceso. Una definición sencilla de proceso es “serie de acciones que condu- Actividad Definen las acciones que se llevan
cen a un final”. Esta definición parece coincidir con las ideas generales de la gente a cabo en un momento dado del
sobre procesos, pero deja muchas preguntas abiertas. ¿El proceso es la forma en desarrollo de software.
que la organización opera —desde mercadotecnia hasta recursos humanos— o es Flujo de Colección estructurada de
la forma en que un desarrollador diseña, produce código, o prueba el software? ¿El Trabajo actividades y elementos asociados
(artefactos y roles), que producen
proceso se refiere a administración, ingeniería, o ambas? ¿El proceso implica dema- un resultado de valor.
siada documentación y nos abstiene de desarrollar el producto objetivo?
Rol Son responsables por llevar a cabo
las actividades del proceso, pueden
La respuesta a éstas puede variar dependiendo de la perspectiva. Sin embargo, siem- ser personas o herramientas.
pre que para alcanzar algún fin deseado necesitemos ejecutar una serie de acciones,
y estas acciones tengan cierto orden, dependencias, roles responsables, resultados, Producto o Son las entradas y salidas de las
Artefacto actividades, pueden ser de diferen-
tiempos de ejecución y herramientas de apoyo, estaremos hablando de procesos, tes tipos, como documentos,
que pueden ser predefinidos y personalizados. modelos, componentes, planes,
reportes, etc.

Disciplina Conjunto integrado por actividades


Proceso de software relativas a una rama particular de
conocimiento. Ej. Análisis y diseño.
La meta de la ingeniería de software es construir productos de software, o mejorar los
existentes; en ingeniería de procesos, la meta es desarrollar o mejorar procesos.

Un proceso de desarrollo de software es un conjunto de personas, estructuras de or- Diversidad en Modelos


ganización, reglas, políticas, actividades y sus procedimientos, componentes de soft- Actualmente existe una gran variedad de modelos para pro-
ware, metodologías, y herramientas utilizadas o creadas específicamente para definir, cesos de software. Podemos entenderlos más fácilmente si los
desarrollar, ofrecer un servicio, innovar y extender un producto de software. clasificamos en dos tipos: genéricos y específicos.

Un proceso de software efectivo habilita a la organización a incrementar su pro-


ductividad al desarrollar software: Modelos Genéricos Modelos Específicos
• Permite estandarizar esfuerzos, promover reuso, repetición y consistencia Abarcan todos los Enfocados a la ingeniería de
entre proyectos. procesos relacionados con productos de software
el desarrollo de software
• Provee la oportunidad de introducir mejores prácticas de la industria.
• Permite entender que las herramientas deben ser utilizadas para soportar CMM – modelo de madurez UP – proceso de desarrollo
un proceso. de capacidades – estándar
de facto RUP – proceso de desarrollo
• Establece la base para una mayor consistencia y mejoras futuras.
CMMI – modelo integrado PSP – enfocado en indivi-
Un proceso de software mejora los esfuerzos de mantenimiento y soporte: duos
ISO 9001-2000 – sistema
• Define cómo manejar los cambios y liberaciones a sistemas de software existentes. para administración de la TSP – enfocado en equipos
• Define cómo lograr la transición del software a la operación, y cómo ejecutar calidad - estándar (incluye PSP)
los esfuerzos de operación y soporte. ISO/IEC 15504 – marco
para evaluación de proce-
Necesitamos un proceso de software cuya funcionalidad esté probada en la prácti- sos de software – en vías
de ser estándar, por ahora
ca, y personalizado para que cumpla con nuestras necesidades específicas. reporte técnico

MoProSoft – modelo de
procesos para la industria
de software en México – en
vías de ser norma mexicana

• Nos dicen qué • Nos dicen el cómo debe-


debemos hacer mos hacer las cosas
• Se deben usar como refe- • Se usan como guía para
rencia para definir procesos ejecutar proyectos
en una organización y para
autoevaluación.
• Medio para evaluar
que tan bien o mal esta
la organización.

Proceso de Software
Revisemos estos modelos para entender mejor su objetivo
y estructura.

¿Y las Metodologías Ágiles?


Las metodologías ágiles son otro ejemplo de prácticas específicas para desarrollar software. Uno de los métodos ágiles más conocidos es Extreme
Programming (XP), que se describe como una disciplina de desarrollo de software basada en valores de simplicidad, comunicación, retroalimentación, y
coraje. XP funciona al poner a todo el equipo en presencia de prácticas sencillas, con suficiente retroalimentación para habilitar al equipo para ver donde
están y afinar las prácticas para una situación única. No hemos listado XP como un modelo específico, ya que no se considera un proceso formal y
completo, sino que más bien es un conjunto de prácticas que se pueden aplicar dentro de los modelos mencionados.

ENE-FEB 2005 21
Modelos Genéricos En el año 2000, el SW-CMM fue reemplazado por CMMI. El SEI ya no mantiene
el modelo SW-CMM, sus métodos de evaluación asociados, ni el material
de entrenamiento.
CMM (Capability Maturity Model) -
Modelo de Madurez de Capacidades

Marco que describe elementos clave de procesos efectivos de software. Creado por
el Software Engineering Institute (SEI) en conjunto con Carnegie Mellon Univer- CMMI (Capability Maturity Model
sity. La primera versión se publicó en 1994. Integration) - Modelo de Madurez de
Capacidades Integrado
CMM describe un camino evolutivo en 5 niveles de mejora de procesos para lograr
su madurez. Cubre prácticas de planeación, ingeniería y administración del desarro- El proyecto de CMMI fue concebido como una iniciativa
llo y mantenimiento de software. para reunir los diferentes CMMs en un conjunto de mo-
delos integrados, más consistentes entre ellos. Los modelos
fuente que sirvieron como bases incluyen: CMM Software,
Niveles de Madurez CMM Ingeniería de Sistemas, y CMM Desarrollo Integra-
Nivel Áreas clave del proceso do de Producto .
1 – Inicial Ninguna
Proceso caótico, impredecible. CMMI proporciona una guía para desarrollar procesos,
El éxito depende del esfuerzo heroico que además ayuda a evaluar la madurez de la organización
de individuos.
o capacidad de un área de procesos. CMMI incluye los
2 – Repetible • Administración de Requerimientos. procesos de ingeniería de software e ingeniería de sistemas.
Institucionalizar procesos efectivos • Planeación de Proyecto de Software.
de administración de proyectos de • Seguimiento y Control del Proyecto
software, que permiten a las organi- de Software. El modelo está representado de forma continua y es-
zaciones repetir prácticas exitosas • Administración de Subcontratos
desarrolladas en proyectos previos. de Software. calonada. Contiene 22 áreas de procesos. Cada área de
• Aseguramiento de Calidad de Software. proceso está formada por: Objetivos específicos, Prácticas
• Administración de Configuración.
de Software. específicas, Objetivos genéricos, y Prácticas genéricas.
3 – Definido • Enfoque en Procesos de
El proceso estándar para desarrollar y la Organización. CMMI Modelo Continuo
mantener software en la organización • Definición de Procesos de Esta formado por 5 niveles de capacidad del proceso:
esta documentado, incluyendo pro- la Organización.
cesos de administración e ingeniería • Programa de Capacitación. 0. Incompleto
de software, y estos procesos están • Administración Integral de Software. 1. Desempeñado
integrados. • Ingeniería de Productos de Software. 2. Administrado
• Coordinación Intergrupal.
• Revisiones entre Colegas. 3. Definido
4 – Administrado • Administración cuantitativa
4. Administrado cuantitativamente
Se establece un conjunto de metas de procesos. 5. Optimizado
cuantitativas para medir el nivel de • Administración de la calidad del Y por cuatro categorías de áreas de procesos: Administra-
calidad y desempeño de los proyec- producto de software.
tos y del proceso organizacional. ción de Procesos, Administración de Proyectos, Ingeniería,
Soporte. Estas categorías agrupan a las diferentes áreas de
5 - Optimizado • Prevención de defectos.
No es simplemente detectar y resolver • Administración de cambio proceso, dividiéndolos en procesos básicos y avanzados.
defectos, sino prevenirlos y evitarlos de tecnología.
al implementar actividades proactivas. • Administración de cambio
Mejora continua de procesos. de procesos. CMMI Modelo Escalonado
El modelo escalonado, al igual que CMM, describe un ca-
mino evolutivo en 5 niveles de madurez de procesos, ade-
ISO 9001-2000 más integra nuevas áreas de proceso.
ISO (International Standards Organization) en 1987 crea la norma ISO 9000, con-
junto de estándares que establecen los requerimientos para la gestión de los sistemas La selección entre el modelo escalonado y el continuo
de calidad. ISO 9000:2000 está formado por: depende del objetivo de la organización, además de tener
• ISO 9000 Fundamentos y Vocabulario. que considerar la situación (si ya se tiene CMM, cultura
• ISO 9001 Requisitos. en procesos, etc.). Por ejemplo, si el objetivo es llevar a la
• ISO 9004 Recomendaciones. organización a cierto nivel de capacidad, deberá seleccio-
narse la forma escalonada; en cambio si el objetivo es me-
La parte de Requisitos - ISO 9001:2000, está estructurado en 8 secciones: jorar cierto proceso, será mejor seguir la forma continua.
1. Alcance.
2. Normas para la Consulta. Algunos Beneficios de CMMI vs. CMM
3. Términos y Definiciones. Algunos de los beneficios que han experimentado las organi-
4. Sistema de Gestión de la Calidad. zaciones que pasan de CMM a CMMI son los siguientes:
5. Responsabilidad de la Dirección. • Mejor alineación a objetivos de negocio.
6. Gestión de los Recursos. • Mejor visibilidad hacia las actividades de ingeniería, con
7. Realización del Producto. el objetivo de asegurar que el producto o servicio cumple
8. Medida, Análisis y Mejora. las expectativas del cliente.
• Aprovechamiento de mejores prácticas adicionales (e.j., me-
Aunque ISO 9001:2000 no otorga un estándar específico para sistemas de desarrollo de dición, riesgo, administración, y manejo de proveedores).
software, es decir, no abarca todos los procesos relacionados con el desarrollo de software, • Acoplamiento más estrecho con estándares de ISO.
muchas organizaciones de software han optado por gestionar su sistema de calidad en base a
este estándar, y obtener una certificación reconocida de manera internacional.

22 ENE-FEB 2005 www.softwareguru.com.mx


ISO/IEC 15504
Estándar internacional que ofrece un marco para la evaluación de procesos. Fue inicia-
do en 1991 como el proyecto SPICE (Software Process Improvement and Capability
dEtermination). La versión de Reporte Técnico fue aceptada y publicada en 1998, en-
focada únicamente en procesos de software.

En el transcurso de su desarrollo ha evolucionado, de ser un modelo de referencia de buenas


prácticas de software, para convertirse en un marco de trabajo para evaluación de múltiples mo-
delos (de software o no). Su dirección actual es poder aplicarse a múltiples disciplinas y permitir
a las diferentes comunidades definir sus propios procesos específicos, modelos de referencia o * Partes publicadas
buenas prácticas. ISO 15504 está en vías de convertirse en estándar internacional, y se espera
que esté completo para 2006. Esta versión esta compuesta de cinco documentos, a diferencia Gráfica 1 - Estructura de Documentos 15504
del reporte técnico que consta de nueve partes (Ver gráfica 1 - Estructura de documentos).
Niveles de Capacidad (Ver gráfica 2):
La parte 2 de este estándar es de especial interés, ya que es la que define como se realiza 0. Incompleto.- Falta de cumplimiento del proceso.
una evaluación. Establece requisitos tanto para modelos de procesos de referencia como 1. Realizado.- Genera los productos de trabajo esperados.
para los métodos de evaluación sin establecer alguno en particular. 2. Administrado.- Proceso y productos administrados
y controlados.
3. Establecido.- Proceso definido para la organización
y utilizado adecuadamente.
4. Predecible.- El proceso opera dentro de los límites
estadísticos establecidos.
5. Optimizado.- El proceso mejora continuamente.

Las organizaciones de software no tienen que seleccionar


entre 15504 y su modelo actual. El rol de 15504 es pro-
veer un marco de trabajo en el que los modelos y métodos
de evaluación puedan existir de una manera armónica. No
esta diseñado para ser utilizado solo. La selección radica
en decidir si el ajustarse a 15504 es importante para el ne-
gocio (¿El negocio compite en el mercado global?, ¿Pro-
vee software a algún cliente que requiera 15504?, ¿Existen
Gráfica 2 - Modelo de Capacidades 15504-2 varios modelos de evaluación en la organización?). De ser
así, deberán elegir modelos que se ajusten a 15504.

Compatibilidad entre Modelos


CMMI Modelo Escalonado
ISO/IEC 15504
Nivel de Madurez Áreas de proceso • Evaluación de procesos de software.
• En vías de ser estándar.
1 – Inicial Ninguna • Dirección amplia.
Madurez de un proceso caracterizada
por resultados impredecibles. • Niveles de capacidad.
• Evaluación de capacidades por proceso individual.
2 – Administrado • Administración de Requerimientos. • Guía para realizar la evaluación.
Madurez del proceso caracterizada • Planeación de Proyectos. • Toma como referencia ISO 9001 y CMMI.
por el desempeño repetible del • Monitoreo y Control de Proyectos.
proyecto. El foco clave del proceso • Administración del Acuerdo con el Proveedor.
esta en actividades y prácticas a • Administración de Configuración.
nivel proyecto. • Aseguramiento de Calidad de Proceso y Prod.
• Mediciones y Análisis. CMMI
• Modelo de madurez de procesos de software.
3 – Definido • Desarrollo de Requerimientos. • Modelo – estándar de facto.
Madurez del proceso caracterizada • Solución Técnica.
por mejorar el desempeño del pro- • Integración de Producto. • Dirección detallada.
ceso dentro de una organización. • Verificación, Validación. • Pasos progresivos (niveles) - Escalonada.
• Enfoque Organizacional en Proceso. • Categorías de procesos - Continua.
• Definición de Procesos de la Organización.
• Capacitación Organizacional. • Guía para institucionalización e implementación.
• Administración Integral de Proyectos. • Modelo de evaluación será conforme al modelo de
• Administración del Riesgo.
• Análisis de Decisión y Resolución. evaluación de 15504.

4 – Administrado Cuantitativamente • Desempeño de Procesos Organizacionales.


Caracterizada por mejorar el • Administración Cuantitativa de Proyectos.
desempeño organizacional. ISO 9001-2000
• Sistema de Gestión de la Calidad.
5 - Optimizado • Innovación y Despliegue Organizacional. • Estándar internacional.
Madurez del proceso caracterizada • Análisis Causal y Resolución.
por un desempeño organizacional • Dirección amplia.
rápido y configurable, Mejora conti- • Un conjunto de requerimientos a ser cubierto.
nua y cuantitativa de procesos.
• No hay lineamientos para su implementación.
• Usado como referencia en actividades de gestión de
calidad por CMMI y 15504.

www.softwareguru.com.mx ENE-FEB 2005 23


Modelos Específicos RUP
El Rational Unified Process (RUP) es un proceso de software de-
PSP – Personal Software ProcessSM sarrollado y comercializado por Rational Software (ahora parte de
Personal Software Process (PSP) es un proceso diseñado para ayudar a los IBM). RUP está diseñado alrededor de seis mejores prácticas para el
ingenieros de software a controlar, manejar y mejorar su trabajo. PSP está desarrollo de software:
basado en una motivación: La calidad de software depende del trabajo de • Desarrollar de manera iterativa.
cada uno de los ingenieros de software. Debido a que los costos de perso- • Administrar los requerimientos.
nal constituyen 70% del costo del desarrollo de software, las capacidades y • Utilizar arquitecturas basadas en componentes.
hábitos de trabajo de los ingenieros determinan en gran manera los resul- • Modelar el software visualmente.
tados del desarrollo de software. • Verificar la calidad de manera continua.
• Controlar los cambios.
Basado en prácticas encontradas en CMM, el PSP puede ser usado por
ingenieros para estructurar y disciplinar el desarrollo de software. El inge- En sí, RUP es una guía que define roles, actividades, flujos de trabajo
niero de software podrá planear mejor el trabajo, conocer con precisión y lineamientos para ejecutar proyectos de software de acuerdo a estas
el desempeño, medir la calidad de productos, y mejorar las técnicas. mejores prácticas.

PSP puede ser aplicado en: RUP organiza los proyectos de software en dos dimensiones: la del
• Desarrollo de programas. tiempo y la de las actividades. En base al tiempo, los proyectos se
• Definición de requerimientos. dividen en cuatro fases secuenciales:
• Documentación. • Concepción – Definición de alcance, identificación de riesgos.
• Pruebas de sistemas. • Elaboración – Resolución de riesgos, establecimiento de arquitectura.
• Mantenimiento de sistemas. • Construcción – Generación del producto.
• Transición – Disponibilidad a la comunidad de usuarios finales.
Las actividades se organizan en nueve diferentes disciplinas que son eje-
cutadas durante las diferentes fases.

Evolución de PSP

TSP - Team Software ProcessSM


Team Software Process (TSP) es un marco para el desarrollo de software
que pone igual énfasis en el proceso, producto y trabajo en equipo. Al
igual que PSP, TSP fue propuesto por Watts Humphrey.

TSP se basa en PSP, y se fundamenta en que el software, en su mayoría,


es desarrollado por equipos, por lo que los ingenieros de software deben
primero saber controlar su trabajo, y después saber trabajar en equipo.
TSP le enseña a los ingenieros a construir equipos autodirigidos y des-
empeñarse como un miembro efectivo del equipo. También muestra a
los administradores como guiar y soportar estos equipos.
En realidad RUP es un framework (marco de trabajo) que preten-
Estrategia de TSP de ser personalizado o configurado para organizaciones y proyectos
• Proveer un proceso sencillo basado en PSP específicos. RUP no se puede aplicar de la misma forma en todos
• Desarrollar productos en varios ciclos. Ciclo de TSP: Lanzamiento, los proyectos de una organización. Es por esto que pretender seguir
Estrategia, Plan, Requerimientos, Diseño, Implementación, Pruebas, RUP a través de ir cumpliendo con la lista de artefactos que defi-
Postmortem ne, es una estrategia poco efectiva. Lo que las organizaciones deben
• Establecer medidas estándares para calidad y desempeño hacer es entender la razón de ser de RUP – las prácticas citadas an-
• Proveer definiciones de roles, y evaluaciones de rol y de equipo teriormente – y en base a esto aplicar lo que decidan que es conve-
• Requiere disciplina de proceso niente para cada área o proyecto específico.
• Provee guía para manejo de problemas de trabajo en equipo
RUP es una instancia particular del Proceso Unificado, definido por
Ivar Jacobson, Grady Booch y James Rumbaugh en el libro “The
Unified Software Development Process” de 1998. Adicionalmente
existen otras instancias de este proceso, tales como el Proceso Unifi-
cado Mejorado (Enhanced Unified Process), el cual agrega soporte
multiproyectos y fases y disciplinas para el mantenimiento y retiro
de sistemas de software.

Compatibilidad de PSP y TSP con CMMI


CMM y CMMI se enfocan en la mejora organizacional basada en modelos.
TSP contiene prácticas operativas para el desarrollo de equipos. PSP se
enfoca en la mejora a nivel individual.

24 ENE-FEB 2005 www.softwareguru.com.mx


¿Qué hay para la Industria Mexicana? REFLEXIONES
México quiere y puede darse a conocer con una Características principales
fuerte industria de software. Las condiciones 1. Estructura adaptable - Los procesos están
básicas están dadas: se generan recursos huma- organizados en 3 categorías, que corresponden El Desarrollo
nos capacitados, se tiene acceso a los equipos a la estructura de cualquier organización. de Software
y herramientas de desarrollo, el mercado local 2. Número reducido de procesos - Sólo 6 ¿ARTE O INGENIERÍA?
tiene necesidades lejos de estar satisfechas, el procesos principales y 3 subprocesos. Por Francisco López Lira
mercado externo de habla hispana no está sa- 3. Procesos integrados a través de roles y
“La virtud está en el medio.”
turado y la cercanía con los E.U. trae oportuni- productos. —Horacio
dades de exportación potenciales. 4. Gestión de Negocio como proceso explícito.
5. Integración de la gestión de recursos huma- Existen en la industria dos visiones aparente-
mente encontradas sobre lo que debería ser el
MoProSoft, modelo de procesos para la in- nos, de infraestructura y conocimiento. desarrollo de software, aquella que lo conside-
dustria de software mexicana, fue desarrolla- 6. Verificaciones y validaciones explícitas. ra una arte y la que plantea que es ingeniería.
do pensando en facilitar a las organizaciones 7. Manejo de situaciones excepcionales. La primera considera al desarrollador como
dedicadas al desarrollo y mantenimiento de 8. Productos de trabajo con características un artista, no sujeto a reglas ni métodos, en-
software la adopción de las mejores prácticas mínimas explícitas. fatizando la creatividad como la principal vir-
tud. Rechaza los procesos considerando que
reconocidas internacionalmente a través de 9. Indicadores y propuestas de mediciones estos restringen la creatividad.
modelos como SW-CMM, CMMI, TSP, PSP, para evaluar el cumplimiento de los procesos.
ISO/IEC 15504, PMBOK y SWEBOK. 10. Guías de ajuste para adecuar los procesos. La segunda visualiza al desarrollador como
un ingeniero, que debe utilizar procesos,
métodos y técnicas probadas en un ambiente
disciplinado y hace énfasis en establecer pro-
cesos definidos y controlados.

Aunque ambos enfoques tienen algo de


verdad, debemos tener en cuenta algunas
consideraciones:

• Arte no equivale a Caos. La idea de Arte está


estrechamente relacionada con un sistema de
trabajo. Etimológicamente Arte deriva del latín
Arquitectura de Ars que, a su vez, deriva del griego Tecné y que
MoProSoft para Aristóteles era “el uso sistemático del cono-
cimiento para la acción humana inteligente”.

• El arte requiere disciplina. Por ejemplo, a


Miguel Angel le tomo cuatro años terminar la
Conclusión Capilla Sixtina. Se dice también que Leonardo
Da Vinci podía trabajar las 24 horas del día.
Las organizaciones de desarrollo de software, además de entender los principales modelos y pro-
cesos existentes, deben considerar varios factores para poder decidir que camino seguir, como: • Producción artística no es producción comer-
cial. Los grandes artistas del renacimiento tenían
tamaño de la organización, recursos, enfoque en mercado global o local, habilidades, etc. mecenas que les permitían vivir cómodamente
hasta que creaban su obra maestra. Por otro
Las empresas grandes con miras a la exportación, pueden considerar una certificación en CMMI, lado, el desarrollo de software en el entorno ac-
tual implica cumplir con tiempos establecidos, lo
principalmente niveles 2 y 3, con el objetivo de evaluarse y ganar ventaja competitiva. Las em- cual a su vez requiere de procesos predecibles.
presas pequeñas y medianas con miras a mejorar los procesos y ser competitivos, pueden adoptar
• La creatividad es muy importante, pero no es
ISO 9001, ya que es un modelo más barato y sencillo. Las PyMEs mexicanas tienen la opción de lo único. Un proyecto de desarrollo de software
seguir MoProsoft como camino inicial. Las áreas internas de sistemas pueden adoptar algún pro- requiere además: planear, controlar, organizar
ceso específico, además pueden requerir a sus proveedores algún nivel de madurez comparable personas, dirigir, comunicar, coordinar, nego-
ciar, interactuar, verificar y validar, por ejemplo.
con CMMI o ISO 15504, o bien, que adopten el mismo proceso específico. Todo esto requiere de un entorno organizado.

Es recomendable considerar otros modelos que apoyen y complementen la correcta implantación • Lo importante es la gente, lo secundario los
procesos. Sin embargo, hay que considerar
del proceso de software. Como ISO/IEC 9126:2001 enfocado en modelar la calidad de productos que la gente no puede funcionar adecuada-
de software, o bien, modelos para implementar procesos de mejora como IDEAL. Otros mode- mente en un sistema caótico. “El sistema
siempre ganará” dice Rummler . Por ello, es
los especializados, que pueden ser de gran utilidad son PMBOK (Project Management Body of necesario contar con los procesos adecuados
Knowledge) y SWEBOK (SW Engineering Body of Knowledge). que posibiliten un sistema estable.

• Un mal proceso es peor que ninguno. Los


Para muchas de las organizaciones a nivel mundial, los 90s fueron la década de mejora de pro- procesos que se utilicen deben ser diseñados a
cesos. Aunque muchas aprendieron cómo implementar exitosos programas de mejora, otras partir del conocimiento de los desarrolladores y
lucharon sin lograr mejoras duraderas. Estas últimas organizaciones pasarán la siguiente década de las condiciones de cada organización.
tratando de ponerse al día, mientras que los líderes emprenden nuevos retos. Las metas relacio- Quizá la virtud yazca en el medio. Podemos uti-
nadas con procesos en esta década incluyen integración de procesos, armonización, y aceleración. lizar procesos y modelos de procesos procuran-
do crear un entorno organizado para potenciar
Las organizaciones deben luchar por alcanzar un nivel de calidad que les permita ser competitivas el valor de las personas y de creatividad.
en el mercado global. El punto de inicio es definir la meta, entendiendo la situación actual y las
diferentes opciones, para poder así emprender el viaje por el camino correcto. 1 Geary A. Rummler, “Serious performance con-

sulting”, International Society for Performance Im-


Referencias: provement, 2004
• Proceso de Desarrollo de Software, Hanna Oktaba, Facultad de Ciencias – UNAM
• ¿Porqué usar MoProSoft como modelo de procesos de referencia?, Hanna Oktaba, www.amcis.org.mx El autor es fundador y actual presidente de la Aso-
• Software Engineering Institute – Carnegie Mellon University, www.sei.cmu.edu ciación Mexicana para la Calidad en Ingeniería de
• Diplomado en Calidad de Software, AMCIS 2002 – www.amcis.org.mx Software (AMCIS).
• Process Diversity in Software Development – IEEE Software, julio-agosto 2000 flopezlira@amcis.org.mx

www.softwareguru.com.mx ENE-FEB 2005 25


CASO DE ESTUDIO

MoProSoft
MoProSoft® es un
posible medio para
en la Práctica
las organizaciones Recomendaciones para su Implantación
Por Ma. Julia Orozco y Claudia Alquicira
que deseen lograr
una evaluación Este artículo presenta la experiencia de la implantación de MoPro-
exitosa en un modelo Soft® en una empresa de desarrollo de software y resume un ciclo
internacional como de mejora considerando desde la planeación estratégica hasta su
SW-CMM® valoración. Se explica cómo se usó el modelo como marco de refe-
rencia para las partes de gestión y operación y cómo se utilizó el qué
y el cómo para la parte de Gestión de Negocio.

MoProSoft® es un modelo de procesos de En la planeación estratégica del 2003, la neación, mientras que el Grupo de Procesos se
reciente creación, para la industria de Organización decidió buscar una evaluación preocupaba por mejorar los procesos con base
software en México que fomenta la estan- en algún modelo reconocido en la industria. en los resultados de la evaluación anterior
darización de su operación a través de la Entre los modelos candidatos se encontraban (defectos fugados, defectos por caso de uso,
incorporación de las mejores prácticas en ISO 9000:2000, MoProSoft y SW-CMM®. En plataforma de trabajo, retrabajo, entre otros)
gestión e ingeniería de software. El objetivo ese momento MoProSoft® tenía la caracte- pero no se consideraban las expectativas de
de este modelo es mejorar la capacidad de rística de ser el documento base de la norma la alta dirección (utilidad esperada, retorno de
los procesos de las empresas. mexicana para la industria de software, pero inversión, valor presente neto, tasa interna de
por ser de reciente creación, no contaba con retorno, entre otros).
La estructura de MoProSoft® considera tres su método de evaluación, ni con un organis-
categorías: Alta Dirección, Gestión y Opera- mo que respaldara la aplicación del mismo. Experiencia en la Implantación
ción. Establece un mecanismo para alinear La decisión que se tomó para adoptar el mo- MoProSoft® se utilizó para alinear las estra-
las estrategias de las tres categorías. La delo orientado en la industria mexicana y lo- tegias de la parte operativa con las expec-
categoría de Alta Dirección contiene el pro- grar una evaluación reconocida, fue obtener tativas de la alta dirección. El proceso de
ceso de Gestión de Negocio. La categoría al menos un nivel 3 de SW-CMM® a través Gestión de Negocio se estableció formal-
de Gestión está integrada por los procesos de MoProSoft®. mente en la Organización. Una vez revisada
de Gestión de Procesos, Gestión de Proyec- la misión, visión y valores de la Organiza-
tos y Gestión de Recursos. Éste último está Problemática ción, se revisaron los objetivos estratégicos
constituido por los subprocesos de Recursos La Organización contaba con una serie de pro- y se definieron indicadores que permitieran
Humanos y Ambiente de Trabajo, Bienes, cesos para el desarrollo y mantenimiento de evaluar el cumplimiento.
Servicios e Infraestructura y Conocimiento software, administración de proyectos y para
de la Organización. La categoría de Opera- establecer la mejora continua de los mismos. <Categoría>
ción está integrada por los procesos de Ad- El desempeño de los procesos de desarrollo y Alta Dirección
ministración de Proyectos Específicos y de mantenimiento se medía a través de indicado-
Desarrollo y Mantenimiento de Software. res, lo que permitió robustecer estos procesos <<Dir>>
pero no proporcionaban el tipo de información + Gestión de Negocio
MoProSoft® está disponible en la página que necesitaba saber la alta dirección para
www.software.net.mx medir el cumplimiento de los objetivos estra-
tégicos. Durante varios años la Organización
Aborda las prácticas de Alta Dirección relacio-
Antecedentes establecía un Plan Estratégico para definir las nadas con la gestión del negocio. Proporciona
Desde hace varios años, ULTRASIST ha rea- metas, pero no con base en un proceso docu- los lineamientos a los procesos de la Categoría
de Gestión y se retroalimenta con la información
lizado un esfuerzo de mejora incremental al mentado. Existía una brecha entre las metas generada por ellos.
adoptar las mejores prácticas de diferentes de negocio y las de los procesos de desarrollo
modelos internacionales. Como resultado, de software por no contar con una retroalimen-
la Organización alcanzó el nivel de madurez tación bidireccional. Es decir, la dirección con- Los objetivos estratégicos se agruparon en
4 de SW-CMM®, utilizando a MoProSoft® sideraba los resultados de la valoración de los cuatro perspectivas como sugiere el Cuadro
como marco de referencia. procesos para realizar esta actividad de pla- de Mando Integral (Balanced ScoreCard).

Claudia Alquicira trabaja en Avantare Consutores como consultor en programas de mejora en organizaciones de desarrollo de software. Sus áreas de interés son la ingeniería
de software, calidad y tecnología orientada a objetos. Claudia cuenta con una Maestría en Ciencias de la Computación y participó como ponente en el SEPG LA 2004

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


En la Perspectiva Financiera se agruparon <<Categoría>> Proyectos, tomando como base las prácticas
aquellos objetivos que tienen que ver con el Gestión ya establecidas en la Organización.
cumplimiento de las expectativas de los accio-
nistas. En la Perspectiva del Cliente los objeti- Para los procesos de Gestión de Recursos y
<<Ges>>
vos que nos llevan a satisfacer las necesidades sus subprocesos asociados, se estableció
Gestión de Procesos
de nuestros clientes. En la Perspectiva Interna una arquitectura diferente a la definida por
los relacionados con la mejora de aquellos <<Ges>> MoProSoft®. La Organización contaba con
procesos en los cuales debemos ser excelen- Gestión de Proyectos un proceso que considera un Plan de Capaci-
tes, y finalmente, la Perspectiva de Aprendiza- tación para cumplir con las metas planteadas
je y Crecimiento que considera los aspectos <<Ges>> en los objetivos estratégicos de aprendizaje y
críticos para mantener la excelencia. Gestión de Recursos crecimiento; considera los requerimientos de
los proyectos, las sugerencias del personal
Se definieron los procesos de negocio e incluye el desarrollar las habilidades que
requeridos en la Organización para dar se desea que adquieran los miembros de la
Establecer los procesos de la organización, en
cumplimiento a los elementos del Plan función de los procesos requeridos identificados Organización, como es el trabajo en equipo,
Estratégico, la estructura organizacional se en el Plan Estratégico. Así como definir, planear, e habilidades gerenciales, y manejo de con-
implantar las actividades de mejora en los mismos.
revisó y actualizó principalmente en lo que flictos. La capacitación que plantea se ofrece
respecta al Grupo de Procesos definiendo en diferentes modalidades: interna, externa,
responsables de procesos y especialistas. El Categoría de Gestión seminarios sobre nuevas tendencias tecnoló-
Plan de Comunicación se instituyó como un gicas y capacitación en la práctica.
mecanismo de difusión de los Planes a los tablecieron fueron aquellas que permitieran
miembros de la Organización. Se consideró retroalimentar a la Organización en cuanto El proceso de Recursos Humanos establecido
un Proyecto de Inversión y se identificaron al cumplimiento de los objetivos estratégi- por MoProSoft® se maneja dentro del Proce-
los proyectos internos y externos para dar cos. El aspecto más importante que se tomó so de Gestión de Proyectos por la Oficina de
cumplimiento a los objetivos. Como pro- en cuenta para definir una métrica fue que Proyectos. En él se establecen los elemen-
yectos internos se establecieron el Proyecto el costo de producirla estuviera balanceado tos a considerar en la selección, asignación,
de Mejora y el de Infraestructura y Fortale- con el beneficio potencial que será ganado aceptación, evaluación y desempeño de los
cimiento. Se establecieron las estrategias en la organización. El registrar, recolectar y recursos humanos. Para la evaluación de
para dar cumplimiento a los objetivos estra- evaluar métricas lleva implícito un costo, que los miembros de la Organización se provee
tégicos y se definieron metas e indicadores para la mayoría de las empresas mexicanas un mecanismo que permite valorar su cre-
para poder valorar el avance. de desarrollo de software puede resultar pro- cimiento en dos direcciones: la horizontal
hibitivo si no se garantiza un retorno de inver- con respecto al desarrollo de habilidades y
La alta dirección dio la responsabilidad al sión a corto plazo. Si bien es sabido que no la vertical con respecto a los conocimientos
Grupo de Procesos para detallar los Pro- se puede mejorar lo que no se puede medir, y responsabilidades. El objetivo de esta eva-
cesos de Negocio y definir los procesos de también es cierto que hay que empezar por luación es permitir un crecimiento gradual de
apoyo para cumplir con los objetivos estra- mejorar aquellos procesos que impacten a los miembros de la Organización para cumplir
tégicos planteados. las metas prioritarias de la Organización. con los objetivos estratégicos planteados en
la perspectiva de aprendizaje y crecimiento.
La implantación del proceso de Gestión de La estrategia que estableció el Grupo de Proce-
Negocio dio orden y disciplina a las activi- sos para implementar los cambios en la Orga- En cuanto al Plan de Infraestructura y Am-
dades de la alta dirección, lo que permitió nización, consistió en realizar las actividades biente de Trabajo, se considera dentro del
establecer la alineación de las metas de ne- en forma iterativa e incremental de acuerdo a Proyecto de Infraestructura derivado del
gocio con las de Gestión y Operación. las prioridades establecidas. Plan Estratégico.

El aspecto más importante para definir una Si bien la Organización contaba con una Base
métrica fue que el costo de producirla estuviera de Conocimiento con la información referente
a las Categorías de Gestión y de Operación,
balanceado con el beneficio potencial que será no consideraba la generada por la Alta Direc-
ganado en la organización ción. Hoy en día el repositorio considera toda
la información de la Empresa.
Categoría de Gestión y Operación Al finalizar cada incremento se evalúo el cum-
El Grupo de Procesos realizó un análisis de plimiento de los objetivos establecidos en el SW-CMM® a Través
brecha de las prácticas establecidas en la Plan Estratégico. Estas evaluaciones fueron de MoProSoft®
Organización con respecto a las estableci- más frecuentes que las establecidas en los Como resultado de este esfuerzo, la empresa
das en las otras categorías de MoProSoft®. años anteriores por ser un modelo de procesos pudo comprobar que es factible implantar Mo-
Como resultado se obtuvo que la Organiza- nuevo, que impactaba a toda la Organización. ProSoft® y que es un posible medio para las
ción contaba con procesos que cubrían gran Para este proyecto, se acordó contar con el organizaciones que deseen lograr una evalua-
parte de la categoría de Gestión y toda la apoyo de consultores internos y externos con ción exitosa en un modelo internacional como
categoría de Operación. conocimientos en CMM® y MoProSoft® para SW-CMM®. Para lograrlo es necesario cuidar
asegurar el apego a los modelos. Durante la las prácticas establecidas en CMM® y no con-
Con base en el análisis realizado, se prio- definición y el ajuste del proceso se estable- sideradas en MoProSoft®, por ejemplo:
rizaron los objetivos con la Dirección y se cieron las diferencias significativas entre los
elaboró el Plan de Procesos que contiene modelos MoProSoft® y SW-CMM®. Con res- • En el proceso de Gestión de Negocio, escri-
la estrategia para definir, implantar, medir y pecto al proceso de Gestión de Proyectos, se bir una política que contenga los lineamientos
evaluar los procesos. Las métricas que se es- dividió en dos procesos, Ventas y Oficina de que rijan los procesos definidos consideran-

www.softwareguru.com.mx MAR-ABR 2005 33


CASO DE ESTUDIO
<Categoría>
Alta Dirección

<<Dir>>
+ Gestión de Negocio

<<Categoría>>
Gestión

<<Ges>>
Gestión de Procesos

<<Ges>>
Gestión de Proyectos

Categorías
<<Ges>>
Gestión de Recursos
Optimizado

Administrado <<Categoría>>
Operación

Definido
<<Oper>>
Administración de
Repetible Proyectos Específicos
Diagrama 1:
<<Oper>>
MoProSoft® como Inicial
Desarrollo y
marco de referencia. CMM Mantenimiento
de Software

do los compromisos establecidos en el nivel como un medio que facilite la transición a un objetivos, la descripción del proceso esta-
que se desea alcanzar de SW-CMM®. modelo internacional. blecidos por el modelo MoProSoft®. Como
• En el subproceso Recursos Humanos y Am- ejemplo, definir un proceso de Gestión de
biente de Trabajo del proceso de Gestión de Los modelos internacionales por lo general Recursos que incorpore los elementos de
Recursos, definir un mecanismo de renuncia consideraran una gran variedad de roles que los subprocesos de Recursos Humanos e
a la capacitación asignada. una micro y pequeña empresa mexicana no Infraestructura, Bienes, Servicios y hacer
• En el subproceso de Conocimiento de la Or- puede implantar. MoProSoft® no restringe a un proceso en Gestión de Conocimiento de
ganización del proceso de Gestión de Recur- ningún rol para que pueda ser realizado por la Organización.
sos, incluir las prácticas de administración una misma persona, o por diferentes personas
de configuración establecidas en CMM®. dentro del mismo proyecto y en la medida que La participación de consultores con expe-
• MoProSoft® no considera el Grupo de SQA la empresa crece, éstos pueden paulatinamen- riencia en el modelo que se desea implantar
que maneja CMM®, pero sí establece verifi- te ser asignados a personas diferentes. Se siempre es recomendable. En MoProSoft®
caciones y validaciones a productos y a pro- recomienda cuidar en la medida de lo posible por ser un modelo de reciente creación que
cesos, sin embargo, para cumplir con CMM® que una persona no sea juez y parte. Esto per- no cuenta con experiencia documentada, se
hay que conformar un Grupo de SQA que sea mite a la micro y pequeña empresa crear la cul- considera indispensable.
independiente al proyecto. tura de procesos y fomentar la disciplina.
• En cada uno de los procesos de MoProSoft in- Para las organizaciones que inician un pro-
cluir las verificaciones de las actividades por el Aunque MoProSoft® fue pensado principal- grama de mejora, el proceso de Gestión de
SQA de acuerdo a cada área clave de CMM®. mente para la pequeña y mediana empresa, Procesos podría ser el primero a definir e im-
• En las evaluaciones externas (proceso de ges- puede ser usado como marco de referencia para plantar puesto que con este proceso se ge-
tión de procesos) considerar un SQA externo. toda empresa que se inicia en un programa de nera el resto de los procesos. Se recomienda
mejora, para asegurar que las estrategias a lo una estrategia incremental de acuerdo a las
Ambos modelos llevan al mismo fin, pero largo de la organización están alineadas y para prioridades de la organización que permite
cada uno sigue un camino diferente. asegurar que los procesos ya establecidos, con- reducir los riesgos que conlleva la introduc-
templan las mejores prácticas. ción de muchos cambios y permita a la Direc-
Fortalezas de MoProSoft® ción observar resultados a corto plazo.
Gestión de Negocio, sirve como vínculo entre Recomendaciones Generales
la parte de operación, gestión y dirección para para Implantar MoProSoft® La responsabilidad de asignación de recur-
que los esfuerzos de la organización estén ali- Es importante conservar las mejores prác- sos humanos a los proyectos se puede atri-
neados para alcanzar la misión y visión. Para ticas con las que cuenta una organización buir al responsable de Gestión de Proyectos
empresas de reciente creación pueden utili- y, en caso de ser requerido, ajustarlas y la parte de registro de recursos humanos a
zar el qué y el cómo que define MoProSoft® para el cumplimiento con el propósito, los un área administrativa.

Ma. Julia Orozco ocupa la Dirección Técnica en la empresa Ultrasist. Es Matemática con estudios de Maestría en Ciencias de la Computación. Ha impartido cursos en
universidades, gobierno e iniciativa privada y ha sido ponente en diversos foros internacionales.

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


PRÁCTICAS

REQUERIMIENTOS

Patrones de Casos de Uso


Por Saúl Cuesta Rodríguez

A
l desarrollar o construir algo, Captura y Organización Nombre: CRUD
como por ejemplo una casa o de Patrones Intento: este patrón se utiliza en los
una máquina, es muy útil apo- Para capturar y organizar los pa- casos donde se quiere realizar altas,
yarse en la experiencia anterior, ya trones de caso de uso, recomiendo bajas, cambios y consultas a alguna
sea de uno mismo o de otros. De esta ampliamente generar un reposi- entidad del sistema. Su nombre es un
manera sabremos que la solución va torio de patrones donde capturen acrónimo de las palabras en inglés
a funcionar, y tendremos identifica- al menos la siguiente información Create, Read, Update, Delete.
dos los problemas potenciales, así para cada patrón: Palabras clave: Creación, altas, bajas,
como soluciones para éstos. Estas cambios, catálogo
soluciones a problemas comunes se • Nombre: el nombre descriptivo
conocen como patrones, y se utilizan del patrón. Modelo 1: CRUD Completo
en diversos aspectos del desarrollo • Intento: captura cuál es el objeti-
de software. Ya en un artículo ante- vo de aplicar el patrón.
rior de SG se habló sobre patrones de • Características: estados de los
diseño, específicamente del patrón patrones, si son simples o comple-
Modelo-Vista-Controlador. En esta jos, comunes o infrecuentes.
ocasión, estudiaremos la aplicación • Palabras claves: palabras clave
de patrones al modelado de casos de que caractericen al patrón para fa-
uso, y en específico abordaremos el cilitar su búsqueda.
patrón CRUD. • Tipo: si el patrón afecta la estruc- Descripción: el patrón CRUD Comple-
tura del modelo o la descripción de to consiste en un caso de uso para
Contrario a lo que se pudiera pensar, un caso de uso. administrar la información (CRUD
un patrón de casos de uso no descri- • Modelo: un modelo de caso de Información), nos permite modelar
be un uso particular de un sistema. uso a aplicar. las diferentes operaciones para ad-
Más bien, captura técnicas para que • Descripción: la descripción del ministrar una entidad de información,
el modelo sea mantenible, reusable, modelo. tales como crear, leer, cambiar y dar
y entendible. Entonces, podemos de- • Aplicabilidad: cuándo y cómo de baja.
cir que los patrones de casos de uso aplicar el patrón. Aplicabilidad: este patrón deberá ser
capturan mejores prácticas para mo- • Discusión: completa discusión usado cuando todas las operaciones
delar casos de uso. sobre el patrón. contribuyen al mismo valor de nego-
• Ejemplo: un ejemplo donde uno cio y todas son cortas y simples.
La aplicación de patrones de casos de o más de los patrones se aplica.
uso nos trae los siguientes beneficios: • Modelo de análisis: diagrama con Modelo 2: CRUD parcial
• Aumentar la productividad. clases de análisis que proporciona
• Reutilizar elementos existentes (en una realización de los casos de uso.
este caso fragmentos de modelos).
• Evitar el retrabajo por errores. Una vez que hemos hablado sobre lo
• No invertir tiempo en resolver pro- que es un patrón de caso de uso, y
blemas ya resueltos. la forma de documentarlos, estudie-
• Aplicar la teoría al trabajo práctico. mos el patrón conocido como CRUD,
• Habilitar las herramientas de so- en sus variantes completa y parcial.
porte para modelar el desarrollo.

Saúl Cuesta Rodríguez es consultor de ITERA especializado en las prácticas de requerimientos y modelado de negocios. Es graduado de la Universidad Tecno-
lógica de Panamá como Ing. en Sistemas.

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


Descripción: alguna de las alternativas del asegura de que las cuatro operaciones esta-
caso de uso puede ser modelada como caso rán incluidas en el modelo, y lo hace claro
de uso independiente. para el lector del modelo. Tercero, el valor de
Aplicabilidad: este patrón es preferible cuan- cada uno de los flujos por separado es muy
do uno de los flujos alternativos del caso del pequeño, y podríamos estar cayendo en
uso es más significativo, muy largo, o mucho descomposición funcional; es la colección
más complejo que el patrón completo. entera de estas operaciones la que da valor
Discusión: muy a menudo los sistemas ma- a los interesados.
nejan información que, del punto de vista del
sistema, se crea muy fácilmente. Después de
un chequeo de sintaxis, o quizás un cierto che-
queo sin importancia de un cálculo o regla de
negocio, la información se almacena simple-
mente en el sistema. No es necesario realizar
cálculos, verificaciones complejas, o recupera-
ción avanzada de datos. La descripción del flu-
jo es pequeña, y probablemente sólo haya una
o dos trayectorias alternativas de menor im-
portancia en el flujo. Las consultas, cambios, o
bajas son operaciones igualmente simples. Las cuatros operaciones no deben ser modeladas
como caso de uso independientes.
¿Deben tales operaciones ser modeladas
como un caso de uso? ¿Y deben incluirse en La variación denominada CRUD: Parcial, in-
el modelo del sistema completo? La respues- dica que en caso de que solo algunas de las
ta a ambas preguntas es sí. Son casos de uso cuatro operaciones sean simples mientras
porque son funciones que debe ser capaz de que otras son complejas, se puede agrupar
realizar el sistema. Alguien utilizará el sis- las operaciones simples en un caso de uso y
tema para administrar esa información. Por dejar las otras modeladas como un caso de
otra parte, deben ser incluidos en el modelo, uso separado.
ya que de otra manera estará incompleto. Y
esto puede provocar que el proyecto no se Observar también que esto es una situación tí-
lleve a cabo adecuadamente. pica donde un caso de uso no tiene solamente
un flujo “básico”. Ninguno de los flujos se pue-
Afortunadamente, esto no significa que ne- de decir que es más “básico” o “normal” que
cesariamente cada operación se debe expre- los otros. Por lo tanto, un caso de uso CRUD
sar como casos de usos separados. Según tendrá típicamente cuatro flujos básicos, y po-
el patrón CRUD, los podemos agrupar. Este siblemente algunos flujos alternativos, como
procedimiento tiene algunas ventajas ob- se demuestra en el ejemplo 1.
vias. Primero, el tamaño del modelo será
reducido, hará más fácil de entender el mo- Una instancia de un caso de uso podrá reali-
delo porque tiene menos casos. En segundo zar una de las siguientes operaciones (crear,
lugar, nadie estará interesado en un sistema leer, cambiar y dar de baja), y después dejar
que contiene solamente un subconjunto de de existir. Esta misma instancia del caso de
estos casos de uso, ya que no generan el va- uso no continuará viviendo y esperando la
lor completo (por ejemplo, leer y dar de baja, operación siguiente que se realizará. Esta
pero no crear y cambiar). Agrupar estos flu- operación debe ser realizada por otra ins-
jos juntos en un caso como Administrar X se tancia del mismo caso de uso.

www.softwareguru.com.mx
PRÁCTICAS

REQUERIMIENTOS

Los patrones de casos de uso capturan mejores


prácticas para modelar casos de uso
Otros Patrones de Caso
de Uso
Como regla general, cuando no Modificar tarea Existen varios patrones adicionales
estamos seguros si combinar los El caso de uso comienza cuando el al CRUD que son utilizados para
diversos casos de usos en uno o usuario elige modificar una tarea modelar sistemas. Esta es una lista
crearlos como separados, la reco- ya registrada. de los más importantes:
El sistema recupera los nombres de
mendación es mantenerlos como • Reglas de negocio
todas las tareas no marcadas como
uno solo y después cuando se vea • CRUD
activo y las presenta al usuario.
el tamaño y complejidad del caso de El usuario selecciona una de
• Login
uso, se deberá tomar la decisión de las tareas. • Reportes y Explotación de infor-
separarlos si es necesario. El sistema recupera la información mación
sobre la tarea y la presenta • Inclusión y Extensión
A continuación mostramos un ejem- al usuario. • Sistema en Capas
plo de un boceto de caso de uso uti- El usuario modifica cualquiera de • Múltiples Actores
lizando el patrón CRUD. Por razones la información actual excepto el • Jerarquía de Componentes
de espacio, no está completo. El ob- nombre de la tarea. • Servicios Opcionales
El usuario acepta la información.
jetivo es ejemplificar la aplicación
del patrón.
El sistema comprueba si el tiempo
especificado es en el futuro y al-
Conclusión
macena la información modificada.
La técnica de casos de uso nos permite
Caso de Uso: Administrar Tarea modelar y especificar los requerimien-
El caso de caso de uso termina.
Este caso de uso permite tos de nuestro sistema. Tiene muchos
registrar, listar, modificar, o
Cancelar tarea beneficios, entre los más importantes:
eliminar la información de tareas
El caso de uso comienza cuando el primero nos permite planear nuestro
realizadas.
usuario elige cancelar una tarea. proyecto y segundo ayuda a llegar a
Flujo Básico
El sistema recupera y despliega to- acuerdos con los usuarios, para que los
das las tareas futuras. casos de uso sean mas claros y manteni-
El caso de uso tiene cuatro diver-
El usuario selecciona una de
sos flujos básicos: bles es importante encontrar patrones
las tareas.
Registrar tarea nueva y documentarlos, de esta manera cuan-
El sistema recupera la información
Modificar una tarea existente
sobre la tarea y la presenta al
do nos encontremos con un problema
Cancelar tarea
usuario. igual o parecido podamos resolverlos
Consultar tarea fallida en menor tiempo. El concepto de patro-
El usuario confirma la cancelación,
el sistema elimina la tarea; si no nes no es algo que solo es aplicable a la
Registrar tarea nueva
se puede, no se hace ninguna modi- práctica de requerimientos. De hecho,
El caso de uso comienza cuando el
usuario elige registrar una nueva
ficación. la disciplina de requerimientos copia
tarea.
El caso de uso termina. este concepto de la de análisis y dise-
El sistema presenta una lista de ño. Lo que se busca con los patrones
Consultar tarea fallida
posibles clases de tareas, y pre- es reutilizar lo aprendido en los nuevos
El caso de uso comienza cuando el
gunta qué clase de tarea debe ser proyectos y usarlos en la organización
usuario elige vista de la lista de
registrada, con qué nombre, y cuan-
todas las tareas que han fallado.
como estándares.
do se debe realizar.
El sistema recoge todas las tareas
El usuario provee la información
con el estado fallado y presenta
requerida.
sus nombres al usuario. Referencias
El sistema comprueba que el tiempo
El caso de uso termina. • Pan-Wei Ng, Understanding types of
especificado es en el futuro y que
el nombre de la tarea es único.
use cases and artifacts.
Flujos alternativos IBM Developerworks.
El sistema registra la nueva tarea
Cancelar la operación www-128.ibm.com/developerwor-
y la marca como activa.
Nombre o Tiempo incorrecto
El caso de uso termina. ks/rational/library/1809.html

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


PRODUCTOS HERRAMIENTAS

Desarrollo Guiado por Pruebas


Automatización de Pruebas Unitarias
Por Ariel Súcari

E
l desarrollo guiado por pruebas (test-driven development), o Luego de esta breve explicación que sólo intenta inducir a los
TDD, es una de las principales prácticas de Extreme Program- desconocedores e introducir a los entendidos, se pueden vislum-
ming (XP), que propone una serie de pasos para probar antes brar cuáles podrían ser las ventajas y las desventajas de utilizar
de programar (test-first programming). dicha metodología.

El proceso a realizarse es el siguiente: Ventajas


• Se crea un caso de prueba que verifica una pequeña funcionalidad • Requerimientos de última hora. ¿Cuántas veces un requerimiento in-
del sistema. troducido a último momento le causó defectos en producción debido a
• Se ejecuta el caso de prueba, y deberá tener un resultado NO exitoso, un error en el análisis de impacto? ¿En cuál de las siguientes situaciones
ya que la funcionalidad que intenta probar aún no está construida. preferiría estar si necesita cambiar un sistema en producción?
• Una vez que se observa el fallo, se desarrolla únicamente el código a) Cualquiera sea el cambio que usted realice su forma de trabajo le
que hará que la prueba sea exitosa. permite probar su impacto en todo el sistema en minutos.
• Por último, se hace un refactoring del código para asegurar que se tie- b) Alcanza a realizar los cambios pero no tiene tiempo para probar,
ne el diseño más simple para la funcionalidad que acaba de agregarse. entonces debe liberar y cruzar los dedos para que funcione y no afec-
te otras partes del sistema.
Una vez que estos pasos son llevados a cabo, se realiza lo que mo-
tiva a la metodología: la ejecución de todas las pruebas automatiza- • Se desarrollan 100% de las pruebas. Todas las pruebas se rea-
das que se tienen construidas hasta el momento. lizan de manera automática y no existe el escenario en que no se
puede completar la creación de los casos de prueba debido a que
Podemos visualizar gráficamente el párrafo anterior en el siguiente no se escribe una línea de código que no corresponda a un caso de
diagrama de actividad en UML. prueba automatizado.

• Cobertura de requerimientos al 100%. Debido a que los reque-


rimientos son expresados en forma de casos de prueba y dichos
casos son ejecutados automáticamente, cada vez que se agrega
una funcionalidad al sistema, estamos seguros de que al finali-
zar nuestro desarrollo habremos cubierto en 100% los requeri-
mientos del mismo, debido a que ninguno de nuestros casos de
prueba ha fallado.

Desventajas
• El éxito depende de los casos de prueba. Si se hizo una inter-
pretación incorrecta de un requerimiento, se escribirá un caso de
prueba que no satisfaga a los deseos del usuario, por lo tanto el
producto final será incorrecto.

• Interfaces gráficas. Si se hace el intento de probar las interfa-


ces gráficas y estas cambian, debemos perder tiempo en adaptar
nuestras pruebas automatizadas. Esto podría causar que en cada
versión se invierta tanto tiempo en reescribir las pruebas que se
opte por no hacerlo.

Complementando la Metodología
Después de involucrarme un tiempo con la metodología de de-
sarrollo guiado por pruebas y de disfrutar sus virtudes y sufrir
sus defectos, he aprendido a resolver estas limitantes a través del

Ariel Súcari es consultor de It Era especializado en pruebas de software. Graduado de la Universidad CAECE en Buenos Aires, Argentina. Ha participado y coor-
dinado proyectos de la disciplina de pruebas en Inglaterra, Estados Unidos, Venezuela, Argentina y México durante los últimos 7 años.

14 MAY-JUN 2006 www.softwareguru.com.mx


uso de un par de herramientas de IBM-Rational. A continuación Problema 2: El éxito Depende de los Casos de
les comparto más al respecto. Prueba
Para evitar el problema de tener casos de prueba que no concuer-
Problema 1: Interfaces Gráficas den con los requerimientos, lo que podemos hacer es que sean
La herramienta Functional Tester de IBM-Rational cuenta con los mismos analistas de negocio quienes desarrollen los casos de
una tecnología llamada ScriptAssure la cual utiliza algoritmos prueba. Para esto, no necesitan tener conocimientos técnicos ni
configurables para localizar a los objetos durante la ejecución desarrollar scripts. Simplemente utilizan otra herramienta de IBM-
de las pruebas, aunque éstos hayan cambiado desde la creación Rational denominada Manual Tester, y en ella definen fácilmente
del caso de prueba inicial. Es así que Functional Tester actualiza los casos de prueba.
de manera inteligente la forma en que reconoce a los objetos
en Java, aplicaciones Web y .NET sin intervención humana, por Para especificar un caso de prueba, simplemente se define la serie
lo que no requiere que se actualicen los scripts cada vez que de pasos a seguir, y se especifican valores de entrada, así como el
cambia la aplicación. resultado(s) esperado. Posteriormente, los desarrolladores se basan
en estos casos de prueba capturados en
el Manual Tester, para generar los scripts
para pruebas automatizadas. Este pro-
cedimiento para generar los scripts está
metodológicamente explicado y no da
lugar a errores u omisiones.

Algunos beneficios adicionales de cap-


turar los casos de prueba con el Manual
Tester son:
• Proporciona la posibilidad de colocar
imágenes para complementar los pasos y
contribuir a eliminar ambigüedad.
• Permite la reutilización de patrones de
prueba en diferentes pruebas.
• Incluye ingreso y verificación de datos
asistido durante la ejecución de las prue-
bas para reducir el error humano.

Las herramientas que no cuenten con una tecnología semejante a


la descrita, no lograrán reconocer la casilla de verificación y reque- Conclusión
rirán que el desarrollador reprograme sus pruebas. Si esto ocurre Más allá de las herramientas, es importante que se entien-
en una simple ventana de login como la del ejemplo, ¿qué sucederá da el concepto que está detrás de todo esto. El principal
con aplicaciones complejas como en las que usted trabaja? Será objetivo es lograr que los casos de prueba automatiza-
tanto el trabajo de mantenimiento de los scripts de prueba que sus dos, que son la clave del éxito del desarrollo dirigido por
programadores dejarán de ser productivos. pruebas, no partan de una mala interpretación de los
requerimientos. El segundo y, no mucho menos impor-
Otras virtudes que encontré en esta herramienta y que afirmaron tante, es encontrar la manera de que los programadores
mi decisión de adoptarla son: no dejen de ser productivos por tener que escribir casos
• Los scripts de prueba se pueden programar en Visual Basic de prueba automatizados para cada funcionalidad antes
.Net y Java. de desarrollar. Este artículo resalta estas dos cuestiones
• Tiene herramientas de depuración incluidas en el ambiente de y dando un ejemplo de cómo resolverlas con un par de
desarrollo tanto para VB .Net como para Java. herramientas en particular. Pero no es necesario que se
• Incluye la posibilidad de incluir pruebas manejadas por datos limiten a éstas. Los invito a que exploren las diferentes
• Soporta la introducción de expresiones regulares para el manejo herramientas para pruebas automatizadas disponibles
de patrones. en el mercado, y tal como yo lo hice arriben a la solución
• Tiene un agregado para soportar aplicaciones para terminales técnica que más les acomode, sin perder de vista los ob-
3270 y 5250. jetivos propuestos.
• Soporta pruebas automatizadas para ambientes Siebel 7.7.

www.softwareguru.com.mx MAY-JUN 2006 15


PRÁCTICAS

DISEÑO

Patrones de Diseño
COMBINA Y GANA
Por Eduardo Noriega

E
n este artículo, mostramos la fortaleza de utilizar y combinar Según este problema, necesitamos verificar cuentas bancarias y es-
diversos patrones de diseño en la solución de un problema. tado crediticio para diferentes países. Para solucionarlo, podemos
Para lo que desarrollamos un ejemplo en cuya solución utili- utilizar el patrón Abstract Factory. Que nos permite crear una clase
zamos los patrones Abstract Factory, Facade y Observer. concreta para cada país, y trabajar con ellas de una manera total-
mente uniforme, logrando que nuestra aplicación cliente se abstrai-
Como sabemos, los patrones de diseño, describen un problema ga de las complejidades de trabajar con uno u otro país.
que ocurre repetidas veces en algún contexto determinado del
desarrollo de software y entregan una buena solución ya pro- La solución se modelaría utilizando el siguiente diagrama UML.
bada. Esto ayuda, a diseñar correctamente en menos tiempo, a
construir soluciones reutilizables y extensibles, y facilita la docu-
mentación. Los patrones nos dicen cómo aplicar de manera eficaz
la herencia, el polimorfismo y todas las ventajas que posee el pa-
radigma orientado a objetos.

En el libro “Design Patterns: Elements of Reusable Object-Orien-


ted Software” (Erich Gamma, Richard Helm, Ralph Johnson y John
Vlissides), los autores presentan una excelente recopilación de
23 patrones, clasificados en patrones de creación, estructura y
conducta. Estos ofrecen excelentes soluciones a muchos de los
problemas, que como desarrolladores de software, encontramos
día con día.

Sin embargo, muchas veces, para solucionar un problema específico, no


basta con aplicar un determinado patrón, sino que, de manera creativa, En el diagrama podemos ver cómo obtendremos una clase abs-
tenemos que combinar varios de ellos para conformar la solución. Por tracta llamada AVerificador, la cual tendrá un método estático
lo tanto, mostraremos un problema y daremos su solución, combinando GetPaís(). A ese método le pasaremos un indicador del país
varios de los patrones descritos en el libro antes mencionado. que deseamos crear y nos devolverá una instancia de la clase
concreta con que se modela el país, ya sea México, USA u otra.
Trabajemos entonces el siguiente problema Esas clases concretas heredan de la clase abstracta AVerifica-
Se desea implementar una aplicación que verifique si un cliente dor, que implementan los métodos comunes GetBanco(), Get-
es elegible para un crédito hipotecario. Dicha verificación con- Credito(), etcétera.
sistiría en revisar sus cuentas bancarias y revisar su estado cre-
diticio. Estas operaciones de verificación son complejas y varían La clase Cliente declarará una variable del tipo AVerificador y la
de un país a otro. Deseamos que sea suficiente con cambiar un instanciará a través del método estático GetPais() de esa misma
parámetro, para que todas las verificaciones se hagan para un clase, obteniendo entonces una instancia del país en concreto.
determinado país. Además, que la incorporación de un nuevo De esa manera, bastará con cambiar el parámetro que le pasa-
país al ambiente, sea algo sencillo. Deseamos además, que la mos al método GetPais y que indica el país con el que desea-
interfaz visual vaya mostrando como van avanzando cada una mos trabajar, para que toda la solución se enfoque en el país de
de esas verificaciones. nuestro interés.

Eduardo Noriega de Armas es Director General del proyecto AprendaMas.Net (www.aprendamas.net). Realizó sus estudios de Licenciatura y Maestría en la Universi-
dad Central de Las Villas, en Cuba. Ha sido profesor en las Universidades Central de Las Villas en Cuba, Universidad de Guadalajara e Instituto Tecnológico y de Es-
tudios Superiores de Occidente (ITESO). Ha sido consultor en varias empresas y forma parte del equipo de desarrollo de la compañía Grupo Flextronics S.A. de C.V.

38 JUL-AGO 2006 www.softwareguru.com.mx


El método GetBanco() devolverá instancias de las clases Banco- tal manera, podrá interactuar con las clases concretas de una
Mexico o BancoUSA, en dependencia del país con el que estemos manera transparente, pues lo hará a través de las interfaces que
trabajando. Esas clases implementarán la interfaz IBanco, en la ellas implementan.
que se declaran las características comunes de los bancos para
todos los países. De la misma manera, el método GetCredito() de- Así, tenemos nuestro problema solucionado en buena medida. No
volverá instancias de las clases CreditoMexico o CreditoUSA, en obstante, el modelo puede mejorar. Sucede que la clase Cliente, va a
dependencia del país desde donde se haya invocado. Esas dos tener que declarar un Verificador, instanciar el país en concreto, obte-
clases implementarán la interfaz ICredito, en la que se declaran ner su banco y su crédito e interactuar con ellos a través de sus inter-
las características comunes de los créditos de todos los países. faces. Lo que puede significar demasiada complejidad para un cliente;
mas si deseamos implementar diversos clientes para diversas tecno-
La clase Cliente declarará variables del tipo IBanco e ICredito, a logías (digamos una aplicación Windows, una aplicación Web y otra
las que, se le asignarán instancias de las clases BancoMexico, para móviles), sería mucho mejor extraer esa complejidad del cliente y
BancoUSA, CreditoMexico o CreditoUSA, respectivamente. De colocarla en una clase de alto nivel en la capa de negocio.
PRÁCTICAS

DISEÑO

Esa clase, tratará toda la lógica del patrón Abstract Factory como un Por su parte, la interfaz IObserver ofrecerá ese método Update()
subsistema, encapsulando su complejidad, ofreciendo al cliente una que será invocado por el sujeto, a través del cual, el observador se
sencilla y única interfaz; permitiendo que el trabajo del cliente sea lo enterará del cambio de estado en el sujeto y realizado una acción
más sencillo posible. al respecto.

La implementación de lo que hemos dicho, nos la da el patrón Faca- La inclusión del patrón Observer en nuestra solución se refleja en el
de. Que nos sugiere la implementación de una Fachada que interac- siguiente diagrama:
túe con el subsistema, ofreciendo al cliente una interfaz sencilla.

La solución se modelaría utilizando el siguiente diagrama UML:

Se observa en este caso, cómo la clase Cliente implementará


la interfaz IObserver, mientras que la clase FachadaVerif imple-
Ya tenemos un cliente sencillo y una clase que hace la verificación mentará la interfaz ISubject. A partir de ese momento, Cliente
que deseamos. Sólo nos queda un punto por resolver. El problema se convierte en un Observador, mientras que FachadaVerif se
inicial dice “Deseamos además, que la interfaz visual vaya mostran- convierte en el sujeto observado. El Cliente entonces, se puede
do como van avanzando cada una de esas verificaciones”. ¿Cómo lo- suscribir a los eventos de la Fachada, y ésta, cuando verifique el
grar entonces que el cliente se entere que la Fachada de verificación banco, invocará su método Notify para avisar al cliente que se
ha hecho cada uno de los pasos? ha dado un paso. Pasará lo mismo cuando revise el crédito. De
tal manera el Cliente recibirá eventos a medida que se van ejecu-
Nos podemos apoyar en el patrón Observer, que nos dice, cómo re- tando los diferentes pasos de la verificación, además de contar
lacionar dos clases pasando mensajes entre ellas, sin que esto con- con la libertad de hacer ciertas acciones, como por ejemplo, ir
lleve al establecmiento de un acople fuerte. El patrón nos sugiere la avanzando una barra de progreso, entre otras.
creación de una interfaz Sujeto (ISubject) que será el sujeto observa-
do, y una interfaz Observador (IObserver) que será quien se interese Así finalizamos este ejemplo. En él utilizamos tres patrones: el Abs-
por los cambios de estado en el sujeto. tract Factory, el Facade y el Observer, para a través de su combina-
ción, obtener la solución a nuestro problema.
ISubject ofrecerá un método Subscribe() que reciba un parámetro de
tipo IObserver, a través del cual un Observador podrá suscribirse a los
eventos del sujeto. Además, ofrecerá un método Unsubscribe(), que Referencias
también recibirá un IObserver para que éste se pueda desuscribir. Por • Profesional Design Patterns in VB.NET: Building Adaptable Applica-
último, tendrá un método Notify, en el que recorra la lista de observa- tions. Tom Fischer, et al. Apress, 2003.
dores, invocándole a cada uno su método Update, para que el obser- • Design Patterns: Elements of Reusable Object Oriented Design.
vador se entere que el sujeto cambió su estado y generó un evento. Erich Gamma, et al. Addison Wesley, 1995.

40 JUL-AGO 2006 www.softwareguru.com.mx


´Fj‚ZhJhVW^a^YVY4
O9Œce9edi[]k_hbW
1PS%POOB.BVSFS

6OB HSBO QBSUF EF OVFTUSP -PBOUFSJPSQBSFDFVOQPDPSFEVOEBOUF QFSP &ORMAS )NCORRECTAS DE 3A
UJFNQPTFGSVTUSBDPOTJUJPTXFCEPOEFOP UJFOFWBSJPTQVOUPTBSFTBMUBS ZTFEFCFOUP BERSIUN3ISTEMAES5SABLE
FODPOUSBNPTMBJOGPSNBDJØORVFCVTDBNPT NBSFODVFOUBQBSBDSFBSTJTUFNBTVTBCMFT &OUSF MPT FSSPSFT NÈT DPNVOFT  FTUÈ
$POQSPDFTBEPSFTEFUFYUPRVFQJFSEFOIP -PTVTVBSJPTEFVOTJTUFNBTFFTQFDJGJDBO QFOTBS RVF DPO IBDFS VOB EFNPT
SBT EF USBCBKP TJ TF EB VO DMJD FRVJWPDBEP -PTVTVBSJPTUJFOFOVODPOKVOUPEFNFUBT USBDJØO EF VO TJTUFNB  P BQMJDBS VOB
EFMNPVTFDPODPOUSPMFTSFNPUPTDPONV 6OTJTUFNBEFCFQFSNJUJSBMPTVTVBSJPTMP FODVFTUBFOUSFMPTVTVBSJPT ZBFTTVGJ
DIPNÈTCPUPOFTEFMPTRVFOFDFTJUBNPT HSBS EJDIBT NFUBT EF GPSNB FGJDJFOUF  DPO MP DJFOUF QBSB EFUFSNJOBS TV VTBCJMJEBE
DVBMRVFEBSÈOTBUJTGFDIPT "VORVF FTUBT UÏDOJDBT TPO ÞUJMFT QBSB
-B VTBCJMJEBE TF WF DPNP MB SFTQVFTUB B NV  6O TJTUFNB TF VUJMJ[B EFOUSP EF VO DPO PCUFOFSSFUSPBMJNFOUBDJØO OPTPOTV
DIBT EF FTUBT GSVTUSBDJPOFT FO MB JOUFSBDDJØO UFYUP FO QBSUJDVMBS QPS FKFNQMP  CBKP VO GJDJFOUFTQBSBEFUFSNJOBSTJVOTJTUFNB
DPOUFDOPMPHÓB&TUFBSUÓDVMPQSFUFOEFEBSVO BNCJFOUFFTQFDÓGJDP
 FT VTBCMF $POTVMUBS DPO FYQFSUPT FO
QBOPSBNBTPCSFMPRVFMBVTBCJMJEBEFT ZOP VTBCJMJEBEOPTQVFEFTFSWJSQBSBPCUF
FT
 %F MB NJTNB NBOFSB  SFDPNJFOEB BMHV z#ØMO3ABERSIUN3ISTEMA OFSSFDPNFOEBDJPOFT4JOFNCBSHP OP
OBTBDUJWJEBEFTRVFTFEFCFOMMFWBSBDBCPQBSB ES5SABLE QPEFNPT DBMJGJDBS MB VTBCJMJEBE EF VO
DSFBSTJTUFNBTNÈTVTBCMFT ZFYQMJDBDØNPTF -BÞOJDBGPSNBEFBWFSJHVBSMP FTPCTFSWBOEP TJTUFNBFOCBTFBMBPQJOJØOEFVOFY
QVFEFO JODPSQPSBS EJDIBT BDUJWJEBEFT B MPT BTVTVTVBSJPTVUJMJ[BSMPQBSBMMFWBSBDBCPBD QFSUP ZBRVFÏTUFOPFTSFQSFTFOUBUJWP
QSPZFDUPT UJWJEBEFTSFBMFT&TUPTFDPOPDFDPNPQSVFCBT EFMHSVQPEFVTVBSJPTSFBMFT
EFVTBCJMJEBE
z1UÏES5SABILIDAD &OMBTQSVFCBTEFVTBCJMJEBE MPTPCTFSWBEP ,A5SABILIDADCOMO0ROCESO
&M UÏSNJOP VTBCJMJEBE TF QVFEF SFGFSJS B SFT OP MF FOTF×BO B MPT QBSUJDJQBOUFT DØNP 1BSB DSFBS VO TJTUFNB VTBCMF  TF SFDP
EPTDPODFQUPT VUJMJ[BSFMTJTUFNB ZUBNQPDPDPOUFTUBOQSF NJFOEBTFHVJSVOQSPDFTPEFEJTF×PDFO
-BVTBCJMJEBEDPNPBUSJCVUPEFDBMJEBEEF HVOUBT EFCF TFS DPNP TJ MPT QBSUJDJQBOUFT USBEPFOFMVTVBSJP EPOEFTFJOWPMVDSBB
VOTJTUFNB1PSFKFNQMPi/FDFTJUBNPTEFTB FTUVWJFSBOTPMPT MPTVTVBSJPTEVSBOUFFMEFTBSSPMMPEFMTPGU
SSPMMBSVOBJOUSBOFUVTBCMFw )BZUSFTGBDUPSFTDMBWFQBSBSFBMJ[BSMBTQSVFCBT XBSF ZTFSFBMJ[BOQSVFCBTEFVTBCJMJEBE
 -B VTBCJMJEBE DPNP VO QSPDFTP RVF TF EFVTBCJMJEBE FOEJWFSTBTFUBQBTEFMQSPZFDUP&MEJTF×P
BQMJDB EVSBOUF VO QSPZFDUP &TUP UBNCJÏO TF t-PTQBSUJDJQBOUFTEFCFOTFSVTVBSJPTBD DFOUSBEPFOFMVTVBSJPFTVODPOKVOUPEF
DPOPDF DPNP iJOHFOJFSÓB EF VTPw  P iEJTF×P UVBMFTPGVUVSPTEFMTJTUFNB6OFSSPSDP BDUJWJEBEFT Z UÏDOJDBT  DVZP PCKFUJWP FT
DFOUSBEPFOFMVTVBSJPw NÞO FTEFKBSRVFMPTHFSFOUFTQSVFCFOFM DSFBSVOTJTUFNBVTBCMF5BMFTBDUJWJEBEFT
TJTUFNB  FO MVHBS EF MPT PQFSBEPSFT  RVF TFQVFEFOJODMVJSBUSBWÏTEFMBTFUBQBTEF
5SABILIDADCOMO!TRIBUTO TPOMPTRVFSFBMNFOUFWBOBVUJMJ[BSFMTJT EFTBSSPMMPEFVOTPGUXBSF EFTEFFMDPO
1BSB EFGJOJS VTBCJMJEBE DPNP BUSJCVUP EF DB UFNB VOBWF[RVFFTUÏFOQSPEVDDJØO DFQUVBM IBTUBMBTQSVFCBTGJOBMFT ZBVOFO
MJEBE FDIFNPTVOWJTUB[PBMBEFGJOJDJØORVF t-PTQBSUJDJQBOUFTEFCFOJOUFOUBSSFBMJ FMNBOUFOJNJFOUPZTPQPSUF/PFTVOB
VUJMJ[BMBOPSNB*40 [BS MBT UBSFBT RVF OPSNBMNFOUF SFBMJ[B SFDFUBQBTPBQBTP&TNÈTVOBGJMPTPGÓB 
i-B NFEJEB FO RVF VOQSPEVDUPQVFEFTFS SÓBODPOFMTJTUFNB&TDSVDJBMRVFFTUBT RVFVOBNFUPEPMPHÓB4FUSBUBEF HFOVJ
VUJMJ[BEP QPS VTVBSJPT FTQFDÓGJDPT  QBSB BM UBSFBTTFBOSFBMJTUBT OBNFOUFCVTDBSMBDSFBDJØOEFBMHPRVF
DBO[BSNFUBTFTQFDÓGJDBT EFGPSNBFGFDUJWB  t&MDPOUFYUPCBKPFMRVFTFSFBMJ[BMBQSVF QVFEBVUJMJ[BSTFQPSVOBBVEJFODJBSFBMZ
FGJDJFOUF Z TBUJTGBDUPSJB  EFOUSP EF VO DPO CB EFCFTFSMPNÈTDFSDBOPQPTJCMFBMDPO SFDPSEBSRVFFMTJTUFNBFTQBSBTVTVTVB
UFYUPEFVTPw UFYUPSFBMFORVFFMTJTUFNBTFVUJMJ[BSÈ SJPT ZOPQBSBTVTEFTBSSPMMBEPSFT

$ONNA-AURERESCONSULTORAENDISE×ODEINTERFACESYARQUITECTURADEINFORMACIØN#ONMÉSDEA×OSDEEXPERIENCIA YHAFACILITADOMÉSDEPRUEBASDEUSABI
LIDAD$ONNACONTINUAMENTESORPRENDEASUSCOLEGASALHABLARCONGENTE ENVEZDEHACERLOCONCOMPUTADORAS YDISE×ARALAANTIGàITACONLÉPIZ MARCADORESYHOJAS
DECOLORESMAADMOBCOMAUDONNABLOG

WWWSOFTWAREGURUCOMMX 3%0 /#4 


 3<>=@B/2/  B@./6961.1 

h!HORAMISMO
ERESUNPRISIONERO
DECADAAPLICACIØN
QUEUSASv
ˆ4HEODOR
(OLM.ELSON

&MEJTF×PDFOUSBEPFOFMVTVBSJPJO t 1FSDFQDJØO -B QFSDFQDJØO TF SFGJFSF B DJFOEP NPEFMPT NFOUBMFT EF DØNP GVODJP
WPMVDSBUSFTBTQFDUPTQSJNPSEJBMFT MB NBOFSB FO RVF MBT QFSTPOBT DBQUBNPT Z OBOMBTDPTBT&OUFOEFSEJDIPTNPEFMPT OPT
$POPDFSMBTIBCJMJEBEFTZMJNJUB PSHBOJ[BNPT JOGPSNBDJØO *OWPMVDSB MB BE QVFEFBZVEBSBEJTF×BSNFKPSFTTJTUFNBT ZB
DJPOFTIVNBOBT RVJTJDJØOEFJOGPSNBDJØOBUSBWÏTEFMPTDJO RVFOPTEBOVOBHVÓBTPCSFiDØNPQJFOTBOw
%JTF×BSQBSBVOHSVQPQBSUJDVMBS DP TFOUJEPT DMÈTJDPT  NÈT MB QSPQJPDFQDJØO OVFTUSPTVTVBSJPT
EFQFSTPOBT DPODJFODJB EF OVFTUSPT NPWJNJFOUPT
 Z FM
5SBCBKBSDPOEJDIBTQFSTPOBTBUSB CBMBODF-BWJTUBFTFMTFOUJEPNÈTSFMFWBOUF  %JTF×BS QBSB MPT VTVBSJPT &M TFHVOEP
WÏTEFMQSPDFTP QBSBFMEJTF×PEFTJTUFNBTDPNQVUBDJPOBMFT QVOUP DSVDJBM TPCSF FM EJTF×P DFOUSBEP FO
FMVTVBSJP FTUÈSFMBDJPOBEPDPOEJTF×BSBMHP
$POPDFSBMBTQFSTPOBT t5PNBEFEFDJTJPOFT&YJTUFMBDSFFODJBEFRVF QBSBVODPOKVOUPQBSUJDVMBSEFQFSTPOBT FT
1BSB EJTF×BS TJTUFNBT VTBCMFT  MP QSJ MPTTFSFTIVNBOPTUPNBNPTEFDJTJPOFTEFGPSNB EFDJS MPTGVUVSPTVTVBSJPTEFMTJTUFNB1BSB
NFSP RVF TF OFDFTJUB FT FOUFOEFS MBT MØHJDB&TUPFT RVFBOBMJ[BNPTUPEBTMBTPQDJP EJTF×BSVOTJTUFNBVTBCMF SFRVFSJNPTDPOP
IBCJMJEBEFTZMJNJUBDJPOFTEFMPTTFSFT OFTZFMFHJNPTMBRVFDPOTJEFSBNPTNÈTDPOWF DFSZFOUFOEFSBFTUBTQFSTPOBT
IVNBOPT"DPOUJOVBDJØOMJTUBNPTBM OJFOUF4JOFNCBSHP MBNBZPSÓBEFMBTEFDJTJPOFT
HVOBT DBSBDUFSÓTUJDBT DMBWF Z EF TVNB OPTFUPNBOBTÓ&ODBNCJP MPRVFUÓQJDBNFOUF t *EFOUJGJDBS B MPT VTVBSJPT &O NVDIPT
JNQPSUBODJB QBSB MB VTBCJMJEBE  QFSP TVDFEF FTRVFOPTDPOGPSNBNPTDPOMBQSJNFSB TJTUFNBT  FT GÈDJM EFUFSNJOBS RVJÏOFT TPO MPT
IBZ NVDIBT PUSBT  EFQFOEJFOEP EF SFTQVFTUBSB[POBCMFRVFSFTVFMWFVOBTJUVBDJØO VTVBSJPT5BM FT FM DBTP EF MB NBZPSÓB EF MBT
DBEBBVEJFODJBZTJTUFNBFTQFDÓGJDP "TÓRVFEFCFNPTFTUBSDPOTDJFOUFTEFRVFOVFT BQMJDBDJPOFTEFOFHPDJP RVFTFEFTBSSPMMBOB
USPTVTVBSJPT NVZQSPCBCMFNFOUFOPMFBOUPEB MBNFEJEB QBSBVOBBVEJFODJBMJNJUBEBZDP
t.FNPSJB-BNFNPSJBIVNBOBUJF MB JOGPSNBDJØO RVF MFT QSFTFOUBNPT  TJOP RVF OPDJEB4JOFNCBSHP OPTJFNQSFMPTVTVBSJPT
OFNVDIBTMJNJUBDJPOFT&OUSFFMMBT MB MMFHBSÈO IBTUB MB JOGPSNBDJØO RVF OFDFTJUBO P TPO UBO DPOPDJEPT  P UBO IPNPHÏOFPT 1PS
DBQBDJEBEEFNFNPSJBiFOUSBCBKPwZ DSFFORVFOFDFTJUBO
ZZBOPMFFSÈOFMSFTUP FKFNQMP JNBHJOFNPTFMDBTPEFVOQPSUBMEF
QBSB QPEFS HVBSEBS BMHP FO NFNPSJB TFSWJDJPTQÞCMJDPT
EF MBSHP QMB[P  SFRVFSJNPT FTUVEJBS t #ÞTRVFEB EF JOGPSNBDJØO -BT QFSTPOBT
MP PFOTBZBSMPDPODJFSUBEFEJDBDJØO SFBMJ[BNPT CÞTRVFEBT EF EPT NBOFSBT EJGF t $POPDFS B MPT VTVBSJPT 6OB WF[ RVF
-PT TJTUFNBT VTBCMFT NJOJNJ[BO MB SFOUFT-BQSJNFSB FTDVBOEPTBCFNPTFYBD UFOFNPTJEFOUJGJDBEPTBOVFTUSPTVTVBSJPT 
DBOUJEBEEFJOGPSNBDJØORVFTFEFCF UBNFOUFDVÈMFTMBJOGPSNBDJØORVFCVTDBNPT  EFCFNPT BQSFOEFS TPCSF FMMPT  Z FOUFO
NFNPSJ[BS &TUP QVFEF JOWPMVDSBS FM TBCFNPTRVFFYJTUF ZQPEFNPTFYQMJDBSMPRVFEFSRVÏFTMPRVFOFDFTJUBOEFMTJTUFNBFO
EFTQMJFHVF EF JOGPSNBDJØO SFMFWBOUF CVTDBNPTBFTUFUJQPEFCÞTRVFEBTFMFDPOP DVFTUJØO -BT UÏDOJDBT NÈT ÞUJMFT  JOWPMV
SFDPSEBUPSJPT
 FO QVOUPT BEFDVBEPT  DFDPNPiFMFNFOUPDPOPDJEPw&MPUSPUJQP FT DSBO PCTFSWBS B MBT QFSTPOBT Z IBCMB DPO
PQPSFKFNQMP QSPWFFSPQDJPOFTGMFYJ MBFYQMPSBUPSJB FOMBDVBMOPFTUBNPTTFHVSPTFMMBT TPCSF MBT BDUJWJEBEFT RVF SFBMJ[BO  FO
CMFTQBSBFMNBOFKPEFDPOUSBTF×BT EFRVÏFTMPRVFCVTDBNPT OJTBCFNPTDØNP MVHBS EF QSFHVOUBSMFT EJSFDUBNFOUF MP RVF
EFGJOJSMP QSFDJTBNFOUF &T JNQPSUBOUF DPOPOFDFTJUBOIBDFSMP OPFTCVFOBQSÈDUJDB ZB
t&SSPSFT1PEFNPTFTUBSTFHVSPTEFRVF DFSBNCPTDPNQPSUBNJFOUPTEFCÞTRVFEB ZB RVFMBHFOUFUÓQJDBNFOUFTFCBTBFOMBTDB
MPTVTVBSJPTEFOVFTUSPTTJTUFNBT UBSEFP RVF DJFSUPT NÏUPEPT GVODJPOBO NFKPS QBSB SBDUFSÓTUJDBT RVF ZB DPOPDF EF VO TJTUFNB 
UFNQSBOPDPNFUFSÈOFSSPSFT QPSRVFUP CÞTRVFEBT EF FMFNFOUP DPOPDJEP  Z PUSPT  F JHOPSB PUSBT QPTJCJMJEBEFT RVF QPESÓBO
EBTMBTQFSTPOBTFTUBNPTTVKFUBTBFRVJ QBSBCÞTRVFEBTFYQMPSBUPSJBT FYJTUJS 1BSB DPOPDFS NÈT TPCSF OVFTUSPT
WPDBSOPT6OTJTUFNBVTBCMF EFCFFTUBS VTVBSJPT  QPEFNPT BQMJDBS EJTUJOUBT UÏDOJ
EJTF×BEP QBSB UPMFSBS FSSPSFT  P QPEFS t .PEFMPT NFOUBMFT 6OB NBOFSB FO RVF DBT UBMFTDPNPFOUSFWJTUBT FODVFTUBT GPDVT
SFDVQFSBSTFGÈDJMNFOUFEFFMMPT MBT QFSTPOBT FOUFOEFNPT FM NVOEP  FT IB HSPVQT ZPCTFSWBDJØO

 3%0 /#4 WWWSOFTWAREGURUCOMMX


t$PNVOJDBSMBTOFDFTJEBEFTEFMPTVTVB UP FOFUBQBTFOMBTRVFFTNVZUFNQSBOPQBSB #ONCLUSIØN
SJPT &T JNQPSUBOUF DPNVOJDBS MBT DBSBDUF QPEFSIBDFSQSVFCBTEFVTBCJMJEBE -PT TJTUFNBT DPO BMUB VTBCJMJEBE QSP
SÓTUJDBTZOFDFTJEBEFTEFMPTVTVBSJPTBPUSPT WFFO CFOFGJDJPT TVTUBODJBMFT UBOUP
JOWPMVDSBEPT FO FM QSPZFDUP  EF UBM GPSNB  t5BSKFUBTEFJOGPSNBDJØO&TUBUÏDOJDBFTÞUJM QBSB MPT VTVBSJPT  DPNP QBSB MBT PS
RVFUPEPTTFQVFEBOFOGPDBSFOMBTOFDFTJ QBSB EFGJOJS MB FTUSVDUVSB EF JOGPSNBDJØO EF HBOJ[BDJPOFT 6O TJTUFNB RVF QFSNJ
EBEFTEFMPTVTVBSJPT6OBIFSSBNJFOUBÞUJM VOTJTUFNBJOGPSNBUJWP UBMDPNPVOTJUJPXFC UF B MBT QFSTPOBT SFBMJ[BS BDUJWJEBEFT
QBSBMPHSBSMP FTMBDSFBDJØOEFiQFSTPOBKFTw -P RVF TF IBDF  FT  DSFBS EJTUJOUBT UBSKFUBT Z EFNBOFSBSÈQJEBZTFODJMMB SFTVMUBSÈ
GJDUJDJPT RVF SFQSFTFOUBO FM QFSGJM UÓQJDP EF FODBEBVOBFTDSJCJSFKFNQMPTEFJOGPSNBDJØO VOBIPSSPEFUJFNQPZEJOFSPQBSBMB
OVFTUSPT VTVBSJPT  P EF VO DPOKVOUP 0USB RVFQPESÓBDPOUFOFSFMTJTUFNB1PTUFSJPSNFO PSHBOJ[BDJØO
IFSSBNJFOUBFGJDB[ FTFMEFTBSSPMMPEFFTDF UFTFSFQBSUFOMBTUBSKFUBTBMPTVTVBSJPT ZTFMFT
OBSJPT EF VTP  RVF TPO QFRVF×BT IJTUPSJBT QJEFRVFMBTPSHBOJDFOFOHSVQPT &T QPTJCMF DSFBS TJTUFNBT VTBCMFT 
RVF EFTDSJCFO DØNP VO VTVBSJP SFBMJ[BSÈ BQSFOEJFOEP TPCSF MBT IBCJMJEBEFT Z
DJFSUB UBSFB -PT DBTPT EF VTP TF CBTBO FO t4FTJPOFTEFQSJPSJ[BDJØO&OFTUBTTFTJP MJNJUBDJPOFT IVNBOBT  BQSFOEJFOEP
FTUFDPODFQUP OFTTFEBBMPTVTVBSJPTVOBMJTUBEFGVODJP TPCSF MPT VTVBSJPT EF VO TJTUFNB  Z
OBMJEBEFT  Z TF MFT QJEF RVF MB PSEFOFO EF USBCBKBOEP DPO FMMPT EVSBOUF FM EF
5SBCBKBSDPOMPTVTVBSJPT BDVFSEPBEJGFSFOUFTDSJUFSJPT1PSFKFNQMP TBSSPMMP EF VO QSPEVDUP 3FBMJ[BSMP
&M UFSDFS BTQFDUP EFM EJTF×P DFOUSBEP FO RVÏUBOUPMBVUJMJ[BO RVÏUBOJNQPSUBOUFFT  QVFEF TJHOJGJDBS USBCBKP BEJDJPOBM 
VTVBSJPTTFSFGJFSFBJOWPMVDSBSBMPTVTVBSJPT P RVÏ UBO SÈQJEP EFCFSÓB QPEFS BDDFEFSMB QFSP DPOUSJCVZF GVFSUFNFOUF BM ÏYJUP
EVSBOUFFMEFTBSSPMMPEFMTJTUFNB&YJTUFOEJT &TUB FT VOB GPSNB QSÈDUJDB EF QSJPSJ[BS MPT EF VO TPGUXBSF %FTQVÏT EF UPEP  FT
UJOUBTUÏDOJDBTQBSBMPHSBSMP UBMFTDPNP SFRVFSJNJFOUPTEFVOTJTUFNB JSSFMFWBOUF RVF VO TPGUXBSF TF IBZB
EFTBSSPMMBEPFOUJFNQPPFODPTUP TJ
t%JTF×PDPMBCPSBUJWP4FSFBMJ[BOTFTJPOFT t 1SPUPUJQPT FO QBQFM 4F DSFBO MÈNJOBT BMGJOBMOPTFVTB
EPOEFTFKVOUBOEJTF×BEPSFT EFTBSSPMMBEP DPOEJCVKPTEFMBTQBOUBMMBTEFMTJTUFNB RVF
SFT VTVBSJPTGJOBMFTZVTVBSJPTEFOFHPDJP  UFOHBO TVGJDJFOUF EFUBMMF DPNP QBSB QPEFS
QBSB QMBUJDBS TPCSF FM EJTF×P EF VO TJTUF FYQMJDBSTVVTP-BTMÈNJOBTTFVUJMJ[BOQBSB -BWFSTJØOPSJHJOBMEFFTUFBSUÓDVMPTF
NB&MPCKFUJWPOPFTRVFMPTVTVBSJPTTFBO OBSSBS FTDFOBSJPT EF VTP -B SB[ØO QPS MB FODVFOUSBQVCMJDBEBFO
RVJFOFT EJTF×FO FM TJTUFNB  TJOP FOUFOEFS RVF MBT MÈNJOBT UJFOFO EJCVKPT FO MVHBS EF XXXTUFQUXPDPNBVQBQFST
NFKPS TVT OFDFTJEBEFT  Z BDMBSBS DØNP FT TDSFFOTIPUTFTQBSBEFKBSDMBSPRVFFMTJTUFNB LND@XIBUJTVTBCJMJUZJOEFYIUNM
RVFFMTJTUFNBMBTTPQPSUBSÈ UPEBWÓBFTUÈFOEFTBSSPMMP%FPUSBNBOFSB  -BWFSTJØORVFQSFTFOUBNPTFOFTUBT
MPTVTVBSJPTQVFEFOUFOFSMBJEFBEFRVFFM QÈHJOBTGVFUSBEVDJEBZFEJUBEBQPS
t3FWJTJPOFTEFEJTF×P XBMLUISPVHIT
-BT TJTUFNB ZB FTUÈ iQSÈDUJDBNFOUF MJTUPw  TJN 1FESP(BMWÈO DPOMBBVUPSJ[BDJØOEF
SFWJTJPOFT TJSWFO QBSB WFSJGJDBS EFDJTJPOFT EF QMFNFOUFQPSRVFZBTFUJFOFOMBTQBOUBMMBT 4UFQ5XP%FTJHOT1UZ-UE
EJTF×P ZPCUFOFSSFUSPBMJNFOUBDJØOBMSFTQFD

WWWSOFTWAREGURUCOMMX 3%0 /#4 


 >@Ê1B71/A  6;42;62?Ì. 12 @<3AD.?2 

"OUJQBUSPOFT
-B.FKPS'PSNBEF)BDFSVO1nTJNP4JTUFNBEF4PGUXBSF
1PS+BWJFS(PO[gMF[4gODIF[

, PT BOUJQBUSPOFT  UBNCJnO MMBNBEPT


USBNQBT  TPO FKFNQMPT CJFO EPDV
NFOUBEPT EF NBMBT TPMVDJPOFT QBSB QSP
BOBMPHrB QPESrBNPTQFOTBSRVFTJOFDFTJ
UBTEJOFSP UJFOFTEPTPQDJPOFTFMQBUSwO
CVFO DPNQPSUBNJFOUP
 USBCBKBS BSEVB
CMFNBT 4F FTUVEJBO B GJO EF QPEFSMPT NFOUF P FM BOUJQBUSwO SgQJEP Z DPO DPO
FWJUBSFOFMGVUVSP ZFOTVDBTP QBSBRVF TFDVFODJBTBMBSHPQMB[P
SPCBSVOCBODP
TV QSFTFODJB QVFEB TFS SFDPOPDJEB GgDJM
NFOUFBMJOWFTUJHBSTJTUFNBTEJTGVODJPOB &M NJTNP DPODFQUP TF BQMJDB GgDJMNFOUF
MFTEVSBOUFVOBBVEJUPSJB FOJOHFOJFSrB ZFOPUSBTBDUJWJEBEFTEPO
EFFTUnQSFTFOUFFMFTGVFS[PIVNBOP"Tr 
&M UnSNJOP BOUJQBUSwO TF PSJHJOB DPNP BOUJQBUSPOFT DPNP SFJOWFOUBS MB SVFEB 
VOB DPOUSB QBSUF BM UnSNJOP QBUSwO  BDV MBDPTB FMQSPHSBNB%JPT DBTBSTFDPOFM
vBEP FO BSRVJUFDUVSB EF TPGUXBSF  QBSB EJBCMP  MB UVCFSrB EF MB FTUVGB  DPSO DPC
EFGJOJS MBT CVFOBT QSgDUJDBT EF QSPHSB KVOUPT QFSP OP SFWVFMUPT
 FUDnUFSB %F
NBDJwO EJTFvPPHFTUJwOEFTJTUFNBT%F KBO MB FOTFvBO[BEFDVgMFTMBNFKPSGPS
UBM NBOFSB QPESrBNPT IBCMBS EF RVF VO NBEFOPIBDFSTJTUFNBTEFDwNQVUP
TJTUFNB²CJFOIFDIP³FTUgMMFOPEFQBUSP
OFT  Z EFCFSrB DBSFDFS EF BOUJQBUSPOFT &O MB FMBCPSBDJwO EF VO TJTUFNB  JOUFS
BMNFOPTFTFTFSrBVOTJTUFNBJEFBM WJFOFO BM NFOPT  EJWFSTPT BDUPSFT BS
RVJUFDUPT EF TPGUXBSF  BENJOJTUSBEPSFT EFOBEB  DPO QPDB EPDVNFOUBDJwO Z QPDB
4JBQMJDBNPTVOBBOBMPHrBTPDJBM QPESrB EFQSPZFDUPZEFTBSSPMMBEPSFT1BSBDBEB DMBSJEBEEFTVGVODJwOFOFMTJTUFNB$PO
NPTEFDJSRVFTJBU| BNJHPMFDUPS OPDBFT VOP EF FMMPT  FYJTUFO BOUJQBUSPOFT RVF GPSNFFMTJTUFNBBWBO[BFOTVEFTBSSPMMP 
FOFMBOUJQBUSwO OPNCSnNPTMFFTUFSFP EFTDSJCFO DPNQPSUBNJFOUPT Z TPMVDJPOFT Z DSFDF  TF EJDF RVF FTUPT GMVKPT EF MBWB
UJQPT
 EF DSJNJOBM  UFSSPSJTUB  QFSWFSUJEP  JODPSSFDUBT-PTBOUJQBUSPOFT VOBWF[DP TF TPMJEJGJDBO  FT EFDJS  TF WVFMWF NVDIP
ESPHBEJDUP  CSVKP  EJDUBEPS  Z TJNJMBSFT  OPDJEPT
DPOTUJUVZFOQBSBDBEBVOPEFMPT NgT DPNQMJDBEP DPSSFHJS MPT QSPCMFNBT
FOUPODFT QPESrBNPT BGJSNBS RVF OP FSFT BDUPSFT JOWPMVDSBEPT  EFTDSJQDJPOFT EF RVF PSJHJOBO  Z FM EFTPSEFO WB DSFDJFOEP
VOBNBMBQFSTPOB-PDVBMOPJNQMJDB RVF QSPCMFNBTSFDVSSFOUFTFOMBDPOTUSVDDJwO HFPNnUSJDBNFOUF
TFBT CVFOB QBSB TFSMP EFCFSrBT  OP TwMP EFTPGUXBSF MFTQSPQPSDJPOBOVOWPDBCV
OP FODBKBS FO MPT BOUJQBUSPOFT NFODJP MBSJP DPN|O QBSB JEFOUJGJDBS QSPCMFNBT Z &TUPTFIBDFQBUFOUFDVBOEP4FEFDMB
OBEPT  TJOP BEFNgT  DVNQMJS DPO VOP P EJTDVUJS QPTJCMFT TPMVDJPOFT Z MFT TVHJF SBO WBSJBCMFT OP KVTUJGJDBEBT  4F DPOT
NgT QBUSPOFT MMBNnNPTMF DVBMJEBEFT
 SFOQBTPTQBSBMBSFJOHFOJFSrB ZSFPSHB USVZFO DMBTFT P CMPRVFT EF DwEJHP NVZ
IPOFTUP  USBCBKBEPS  CVFO IJKP ZP CVFO OJ[BDJwOFTUSVDUVSBMEFVOTJTUFNB HSBOEFT Z DPNQMFKBT TJO EPDVNFOUBS  P
QBESF FUDnUFSB RVF OP TF SFMBDJPOBO DMBSBNFOUF DPO MB
!NTI PATRONESDE#ODIFICACIØN BSRVJUFDUVSB  6TBOEP VO JODPOTJTUFOUF
-PTBOUJQBUSPOFTFOBSRVJUFDUVSBEFTPGU 3FWJTFNPT BMHVOBT UnDOJDBT QBSB DPEJGJ ZEJGVTPFTUJMPEFFWPMVDJwOEFVOBBSRVJ
XBSF  TPO TJNJMBSFT B TVT BOgMPHPT TPDJB DBDJwOJODPSSFDUBEFTPGUXBSF UFDUVSB  $VBOEP FO FM TJTUFNB FYJTUFO
MFT  TPMVDJPOFT OFHBUJWBT  BDDJPOFT RVF NVDIBT gSFBT DPO DwEJHP QPS UFSNJOBS P
QSFTFOUBO NBZPSFT QSPCMFNBT RVF TPMV  -BWB 'MPX "MHP BTr DPNP ²QSPHSBNBS SFFNQMB[BS  : DMBSP  DVBOEP EFKBNPT
DJPOFT4JOFNCBSHP SFQSFTFOUBOVODBNJ BM FTUJMP WPMDgO³  &T DPOTUSVJS HSBOEFT DwEJHP TJO VTP BCBOEPOBEP JOUFSGBDFT P
OPGgDJMZSgQJEP1FSPDPOUJOVBOEPDPOMB DBOUJEBEFT EF DwEJHP EF NBOFSB EFTPS DPNQPOFOUFT PCTPMFUPT FO FM DVFSQP EFM

*AVIER'ONZÉLEZ3ÉNCHEZ ESPROFESORTIEMPOCOMPLETODEL4ECNOLØGICODE-ONTERREY CAMPUS'UADALAJARAYCONSULTORINDEPENDIENTEPARADIFERENTESEMPRESASDESA


,UIS2#UELLARES$IRECTORDE#ALIDADANIVELMUNDIALDE3OFTTEK)NFORMATION3ERVICES,UISESRECONOCIDOPORLA!MERICAN3OCIETYFOR
1UALITY!31 COMO#ERTIlED1UALITY-ANAGER #ERTIlED3OFTWARE%NGINEER Y3IX3IGMA"LACK"ELT%NLOSÞLTIMOSCINCOA×OSHAESTADOA
RROLLADORASDESOFTWARE#UENTACONUNAMAESTRÓAEN)NGENIERÓACONESPECIALIDADENSISTEMASDISTRIBUIDOS OTORGADAPOREL#ENTRODE)NVESTIGACIØNY%STUDIOS!VANZADOS
CARGODELADElNICIØNEIMPLANTACIØNDELAESTRATEGIAPARA#--Y3IX3IGMAATRAVÏSDELASDIFERENTESÉREASDELCENTRODEDESARROLLODE
CARGODELADEl
#).6%34!6 DEL)NSTITUTO0OLITÏCNICO.ACIONAL YOCHOA×OSDEEXPERIENCIACOMOARQUITECTODESOFTWARE
3OFTTEK ITESMMX7EBHTTPWWWJAVIERGSCOM
#ORREOELECTRØNICOJAVIERGS

 3%0 /#4 WWWSOFTWAREGURUCOMMX


"OUJQBUSØOTFPSJHJOBDPNPVOB
DPOUSBQBSUFBMUÏSNJOPQBUSØO 
BDV×BEPFOBSRVJUFDUVSBEF
TPGUXBSF QBSBEFmOJSMBTCVFOBT
QSÈDUJDBTEFQSPHSBNBDJØO EJTF×P
PHFTUJØOEFTJTUFNBT

TJTUFNB -PT SFTVMUBEPT TPO QSFEFDJCMFT MPT


BRVrMBDSrUJDBFTBMBGPSNBFORVFTF BM TJTUFNB  QPSRVF FOUSF UBOUP ²GBOUBT
DPOGPSNFMPTGMVKPTTFFOEVSFDFOZTPMJEJ FTDSJCF DBEB VOB EF MBT MrOFBT  EFTEF MB NB³ FODPOUSBSMPTFMFNFOUPTSFMFWBOUFT
GJDBO TFFTDSJCFDwEJHPZQBTBFMUJFNQP
 JOEFOUBDJwOIBTUBFMMFOHVBKFPMFOHVBKFT FTJNQPTJCMF
SgQJEBNFOUF TF WVFMWF JNQPTJCMF EPDV VUJMJ[BEPT Z TV JOUFSBDDJwO :B FO FM DPO
NFOUBSFMDwEJHPPFOUFOEFSTVBSRVJUFD UFYUPTQBHIFUUJ TJNF[DMBNPTNgTEFVO !NTI PATRONESDE!RQUITECTURA
UVSB MP TVGJDJFOUFNFOUF CJFO DPNP QBSB MFOHVBKFEFQSPHSBNBDJwOFOFMNJTNPBS "IPSB DPOTJEFSFNPT MBT NBMBT UnDOJDBT
IBDFSNFKPSBT DIJWP FMTQBHIFUUJFTNgTTBCSPTP-BSF QBSBEFGJOJSDPNQPOFOUFTZSFMBDJPOFTFO
DFUBDMgTJDBDPOMFOHVBKFTTDSJQUTEFMUJQP FMTJTUFNB FTEFDJS TVBSRVJUFDUVSB4JMPT
 5IF (PE 6O QSPHSBNB PNOJQSFTFOUF 1)1DPO)5.-ZTB[POBEPDPO+BWB4DSJQU  EFTBSSPMMBEPSFT UJFOFO VOB DPMFDDJwO EF
ZEFTDPOPDJEP"RVFMTJTUFNBEPOEFVOB ¡FTEFMJDJPTP FOUJnOEBTFVOFOPSNFQSP NBMBT DPTUVNCSFT EF DPEJGJDBDJwO BOUJ
TPMB DMBTF w NPEVMP  MB GVODJwO NBJO P CMFNB
 &M PSJHFO EFM TQBHIFUUJ FT SFHV QBUSPOFT
BTVBMDBODF MPTBSRVJUFDUPTOP
FRVJWBMFOUF
 IBDF UPEP "Tr RVF FM QSP MBSNFOUF VO QSPHSBNB DSFBEP QBSB IBDFS OPTRVFEBNPTBUSgT7FBNPT
HSBNB FT VO TPMJUBSJP Z |OJDP BSDIJWP EF VOBQFRVFvBEFNPTUSBDJwO RVFUFSNJOB 
NVDIrTJNBT MrOFBT &O DPOTFDVFODJB  UF FOVOEPTQPSUSFT USBCBKBOEPDPNPQSP 3FJOWFOUBSMBSVFEB4FSFGJFSFBSFJN
OFNPTVODwEJHPEFTPSHBOJ[BEPZGVFSUF EVDUPGJOBM QMFNFOUBS DPNQPOFOUFT RVF TF QVFEFO
NFOUFJOUFSEFQFOEFOEJFOUF DPOTFHVJS QSFGBCSJDBEPT EF BOUFNBOP  Z
%POEFFTUgFMQSPCMFNB CJFOQPEFNPTDJ IBDFSQPDPSFVTPFOFMDwEJHP&OCSFWFT
 (PMEFO )BNNFS 5BNCJnO DPOPDJEB UBSMPTJHVJFOUFDPNPFKFNQMPTEFM QBMBCSBTRVFSFSIBDFSUPEPVOPNJTNP
DPNPMBUnDOJDBEFMBCBSJUBNgHJDB&TVO UJFNQP EF NBOUFOJNJFOUP TF JOWJFSUF FO : IBCMBSrBNPT EF  1PDP OJWFM EF SFVTP
WJDJPSFMBDJPOBEPDPOBGFSSBSTFBVOQBSB FOUFOEFSBMTJTUFNBPSJHJOBM&MTQBHIFUUJ FOFMDwEJHP SFVTPEFVOQSPZFDUPBPUSP 
EJHNB  QBSB TPMVDJPOBS UPEPT MPT QSPCMF FT DBVTB EJSFDUB EFM TrOESPNF EFM QSPHSB DPO MP DVBM DBEB QSPZFDUP FTUg DPNFO
NBT RVF TF OPT QSFTFOUFO BM EFTBSSPMMBS NBEPS EFTFTQFSBEP ¡NFKPS SFFTDSJCJNPT [BOEP EFTEF DFSP  $POTUBOUFNFOUF TF
TJTUFNBT DPNPQPSFKFNQMP TJFNQSFRVF UPEPFMQSPHSBNB:PCWJBNFOUFFMSFVTP SFFTDSJCFO GSBHNFOUPT EF DwEJHP DPO MB
SFS VTBS FM NJTNP MFOHVBKF EF QSPHSBNB FTJNQPTJCMF NJTNB GVODJPOBMJEBE  $PO FM DPOTF
DJwO QBSB UPEPT MPT EFTBSSPMMPT  TFB P OP DVFOUF HBTUP JO|UJM EF NBOP EF PCSB Z
DPOWFOJFOUF &T FM DBTP EF FOBNPSBSOPT 1FSPTJQBSBDPMNP UFOFNPTTwMPVODIFG P UJFNQP FO SFJNQMFNFOUBS DPTBT  RVF ZB
EF /FU   EF +BWB  EF 1)1 &T JNQPSUBOUF FOFMDPOUFYUPVO²1SPHSBNBEPS4PMJUBSJP³ FTUBCBO IFDIBT  &M TPGUXBSF TF WVFMWF
DPNQSFOEFSRVFDBEBVOPUJFOFDBQBDJEB  2VJnOFSBFTFIPNCSFUSBTFMNPOJUPS 2VF JOOFDFTBSJBNFOUFNgTEFOTP
EFTZMJNJUBDJPOFTFOBQMJDBDJPOFTQBSUJDV OP FTUg EJTQPOJCMF QBSB FYQMJDBSOPT TV SF
MBSFT&ODPOTFDVFODJBTFUSBUBEF VOP FM DFUB 4JNQMFNFOUF TF UJFOFO QSPCMFNBT  -P BOUFSJPS  QPS MP SFHVMBS  B DBVTB EF
VTP PCTFTJWP EF VOB IFSSBNJFOUB  Z EPT  NVDIPTQSPCMFNBT QPDPDPOPDJNJFOUPEFMUSBCBKPZBFYJTUFO
VOBUFSRVFEBEEFMPTEFTBSSPMMBEPSFTQBSB UFQPSQBSUFEFMBSRVJUFDUP MPRVFDPOMMF
VTBS VO QBSBEJHNB EF TPMVDJwO FO UPEPT 'BOUBTNBT%FNBTJBEBTDMBTFTFOVO WBBCVTDBSTPMVDJPOFTQBSBQSPCMFNBTZB
MPT QSPHSBNBT -P DVBM DPOMMFWB PDBTJP QSPHSBNBPUBCMBTFOVOBCBTFEFEBUPT TPMVDJPOBEPT
OBMNFOUFBDPOTVNJSNVDIPNgTFTGVFS[P 7BSJBT DMBTFT P UBCMBT DPO NrOJNBT SFT
QBSBSFTPMWFSVOQSPCMFNB QPOTBCJMJEBEFT .VDIBT WFDFT TF VUJMJ[B $BTBSTFDPOFMEJBCMP$SFBSVOBEFQFO
QBSB EJTGSB[BS MB QSFTFODJB EFM BOUJQB EFODJBIBDJBVOGBCSJDBOUFRVFOPTQSPWFF
4QBHIFUUJ$PEF4FEJDFEFVOBQJF[B USwO 5IF (PE 4F DPMPDBO DMBTFT JO|UJ EFBMHVOBTPMVDJwO DPNQPOFOUFT
&MQSP
EFDwEJHPGVFOUFOPEPDVNFOUBEP EPOEF MFT  RVF EJTGSB[BO FM IFDIP RVF UPEP FM CMFNB FT JONJOFOUF  4F EFQFOEF DPN
DVBMRVJFS QFRVFvP NPWJNJFOUP DPOWVM TJTUFNBTFFODVFOUSBDPOTUSVJEPFOVOP  QMFUBNFOUFEFMPRVFFMWFOEFEPSIBHB
TJPOB MB FTUSVDUVSB DPNQMFUB EFM TJTUF PVOPTDVBOUPTBSDIJWPT NwEVMPTPDMB -BDBMJEBEEFMPTQSPEVDUPTEFMQSPWFFEPS
NB&OFYQSFTJwODPMPRVJBMDPEJGJDBSDPO TFT &TUF BOUJQBUSwO TVHJFSF VO NPEFMP OPTDPNQSPNFUFO&MWFOEFEPSOPTUJFOF
MBT MPT ²QJFT³ " EJGFSFODJB EFM FTUJMP EFBOgMJTJTZPEJTFvPJOFTUBCMFFMEJTF BHBSSBEPT $JUP DPNP FKFNQMP  FM DBTP EF
WPMDgO  EPOEF MB DSrUJDB FT B MB GPSNB FO vPOPDPJODJEFDPOMBJNQMFNFOUBDJwO Z VOBEFMBTVOJWFSTJEBEFTNgTJNQPSUBOUFT
RVF FM TJTUFNB DSFDF TF BOFYBO NwEV QPS FMMP FT JNQPTJCMF IBDFS FYUFOTJPOFT EFMQBrT DVZPEFTBSSPMMPDBTJDPNQMFUPEFM

WWWSOFTWAREGURUCOMMX 3%0 /#4 


 >@Ê1B71/A  6;42;62?Ì. 12 @<3AD.?2 

4JMPTEFTBSSPMMBEPSFT
UJFOFOVOBDPMFDDJØO
EFNBMBTDPTUVNCSFT
EFDPEJmDBDJØO
BOUJQBUSPOFT
MPT
BSRVJUFDUPTOPOPT
RVFEBNPTBUSÈT

TJTUFNB EF BENJOJTUSBDJwO FTDPMBS  FTUg PSJFOUBEB B DVU  QBTUF


 -B UnDOJDB $5&
SFBMJ[BEP TPCSF 1-42- FO 0SBDMF &MMPT DVCSF UVT FSSPSFT
 -B UnDOJDB EF NPSJS
OFDFTJUBOTFHVJSQBHBOEPMBTMJDFODJBTEF QMBOFBOEP  MB EF MB OBWBKB TVJ[B MB UnD
0SBDMF QBSB NBOUFOFSTF PQFSBOEP "|O OJDBEFMWJFKPZQPEFSPTP%VLFEF:PSL MB
DVBOEP MPT OVFWPT EFTBSSPMMPT MPT FTUnO UnDOJDBEFMBFTQPOKB FMTVQFSWJTPSQBSB
FMBCPSBOEP ZB FO PUSBT QMBUBGPSNBT +BWB OPJDP ZMBUnDOJDBEFMBQFMFB
Z 1I1  FOUSF PUSBT 5JFOFO DJODP BvPT EF
EFTBSSPMMPT FO 1-42-  RVF OP MPT EFKBO "MHVOPT EF FTUPT QBUSPOFT  TPO JODMVTP
EFKBSEFQBHBSMJDFODJBT/PFTRVF0SBDMF JSSJTPSJPT  FSSPSFT UBO DPNVOFT RVF TF TV
TFBNBMP4JOFNCBSHP QVFEFTFSDBSPFO QPOESrBOBEJFQPESrBDPNFUFSMPT ZTJOFN
FYUSFNPQBSBVOBVOJWFSTJEBEQ|CMJDB CBSHP SFGMFYJPOFNPT DVgOUPTEFOPTPUSPT 
FTUVEJBOUFT  QSPGFTJPOJTUBT  FT MB QSJNFSB
 4UPWFQJQF $PDJOBEP FO ²DBMJFOUF³ &T PQDJwO B MB RVF SFDVSSJNPT  )F EFTFBEP
MBGPSNBCSFWFEFSFGFSJSTFBMBDSFBDJwOEF TwMP DPNFOUBSMPT  OP PCTUBOUF  QBSB DBEB
JTMBTBVUPNBUJ[BEBTEFOUSPEFMBNJTNBFN VOP EF FTUPT  FYJTUF VO BOgMJTJT QSPGVO
QSFTB DBEB EFQBSUBNFOUP DSFB TV QSPQJP EFQSPHSBNBEPSFT³$POTJTUFFOMBDSFFODJB EP Z NJOVDJPTP EF TVT DBVTBT  TrOUPNBT 
TVCEFQBSUBNFOUP EF TJTUFNBT
 ²*TMBT³ JO EFRVFBTJHOBSNgTQFSTPOBMBVOQSPZFDUP  DPOTFDVFODJBT Z USBUBNJFOUP $POPDFS MPT
EFQFOEJFOUFT ZFODPOGMJDUPVOBTDPOPUSBT BDPUBSgFMUJFNQPEFFOUSFHB3FHVMBSNFOUF BOUJQBUSPOFTFT|UJMQBSBSFGBCSJDBS NJHSBS 
$BEBJTMBEFTBSSPMMBMBQBSUFEFMTJTUFNBRVF DPNPVOBGPSNBEFTFTQFSBEBEFJOUFOUBSDP BDUVBMJ[BSPSFBMJ[BSSFJOHFOJFSrB
OFDFTJUB QBSB TBUJTGBDFS TVT SFRVFSJNJFO SSFHJS SFUSBTP EFM QSPZFDUP  -MFHBVO QVOUP
UPT  TJO QSFPDVQBSTF QPS FM SFTUP OP FYJTUF EPOEFFOUSFNgTQFSTPOBMTFBTJHOF NgTTF $POFMBWBODFUBOWFSUJHJOPTPEFMBUFDOP
VO QMBO P FKF HVrB
 FM FTDFOBSJP SFTVMUBOUF SFUSBTBFMQSPZFDUP MPHrB JOGPSNgUJDB  SFTVMUB JOUFSFTBOUF DP
JNQMJDBVOBQPCSFPOVMBJOUFSPQFSBCJMJEBE  NFOUBS RVF MBT NFKPSFT QSgDUJDBT EF VOB
PCWJBNFOUF OPFYJTUFFMSFVTPZ DPOTFDVFO  1SPKFDU .JTTNBOBHFNFOU -B KFGB P FM nQPDB  QVFEFO FWPMVDJPOBS Z DPOWFSUJSTF
UFNFOUF TF  JODSFNFOUBO DPTUPT  $POUSBSJP KFGF RVF OP TBCFO DPPSEJOBS &M QSPZFDUP TF FO BOUJQBUSPOFT FO FM MVTUSP TJHVJFOUF
BMPRVFTFQPESrBTVQPOFS DBEBWF[FTNgT EFTDVJEBZOPTFNPOJUPSFBEFNBOFSBBEF )PZ ErB  QPEFNPT DJUBS  QPS FKFNQMP  MB
DPN|OFTUFUJQPEFBDDJPOFT EBEBMBQSFNV DVBEB  FT NVZ EJGrDJM EF EFUFDUBS FO FUBQBT QSPHSBNBDJwO FTUSVDUVSBEB WB FO DBNJ
SB EF EFQBSUBNFOUPT FTQFDrGJDPT EFOUSP EF JOJDJBMFT  QFSP SFQFOUJOBNFOUF FNFSHF EF OP EF TFSMP FO DJFSUP DPOUFYUP ²TPMVDJwO
VOBNBDSPFNQSFTB QPSDPOUBSDPOBDDFTPB HPMQF Z TVFMF WPMUFBS EF DBCF[B MB TJUVBDJwO TFODJMMBZSgQJEBDPODPOTFDVFODJBTOFHB
5FDOPMPHrBTEF*OGPSNBDJwO EFM QSPZFDUP 4F NBOJGJFTUB DPO SFUSBTPT FO UJWBTBMBSHPQMB[P³
MBTGFDIBTEFFOUSFHBZPgSFBTJODPNQMFUBT
)BCMBNPTEFVOFTDFOBSJPEPOEFQSFWBMF
DF6OBGBMUBEFFTUSBUFHJBUFDOPMwHJDB  $PSODPC -PT FNQMFBEPT TF PCTUBDV -FDUVSBTSFDPNFOEBEBT
EF MB FNQSFTB   'BMUB EF FTUgOEBSFT MJ[BOVOPTBPUSPT1FSTPOBTDPOGMJDUJWBT +&&"OUJ1BUUFSOT#JMM%VEOFZ 
 'BMUB EF QFSGJM EF TJTUFNB  'BMUB EF PEJGrDJMFTEFUSBUBSRVFGPSNBOQBSUFEFM 4UFQIFO"TCVSZ +PTFQI,SP[BL BOE
JODFOUJWPT QBSB MB DPPQFSBDJwO FO FM EF FRVJQPEFEFTBSSPMMP EFTWrBOVPCTUBDV ,FWJO8JUULPQG&E+PIO8JMFZ
TBSSPMMP EF TJTUFNBT  'BMUB EF DPNVOJ MJ[BO FM QSPDFTP EF QSPEVDDJwO  QPSRVF 4POT *4#/
DBDJwO'BMUBEFDPOPDJNJFOUPTPCSFMPT USBOTGJFSFO TVT QSPCMFNBT QFSTPOBMFT P
FTUgOEBSFTUFDOPMwHJDPT'BMUBEFJOUFS EJGFSFODJBT DPOPUSPTNJFNCSPTEFMFRVJ "OUJQBUUFSOT3FGBDUPSJOH4PGUXBSF 
GBDFTQBSBMBJOUFHSBDJwOEFTJTUFNBT QPBMQSPZFDUP#BKPFTUBDJSDVOTUBODJB FM "SDIJUFDUVSFT BOE1SPKFDUTJO$SJTJT
QSPZFDUP OP TF EFTBSSPMMB DPSSFDUBNFOUF 8JMMJBN+#SPXO&E+PIO8JMFZ
!NTI PATRONES DE !DMINISTRA BVORVFFMQFSTPOBMFTCVFOP 4POT *4#/
CIØNDE0ROYECTO
'JOBMNFOUF MPTBENJOJTUSBEPSFTUBNQPDPFT #ONCLUSIØN "OUJQBUUFSOTJO1SPKFDU.BOB
UgOFYFOUPTEFTFHVJSDJFSUPTBOUJQBUSPOFT &MMJTUBEPEFBOUJQBUSPOFTFTNVZBNQMJP  HFNFOU8JMMJBN+#SPXO&E
DBTJUBOUPDPNPFMEFQBUSPOFT3FDPNJFO +PIO8JMFZ4POT *4#/
5IF.ZUIJDBM.POUI.BO.FKPSDPOPDJ EPBMFDUPSMBDPOTVMUBBEJDJPOBMEFMPTTJ 
EPDPNPFOFMFOUPSOPDPNPFM²T|QFSFRVJQP HVJFOUFT-BUnDOJDB10$1 QSPHSBNBDJwO

 3%0 /#4 WWWSOFTWAREGURUCOMMX


s
ana

e
Villagr

d
o
el

o
Por Jo

l
De
e
sarro l
oj u e g
V i
¿Po
d
r D ó nde Empe
zar?

han
o los vid
cre
os, y siem
alme
eojueg ar uno. Fin spués de
; de
gustad roceso para esarrollarlos er proyecto é
bía
pre hante,

,
me el p rad prim enc
iño siempre de cómo eso de aprenderfecto como ntonces comscasa;
esde n curiosidad e era tiemp eojuego pe mpiezo?” E s era muy e guaje
D tenidoos, decidí qunutos un vidpor dónde euel entonce r: “¿Qué len ¿qué
añ mi ¿Y aq ui al?,
hace 6 ar por unos a realidad: “rnet, que en ar de disminor en especi n los jue-
idealiz ue volver a l ión en Inte taban en lugn compilad ómo se hace tenía.
tuve q ar informac das aumen ¿se usa algú render?, ¿c eguntas que
a busc a que mis duse utiliza?, é necesito aps muchas pr
parecí gramación juego?, ¿qu lgunas de la
de protura tiene unlas?” Eran a
estruc ra las conso
gos pa

24 ENE-FEB 2007 www.softwareguru.com.mx


Muy rápido me di cuenta de 3 cosas: la pri- idea para un proyecto final, solo dicen en módulos clave, junto con otros, forman de
mera es que no existía algún libro ni tutorial tono despectivo “¿otro jueguito?” manera colectiva lo que se llama un Game
que enseñe todo lo que se necesita saber; la Engine, un producto que ofrece todas estas
segunda es que toda la información existen- Tuve la oportunidad de participar en el Festi- características, y hay quienes las usan para
te estaba en inglés (y eso no ha cambiado); val de Desarrollo de Videojuegos Creanimax ahorrarse algo de trabajo al programar. De
y la tercera, es que ni siquiera ahí me podría 2006, y me di cuenta que por fin se están hecho, los estudios dedicados a los vide-
escapar de las matemáticas –la dirección en haciendo esfuerzos para entrarle a esta in- ojuegos, utilizan Game Engines comerciales
la que se mueve un objeto, determinar si está dustria. Me di cuenta de que hay algunas o desarrolladas por ellos mismos. Utilizar un
dentro del rango de visión de la cámara vir- compañías interesadas en desarrollar jue- Game Engine cuando se está iniciando en la
tual, determinar si un vehículo chocó contra gos, pero falta apoyo y habilidades técnicas. programación de videojuegos, podría ser una
un edificio; todo eso requiere matemáticas. También me enteré de un par de universida- limitante hasta cierto punto, porque primero
des en Guadalajara que están incorporando se tendría que estudiar la documentación de
Desafortunadamente, en México todavía no una carrera de animación y arte digital a su ésta para saber utilizarla y si no se tienen los
existe una industria de desarrollo de video- oferta académica. Hay muchas personas in- fundamentos teóricos suficientes, cuando se
juegos como tal, y es una lástima, porque es volucradas ya en el modelado y animación quiera modificar una parte del engine para
una industria de billones de dólares. Ya exis- 3D –y son buenos–. Entonces no vamos tan adaptarla al juego deseado, será mucho más
ten carreras de desarrollo de videojuegos en mal, sólo falta ponernos las pilas, organizar- difícil. Existe una gran variedad de engines,
universidades internacionales, pero en mu- nos y darle importancia también a la parte de desde algunas gratuitas y/o, open source
chas universidades de nuestro país ni siquie- la programación. como Irrlicht, hasta otras comerciales como
ra se toma en serio la materia de gráficas por el Unreal Engine 3, cuyo licenciamiento pue-
computadora, que es la base de todo. Así que el objetivo de este artículo, es tra- de rebasar los cien mil dólares.
tar de dar una pequeña orientación para
Esto en gran parte se debe a falta de infor- aquellos que desean empezar a desarrollar Matemáticas. Es deseable tener cono-
mación, muchas personas creen que es lo videojuegos y tengan preguntas parecidas cimientos generales de álgebra lineal y
mismo jugarlos que desarrollarlos. Un juego a las que tenía yo cuando empecé. trigonometría, sobre todo para el área de
2D puede ser fácil, pero uno 3D es algo muy programación de gráficas. Si no se tie-
diferente y se necesitan muchas personas ¿Qué se necesita saber para nen estos conocimientos, se tendrán que
trabajando en conjunto para crearlo. No es desarrollar videojuegos? aprender al mismo tiempo que se hace con
que una sola persona no pueda, pero se tar- Programación. Lo primero que se necesita es la teoría y programación de gráficas.
daría mucho más tiempo. Un juego comer- saber programar en algún lenguaje orienta-
cial tarda entre 1.5 y 3 años para ser desa- do a objetos, yo en lo personal uso C++, pero ¿Qué se necesita aprender para
rrollado, con un equipo de 25 personas en también se puede utilizar C#, Delphi, Java, desarrollar videojuegos?
promedio. Un juego 3D generalmente tiene etcétera. En cuanto a compiladores, no hay Esta pregunta no es fácil de contestar, so-
programación orientada a objetos, cálculos gran diferencia, se pueden utilizar el Visual bre todo porque existen diferentes áreas
trigonométricos y de álgebra lineal que se C++ 2005 Express Edition de Microsoft o el dentro de la programación de videojue-
ejecutan durante todo el juego, estructuras C++ de Borland. gos: gráficas, redes, inteligencia artificial,
de datos especializadas, y también puede sonido, lógica principal.
existir una red neuronal para el manejo de Game Engines. Los juegos generalmente El área en el que está centrado este artículo
la inteligencia artificial, así como algo de tienen módulos clave para manejar tareas es en la de gráficas, y para esta área se nece-
teoría de autómatas finitos y teoría de gra- como mostrar gráficas, manejar recursos, sitan aprender básicamente dos cosas:
fos aplicada, entre muchas otras cosas. Y interpretar y ejecutar scripts, reproducir
aún así, hay maestros de universidades que efectos de sonido, manejar la inteligencia •Teoría de gráficas: involucra aprender las
cuando se les presenta un juego como una artificial, manejar el input del usuario. Estos bases de los sistemas de coordenadas 2D

www.softwareguru.com.mx ENE-FEB 2007 25


la libreria (OpenGL32.lib) y los archivos de
encabezado (gl.h, glu.h, glaux.h) de OpenGL.
Así mismo, necesitamos incluir los archivos
de encabezado en los archivos de código
fuente donde se usen funciones de OpenGL.

¿Cómo puedo programar


videojuegos para Xbox360,
PlayStation 3, GameCube?
En el caso de Xbox360, para desa-
rrollar un juego se necesita obtener
un “Kit de Desarrollo”, que consta de
una consola Xbox360 especial para
desarrollo, herramientas, SDKs, y do-
cumentación. El desarrollo se hace
en una PC con Visual Studio o Co-
deWarrior por ejemplo. Dicha PC está
conectada a la consola especial de de-
sarrollo, generalmente por ethernet.
Una vez compilado el código, éste se
pasa a la consola; la forma de cómo
hacerlo, depende de cada sistema. En
Xbox, se cuenta con unos plugins en
Visual Studio que copian los datos de
y 3D, las bases de los objetos 3D que son ¿Qué es OpenGL? la PC al disco duro del Xbox, y después
representados como modelos poligonales OpenGL es una API para el manejo de grá- el Xbox monta el directorio que se co-
(vértices, normales, caras, etcétera); las ficas exclusivamente, no tiene otro tipo de pió, como si fuera el disco duro inter-
báses de la arquitectura gráfica (diferentes funciones utilizadas en los juegos. OpenGL no, para empezar a correr el juego.
tipos de transformaciones y proyecciones); es multiplataforma, lo que significa que el
las matemáticas involucradas (vectores, mismo código puede correr en Windows,
planos, matrices y todas sus operaciones Mac, X Window, con mínimas modificacio- Para obtener el kit de desarrollo, se nece-
relacionadas). Diferentes modelos de ilumi- nes. Esta es una de las ventajas que, puede sita ser un desarrollador registrado con
nación, mapeado de texturas, entre otras co- decirse, tiene con respecto a Direct3D, el Microsoft, y los kits son muy caros. Aun-
sas. Es necesario tener estos conocimientos, cual es exclusivamente para Windows. que existe el XNA Game Studio Express,
ya que se aplican a las APIs para programa- éste, no es suficiente para hacer juegos
ción gráfica existentes y son necesarios para Dado que OpenGL es multiplataforma, no inclu- comerciales, en realidad, es un producto
explotar todo su potencial. ye comandos para manejo de ventanas, porque dirigido más para estudiantes y hobbyists.
estos son diferentes en cada caso. Dependien- Además, para ser aceptado como desarro-
•Una API para programación de gráficas: que do de la plataforma, hay métodos para crear llador, se debe seguir un proceso que está
es básicamente una librería que usamos en una ventana con soporte para OpenGL. Para sujeto a aceptación por parte de Microsoft.
nuestro código para poder mandar gráficas a agilizar o hacer más fácil el manejo de ventanas. Se puede encontrar más información en:
la pantalla, sin tener que accesar al hardware Ya existen algunas librerías que se utilizan junto www.xbox.com/en-us/dev/ default.htm
directamente (en su lugar, los drivers se en- con OpenGL, por ejemplo: SDL y GLUT.
cargan de procesar las peticiones hechas por Otros fabricantes de consolas piden requisitos
las APIs). Las dos APIs de gráficas más usa- OpenGL, a diferencia de DirectX, no se baja adicionales. Por ejemplo, Nintendo pide que
das son OpenGL y Direct3D, y dado que los como un paquete, de algún sitio de Internet, se cuente con respaldo financiero de algún
resultados que se pueden obtener con ellas, ya que es implementado por los drivers. To- distribuidor de juegos internacional. Así que,
son, hasta cierto punto similares, la elección das las máquinas con Windows 95 o posterior, en general, para desarrollar un videojuego
de una u otra es cuestión personal. incluyen los drivers de OpenGL 1.1, aunque la para consolas, se necesita tener una compañía
versión más reciente de OpenGL es 2.0 –Win- establecida con presupuesto suficiente.
¿Qué es DirectX? dows Vista tendrá los drivers de OpenGL 1.4–.
DirectX es una serie de APIs de Microsoft para Entonces, la versión de OpenGL que se tenga, Si quieres aprender cómo es el desarrollo
manejo de gráficas, input del usuario, soni- depende de dos cosas: la primera es nuestra para consolas, una muy recomendada para
do, video, y funciones de redes que se pue- tarjeta de video –no todas las tarjetas sopor- empezar sería Gameboy Advance (GBA), ya
den usar en aplicaciones de multimedia en tan las últimas versiones de OpenGL –, y la que es de las menos complejas. En el sitio
general, no solamente juegos. En versiones segunda, es actualizar los drivers de nuestra www.jharbour.com/gameboy/default.aspx
anteriores de DirectX, las gráficas 2D y 3D tarjeta de video para tener la versión más re- se encuentra gratuitamente el ebook “Pro-
se manejaban con las APIs DirectDraw y Di- ciente que soporte la tarjeta. gramming The Nintendo Game Boy Advan-
rect3D, respectivamente. A partir de DirectX ce”, que nunca se publicó como libro debido
8, éstas se fusionaron en DirectX Graphics, Para utilizar OpenGL, es necesario configurar a cuestiones legales. En éste, se encuentra
pero es mejor conocida como Direct3D. nuestro compilador para que pueda encontrar información de cómo ejecutar nuestros pro-

26 ENE-FEB 2007 www.softwareguru.com.mx


Tema Tìtulo Autor
efectos visuales avanzados que vemos en
Matemáticas/Física Mathematics for 3d Game Eric Lengyel los juegos de hoy en día, son implementa-
Programming and Computer Graphics dos por medio de Shaders.
OpenGL OpenGL Programming Guide: OpenGL Architecture
The Official Guide to Learning OpenGL Review Board Hace algunos años, los Shaders eran escri-
tos en lenguaje ensamblador, por tal razón
Beginning OpenGL Game Programming. Dave Astle y no eran tan populares. Actualmente la mayo-
Kevin Hawkins ría de los Shaders, son escritos en lenguajes
de “alto nivel”, muy parecidos a C, los tres
More OpenGL Game Programming. Dave Astle más usados son: GLSL (específico de Open-
GL); HLSL (específico de DirectX) y Cg (pue-
Gráficas 3D Interactive Computer Graphics: Edward Angel
A Top-Down Approach using OpenGL. de correr ya sea en OpenGL o DirectX).

Real-Time Rendering Tomas Akenine-Moller Las tarjetas gráficas con arquitectura pro-
y Eric Haines gramable tienen dos núcleos o procesadores
programables, uno se ejecuta a nivel de ob-
Desarrollo de Juegos Game Programming Gems. Mark DeLoura jetos y otro se ejecuta a nivel de pixeles. Los
(Serie de 6 libros hasta el momento). (Editor)
Shaders que se pueden ejecutar en ellos, se
Core Techniques and Algorithms in Daniel Sanchez-Crespo conocen como Vertex Shaders y Pixel Sha-
Game Programming ders respectivamente (los últimos también
se conocen como Fragment Shaders).
Inteligencia Artificial AI Game Programming Wisdom 3 Steve Rabin
Las tarjetas gráficas con arquitectura pro-
Modelado Modeling a Character in 3DS Max Paul Steed gramable, también tienen soporte para la ar-
quitectura fija, y es decisión de la aplicación,
utilizar una u otra arquitectura o incluso uti-
pios juegos de GBA en una PC, usando un gun libro que enseñe todo lo relacionado al lizar las dos. Es por eso que muchas veces,
emulador, así como información de cómo desarrollo de videojuegos, así que los cate- aunque tengamos un procesador avanzado,
correrlos en una consola GBAreal. goricé en 6 grupos principales, y por razones si no tenemos una tarjeta gráfica con arqui-
de espacio, sólo menciono unos cuantos de tectura programable como lo requieren algu-
Referencias en línea cada categoría. nos juegos, no podremos ejecutarlos.
Algunos links con mucha información son
los siguientes: ¿Qué tarjeta gráfica me puede Tips generales
www.opengl.org – El sitio oficial de OpenGL, servir para empezar? •Es más fácil empezar por 2D, y algunas co-
tiene documentación y foros de OpenGL para El mercado de las tarjetas gráficas es domina- sas de 2D se aplican a 3D también.
principiantes y avanzados. do por dos compañías, ATI y NVIDIA. Las dos •Es más sencillo aprender OpenGL que Di-
ofrecen tarjetas gráficas de muy buena calidad rectX (en mi opinión).
msdn.microsoft.com/library/en-us/directx9_ y de una gran variedad de precios, dependien- •Jugar muchos juegos. Es la mejor manera
c/directx_sdk.asp – Información de DirectX. do de la generación de la tarjeta. Muchas ve- de sacar ideas para juegos nuevos.
ces, al ver las cajas de las tarjetas pueden sur- •Ayudar a otros. También se aprende mucho
www.gamedev.net – Un sitio con mucha docu- gir más preguntas, ya que la información que cuando se enseña.
mentación de desarrollo de juegos en general y tienen, puede parecer extraña. Por ejemplo, es •Tratar de hacer un clon de algún juego 2D
foros para los diferentes aspectos del desarro- importante entender lo que son los Shaders. sencillo (Tetris, Pong) y después mejorarlo.
llo. •Para un juego 3D, es más rápido desarro-
Shaders: hasta hace algunos años, se decía llarlo en equipo.
www.gamasutra.com – Un sitio donde se pue- que las tarjetas gráficas tenían una arqui-
den encontrar las más recientes noticias de tectura fija (Fixed-Function Pipeline) ya que
la industria de los videojuegos, pero también la información enviada desde la aplicación,
cuenta con algo de información técnica. siempre pasaba por las mismas operaciones
dentro de la tarjeta gráfica. Esto ha cambia-
www.flipcode.com – Un sitio que ya no se man- do, y actualmente las tarjetas gráficas tienen
tiene por sus creadores, pero tiene una extensa una arquitectura programable. Conclusión
colección de artículos, todavía en línea, relacio- El tema de desarrollo de videojuegos
nados al desarrollo de videojuegos. Una arquitectura programable significa que es muy extenso, pero espero haber
desde la aplicación, se le puede indicar a la respondido las preguntas básicas
¿Qué libros me pueden servir? tarjeta gráfica que ejecute ciertos programas acerca de cómo empezar. El siguiente
La tabla en la parte superior de esta página pequeños (llamados Shaders) ella misma, li- artículo tiene información mas espe-
lista algunos libros que considero buenos berando al CPU completamente de ejecutar cífica en cuanto a la estructura de un
y que son útiles, independientemente del esas funciones. Es por esto que las tarjetas juego. Si dejé alguna pregunta sin
nivel de conocimiento de programación de gráficas actuales, cuentan con su propia responder, me pueden contactar en
videojuegos que se tenga. Como ya lo había memoria y procesador, conocido como GPU joel.villagrana@gmail.com y trataré
mencionado, hasta el momento, no sé de al- (Graphics Processing Unit). Muchos de los de responder lo más pronto posible.

www.softwareguru.com.mx ENE-FEB 2007 27


Open Source
al Rescate
Por Francisco Castrillo

E l objetivo principal de este artículo es pre-


sentar un panorama sobre las herramientas
de software libre u open source, relacionadas
•Diseño y arquitectura.
•Desarrollo y pruebas unitarias.
•Estabilización y pruebas de estrés.
con la generación de un ambiente de desarro- •En vivo (ya en producción).
llo integral, que cubra las diferentes etapas in- •Carga real, uso real, ambiente real ...
volucradas en la creación de software. •Detección de errores, cambios, mejoras ...

Aunque la mayor parte de las herramientas ¿Cómo seleccionar las mejores herramientas
mencionadas son ampliamente utilizadas hoy para cada una de estas etapas? Las revisiones
en día, otras no cuentan con el mismo nivel de de producto son útiles, pero no son la última pa-
difusión y adopción. Sin embargo, la intención labra, porque cada situación es única (como los
es destacar el impacto que tienen todas ellas proyectos), y los procesos de adopción en cada
en relación con el desarrollo colaborativo. Vale organización son muy variados. Algunos de
la pena resaltar que, estas herramientas no los aspectos a considerar dentro de esta gama
sólo son exclusivas para el desarrollo de pro- son: metodología y procesos; presupuesto para
yectos open source, sino que se pueden utili- hardware-software, infraestructura actual; ta-
zar para cualquier tipo de proyecto. maño de proyectos y equipos de trabajo.

Un vistazo a las diferentes A pesar de estas limitantes para la selección


necesidades de herramientas, lo que está claro, es que
Desde un punto de vista muy simplista y, sin debemos seleccionar aquéllas que nos ayu-
estar apegado a alguna metodología especí- den a producir, conservar y administrar todo
fica, podemos identificar las siguientes eta- el material generado en los proyectos, así
pas en el ciclo de vida de un proyecto: como los que promuevan la estandarización
•Planeación y costeo. en el uso de las mismas.

www.softwareguru.com.mx MAR-ABR 2007 21


Herramientas de colaboración lladores pueden rastrear defectos o bugs; asociación de shortcuts, etcétera).
Comencemos por mencionar algunas he- los usuarios solicitan soporte, asignación de •Extensible. Un editor no debe pasar de
rramientas orientadas a coordinar y facili- tareas de codificación y/o corrección, con- moda si surge un nuevo lenguaje o formato
tar la colaboración entre los miembros de trol de actualizaciones o parches y discusión de texto.
un equipo de trabajo. Aquí tenemos las si- sobre posibles mejoras. •Programable. Ya sea mediante la utilización
guientes categorías: de macros u otra funcionalidad equivalente,
Discusiones técnicas se deben poder realizar tareas complejas.
Control de versiones En este rubro se pueden utilizar una diver-
El control de versiones es uno de los pilares sidad de mecanismos que promuevan el en- Entre los editores open source más popula-
de un buen desarrollo de software. Usado de tendimiento técnico del proyecto, así como res encontramos a Emacs, Xemacs y Judit,
forma adecuada, proporciona una bitácora la facilidad de dejar evidencia escrita del por mencionar algunos.
de todos los cambios realizados a la docu- por qué se tomaron ciertas decisiones a lo
mentación y al código fuente, siendo así una largo del proyecto. Dentro de estas posibi- A pesar de la sencilla interfaz gráfica que
gran ayuda para la corrección de bugs. Una lidades nos encontramos los sitios web por presenta, Emacs es uno de los editores más
recomendación adicional es que todos los proyecto, los foros de discusión, las listas de potentes que he conocido. Algunas de sus
artefactos de los proyectos (código fuente, correo, HowTo’s y FAQ’s. características son:
contenido estático, scripts para builds, do- •Ampliamente configurable y programable a
cumentación de análisis y diseño, material En lo personal, me gusta la utilización de través de Lisp.
de cursos, acuerdos con el cliente, etcétera) una lista de correo por proyecto, ya que es •Ligero: no se requiere mucho espacio de
sea administrado con una herramienta de tan accesible y cotidiano como el correo memoria para su instalación y ejecución.
control de versiones. electrónico, con la gran ventaja de dejar •Utiliza atajos o shortcuts. A pesar de que
un histórico de las discusiones en web. es un poco difícil aprenderse los atajos, una
Hoy en día existen dos grandes tecnologías Una de las opciones más utilizadas para vez que se tienen dominados son extrema-
para el control de versiones: CVS y Subver- generar estas listas de correo es Mail- damente útiles.
sion; la primera de ellas es prácticamente de Man, que ofrece una interfaz web para •Funcionalidad robusta y de gran diversidad:
adopción universal; la segunda, cuenta con utilizar listas de correo electrónico, diver- búsquedas, ejecución de comandos, ftp, so-
algunas mejoras de implementación que la sas opciones de entrega y suscripción a porte para múltiples buffers, highlighting,
colocan como el sucesor natural de CVS. En- las listas. Otra alternativa de más reciente indentación automática; soporta diversos
tre las características comunes están: aparición son los grupos de Google, que modos de edición, juegos, calendario, con-
•Repositorio central accesible vía Internet. además de proporcionar la funcionalidad trol de versiones, mail, etcétera.
•Resolución de conflictos vía “merging”, de listas de correo, permite adjuntar ar-
en lugar del concepto de “locking”. chivos y crear páginas (tipo Wiki) desde la Automatización de tareas de compilación y
•Gran diversidad de clientes multiplatafor- misma interfaz web. despliegue (build systems)
ma para acceder a los repositorios. El estándar de facto para los proyectos en
Herramientas de desarrollo Java, es Ant. Para quienes están familiari-
Entre las principales diferencias a nivel En cuanto a las herramientas de desa- zados con Unix, Ant es el equivalente al co-
conceptual (no de implementación), está el rrollo se refiere, existen una infinidad mando “make”, con la diferencia de que Ant
reemplazo de etiquetas (tags) y ramas (bran- de posibilidades para categorizarlas. Sin utiliza archivos XML en lugar de makefiles.
ches) de CVS por simple copiado y renombra- embargo, me enfocaré en esta ocasión, a En cada archivo XML se describen los pasos
do de archivos y directorios en Subversion. las más apegadas a las etapas de cons- y dependencias para ejecutar cada tipo de
trucción o implementación. tarea: compilación, empaquetado, desplie-
Issue tracking gue en servidores, etcétera. Las tareas se
Utilizado para manejar las listas de pendien- Editores de texto invocan a través de línea de comandos, o
tes a resolver y las solicitudes de mejora. Es Si consideramos que las herramientas son directamente desde un IDE.
indispensable contar con visibilidad de los una extensión de nuestras manos, esto apli-
asuntos por resolver, así como un mecanis- ca mejor que en ningún otro caso para los Ant es muy fácil de extender e incorporar
mo automatizado de asignación de tareas y editores de texto. Lo ideal es conocer un tareas diversas como envío de correos
notificación de alertas. Toda esta funciona- editor lo mejor posible y utilizarlo para cual- electrónicos, verificación de estándares
lidad la provee una herramienta como Bug- quier tarea de edición: código, documenta- de codificación (CheckStyle), integración
zilla, la cual fue originalmente desarrollada ción, scripts, notas, entre otras. de control de versiones, pruebas unitarias
para atender las necesidades del proyecto (JUnit), automatizar la ejecución de tareas
Mozilla, y ahora se ha convertido en la he- Las características esenciales que debe te- en servidores, etcétera.
rramienta por excelencia para manejo de ner un editor son:
issues. Los usos que se le pueden dar a la •Configurable. Todo debe poderse adaptar a Con el uso extensivo que se ha hecho de Ant,
herramienta son muy variados: los desarro- las preferencias del usuario (fonts, colores, surgió Maven, cuyo uso es menos generali-

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


zado. Maven agrupa las “mejores prácticas” en la generación de cierto tipo de proyectos, de texto. De cualquier forma, no olvidemos
y asume cierta estructura de directorios pero que al momento de quererlas integrar que las herramientas de programación de-
con el fin de estandarizar tareas. Adicional- con otro tipo de tecnologías o herramientas, ben ayudar a:
mente, provee una estructura que permite empiezan a generar problemas. •Minimizar costos de desarrollo.
declarar las dependencias complejas entre •Estabilidad. Algunos IDEs tienden a de- •Automatizar procesos.
librerías de diferentes proyectos. teriorar su funcionalidad al momento de •Reducir errores.
ser utilizados en proyectos grandes con
En lo personal, me gusta más la flexibilidad muchos componentes. Para decidir si es conveniente o no utilizar
que provee Ant, ya que cuento con una in- •Documentación. Es conveniente revisar si una herramienta de desarrollo, debemos
fraestructura de muchas plantillas de pro- existe buena documentación y soporte so- preguntarnos si ésta nos ayuda o no a cum-
yectos diversos que me dan un buen punto bre el funcionamiento del IDE. plir con estos objetivo.
de partida para cualquier nuevo proyecto. •Perfil del desarrollador. Algunas caracte-
Sin embargo, creo que Maven puede ser rísticas de los IDEs pueden ser útiles para
una buena opción para quienes no cuen- unos y un estorbo para otros. De nada sirve
ten con dicha infraestructura, o bien, para tener asistentes para tareas que podemos
aquellos casos en que las dependencias realizar de mejor manera utilizando otro tipo Conclusión
entre proyectos o componentes es bastante de herramientas, metodologías, etcétera. Independientemente de la selección de
significativa. herramientas para generar nuestro en-
Hablando principalmente de desarrollos torno de desarrollo colaborativo, con-
Entornos gráficos de desarrollo (IDE) en Java, al día de hoy destacan dos op- viene tener muy presente dos cosas:
Los IDE’s son herramientas visuales que in- ciones como alternativas open source: 1. Las herramientas de colaboración
tegran muchas de las características antes Eclipse y NetBeans. En cuanto a la filosofía no son un sustituto de la comunica-
mencionadas (control de versiones, build que promueven con su arquitectura, am- ción directa con los otros miembros
systems, edición), y otras más avanzadas bos fueron implementados alrededor de del equipo de trabajo, también es
(modelado UML, construcción de interfaces un pequeño núcleo con todas sus carac- importante establecer las “reglas de
gráficas, debugging, instalación en servido- terísticas implementadas como plug-ins. uso” de las herramientas para facili-
res de aplicaciones, refactoring) que no cu- Ambos sirven como plataforma base para tar su adopción
brimos en este artículo. otras herramientas de valor agregado que 2. En cuanto a las herramientas de de-
proveen las empresas que fundaron a es- sarrollo, yo considero de mayor valor
La tarea de elegir un IDE es verdadera- tos proyectos. contar con un “esquema estándar” de
mente difícil. Cada una de las opciones proyecto, que funcione con cualquier
presenta ventajas y desventajas. Sin em- Por ejemplo: en el caso de NetBeans, éste herramienta de desarrollo, en lugar de
bargo, podemos tomar en cuenta algunas sirve de base para el Java Studio Creator y “casarme” con alguna en particular.
consideraciones al momento de hacer Java Studio Enterprise, ambas herramientas
esta elección: de Sun Microsystems. La primera está diri-
•Naturaleza del proyecto a realizar. Es im- gida a desarrolladores de Visual Basic que
portante considerar las características del buscan hacer el salto a la plataforma Java; Referencias
proyecto a desarrollar para así, poder delimi- mientras que la segunda, está más dirigida a •SourceForge - sourceforge.net
tar las necesidades que se deben cubrir. Una desarrollo de aplicaciones corporativas. •CVS - www.nongnu.org/cvs
vez que se tiene un panorama del proyecto •Subversion - subversion.tigris.org
y sus requerimientos, podemos buscar un De forma similar, en el caso de Eclip- •Bugzilla - www.bugzilla.org
apoyo en los IDEs para que faciliten algunas se, existen diversos productos de IBM •Google Groups - groups.google.com
de las tareas más laboriosas. construidos sobre esa plataforma, es- •Emacs - www.gnu.org/software/emacs
•Hardware disponible. Aunque a veces este pecialmente de las líneas de Rational y •Jakarta Ant - apache.ant.org
punto se pasa por alto, no debemos olvidar Websphere. Tal es el caso del WebSphere •CheckStyle - checkstyle.sourceforge.net
que generalmente los ambientes de desa- Studio Application Developer. •JUnit - www.junit.org
rrollo requieren de una capacidad mínima •Maven - maven.apache.org
para que funcionen de manera óptima. A pesar de que la opción de utilizar un IDE •MailMan - www.list.org
•Flexibilidad de la herramienta. Existen he- puede ser muy tentadora, en algunas oca- •Netbeans - www.netbeans.org
rramientas que hacen verdaderas maravillas siones es mejor utilizar sólo un buen editor •Eclipse - www.eclipse.org

Francisco Castrillo es Director de Soluciones de Nexusware, empresa pionera en México en el desarrollo de soluciones corporativas basadas en Java. Como
expositor, ha impartido seminarios relativos a la tecnología Java EE en diversos foros a nivel nacional e internacional. Francisco es miembro del Consejo de la
Comunidad Java México (www.comunidadjava.org) y es egresado de Matemáticas Aplicadas del ITAM.

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


// PRÁCTICAS /* DISEÑO */

El Mariachi Orientado a Objetos


Entendiendo el diseño OO
Por Carlos “Fofo” Ordóñez

¿Cómo hacen los diseñadores de automóviles para construir un


auto compacto, que pueda ser conducido por una persona que
mide 1.60 de estatura, y un grandulón de 2.10? La respuesta es
sencilla: considerando al momento de diseñar, y antes de fabri-
car, los potenciales de cambio, tomando así las medidas per-
tinentes para crear una solución “flexible”: la palanquita que
recorre los asientos.

Cuando desarrollamos sistemas, todos nos hemos enfrentado a


esta constante de nuestra profesión: el cambio. Cambio de re- Figura 2. Mariachi con músicos bailarines.
querimientos, cambio de versiones, cambio de plataforma, etcé-
tera. Para combatirlo, tenemos que dedicar una buena parte del Al parecer nuestra solución ha sido suficientemente flexible
tiempo de análisis y diseño a la flexibilidad de nuestra solución, para adaptarse a los cambios, hasta que el cliente nos solicita
con el único objetivo de disminuir el riesgo y el costo que éste un nuevo músico: “hagamos una mezcla cultural, quiero escu-
implica, para tener un cliente satisfecho con menos dinero. char un Mariachi con batería”. Inmediatamente pasa por nuestra
mente agregar una nueva clase: Baterista (véase figura 3).
El Mariachi orientado a objetos es un divertido ejemplo de cómo
lidiar con los cambios de requerimientos al diseñar clases flexi-
bles, utilizando el patrón de estrategias para diseño orientado
a objetos.

Cantemos con Mariachi


Supongamos que tenemos un cliente extranjero cuya pasión
musical es desmesurada, y nos ha pedido desarrollar una apli-
cación que simule la forma de hacer música de un Mariachi, sólo
desea integrar un guitarrista, un violinista y un trompetista a la
simulación, dado que todos tocan música de diferentes formas y Figura 3. Mariachi con Baterista.
tienen un canto característico, la mayoría comenzaríamos plan-
teando un diagrama de clases similar al mostrado en la figura 1. El problema es claro: “Bateristas Bailarines”. Esto lo podemos
resolver de una forma muy sencilla, sobrescribiendo el método
bailar en Baterista de tal forma que no baile:

public void bailar() {


// hacer nada …
}

Evidentemente, después de este cambio, estamos violando el


principio de sustitución de Liskov, el cual indica que “debe ser
Figura 1. Primer acercamiento a la solución. posible utilizar cualquier objeto instancia de una subclase, en el
lugar de cualquier objeto instancia de su superclase sin que la
Nuestro cliente quedó satisfecho con la solución, mas sin embargo, semántica del programa escrito en los términos de la superclase
al ver que los integrantes del Mariachi pueden bailar, no esperó mu- se vea afectado”. En nuestro caso, esto significaría que no será
cho para solicitar un cambio de requerimientos: “Ahora quiero Ma- posible reemplazar semánticamente a cualquier Músico por un
riachis bailarines”. Nuestro equipo de diseño reacciona rápidamente Baterista, pues el último limita la funcionalidad del primero.
y agrega el método bailar a la clase Músico. (Véase figura 2). Días mas tarde y aún sin resolver el problema del Baterista, recibimos

40 JUL-AGO 2007 www.sg.com.mx


una nueva petición de nuestro cliente: “¿Cómo podemos agregar un cantante de Ópera a nues-
tra simulación?”. La figura 4 indica otro “parche” más para satisfacer este requerimiento.

Figura 4. Mariachi con cantante de opera

La solución parece suficiente. No obstante, nos damos cuenta que estamos en un gran
aprieto: Cantantes de Ópera que cantan como Mariachi… ¡Ah, y bailan!

Hasta ahora no hemos tenido éxito entre clases rígidas y malos diseños, lo que defini-
tivamente nos convierte en presa fácil de un exceso de presupuesto. Es entonces que
uno de los diseñadores sugiere: “intentémoslo con interfaces”.

La figura 5 muestra una solución utilizando interfaces.

Figura 5. Mariachi usando interfaces

www.sg.com.mx JUL-AGO 2007


// PRÁCTICAS /* DISEÑO */

Esta solución parece correcta. Incluso hasta el trompetista ha deja- de estrategias para cada método con alto potencial de cambio. Para
do de cantar, para dedicarse únicamente a tocar música y bailar. cada una de estas estrategias se construye una interfaz o clase
abstracta que define qué es lo que hacen cada uno de los conjun-
Sin embargo, este diseño tiene un problema muy grave: “reutili- tos de algoritmos, y aplicando el patrón de estrategias obtenemos
zación de código”. Cuando volteamos y vemos que los métodos el resultado en la figura 7.
bailar, tocar música y cantar tienen que ser implementados por
las clases concretas, estamos en aprietos.

Patrón de estrategia
Es en estos momentos, donde el patrón de diseño denominado
“Estrategia” llega a nuestro rescate. Este es uno de los patrones
descritos en el libro “Gang of Four”, que como sabemos, es la
biblia de los patrones de diseño orientado a objetos. De acuerdo
con esto, el patrón estrategia: “Define una familia de algoritmos
encapsulados y los hace intercambiables (…) permite al algorit-
mo cambiar, independientemente del cliente que lo utiliza”

En concreto, el patrón de estrategia nos permite construir una co-


lección de comportamientos intercambiables, independientemente
de quién haga cantar al Mariachi. La figura 6 muestra la estructura
de una solución genérica utilizando el patrón de estrategia.

Figura 7. Mariachi utilizando el patrón de estrategia

Conclusión
Después de darle muchas vueltas a este problema,
llegamos a una solución que cumple los requerimientos, y
además explota las ventajas de la orientación a objetos.

Figura 6. Solución propuesta por el patrón de estrategia Esta solución es mejor, pues si se desea agregar un nuevo
músico, sólo es necesario heredar de músico y en el con-
Lo que tenemos que hacer entonces es encontrar cuáles son los po- structor, enviar como parámetro sus comportamientos. De
tenciales de cambio, es decir, cuáles clases y/o comportamientos esta forma, nuestro diseño queda abierto para extensión,
tienen una gran probabilidad de ser modificadas y aislar los cambios pero cerrado para modificación y lo mejor de todo, si en un
de las demás clases, y al mismo tiempo, explotar el polimorfismo momento dado, se requiere cambiar el comportamiento de
agregando una clase abstracta o una interfaz para cubrir las diferen- hacer Música, sólo creamos un nuevo comportamiento: Can-
tes estrategias. tar Como Gloria Trevi, y lo asignamos al músico en cuestión,
e incluso lo podemos hacer en tiempo de ejecución, y listo,
Siguiendo este consejo, se detecta que el comportamiento de los mú- ahora tenemos un Mariachi que canta de pelo suelto.
sicos es el que tiende a cambiar, entonces se decide crear un conjunto

Carlos “Fofo” Ordóñez es Ingeniero en Sistemas Computacionales por el ITESO. Actualmente labora como arquitecto de software en Vision Consulting
Occidente, ubicada en el Centro de Software de Guadalajara. Colabora como profesor de asignatura en el ITESO, donde imparte materias de Progra-
mación e Ingeniería de Software. La información en este artículo representa el punto de vista del autor y no necesariamente el de Vision Consulting o
ITESO. fofo@iteso.mx

42 JUL-AGO 2007 www.sg.com.mx


// COLUMNA
// COLUMNA /*PRUEBA DE SOFTWARE*/

La Calidad del Software Mexicano


Pruebas de software inadecuadas: un Inhibidor de Crecimiento

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

Me da mucho gusto retomar esta columna en la revista, después de un los defectos que aún se encuentran en el producto, así como del costo
receso de aproximadamente un año. Durante ese tiempo hemos visto de detectarlos.
cosas interesantes que buscaremos sistematizar y exponer aquí duran- 2. Dependiendo de los datos del diagnóstico, el interesado puede optar
te éste y los siguientes números. por contratar las pruebas profundas.
3. Si después de estas pruebas y luego de aplicar nuestro modelo de
En [1] describimos los problemas que pueden presentarse cuando el calidad de productos, el software muestra un excelente comportamien-
software no se prueba adecuadamente, analizándolos a la luz de dos to (después de las pruebas regresivas [3]), se hace acreedor a ostentar
proyectos extremos en los que participamos. nuestro sello de calidad. (Este modelo fue validado con apoyo del Con-
sejo Nacional de Ciencia y Tecnología, CONACYT.)
Aquí presentaremos los resultados de la evaluación de la calidad de una
muestra de productos mexicanos en el marco del Concurso e-Quallity Utilizando esta experiencia, a mediados del año pasado lanzamos este
2007, del cual hicimos la premiación en el pasado Congreso SG’07 Confe- concurso, en el que convocamos a la comunidad desarrolladora nacio-
rencia y Expo. No se trata de un estudio estadístico riguroso, pero vemos nal de software a enviarnos productos terminados pequeños (máximo
estos datos como una aportación inicial para llenar el enorme hueco de 30 meses-hombre de desarrollo) para encontrar el producto con la me-
información que tenemos respecto a métricas de calidad de los productos nor densidad de defectos (cantidad de defectos entre tamaño).
mexicanos y su repercusión en la industria.
Una cantidad considerable de productos fueron rechazados, ya fuera
El impacto de probar inadecuadamente el software porque se excedían en el tamaño o porque no estaban completamente
En los Estados Unidos, tan solo en 2003, las pérdidas en su industria por terminados. La muestra final sobre la que se generaron los datos que
la inexistencia o mala aplicación de pruebas a productos de software as- mostraremos consta de 24 productos. Su tamaño se midió utilizando
cendieron a casi $600 mil millones, que equivalen a aproximadamente una métrica interna semejante a los puntos de función.
el 1% de su producto interno bruto [2].
A los productos concursantes les aplicamos una variación del diagnós-
Dichas pérdidas consideran no solamente las del sector de Tecnologías tico descrito arriba y, a cada participante le enviamos la primera capa
de Información, sino de muchos otros sectores que utilizan el software de defectos que detectamos en su producto, la estimación de los que
en sus operaciones. Se trata de pérdidas que no son sólo cuantiosas, aún quedaban en su sistema, y la comparación de su producto frente a
sino que desgastan gran parte de su sector productivo. otros, en términos de densidad de defectos.

En México no tenemos datos semejantes, pero es posible pensar en un Resultados y análisis


comportamiento parecido. Sin embargo, en nuestro país el efecto sería El tamaño promedio de los productos fue de 20.4 meses-hombre de
mucho más nocivo (aunque de menor cuantía): mientras que la indus- desarrollo, la mayoría de ellos fueron aplicaciones administrativas. La
tria del software estadounidense es mucho más grande y madura, la figura 1 presenta datos concretos sobre la calidad de los productos.
nuestra está apenas despegando; esto dificulta ganar inercia positiva
en muchos sentidos: el crecimiento de la industria se vuelve más lento, Producto… Defectos / Caso de Defectos aún en el
se dificulta generar confianza en esa tecnología, lo que a la vez disminu- prueba software
ye la atracción de inversiones en empresas tecnológicas, lo que a su vez más maduro 1/10 150
dificulta el crecimiento... un indeseable círculo vicioso.
promedio 1/4 500
La muestra y el proceso menos maduro 10/17 900
El método que utilizamos para la evaluación de productos está formado Figura-1: Densidad de defectos en productos mexicanos pequeños
por 3 fases:
1. Un diagnóstico del software: un tester experimentado realiza pruebas Los datos concuerdan con nuestra experiencia: el promedio de los
exploratorias y detecta una primera capa de defectos. Utilizando esa in- productos que hemos probado difiere del mostrado aquí en sólo
formación y nuestro modelo estadístico, se genera una estimación de unas cuantas centésimas (antes de las correcciones y pruebas re-

30 FEB-ABR 2008 www.sg.com.mx


gresivas). Esto es grave, pues significa que
uno de cada cuatro casos de prueba deja al
descubierto algún defecto (aunque no nece- Conclusión
sariamente crítico). Así como en los Estados Unidos, en
México la prueba de software inade-
Dichos datos son relevantes, pues una den- cuada también puede tener un im-
sidad de defectos como la del promedio pacto negativo severo en la industria
puede tener un impacto significativo en el en general.
crecimiento de las empresas desarrollado-
ras, como se muestra en la figura-2. En ella Dicho impacto se acentúa porque in-
la curva negra muestra el consumo “con- hibe el crecimiento no sólo del sector
vencional” de los recursos al desarrollar un de las Tecnologías de Información,
nuevo producto de software, considerando sino de muchos otros que utilizan
patrones de [4]; la curva verde muestra los software en sus empresas.
ingresos por ventas del producto; la azul
representa los costos de mantenimiento Este no es un estudio concluyente,
cuando el software es probado adecuada- pero genera información que debiera
mente antes de ser liberado y se elimina motivar a continuar obteniendo da-
la mayoría de los defectos; y la curva roja tos parecidos. En ese sentido, conti-
representa los costos de mantenimiento nuaremos poniendo nuestro granito
cuando no se prueba o se prueba inadecua- de arena con el Concurso e-Quallity
damente el software. 2008, que lanzaremos durante el pri-
mer trimestre de este año.

Estén pendientes, visiten:


www.e-quallity.net

—Luis Vinicio

Figura-2: Impacto económico de las pruebas. Referencias


• [1] León-Carrillo, L. “The Impact of Software
La gráfica muestra algo que vemos en Testing in small Settings”, en Oktaba H. and
nuestra práctica diaria y posiblemente Piatini, M. (Eds). “Software Processes in small
nos hemos acostumbrado a: cuando no Enterprises”. Por publicarse.
se prueba adecuadamente el software las • [2] Tassey, G. “The Economic Impacts of In-
consecuencias recaen en los costos de adequate Infrastructure for Software Testing”.
mantenimiento, estos pueden mermar sig- Final Report. National Institute of Standards &
nificativamente las utilidades, dificultando Technology. 2002.
la inversión en las áreas de mercadotec- • [3] www.e-quallity.net/definiciones.php
nia e innovación en el producto, este factor • [4] The Project Management Institute. “A
provoca la dificultad de crecimiento en esa Guide to the Project Management Body of
unidad de negocio. Knowledge”. USA, 2000.

www.sg.com.mx FEB-ABR 2008


// PRÁCTICAS /*-CASO DE ESTUDIO*/

CMMi por Medio de


MoProSoft
Experiencia de Kernel Technologies
Por Claudia N. González y Eduardo Olivares

En Septiembre del 2007 Kernel Technologies Group S.A. de C.V. fue procesos como en los productos de trabajo. La capacitación en los
la primera empresa mexicana en alcanzar el nivel 2 de CMMi bajo la temas de aseguramiento de calidad se complementó internamente
nueva versión del modelo para desarrollo de software versión 1.2. explicando y revisando los checklists de cumplimiento de activida-
Pero más importante que esto es el hecho de que basaron su estra- des, así como los artefactos para verificación y validación.
tegia de implementación en el Modelo MoProSoft. En este artículo,
compartimos algunas de nuestras experiencias y opiniones relacio- Complementar actividades utilizando el análisis de brecha
nadas con este proceso de mejora, esperando que le sean de utili- Una presentación realizada por la AMCIS en marzo del 2005 para mos-
dad a los lectores de SG. trar los resultados de las Pruebas Controladas de MoProSoft contenía
un análisis de brecha entre el modelo MoProSoft vs. CMMI N2 en su
Para nosotros fue una gran ayuda contar con MoProSoft como refe- versión escalonada, indicando que el 67% de las prácticas se cubrían
rencia, ya que a diferencia de CMMi, MoProSoft sí cuenta con una en forma total, el 10% se cubrían en forma amplia, 17% en forma par-
secuencia y lista de actividades a realizar bajo un enfoque y lógica cial y el 6% no estaban cubiertas. Nosotros pusimos especial atención
de negocio. La documentación que proporciona MoProSoft fue de en esta información, ya que ese 67% significaba que solo tendríamos
gran ayuda en la implementación de CMMi ya que es muy clara en que completar el 33% restante en cuanto a definición de procesos,
las actividades que deben realizarse, las entradas y salidas de cada ahorrando así tiempo y esfuerzo en ésta fase del proyecto. Fue así que
proceso, así como la asignación específica de responsabilidades. conseguimos de parte de AMCIS el detalle de este análisis de brecha
realizado por Cecilia Montero (Lead Assesor) y Gisela Rivera, donde se
Factores críticos de éxito detalla la relación entre las prácticas de las Areas de Proceso de CMMI
A continuación explicamos los que consideramos fueron factores crí- y los procesos/actividades que las cubrían. Tomando como base éste
ticos de éxito para lograr el nivel 2 de CMMi. mapeo, iniciamos a analizar qué procedimientos, actividades y pro-
ductos tendríamos que agregarle al MoProSoft para que cumpliera
Capacitación totalmente con cada práctica. Así que para cada brecha definida, defi-
El proceso de mejora inició con una estrategia fuerte de capacita- nimos un plan de acción para cubrirla.
ción en CMMi para los responsables de definición de procesos. El
propósito fue que estas personas tuvieran en claro la razón de ser Métricas y revisión a nivel gerencial
del modelo y las exigencias que involucra. Igual de importante fue A fin de asegurar el buen desempeño de los proyectos y el apego a
la capacitación impartida al “sponsor” del proyecto, ya que ayudó a los procesos, se establecieron reuniones periódicas a nivel gerencial
que comprendiera la envergadura del proyecto que estaríamos reali- para revisar los indicadores de los proyectos. Los indicadores que
zando y que esto requería de su fuerte compromiso y participación. usamos son índice de cronograma, índice de esfuerzo, índice de cos-
Para esta capacitación nos apoyamos en la empresa Innevo. to, así como el uso de semáforos para mostrar cuando un indicador
estaba fuera del rango establecido por la dirección. La definición de
Apego a las actividades de MoProSoft indicadores se basó en las recomendaciones del PMBOK 3ª Edición.
Decidimos utilizar directamente las actividades de MoProSoft para Se agregó una actividad de revisión de los defectos encontrados en
hacer checklists de aseguramiento de calidad, revisando por ejem- procesos y productos, a fin de tomar acciones correctivas. Se utilizó
plo que se llevaran a cabo todas y cada una de las actividades de pla- una plantilla para llevar a cabo la reunión, donde ya se establecían
neación para generar el plan de proyecto y plan de desarrollo. Adicio- los puntos a revisar en la reunión y fue de gran utilidad para no dejar
nalmente se siguieron las verificaciones y validaciones tal como las pasar aspectos de monitoreo como son el manejo de datos, riesgos
propone MoProSoft. Esto nos permitió asegurar tanto calidad en los asociados a un defecto, y obtener compromiso de los involucrados.

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

32 FEB-ABR 2008 www.sg.com.mx


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

Para todos los procesos se monitorearon las actividades planeadas ta que para asegurar la calidad de producto y proceso como requiere
y el esfuerzo estimado contra el real. CMMI tuvimos que detallar checklists que apoyaran ésta práctica.
3. MoProSoft define sus procesos por área de responsabilidad, sin
Asignación de esfuerzo para actividades del modelo embargo la secuencia de actividades se da naturalmente entre las
Quizá uno de los puntos más complejos, pero a la vez más impor- áreas. Por ejemplo, durante el proceso de venta, se requiere que se
tantes es estimar el esfuerzo en todas las actividades relaciona- realice un entendimiento de requerimientos y una planeación para
das con el modelo, tanto CMMI como MoProSoft, de manera que poder definir el alcance del proyecto que se está vendiendo. Para
debe quedar asentado y asignado el tiempo para: la persona que aclarar esta secuencia de actividades nos apoyamos en diagramas
define y establece los procesos, el encargado de las actividades de flujo inter-procesos, lo que ayudó a que se entendiera mejor la
de administración de configuración, aseguramiento de calidad de relación entre ellos.
procesos y productos, capacitación, administración de proyectos 4. MoProSoft define algunas actividades de manera muy general
y mantenimiento a la matriz de rastreo. Algunos roles pueden ser por lo que en algunas de ellas tuvimos que definir procedimientos
compartidos; por ejemplo la persona de calidad puede también más detallados y/o realizar minutas para asegurar que se cumpliera
dar capacitación o participar de la definición de procedimientos, completamente la práctica CMMI. Algunos de ellos son: la imple-
el configurador puede participar en actividades de desarrollo o mentación de un procedimiento de control de cambios para revi-
mantener la matriz de rastreo. En nuestra experiencia, el tiempo sar y autorizar cambios a requerimientos, actividades específicas
de todas las actividades de soporte al proyecto incluyendo tiempo de administración de configuración como lo es, establecer un plan
para medición y análisis, planeación, monitoreo de proyecto, ase- de administración de configuración que indica nombrado de ítems,
guramiento de calidad y administración de requerimientos; en un permisos, líneas base y niveles de autoridad para su promoción, au-
proyecto que anteriormente tomaba 1,000 horas llevando sólo Mo- ditorías físicas y funcionales a realizar. La mayoría de los requisitos
ProSoft, se incrementa en cerca del 20% del esfuerzo después de de CMMi estaban cubiertos en las prácticas de MoProSoft reforzán-
haber agregado las actividades del análisis de brecha hacia CMMi dolas con el uso de minutas para cada reunión y dando instruccio-
nivel 2. Lo anterior debe considerarse una inversión que paga en nes muy específicas, sobre los acuerdos y compromisos que deben
beneficios de calidad y confianza hacia los compromisos del pro- reflejarse en cada reunión, sin dejar margen a ambigüedades. En la
yecto con el cliente. versión de este artículo que se publicará en el sitio web de SG se
incluirá un anexo con un ejemplo de una actividad que fue detallada
Herramientas de esta forma.
Es de gran ayuda apoyarse en herramientas que faciliten la adopción 5. Implementar otros procesos MoProSoft como son la Planeación
y aplicación del proceso. Recomendamos considerar herramientas Estratégica y la Gestión de Procesos ayudaron a la implementación
de trabajo para administración del proceso de cambios en configu- del proceso y a que la organización lo apoyara, así como a la opera-
ración, manejo de la matriz de rastreo, levantamiento y seguimiento ción misma del negocio.
a incidencias, bases de datos con datos del proyecto (WBS, costos,
riesgos, cambios) o herramientas para registro y seguimiento a las
actividades, son importantes para reducir el tiempo de uso de hojas Conclusión
electrónicas más susceptibles a errores. CMMI está enfocado principalmente a organizaciones gran-
des. Sin embargo el enfoque que seguimos de utilizar como
Lecciones aprendidas marco de referencia MoProSoft fue un gran acierto que nos
1. Tal vez la lección aprendida más distintiva de nuestro proyecto, acercó muy rápidamente a nuestro objetivo de lograr el
fue el entender que para cubrir el 33% de actividades pendientes no nivel 2 de madurez en CMMI, apenas 8 meses después de
significaba invertir un 33% más de esfuerzo ya que las prácticas no tener implantado MoProSoft. Ahora vamos por el siguien-
cubiertas en MoProSoft se trataban de cuestiones un tánto comple- te nivel y además de seguir utilizando MoProSoft como un
jas de definir e implementar como lo son Administración de Configu- marco de referencia relevante nos apoyaremos en PSP/TSP
ración (CM) y Medición y Análisis (MA). para acelerar nuestro siguiente objetivo en madurez de pro-
2. Aunque iniciamos las actividades de verificación y validación utilizan- cesos mediante CMMI.
do como guía los criterios presentados en MoProSoft, nos dimos cuen-

www.sg.com.mx FEB-ABR 2008 33


// COLUMNA invitada

Lecciones Aprendidas de la Quiebra


de Air-Go Technologies
Cuando el ego nos alcanza
Por Héctor Obregón

D e 1996 a 2002 tuve la oportunidad de


participar como fundador y Director General
conmigo para alertarme sobre esto pero
esta soberbia me impidió escucharlos. Una
Mi ego en ese momento influyó también en
algunos conflictos con mis socios. Llegue a
de una empresa de servicios de desarrollo tremenda frase que jamás olvidaré refleja estar más preocupado por mi posición in-
de software en México. Esta empresa inicial- la actitud que tenía en 1999. Poco después terna y externa como Director General que
mente se llamó InterSoftware y más adelan- de haber acordado la primera ronda de fi- por la salud del negocio. Fue fácil distraerme
te Air-Go en su último año y medio de vida. nanciamiento institucional para la empresa con juegos de poder donde ya no se trataba
En ella perseguimos el sueño de crear la por un monto de un millón de dólares, le co- de lo mejor para el negocio sino de lo más
mejor empresa de su tipo en México. Duran- menté a mi socio co-fundador de la empre- placentero para el propio orgullo. En parti-
te varios años creímos que lo lograríamos y sa: “Ya no es posible que fallemos después cular este problema se hizo manifiesto en
después, en un periodo de tiempo muy cor- de esto.”. Varios años después, inmerso en nuestro intento fallido de fusión con otra
to, fallamos por completo resultando final- la crisis del negocio, otro de mis socios, un de las empresas líderes del mercado en ese
mente en la desaparición del negocio. empresario exitoso radicado en Estados momento: Kiven. Mi conflicto con su Direc-
Unidos me comentaría que mantiene en su tor General, fue el factor determinante para
InterSoftware/Air-Go pasó de 5 colaborado- oficina un enorme poster de PanAm Airlines el fracaso de esta operación que probable-
res en 1996 a más de 300 en el año 2001. (ahora desaparecida) para nunca olvidar mente, bien ejecutada, hubiera resultado de
Para el 2002 había desaparecido como en- que, sin importar el tamaño o el éxito alcan- gran beneficio para ambas empresas.
tidad funcional. Nuestra empresa fue de las zados, la posibilidad de perderlo todo siem-
primeras en México en el desarrollo de apli- pre estará vigente. Tomamos riesgos extremos en la operación
caciones para dispositivos móviles (1998), financiera de la empresa. La supervivencia y
búsqueda formal de certificación CMM El éxito aparente también nos había colo- el muy acelerado crecimiento durante 4 años
(1998), implementación de un modelo de cado a mí y a algunos de mis colaboradores no nos sensibilizaron al nivel de riesgo que
fábricas de software de bajo costo (1999), dentro de nuestra zona de confort. Nues- adquirimos. Adicionalmente en el periodo
obtención de fondeo institucional de capital tros ingresos personales eran más que 1996-2000 era muy fácil para una empresa
de riesgo (1999), exportación de servicios suficientes para llevar una vida cómoda y innovadora en el sector de IT obtener fondos
de desarrollo de software a Estados Unidos estaban totalmente desconectados de la y financiamiento debido al entusiasmo ge-
(2000), y crecimiento mediante la consoli- rentabilidad y la generación de valor de neral en los mercados sobre las posibilida-
dación con competidores (2001). Aunque la empresa. Aún cuando como socios de- des de este tipo de empresas. Este entorno
nuestra visión puede haber sido la correcta beríamos haber estado más preocupados reforzó la precepción que teníamos de ser
en varios aspectos, quizá se adelantó un por el desempeño financiero del negocio, prácticamente infalibles.
poco a su tiempo y, mucho más importante, la realidad de nuestro día a día era dema-
nuestra ejecución fue incompetente. siado cómoda. La experiencia del fracaso
La postura personal de orgullo que condujo
En este artículo comparto mis experiencias Sin duda otra de nuestras fallas fue el in- a mi empresa a fracasar se enfrentó con la
personales a través del proceso del fracaso tentar hacer demasiadas cosas al mismo dura realidad en aún menos tiempo del que
de esta empresa así como las que considero tiempo. En un periodo muy reducido de había tomado el “éxito”. Cuando disminuyó
son las principales lecciones que espero ha- tiempo expandimos nuestras operaciones el ritmo de crecimiento de la compañía ha-
ber aprendido durante el proceso. a Guanajuato, Monterrey y, mucho más di- cia fines del año 2000 debido a la combina-
fícil, Estados Unidos. Todo esto sin tener ción de una desaceleración de la economía
Las causas del fracaso experiencia previa sobre las implicaciones y del tamaño que habíamos alcanzado ya,
Tuvimos mucho éxito en un periodo corto de administrar un crecimiento acelerado. en cuestión de un trimestre se hicieron sen-
de tiempo y con relativa facilidad. Desafor- Alcanzamos a nuestro nivel de incompeten- tir en el flujo de efectivo los problemas de
tunadamente, en mi caso personal eso me cia rápidamente. Acabamos haciendo mu- rentabilidad sistémicos que el negocio te-
condujo a una actitud de soberbia que me chas cosas mal en lugar de pocas bien. Lo nía. Durante años la acelerada tasa de cre-
cegó a la posibilidad de visualizar los pro- más grave fue que estas operaciones dis- cimiento en ventas (de alrededor de 100%
blemas que se avecinaban con el tiempo trajeron la atención de la dirección del ne- anual) permitía financiar la operación de la
suficiente para actuar y prevenirlos. Varios gocio principal que probablemente hubiera empresa aun cuando su rentabilidad real
de mis colaboradores y socios se acercaron podido salir adelante con más atención. fuera entre mediocre e inexistente.

34 AGO-OCT 2008 www.sg.com.mx


“Debemos respetar a cualquier socio
potencial de tal manera que sus aportaciones
sean genuinamente efectivas, para el
desarrollo del negocio”.

Pocas cosas son más difíciles que enfrentar- Superar el vacío fuerte y creo que me hubiera hecho perder
se a dificultades de flujo de efectivo de corto Ahora, varios años después, no puedo más más tiempo y dedicarle energía a persecu-
plazo en la operación del negocio. Rápida- que sentirme afortunado de haber superado ciones sin sentido.
mente nuestras líneas de financiamiento ese momento extraordinariamente doloroso
estaban saturadas y nos enfrentamos a pro- y difícil. Hay una serie de elementos que En la medida de lo posible, busque enfren-
blemas para solventar los costos de opera- fueron clave para poder salir adelante. tar la situación con la máxima franqueza
ción más indispensables como la nómina de posible con los distintos afectados por el
nuestro personal. Simultáneamente la “luna Sin duda lo más importante fue el que, aún cierre de la empresa. Había que darle malas
de miel” con los inversionistas instituciona- durante el punto más álgido, conté con el noticias a muchas personas. A los colabo-
les terminaba y nos enfrascamos en discu- apoyo de varias personas que siguieron radores, socios, acreedores, clientes y pro-
siones sobre cómo solucionar el problema creyendo en mí. Esta confianza fue el sal- veedores. Todos se vieron afectados negati-
sin llegar a acuerdos a la velocidad que la vavidas que en ese momento me permitió vamente por los errores que cometimos. En
situación demandaba. Los clientes se per- no ahogarme. Puedo mencionar a Mauricio la gran mayoría de los casos, el trato franco
cataron de nuestros problemas y, natural- Mingramm, mi actual socio en emlink, a con ellos evitó problemas muchos mayores.
mente, perdieron la confianza en nosotros Marcos Achar, Director General de Comex Los casos donde no me fue posible hacerlo
como proveedores lo que aceleró nuestra (que continúa siendo nuestro cliente) , a mi o no dediqué el tiempo necesario fueron los
caída. Provocando que los inversionistas tío Raúl Obregón, y a un compacto equipo que se complicaron después convirtiéndo-
institucionales perdieran la posibilidad de de colaboradores que continuaron creyendo se, por ejemplo, en serios dolores de cabeza
creer en mí y se negaran a proporcionar en mí a pesar de todos los errores que co- legales. Sin embargo, creo que no es posi-
fondos adicionales para “darle la vuelta” al metí. A todos ellos les estaré agradecido el ble satisfacer a todos los afectados. Hay que
problema. Aún cuando nuestros colabora- resto de mi vida por su apoyo y confianza. entender esto y prepararse para asumir las
dores hicieron un importante esfuerzo por consecuencias.
seguir operando, aun ante la falta de pago, Durante este trance descubrí el significado
naturalmente esto nos llevó a un desgaste de la fe. No soy un hombre religioso. Sin em- 10 lecciones aprendidas
finalmente insalvable. bargo, jamás había estado en una situación Las siguientes lecciones de aprendizaje per-
donde tuviera que simplemente creer que sonal no pretenden ser una receta general
Para fines del 2001, la única opción que me iba a salir adelante sin tener la más remota para quien se encuentre en una situación
quedaba para evitar el cierre inmediato de idea de cómo lo lograría ni ningún funda- similar. No son resultado de un amplio es-
la empresa era aceptar mi remoción como mento lógico para creer que fuera posible. tudio de casos. Simplemente son un breve
Director General para tomar las funciones de Creer genuinamente en algo sin ningún fun- resumen de lo más significativo de lo vivido
ventas. Fue muy poco y demasiado tarde. damento racional es para mí el significado personalmente a lo largo de la experiencia
más claro de la fe. relatada y de la posterior búsqueda de cons-
Consideraba, y sigo considerando, a mis truir una nueva empresa, emLink.
principales colaboradores como mis amigos. Fue necesario procesar emocionalmente el
El afecto hacia y desde ellos dificultó enor- fracaso y asumirlo. Esto no me fue posible 1. La gente vale la pena
memente contar con la claridad suficiente hacerlo rápidamente. Se requiere un espa- Mencioné que el afecto con y desde mis cola-
para tomar las decisiones adecuadas. cio de tiempo para poder procesar el duelo. boradores dificultó la toma de algunas deci-
Sin temor a exagerar, me parece que el dolor siones importantes. Sin embargo, no me ima-
En cuestión de meses pasé de una posición de ese momento haya sido similar al de la gino ni me interesa la construcción de una
de orgullo desmedido al otro extremo emo- pérdida de un ser querido. No es posible sa- relación de trabajo sin afecto. Estoy absolu-
cional. Me sentí la persona más incompeten- lir adelante de un dolor de este tipo sin darle tamente convencido de que la construcción
te y estúpida del mundo. Las malas noticias oportunidad de seguir su curso. de un afecto es indispensable para lograr una
adicionales, por pequeñas que fueran, me motivación de conjunto y un liderazgo efecti-
provocaban crisis de pánico. Resultaba casi Necesité aprender a mirar siempre hacia el vo. Así que, en lugar de renunciar a este me
imposible levantarse a trabajar todos los días futuro y rápidamente dar vuelta a las pági- parece que lo mejor es incorporarlo dentro de
y la magnitud del problema me sobrepasó nas del fracaso. La tentación del enojo y de una ética de trabajo y claridad en la defini-
tanto personal como profesionalmente. aferrarse al éxito anteriormente logrado era ción y evaluación de objetivos profesionales.

www.sg.com.mx AGO-OCT 2008 35


// COLUMNA invitada

“Los clientes se percataron de nuestros


problemas y, naturalmente, perdieron la
confianza en nosotros como proveedores, lo
que aceleró nuestra caída”.

Esto permite a las dos partes involucradas en ciplina en este aspecto. Es necesaria para 8. 1% inspiración, 99% ejecución
una relación de trabajo contar con un marco el bien de todas las entidades relacionadas El mundo está lleno de grandes ideas.
de evaluación objetivo sobre los resultados con una empresa: socios, colaboradores, ¿Cuánta gente no conocemos que celebra
del trabajo conjunto. clientes, proveedores y acreedores. Una em- que “se le ocurrió primero” o “ya lo veía
presa que no es rentable acaba fallando con venir”? La diferencia entre un espectador y
2.Ten un sueño la comunidad con que se relaciona. un protagonista en mi opinión, no son las
Después del fracaso vivido, pasé una tem- ideas, es la capacidad de ejecutar sobre sus
porada abandonando mis sueños, enfocado 5. Que mantener el foco sea la doctrina ideas y llevarlas al resultado final deseado.
exclusivamente a la rentabilidad de corto Siempre que emprendamos una nueva ini- Los planes en nuestra mente siempre serán
plazo y la estabilidad del nuevo negocio ciativa hay que evaluar con honestidad si posibles. La realidad es otra cosa.
para evitar a toda costa una repetición de la realmente tendremos la capacidad de ejecu-
experiencia anterior. Ahora me parece que tarla y llevarla a término. Es fácil caer en la 9. Para emprender hay que ser un poco
sin un sueño no es posible construir una mi- tentación de hacer más de lo que realmente bipolar
sión efectiva, atraer y retener a los colabo- tenemos capacidad de ejecutar. Una cosa a Es necesario mantener un optimismo (casi)
radores talentosos que cualquier empresa la vez. O, cuando mucho, tantas como poda- irracional sobre el futuro. Mantener el entu-
que desee ser exitosa requiere. mos ejecutar efectivamente. siasmo y la convicción de que el sueño que
hemos trazado como objetivo es en verdad
3. Busca socios que compartan tus valores 6. Ten paciencia alcanzable en todo momento. Transmitir ese
Los conflictos que con mayor facilidad pue- La velocidad de ejecución siempre es menor entusiasmo a todo nuestro entorno. Al mis-
den destruir a una empresa, son entre los a la velocidad de la imaginación. Es nece- mo tiempo, se necesita un pesimismo (un
socios de esta. Entrar en una sociedad de sario tener paciencia para ver que aquello tanto) irracional para la toma de decisiones
negocios implica evaluar claramente nues- que imaginamos se convierta en realidad. financieras. ¿Realmente es necesario este
tro entendimiento. Vale la pena incorporar Hay que ser enconadamente persistentes y gasto?, ¿podríamos vivir sin él?, ¿podemos
desde un inicio la posibilidad de la sepa- entender que cualquier proceso de cambio ejecutar esta inversión? Planea para el me-
ración. Como en un matrimonio dónde la que involucre la participación de un equipo jor escenario, ejecuta previendo siempre el
posibilidad real del divorcio nos motiva a de trabajo llevará tiempo. Los sueños si son peor escenario. Recuerda que siempre se
construir la relación todos los días. Un socio alcanzables, más no sin esfuerzo, tenacidad puede poner peor.
debe compartir valores e idealmente com- y paciencia.
plementarnos en habilidades, capacidades 10. No se te olvide por qué estás aquí
y puntos de vista. Debemos respetar a cual- 7. Sin riesgo no hay (casi) crecimiento Más allá de cualquier consejo práctico de
quier potencial socio de tal manera que sus Toda empresa implica un riesgo. Sin impor- negocios, evalúa contantemente por qué
aportaciones sean genuinamente efectivas tar cuantas lecciones creamos haber apren- haces lo que haces. ¿Contribuye el ser em-
para el desarrollo del negocio. dido, si queremos crecer y alcanzar nuestro presario a tu felicidad? Es fácil perderse en
sueño como organización, habremos de el día a día y un día darse cuenta de que el
4. Se un Nazi con tu disciplina financiera asumir riesgos que nos pueden llevar al sueño se ha ido o de que la rutina nos ha
Para las empresas generar utilidades es fracaso. Es inevitable esta relación. Sin em- absorbido. De vez en cuando vale la pena
equivalente a comer para el ser humano. Si bargo, podemos buscar calcular el riesgo de hacer una pausa en el camino para evaluar
un negocio no es rentable tendremos asegu- tal forma que nos podamos permitir siempre por qué somos empresarios. Cada uno ten-
rada la imposibilidad de alcanzar los sueños la posibilidad de fallar en alguna iniciativa drá que encontrar su propia respuesta.
y la visión que hemos trazado para este. Por individual sin que esto conduzca al fracaso
lo tanto, vale la pena ejercer una férrea dis- total de la empresa.

Héctor Obregón (http://msdnfan.blogspot.com) es Director General de emLink desde 2002 (www.emlink.com.mx), Microsoft MSDN Regional Director y
Microsoft MVP para Windows Embedded. De 1996 a 2002 fue Director General de Air-Go Technologies (antes InterSoftware).

36 AGO-OCT 2008 www.sg.com.mx


// PRÁCTICAS /*ASEGURAMIENTO DE CALIDAD*/

Revisiones entre Colegas


Una Práctica de las Mejores
Por Edith Martínez

Las revisiones entre colegas (peer reviews) están descritas dentro Roles participantes
del proceso de verificación de CMMI, y tienen como objetivo ase- Estos son los roles que típicamente participan en la revisión:
gurar que los productos de trabajo seleccionados cumplan con los • Moderador. Es quien se asegura que se envíen los productos a los
requerimientos especificados. Estas revisiones son un mecanismo involucrados, que la revisión se conduzca correctamente, se revise
de verificación eficaz para prevenir y eliminar defectos, además de al producto y no a la persona, se compartan las observaciones y se
identificar oportunidades de mejora. hagan las modificaciones pertinentes.
• Autor. Elabora o desarrolla el producto que se revisará. Durante
Estas revisiones típicamente son aplicadas por compañeros de traba- las revisiones provee las explicaciones necesarias sobre el producto
jo, muchas veces integrantes del proyecto que tienen un interés en el en revisión.
artefacto bajo revisión. Los revisores son conocidos como colegas, ya • Revisores. Son los expertos o colegas que se preparan para la revisión,
que tienen roles o actividades similares a los del autor del producto. encuentran defectos y retroalimentan acerca de las observaciones.
  • Tomador de notas. Es quien completa las formas con los hallazgos
La aplicación de las revisiones entre colegas tiene diversos beneficios: encontrados, observaciones realizadas, registra los tiempos y clasi-
• Promueve la generación de productos completos y correctos. fica los hallazgos.
• Ayuda a establecer un estándar de excelencia. • Lector. Participa realizando lecturas relacionadas al producto revi-
• Promueve el seguimiento del estilo y reglas de construcción en los sado, en caso de ser requerido.
proyectos.  
• Provee múltiples vistas en las revisiones. Es importante hacer notar que no es requerida una persona para
• Permite obtener mediciones para mejorar el proceso y administrar ejecutar cada rol, por el contrario una persona puede realizar dos
la calidad de los productos. o más roles de acuerdo a las necesidades, cuidando que nadie sea
  juez y parte para asegurar la objetividad.
Algunas definiciones  
Formalmente, una revisión es una técnica para encontrar y eliminar Durante la revisión es importante enfocar las observaciones solo ha-
defectos de productos de trabajo, tan temprano como sea posible y cia el producto y no al autor, así como asegurarse que se levanten
de manera efectiva. defectos y no soluciones, pues las últimas pueden tomar más tiem-
  po del esperado y afectar en el lapso de las revisiones.
Un defecto es:  
• Cualquier ocurrencia en un producto de trabajo que determine que Tipos de revisiones
esté incompleto, incorrecto o con faltantes. Existe variedad en los tipos de revisiones, cada uno con característi-
• Cuando no se satisface un requerimiento. cas diferentes y con diferentes propósitos. Algunos de estos tipos se
• Una inconsistencia o violación a estándares. describen a continuación:
   
Se recomienda el uso de listas de verificación, o checklists, que fun- Inspecciones de software
gen como base para la revisión de artefactos. • Es la forma de revisión más estricta.
  • Revisiones a profundidad.
Un checklist es: • Criterio de salida para cada fase.
• Una lista de elementos en forma de preguntas y/o características. • Dirigida por el líder revisor y asistida por participantes.
• Resume los problemas técnicos potenciales para una revisión. • Se obtienen métricas (Producto y proceso).
• Son utilizados durante la etapa de preparación y de ejecución de  
revisiones. Walkthroughs
  • Medio para llegar a consenso.
Hay diferentes tipos de checklists o bien se pueden revisar diferen- • Útiles para aprendizaje informal.
tes características como: que el producto esté correcto o completo, • Dirigidas por el autor.
que siga reglas de estilo, construcción, etcétera. • No hay métricas.
 

Edith Alhelí Martínez Mata es Consultor especializado en Aseguramiento de la Calidad, en Avantare Consultores. Sus áreas de especialidad son las Inspecciones
de Software y Procesos de Soporte basados en CMMI y SW-CMM. Edith es Licenciada en Informática por el Instituto Tecnológico de Aguascalientes (ITA), y ha
participado como consultora en varios proyectos para la implementación de CMMI así como en evaluaciones SCAMPI.

38 AGO-OCT 2008 www.sg.com.mx


Revisiones técnicas Entre los principales beneficios que proveen las revisiones entre co-
• Busca consenso. legas están:
• Útiles como capacitación. • Acortamiento de tiempos.
• Se expone el producto y se busca aprobación. • Reducción de costos.
• Útiles para productos complejos o de nueva tecnología. • Mejora en capacidad de predicción.
• Se requiere experiencia técnica. • Mayor satisfacción del cliente.
• Métricas no son obligatorias • Mayor entusiasmo en el personal.
  • Retorno de inversión atractivo.
Revisiones cruzadas  
• Determinan el estatus del producto. De forma cuantitativa, las expectativas de ahorro pueden esperarse en:
• Carga extra requerida es mínima. • 60% al 80% de los defectos eliminados antes de la ejecución de
• Revisiones en pares. las pruebas
• Facilita el intercambio de información. • Reducciones en la escala del tiempo de hasta el 25%
• Típicamente utilizadas para diseño y codificación. • Reducción hasta en 5 veces de los costos de pruebas
• Se recolectan algunas métricas.  
  La revisión entre colegas es una práctica que por sí sola genera un
Fases de la inspección de software retorno de inversión visible, ya que ayuda a incrementar la calidad
La realización de una inspección de software requiere de varias fa- y reducir costos.
ses que se detallan a continuación:  
  Preguntas  comunes
Planeación. ¿Quién decide qué debe ser revisado?
• Planear inspección en el calendario del proyecto. El líder técnico o de proyectos.
• Identificar qué productos revisar y los tipos de productos.  
• Asignar responsables (autor y moderadores). ¿Qué revisar?
  Productos de alto impacto, productos asociados a riesgos, y produc-
Preparación tos asociados a objetivos de calidad.
• Validar que el producto esté listo.  
• Asignar revisores, y resto de los roles. ¿Cuándo planear las revisiones?
• Verificar checklists listos y distribuir el material para revisión. De acuerdo al tipo de revisión, en el plan y al inicio del proyecto o
  fases.
Sesión de inspección  
• Revisar el producto. Recomendaciones
• Registrar y clasificar hallazgos. Algunos principios importantes de las inspecciones de software:
• Clasificar defectos. • Limitar las inspecciones a periodos de alta concentración (2 horas).
• Clarificar dudas puntualmente. • Revisar productos, no personas.
  • Identificar defectos, no soluciones.
Reporteo  
• Dar a conocer los resultados, hallazgos y métricas. Algunos riesgos comunes que pueden dificultar la implantación de
  la práctica o limitar los beneficios de ésta, y que por lo tanto deben
Seguimiento tenerse en cuenta para manejarlos adecuadamente:
• Asegurarse que se llevan a cabo las correcciones. • Los participantes no entienden el proceso de revisión.
• Registrar el cierre de los defectos. • Los revisores critican al autor y no al producto.
• Levantar métricas. • Falta de planeación de las revisiones.
  • Las juntas se enfocan a la solución de problemas de estilo.
Costo y beneficios • Falta de preparación y/o los revisores no son los adecuados.
El costo de implementar esta práctica en realidad no es muy alto, ya • Proceso no compatible con las características de la organización.
que es una actividad que se ejecuta naturalmente por los equipos
de trabajo. La ejecución de una revisión se lleva un máximo de 4 Y entonces ¿qué esperamos para llevar a cabo prácticas de
horas, considerando los tiempos de preparación y ejecución, y nos revisiones entre colegas?
da resultados cualitativos y cuantitativos al momento.

www.sg.com.mx AGO-OCT 2008 39


// PRÁCTICAS /*MEJORA DE PROCESOS*/

Líneas de Productos de Software


Aplicando adaptación masiva al software
por Gilberto Grajales

Como sabemos, los sistemas de software cada vez son más com- específicas de un segmento de mercado particular o misión y que
plejos, debido tanto a los pasos agigantados que da la tecnología, son desarrolladas de forma preescrita a partir de un conjunto común
como a la importancia que continuamente cobran los sistemas de de elementos clave”.
información en nuestras vidas. A lo largo de los años, nuevos mé-
todos, técnicas y herramientas han sido creados para mitigar esta Como lo indica la definición, una LPS consiste en un conjunto de
creciente complejidad de desarrollar software. elementos clave para producir sistemas de software que com-
parten características comunes (llamadas similitudes), pero al
Una de las técnicas que han surgido para mitigar dicha complejidad, mismo tiempo mantienen características propias (llamada varia-
es la reutilización, la cual consiste en desarrollar elementos de soft- bilidad). Para proporcionar estas características individuales a
ware que puedan utilizarse más de una vez con la mínima cantidad cada miembro de la familia, la adaptación masiva debe ser lo
de modificaciones, garantizando que al reutilizar un elemento de suficientemente flexible para satisfacer tal necesidad, pues ade-
software libre de defectos, implicará que el sistema que lo utilice no más el número distinto de miembros está limitado a una serie de
tendrá problema alguno en lo que respecta a dicho elemento. restricciones las cuales también deben satisfacerse; a esto se le
llama administración de la variabilidad.
Tal fue el éxito de aplicar la reutilización, que ésta evolucionó de al-
guna manera hasta generar el concepto de “Líneas de Productos de Fases o etapas para implementar una LPS
Software” (LPS) –conocido también como Familias de Sistemas de En una LPS se propicia una reutilización a alto nivel, desarrollando
Software– para el cual se conocen indicios desde los años 70 cuan- los elementos comunes que servirán como base para la generación
do Parnas mencionó los beneficios de tener una familia de sistemas de cada miembro de la familia. Las etapas esenciales a ejecutar
compartiendo características entre ellos[1]. son tres:
1. De ingeniería de dominios en la cual se desarrollan los elemen-
Adaptación de productos de forma masiva tos comunes.
Las LPS parten de las ideas de la producción en serie (como lo 2. De ingeniería de aplicaciones donde se generan los sistemas que
hizo Henry Ford), dando la capacidad a una organización de pro- son miembros de la familia. Dichos miembros se generan a partir
ducir o generar (nótese que no se usa el término desarrollar) de los elementos comunes, pero tomando en cuenta el modelo de
sistemas de software en forma masiva, satisfaciendo las deman- variabilidad definido.
das del mercado; entre otros beneficios significativos. La adap- 3. Un conjunto de actividades que orquestarán las dos etapas anteriores.
tación masiva consiste en la capacidad para generar productos Es decir, se necesita de un proceso para ejecutar de manera ordenada la
que comparten en gran parte características comunes, pero ingeniería de dominios y la ingeniería de aplicaciones.
también mantienen características propias de cada uno de ellos.
Tomando como ejemplo una línea de productos de automóviles, Las dos primeras etapas están compuestas por las fases tradicionales del
se puede ver que para un modelo específico de auto se pueden modelo de cascada (Requerimientos, Diseño, Implementación, Pruebas)
fabricar unidades con características propias tales como el co- pero con objetivos distintos como ya se mencionó.
lor, el número de puertas, transmisión automática o estándar,
eléctrico o no, etcétera. Manteniendo las características esen- Enfoques de adopción de una LPS
ciales del modelo. Se han planteado varios enfoques como estrategia para reali-
zar la adopción de una LPS, entre ellos algunos tienen nombre
Líneas de productos de software distinto de acuerdo al “framework” o metodología en la que es-
Según el Instituto de Ingeniería de Software (SEI) una LPS se define de la tán contenidos, pero consisten en la misma estrategia. Básica-
siguiente manera: mente, existen tres enfoques de adopción los cuales han sido
“Una LPS es un conjunto de sistemas de software compartiendo ca- reportados bajo otros nombres, sin embargo, en esencia son lo
racterísticas comunes y administradas que satisface las necesidades mismo. Dischos enfoques son:

Gilberto Grajales obtuvo el grado de Maestro en Ingeniería de Software en el Centro de Investigación en Matemáticas (CIMAT) realizando investigación sobre Líneas
de Productos de Software aplicado al área de Ingeniería de Requerimientos. Ha jugado distintos roles en proyectos de desarrollo de software. Actualmente labora en
JPE Consultores donde se dedica a la consultoría, capacitación y mejora de procesos en Ingeniería de Software. Tiene un especial interés en las áreas de Ingeniería
de Requerimientos y Calidad de Software. Puede ser contactado en gilberto@jpeconsultores.com

44 AGO-OCT 2009 www.sg.com.mx


Proactivo: funciona cuando la implantación de la LPS se sistemas de software a partir de una plataforma de artefactos comunes
hace desde cero, es decir que aún no se cuenta con sistemas de de manera que los productos sólo necesiten ensamblarse en vez de ser
software que pertenecerán a la familia. Debido a la complejidad desarrollados individualmente.
y al enorme esfuerzo que demanda este enfoque, es apropia-
do para las empresas que tienen una visión muy clara de los • Mejora la capacidad para el “Time-to-market”. Muchas veces
productos que conformarán la familia, además de que tienen las demandas del mercado exigen tener estrategias de mercado-
niveles de madurez para predecir con gran certeza tal proceso tecnia que implican tener productos o implementar ideas inno-
y cuentan con los recursos económicos y humanos suficientes vadoras antes de cierta fecha. Bajo un esquema tradicional de
para realizar la inversión. desarrollo de sistemas individualmente, dichas estrategias son
demasiado difíciles de ejecutar haciendo perder a una organi-
Extractivo: inicia con la selección de uno o más sistemas ya zación la oportunidad de crecer en un mercado cambiante, pues
existentes, que serán parte de la familia de productos; efectuando como se dice por ahí: “el que pega primero pega dos veces”. Con
un tipo de ingeniería inversa para extraer los artefactos de software una LPS, una organización puede tomar el reto de establecer es-
comunes para establecerlos como elementos comunes y modelar la trategias de mercadotecnia agresivas, ya que cuentan con la ca-
variabilidad que existe entre ellos. Este enfoque es ad-hoc para or- pacidad de generar productos de forma acelerada. En la figura 1
ganizaciones que quieren efectuar la transición de una manera rápi- se muestra una gráfica que representa el tiempo de desarrollo de
da, de desarrollar sistemas individuales a generar sistemas a partir sistemas de software con y sin una LPS, donde el eje horizontal
de una LPS. representa el número de sistemas distintos desarrollados ,y el
eje vertical el tiempo de liberación en el mercado. Como se puede
Reactivo: toma la esencia del proceso de espiral o iterativo ver al inicio, el tiempo de desarrollo de la LPS hace que éste sea
para efectuar la transición poco a poco. Se realizan los pasos como mucho mayor que el desarrollo de los primeros sistemas indivi-
en el enfoque proactivo, pero para cada ciclo o espiral, de esta duales ,debido a que primero se deben desarrollar los elementos
manera se van eliminando riesgos y se va aclarando la visión de las comunes, sin embargo, conforme se empiezan a desarrollar más
similitudes y variabilidades de los productos que serán miembros sistemas, el tiempo de liberación en una LPS se reduce radical-
de la familia. Es adecuado para organizaciones que mantienen mente en comparación al desarrollo individual, lo cual demues-
planes de trabajo agresivos, que no pueden dedicar los recursos tra que a un mediano plazo los beneficios serán mucho mayores;
humanos suficientes para la adopción y sólo pueden disponer de pues como se mencionó, una organización se puede comprome-
un subconjunto de ellos. ter a liberar cierto producto de su LPS en menos de la mitad del
tiempo que le llevaría desarrollarlo individualmente.
Beneficios de una LPS
La implantación de una LPS no es una tarea sencilla, sino que re-
quiere un gran esfuerzo y sobre todo una gran inversión para su
éxito. Sin embargo, los beneficios obtenidos motivan a realizarlo.
Los beneficios de un proyecto de mejora de procesos de software
han sido presentados y documentados[2, 3] y se dice que el retor-
no de inversión va en un rango de 5:1 de costo-beneficio. En un
caso de estudio de la empresa Cummins Engine Inc.[4] se adoptó
una LPS después de haber realizado un proyecto de mejora de pro-
cesos; y reportan que la mejora de procesos por sí sola tuvo un
radio de costo-beneficio entre 2:1 y 3:1; y la implantación de la LPS
en adición a la mejora de procesos arrojó un costo-beneficio de
10:1. Lo cual muestra evidencia de que si un SPI vale la pena, una
LPS vale aún más.

Existen muchos beneficios que una LPS puede proporcionar, destacando


los siguientes entre los más relevantes:

• Obtención de las ganancias de una producción a gran escala.


Como se mencionó en la adaptación masiva, una LPS habilita a producir Figura 1. Time-to-Market con y sin una LPS.

www.sg.com.mx AGO-OCT 2009 45


// PRÁCTICAS /*MEJORA DE PROCESOS*/

• Reducción de costos de desarrollo. Con una LPS los costos cación de características relevantes de sistemas de software que
de desarrollo de los sistemas miembros de la familia, están muy pertenecen a un dominio. Se dice que estas características son
por debajo de los costos de desarrollo de sistemas individuales. aspectos del dominio visibles al usuario final.
Al igual que en el “time-to-market”, al inicio el desarrollo de los
elementos comunes tiene mayor costo que desarrollar un sistema A pesar de que el método FODA está compuesto de tres fases,
individualmente. No obstante, una vez obtenidos, el costo dismi- para las cuales hay una serie de actividades individuales [6], la
nuye. Se puede decir que la tasa de incremento en el costo acumu- más relevante es la del modelado de características, pues es la
lado es mucho menor en una LPS que en sistemas individuales. que definirá las similitudes y variabilidades implícitas en el do-
minio. Dicho modelo de características se define por medio de
• Mejora de la calidad de los productos. Desde que el desarrollo un árbol donde quedarán especificados los elementos comunes y
de los elementos comunes es similar al desarrollo de los artefactos variables del dominio.
para un sistema individual, dichos elementos son probados cons-
tantemente por cada producto generado, y por formar parte de to- Por ejemplo, en la figura 2 se muestra un árbol de características
dos los productos de la familia se puede decir que la calidad es más para una línea de automóviles donde se pueden ver las caracte-
fácil y fielmente asegurada en todos ellos. rísticas comunes (como la transmisión y el caballaje) y las carac-
terísticas variables. Las variables pueden ser opcionales y estar
• Logro de las metas de reutilización de la organización. Dado contenidas o no en un sistema particular del dominio (como es el
que las LPS se basan en la reutilización de artefactos para un con- caso del aire acondicionado). También puede haber características
junto de sistemas, la reutilización planeada se obtiene al desarrollar alternativas de las cuales sólo una se puede implementar en un
la plataforma de elementos comunes. sistema particular del dominio (por ejemplo: la transmisión pue-
de ser manual o automática,pero no ambas). Además, dentro de
• Reducción de la necesidad de contratar nuevo personal. Des- un modelo de características se pueden incluir algunas reglas de
de que el proceso de generación de los productos de software se au- composición las cuales definen algunas relaciones entre caracte-
tomatiza cada vez más, la necesidad de contratar gente disminuye rísticas opcionales y/o alternativas.
debido a que dichos productos son generados cada vez con menos
ingenieros de software, lo cual de alguna manera ayuda a disminuir Existen principalmente dos tipos de ellas: la primera es donde la
los costos a la organización. existencia de una implica o requiere la existencia de la otra; y la
segunda es donde la existencia de una implica o requiere que no
• Incremento de la satisfacción del cliente. Por varios de los be- exista la otra (que sean mutuamente exclusivas). Para nuestro mo-
neficios mencionados anteriormente, los clientes y usuarios de los
sistemas generados con la LPS obtienen productos de software de
mucha mayor calidad a precios mucho más bajos que los que obten-
drían con un proveedor que no cuenta con una LPS.

Existen otros beneficios no menos importantes, sin embargo los que


aquí se presentaron son los más significativos. Si se desea obtener
más información acerca de estos otros beneficios se recomienda
consultar el capítulo 2 en [4].

El método FODA
Desde antes de existir el concepto de LPS existía la herramienta de
análisis de dominio (AD), que se enfoca en analizar los aspectos
comunes de un dominio particular que podíría consistir de un con-
junto de sistemas relacionados. A partir de esto, surgieron muchos
métodos de AD, siendo el método FODA (Feature-Oriented Domain
Analysis) el que marcó una pauta en el desarrollo del AD, pues ha
sido ampliamente utilizado para extraer las similitudes y variabili-
dades de un dominio. El principal objetivo de FODA es la identifi- Figura 2. Árbol de características para una línea de automóviles.

46 AGO-OCT 2009 www.sg.com.mx


“Una LPS consiste en un conjunto de elementos clave para
producir sistemas de software, que comparten características
comunes, pero mantienen elementos propios”.

delo de ejemplo en la figura, existe una regla donde la existencia Referencias


de aire acondicionado requiere que el caballaje sea mayor a 100.
[1]. Parnas, D.L. “On the Design and Development of Program Families”.
IEEE Transactions on Software Engineering, SE-2:1-9, March 1976.
Conclusiones [2] Ferguson, P. et al. “Software Process Improvement Works!” (CMU/SEI-99-
En este artículo se dió un vistazo a los fundamentos sobre los TR-027, ADA371804)”. Software Engineering Institute, November 1999.
que descansan las líneas de productos de software. Como se [3] Goldenson, D. & Herbsleb, J. “After the Appraisal: A Systematic Survey
pudo ver, la misma complejidad del sofware hace que nue- of Process Improvement, its Benefits, and Factors that Influence Suc-
vos métodos sean desarrollados para mitigarla, como lo son cess (CMU/SEI-95-TR-009, ADA302225)”. Software Engineering Institute,
las LPS. Pero además de intentar reducir la complejidad de August 1995.
desarrollo de software, las LPS tienen otros beneficios signi- [4] Clements, P. & Northrop, L. “Software Product Lines: Practices and
ficativos, como la disminución del costo de desarrollo, que Patterns”. Reading, MA: Addison-Wesley, 2002.
motivan a las organizaciones a tomar el reto de invertir en la [5] Kang, K. et al. “Feature-Oriented Domain Analysis (FODA) Feasibility
implantación de una LPS. Study, Technical Report CMU/SEI-90-TR-21”. Software Engineering Institu-
te, November 1990.

www.sg.com.mx AGO-OCT 2009 47

Você também pode gostar