Instituto Tecnológico y de Estudios Superiores de Monterrey
Campus Monterrey
Monterrey, Nuevo León a
", en los sucesivo LA OBRA, en virtud de lo cual autorizo a el Instituto Tecnológico y de Estudios Superiores de Monterrey (EL INSTITUTO) para que efectúe la divulgación, publicación, comunicación pública, distribución y reproducción, así como la digitalización de la misma, con fines académicos o propios al objeto de EL INSTITUTO.
El Instituto se compromete a respetar en todo momento mi autoría y a otorgarme el crédito correspondiente en todas las actividades mencionadas anteriormente de la obra.
De la misma manera, desligo de toda responsabilidad a EL INSTITUTO por cualquier violación a los derechos de autor y propiedad intelectual que cometa el suscrito frente a terceros.
Nombre y Firma AUTOR (A)
de 200
Lic. Arturo Azuara Flores:
Director de Asesoría Legal del Sistema
Estudio Exploratorio: Factores Críticos de éxito para la
Administración de Proyectos en Fábricas de Software-Edición
Única
Title Estudio Exploratorio: Factores Críticos de éxito para la Administración de Proyectos en Fábricas de Software-Edición Única
Authors Omar Higinio Caballero Cervantes Affiliation ITESM-Campus Monterrey
Issue Date 2006-04-01
Item type Tesis
Rights Open Access
Downloaded 19-Jan-2017 11:37:07
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS
SUPERIORES DE MONTERREY
CAMPUS MONTERREY
PROGRAMA DE GRADUADOS EN TECNOLOGÍAS DE
INFORMACIÓN Y ELECTRÓNICA
“ESTUDIO EXPLORATORIO: FACTORES CRÍTICOS DE ÉXITO
PARA LA ADMINISTRACIÓN DE PROYECTOS EN FÁBRICAS DE
SOFTWARE”
TESIS
PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADÉMICO DE:
MAESTRO EN ADMINISTRACIÓN DE TECNOLOGÍAS DE INFORMACIÓN
POR:
OMAR HIGINIO CABALLERO CERVANTES
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY
DIVISIÓN DE TECNOLOGÍAS DE INFORMACIÓN Y ELECTRÓNICA
PROGRAMA DE GRADUADOS EN TECNOLOGÍAS DE INFORMACIÓN Y ELECTRÓNICA
Los miembros del comité de tesis recomendamos que la presente tesis del ISC Omar Higinio Caballero Cervantes sea aceptada como requisito parcial para obtener el grado académico de Maestro en Administración de Tecnologías de Información.
Comité de tesis:
__________________________________ Dr. Macedonio Alanís González Asesor
__________________________________ Dr. David Ángel Alanís Dávila Sinodal
__________________________________ Dr. Miguel Ángel Pérez Guardado Sinodal
____________________________________ Dr. David Alejandro Garza Salazar Director del Programa de Graduados en Tecnologías de Información y Electrónica.
“ESTUDIO EXPLORATORIO: FACTORES CRÍTICOS DE ÉXITO
PARA LA ADMINISTRACIÓN DE PROYECTOS EN FÁBRICAS DE
SOFTWARE”
POR:
Omar Higinio Caballero Cervantes
TESIS
Presentada al Programa de Graduados en Tecnologías de Información
y Electrónica
Este trabajo es requisito parcial para obtener el grado de Maestro en
Administración de Tecnologías de Información
INSTITUTO TECNOLÓGICO Y DE ESTUDIOS
SUPERIORES DE MONTERREY
Dedicatoria
A esa gran fuerza que muchos llamamos Dios
A mis dos ángeles Alicia y Elisa gran ejemplo de fortaleza y tenacidad para continuar siempre
adelante y cumplir con los objetivos que uno se propone en esta vida.
A mis Padres por su apoyo y amor incondicional durante las etapas más críticas de mi vida.
A mi Mamá con todo mi amor, ejemplo que como persona me he definido a seguir.
A mi Papá por darme innumerables lecciones sobre esta vida.
A mi Abuelito por ser casi un segundo papá durante mucho tiempo.
A mis Tíos que de una u otra forma me alentaron a continuar y obtener este resultado.
A Jahail, Elisa y Eduardo son más que simplemente hermanos para mí.
Reconocimientos
Al Dr. Macedonio Alanís González, Asesor principal, por sus conocimientos, experiencias y tiempo dedicado, que conformaron una guía indispensable para la realización de la presente tesis. Gracias por su apoyo a lo largo de todo el proceso.
Al Dr. David Alanís Dávila, Sinodal, por su retroalimentación, comentarios y apoyo constante durante la elaboración del presente estudio.
Al Dr. Miguel Ángel Pérez Guardado, Sinodal, por su apoyo y consejos que en base a su perspectiva particular, permitieron enriquecer este estudio.
Al Ing. Gustavo Cervantes Ornelas, Coordinador de la maestría y profesor, por compartir sus conocimientos y recomendaciones en ésta área de conocimiento en particular.
A las personas involucradas durante la etapa de estudio de campo, ya que al permitir aplicar las encuestas o al contestarlas, fue posible recopilar la información necesaria para completar con éxito esta investigación.
Resumen
En la actualidad, la capacidad de desarrollo de software se vuelve insuficiente para satisfacer la creciente demanda mundial, generando la necesidad de emplear modelos de desarrollo con ciclos cada vez más cortos, en grandes volúmenes y con excelente calidad, como el analizado en este estudio, el modelo de fábrica de software.
Sin embargo, aun cuando teóricamente se pudiera dar solución a este problema con el uso de este modelo, los altos índices de fracaso en los proyectos llevan a emplear metodologías basadas en mejores prácticas para administrarlos, para hacer un uso eficiente de los recursos, y obtener resultados favorables para cumplir con tiempos establecidos, presupuestos restringidos, capital humano limitado y cumplimiento de requerimientos del cliente para lograr su satisfacción.
El objetivo principal de este estudio exploratorio, es analizar la manera en que ciertos factores afectan la administración de proyectos de desarrollo de software bajo un modelo de fábricas de software. Y por ello tiene el propósito de identificar dichos factores y el grado de influencia que tienen para mejorar el desempeño de las técnicas utilizadas actualmente.
Una vez realizada una investigación literaria basada en los conceptos anteriores, pudo identificarse una serie de factores o elementos que permitieron ensamblar un modelo particular para incrementar las posibilidades de éxito de un proyecto de desarrollo de software bajo este contexto.
En base a este modelo particular se diseño un instrumento que permitiera recopilar información sobre la influencia de dichos factores en las prácticas de desarrollo de las empresas de la región. Con este propósito se encuestaron 28 administradores de proyectos dentro de 14 empresas de desarrollo de software o de otro giro, que emplean de alguna forma un modelo de fábricas de software y además están establecidas en el Área Metropolitana de Monterrey.
Tabla de Contenido
Dedicatoria...iv
Reconocimientos...v
Resumen...vi
Tabla de Contenido... vii
Lista de Figuras...xi
Lista de Tablas... xiii
Lista de Tablas... xiii
CAPITULO 1. INTRODUCCIÓN ... 1
1.1 Antecedentes ... 1
1.1.1 Situación del desarrollo de Software en México ... 2
1.1.2 Situación del desarrollo de Software en el Estado de Nuevo León ... 3
1.2 Problemática ... 4
1.2.1 Baja capacidad de desarrollo de software para satisfacer la demanda y los ciclos de vida cada vez más cortos. ... 4
1.2.2 Existencia de deficiencias en la calidad del proceso de desarrollo de Software. ... 5
1.2.3 Alto grado de fracaso en Proyectos de desarrollo de Software ... 5
1.2.4 Necesidad de identificar factores de éxito en la Administración de Proyectos bajo el modelo de fábricas de software. ... 7
1.3 Objetivo del Estudio ... 8
1.4 Metodología ... 8
1.5 Organización del Documento ... 9
CAPÍTULO 2. LITERATURA PREVIA... 11
2.1 Introducción... 11
2.2 Desarrollo de Software y Ciclo de vida ... 12
2.2.1 Desarrollo de Software ... 12
2.2.2 Evolución de los modelos de desarrollo de Software ... 13
2.3 Fábricas de Software ... 16
2.3.1 Definición de Fábricas de Software. ... 17
2.3.2 Elementos del desarrollo de aplicaciones en una fábrica de software ... 17
2.3.3 Técnicas empleadas en el Modelo de Fábricas de Software... 19
2.3.4 Ciclo de Vida de desarrollo en Fábricas de Software. ... 20
2.3.5 Visión a futuro de las fábricas de Software... 21
2.4 Calidad en el desarrollo de Software ... 21
2.4.1 Calidad del proceso de desarrollo de Software ... 22
2.4.2 Modelo de certificación CMM ... 23
2.4.3 Calidad en el desarrollo de Software en el Área Metropolitana de Monterrey ... 25
2.5 Administración de Proyectos... 26
2.5.1 Concepto de la administración de proyectos ... 26
2.5.2 Procesos de la administración de proyectos ... 27
2.5.3 Áreas de Conocimiento de la Administración de Proyectos ... 29
2.5.4 Ciclo de vida de Proyecto y Ciclo de Vida de Producto ... 30
2.5.5 Administración de Proyectos de Software ... 30
2.5.6 Etapas de la administración de proyectos de Software ... 31
2.6 Factores Críticos de Éxito de la Administración de Proyectos y del desarrollo de Software... 33
2.6.1 Factores Críticos de la Administración de Proyectos de Software ... 33
2.6.2 Factores Críticos para la reutilización... 34
2.6.3 Factores Críticos para el desarrollo por componentes. ... 35
2.6.4 Factores Críticos de Calidad ... 36
2.7 Conclusiones... 37
CAPÍTULO 3. MARCO TEÓRICO Y METODOLOGÍA DE INVESTIGACIÓN... 39
3.1 Introducción... 39
3.2 Objetivo del Estudio ... 39
3.3 Modelo Particular ... 40
3.4 Metodología de Investigación... 42
3.4.3 Muestra... 44
3.4.4 Variables... 45
3.4.5 Instrumento de medición ... 50
3.4.6 Estrategia de recolección de datos... 53
3.5 Conclusiones... 54
CAPÍTULO 4. RESULTADOS OBTENIDOS ... 55
4.1 Introducción... 55
4.2 Contexto General ... 55
4.2.1 Tamaño y Experiencia de la empresa ... 55
4.2.2 Puesto, experiencia y educación del administrador de proyectos ... 57
4.2.3 Duración del proyecto y tamaño del equipo... 58
4.2.4 Costo y tipo del proyecto ... 59
4.3 Resultados obtenidos en los factores críticos de éxito... 60
4.3.1 Factores de administración de proyectos ... 60
4.3.2 Factores de reutilización... 62
4.3.3 Factores del desarrollo por componentes... 64
4.3.4 Factores de calidad del proceso de desarrollo. ... 65
4.3.5 Resumen de Factores de éxito de todas las categorías... 66
4.4 Indicadores de éxito del proyecto... 68
4.4.1 Costo, tiempo y esfuerzo al final del proyecto ... 68
4.4.2 Satisfacción del cliente, satisfacción del personal y calidad del proyecto 69 4.4.3 Estabilidad del plan, manejo de imprevistos y utilidad de las herramientas. ... 71
4.4.4 Percepción general del éxito ... 72
4.5 Conclusiones... 73
CAPÍTULO 5. ANÁLISIS DE RESULTADOS ... 75
5.1 Introducción... 75
5.2 Coeficiente de correlación de Pearson ... 75
5.3 Identificación de variables para este capítulo... 76
5.4.1 Contexto general e influencia en los factores de éxito de administración de
proyectos. ... 78
5.4.2 Contexto general e influencia en los factores de éxito de reutilización... 80
5.4.3 Contexto general e influencia en los factores de éxito de desarrollo por componentes. ... 83
5.4.4 Contexto general e influencia en los factores de éxito de calidad en el proceso... 83
5.5 Correlaciones entre variables de factores de éxito y variables de resultados obtenidos. ... 85
5.5.1 Factores de éxito de administración de proyectos e influencia en indicadores de éxito del proyecto ... 86
5.5.2 Factores de éxito de reutilización e influencia en indicadores de éxito del proyecto... 89
5.5.3 Factores de éxito de desarrollo por componentes e influencia en indicadores de éxito del proyecto. ... 94
5.5.4 Factores de éxito de calidad en el proceso e influencia en indicadores de éxito del proyecto. ... 96
5.6 Resumen de relaciones más significativas... 98
5.7 Conclusiones... 101
CAPÍTULO 6. CONCLUSIONES FINALES Y TRABAJOS FUTUROS ... 103
CAPÍTULO 7. BIBLIOGRAFÍA ... 107
APÉNDICES ... 113
Apéndice A. Mapeo de los Procesos de la Administración de Proyectos del Project Management Institute... 113
Apéndice B. Instrumento de Medición... 114
Lista de Figuras
Fig. 1.1 Especialistas en tecnologías de Información requeridos a nivel mundial y
generados en la India... 2
Fig. 2.1 Ciclo de vida del desarrollo de software basado en componentes... 15
Fig. 2.2. Desarrollo de Productos a la Medida en Fábricas de Software... 19
Fig. 2.3. Niveles del CMM ... 24
Fig. 3.1 Modelo Particular para la Administración de Proyectos en Fábricas de Software... 41
Fig. 4.1 Tamaño de las empresas encuestadas... 56
Fig. 4.2 Experiencia de la empresa desarrollando software... 56
Fig. 4.3 Puesto que ocupa en la empresa... 57
Fig. 4.4 Experiencia como administrador de proyectos... 57
Fig. 4.5 Ultimo grado de estudios del administrador de proyectos... 57
Fig. 4.6 Duración del proyecto en meses... 58
Fig. 4.7 Tamaño del equipo del proyecto ... 58
Fig. 4.8 Costo total del proyecto... 59
Fig. 4.9 Complejidad del proyecto de acuerdo con sus características... 59
Fig. 4.10 Promedios de los factores críticos de éxito por categoría. ... 60
Fig. 4.11. Promedio de los factores de administración de proyectos ... 61
Fig. 4.12 Promedio de los factores de reutilización... 62
Fig. 4.13 Resultados de número de proyectos anteriores con prácticas de reuso 63 Fig. 4.14 Promedios de los factores de desarrollo por componentes... 64
Fig. 4.15 Promedios de los factores de calidad del proceso ... 66
Fig. 4.16 Resumen de todos los factores en orden de valor promedio obtenido .. 67
Fig. 4.17 Tiempo de entrega del proyecto... 68
Fig. 4.18 Costo final del proyecto... 68
Fig. 4.19 Esfuerzo dedicado al proyecto ... 69
Fig. 4.20 Satisfacción del personal ... 69
Fig. 4.22 Satisfacción del cliente en función de correcciones que solicitó posterior
a la entrega. ... 70
Fig. 4.23 Cambios importantes realizados al plan de trabajo... 71
Fig. 4.24 Reuniones extraordinarias realizadas para tratar contingencias... 71
Fig. 4.25 Utilidad de las herramientas y métodos empleados... 72
Lista de Tablas
Tabla 2.1 Factores Críticos de éxito para el desarrollo de proyectos en fábricas de
software. ... 38
Tabla 3.1. Variables controladas... 45
Tabla 3.2. Variables independientes de información General... 46
Tabla 3.3. Variables Independientes dentro de la categoría de Administración de Proyectos. ... 47
Tabla 3.4. Variables Independientes correspondientes a la categoría de Reutilización... 48
Tabla 3.5. Variables Independientes dentro de la categoría de Reutilización de código. ... 49
Tabla 3.6. Variables Independientes dentro de la categoría de Reutilización de código. ... 49
Tabla 3.7. Variables Independientes correspondientes a la categoría de Reutilización de código. ... 51
Tabla 4.1 Resultados de factores de administración de proyectos ... 61
Tabla 4.2 Resultados de los factores de reutilización ... 62
Tabla 4.3 Resultados de los factores de desarrollo por componentes... 64
Tabla 4.4 Resultados de los factores de calidad del proceso ... 65
Tabla 5.1 Correlaciones entre el contexto general y los factores de éxito de la administración de proyectos ... 78
Tabla 5.2 Correlaciones entre el contexto general y los factores de éxito para la reutilización ... 81
Tabla 5.3 Correlaciones entre el contexto general y los factores de éxito para el desarrollo por componentes... 83
Tabla 5.4 Correlaciones entre el contexto general y los factores de éxito para la calidad del proceso ... 84
Tabla 5.5 Correlaciones entre los factores de éxito de administración de proyectos y el éxito obtenido en el proyecto... 86
Tabla 5.6 Correlaciones entre los factores de éxito de reutilización y el éxito obtenido en el proyecto... 90
Capitulo 1. Introducción
1.1 Antecedentes
Debido a la emergente economía digital, muchas de las actividades clave de cualquier organización se realizan por medio de la ayuda del software como una herramienta indispensable. Es por ello que esta economía del Conocimiento o bien economía Digital está repleta de aplicaciones de Software (Peñaloza, 2002). Esta situación se puede observar claramente al considerar que hace aproximadamente 40 años, las empresas más rentables se dedicaban a la industria petrolera y siderúrgica principalmente; en la actualidad las empresas de desarrollo de software conforman un mercado de gran importancia y con grandes capacidades de desarrollo económico.
De acuerdo con Sinclair (2003), el mercado de desarrollo de software de exportación a nivel mundial equivalía a más de 12 billones de dólares en el 2002. Esta situación esta siendo aprovechada por varios países. En el caso específico de India, únicamente durante la década de los noventa se convirtió en el principal proveedor de servicios de Tecnologías de Información de Estados Unidos (el cual abarca el 70% del mercado mundial).
Además de la India, se distinguen nuevos promotores del crecimiento de este mercado, entre los que se encuentran países como Brasil, Canadá, Irlanda, Ucrania y Filipinas (Oseguera, 2002). India (uno de los países que se han adaptado favorablemente a esta situación), produce 55 mil profesionistas al año en áreas de tecnologías de información.
Sinclair (2003) con datos obtenidos de Forrester Research (2002) menciona que más de 400,000 nuevos empleos con personal capacitado fuera de India deben ser generados para satisfacer la demanda mundial en el 2005, lo cual representa una oportunidad para aquellos países que aun no se integran a este mercado, incluyendo a México, en donde además de la inexistencia de un desarrollo de software adecuado, existe migración de sus profesionales de tecnologías de información hacia el extranjero (véase Figura 1).
Fig. 1.1 Especialistas en tecnologías de Información requeridos a nivel mundial y generados en la India.
Fuente: Forrester Research 2002
1.1.1 Situación del desarrollo de Software en México
Solo menos del 4% de los clientes potenciales toman en cuenta a México como una oportunidad de mercado de desarrollo de software, de acuerdo a datos que Sinclair (2002) toma del Offshore Development Group. Esto debido a que
dichos clientes potenciales consideran la situación del país antes de elegir a los desarrolladores de software que existen en él. Para tomar en cuenta a un mercado de desarrollo determinado, la mayoría de los clientes buscan encontrar lo que llaman las 3E, de sus siglas en inglés: Experience, English y Expertise, lo que
quiere decir que se busca que las empresas tengan la experiencia suficiente en el mercado de desarrollo, que sus trabajadores dominen el idioma inglés y además sean expertos en la rama en que se desempeñan.
La deficiencia de apoyo por parte del gobierno se ve fácilmente en el rezago de gasto en desarrollo de Tecnologías de Información que se tiene en la actualidad en México el cual equivale al 3.2% del Producto Interno Bruto (PIB), según hace referencia Oseguera (2002) de Bernal (participante en la creación del Programa de Desarrollo de la Industria del Software, PDIS). Lo que coloca a México en el lugar 50 a nivel mundial en cuanto al PIB que se destina a esta actividad.
145000
360000
635000
850000
1065000
415000 445000 475000
535000
675000
0 200000 400000 600000 800000 1000000 1200000
2001 2002 2003 2004 2005
El mercado de software en México, de acuerdo con Carral (1998) consistía en 63 microempresas, 117 pequeñas empresas, 14 medianas, 11 grandes y únicamente un corporativo en el área de desarrollo de software en 1997. Lo que caracteriza a un mercado de desarrollo de proyectos aislados y a la medida, sin contratos formales que satisfacían principalmente la demanda del mercado interno.
Solo el 20% de las empresas mexicanas de Tecnologías de Información representan una oportunidad de lograr niveles superiores de calidad, ya que son las que han invertido recursos y cuentan con una cultura de calidad, de acuerdo con el estudio de Capacidad de Procesos para la Industria de las Tecnologías de Información de la Secretaria de Economía (2004). Se demuestra esta situación de bajos niveles de calidad, al observar que únicamente el 12% de las empresas de tecnologías de información exportan software.
1.1.2 Situación del desarrollo de Software en el Estado de Nuevo León
La situación en el estado de Nuevo León es favorable para el crecimiento de empresas desarrolladoras de software, según el estudio de capacidades locales para desarrollo de economía digital llevado a cabo por la Secretaría de Economía (Ruiz et al., 2002), ya que cuenta con un índice de capacidad local de 8.46, mucho mayor que el índice nacional de 4.73. Dicho índice es determinado tomando en cuenta aspectos como: calificación del capital humano, clústers de Investigación
con capacidad de desarrollo, infraestructura para la nueva economía y conectividad en cada Estado.
Además, Nuevo León cuenta con la fábrica de software más importante del país (Softek) con más de 2000 empleados, existen un total de 200 organizaciones desarrolladoras de software en la entidad, conforma el segundo núcleo de economía digital del país, posee una escolaridad promedio de 8.9 años, existe una alta concentración de empresas y un gobierno constituido favorablemente para la creación de empresas conectadas al mundo (Ruiz et al. 2002). Todo este panorama presenta un ambiente factible para la instauración de empresas desarrolladoras utilizando el esquema de fábricas de software.
Nuevo León cuenta con un programa vigente denominado Nearshore
Application Outsourcing (Ruiz et al., 2002), el cual pretende crear condiciones para
consolidar y desarrollar a la industria, producir certificaciones y mejorar la tecnología. Dicho programa planea la creación de los llamados SDL’s (Software Development Centers) los cuales deberán contar con 3000 profesionistas y formar
Por otra parte, en datos de Monterrey y su área metropolitana (AMM) se encontró que el 36% de las empresas se dedican al desarrollo de aplicaciones a la medida, y solo el 23% de estas, toma como actividad principal el desarrollo
Offshore (SE, 2004). De acuerdo con el mismo estudio, también se menciona que
el 71% de las empresas tienen ventas menores a los 2.5 millones de pesos anuales, lo cual representa el rango menos significativo en cuanto a los ingresos obtenidos por el desarrollo de software.
1.2 Problemática
A lo largo de esta sección se desarrollan algunos aspectos que forman parte de la problemática del desarrollo de software actual. Estos problemas fueron identificados a partir de los antecedentes ya mencionados en la sección anterior, considerando el panorama competitivo que presenta la industria del software.
Los problemas existentes en el desarrollo de software que se tratarán más a detalle son los siguientes:
• Baja capacidad para desarrollar software de manera que pueda
satisfacerse la demanda creciente y los ciclos de vida más cortos.
• Deficiencias en la calidad del proceso de desarrollo de software.
• Altos índices de fracaso de los proyectos de desarrollo de software.
• Necesidad de identificar factores de éxito para la administración de proyectos en fábricas de software.
1.2.1 Baja capacidad de desarrollo de software para satisfacer la demanda y los ciclos de vida cada vez más cortos.
La demanda de productos de software se presenta en cantidades industriales y excede a la capacidad de desarrollo si se intenta satisfacerla por medio de métodos artesanales, es decir, iniciando cada proyecto de software partiendo desde cero y desarrollarlo en su totalidad hasta tener el producto terminado (Greenfield y Short, 2003).
Las fábricas de Software tienen como objetivo principal el automatizar actividades repetitivas y, además, encapsular la experiencia obtenida en cada proyecto de desarrollo y el conocimiento generado en dominios o áreas de aplicación específicas, para su uso posterior (Swoyer, 2004).
Según Greenfield y Short (2003), las fábricas de software conforman la tecnología sucesora de las metodologías de desarrollo orientadas a objetos al integrar tres conceptos básicos: desarrollo basado en componentes, desarrollo conducido por modelos y líneas de producción de software.
1.2.2 Existencia de deficiencias en la calidad del proceso de desarrollo de Software.
Actualmente, es necesaria la constante mejora de la calidad de tres aspectos fundamentales dentro de una empresa desarrolladora de software en cuanto a sus procesos, de acuerdo a Iversen et al. (1999): sus métodos, técnicas y herramientas; sus actitudes y cultura organizacional; y sus prácticas administrativas. Existen certificaciones de calidad como el CMM (Capability Maturity Model), el cual mide o capitaliza el desempeño y las prácticas actuales de la organización y la calidad de sus productos y servicios, además de puntualizar los aspectos que requieren de una mejora.
De acuerdo con la Secretaría de Economía (2004), del personal de las empresas de Tecnologías de Información en el AMM que pertenecen al área técnica, 87% tienen estudios superiores, pero únicamente 2% del total cuentan con alguna capacitación en mejora de procesos (certificaciones en CMM o ISO).
Tal como se mencionó anteriormente, la falta de certificación de las empresas desarrolladoras en México es un factor importante que toman en cuenta los clientes potenciales para considerar o no el invertir en el mercado local.
1.2.3 Alto grado de fracaso en Proyectos de desarrollo de Software
De acuerdo con Cimet (2001), el 26% de los proyectos de software son realizados con éxito, 46% son cuestionables y 28% son proyectos fallidos, lo que representa un desperdicio de 97 miles de millones de dólares.
desarrollado, y disminuir la inversión de esfuerzos en el desarrollo de software de aplicación partiendo desde cero o utilizando pobremente aplicaciones anteriores.
Por otra parte, debido a que los recursos son limitados para algunas organizaciones, es necesario identificar y justificar cuales proyectos tienen mayor probabilidad de terminarse con éxito, así como llevar a cabo una adecuada planeación de actividades, realizar estudios de factibilidad, y utilizar herramientas de control que permitan el monitoreo del progreso que tienen los proyectos de software (Thambain, 2000).
La administración de proyectos provee de herramientas y métodos a los líderes de desarrollo para planear, organizar, y administrar actividades grupales que buscan cumplir con ciertas metas u objetivos específicos (Jurison, 1999). Debido a que prácticamente todas las actividades de desarrollo de software son realizadas como proyectos, esta disciplina es indispensable. De esta manera es posible disminuir la probabilidad de sobrepasar el límite de gastos y tiempo, mejorar la confiabilidad del producto y lograr la satisfacción del cliente.
De la misma manera el administrar el desarrollo de varios proyectos a la vez según Nobeoka y Cusumano (1997), es una metodología necesaria en empresas que requieren producir varios productos en el menor tiempo posible, debido al acortamiento de ciclos de vida de los productos terminados y al incremento de la demanda de varios productos a la vez por parte de los clientes.
En base a esta información es posible decir que llevando una adecuada administración de proyectos no solo se mejora el proceso de desarrollo para cumplir con el plan de trabajo establecido al inicio de un proyecto, sino que también se obtienen mejoras en la calidad del producto terminado y del mismo funcionamiento de la empresa desarrolladora.
La falta de una adecuada administración de proyectos se ve reflejada en el hecho de que el 80% de las empresas establecidas en el AMM demuestran deficiencias en su capacidad de procesos técnicos de desarrollo de software. Algunos de esos proceso técnicos son: administración de proyectos, administración de requerimientos, etapas de desarrollo y prueba, y en el mantenimiento y soporte (Secretaría de Economía, 2004). Dentro de estas áreas se distingue que las actividades técnicas con mayor debilidad en el desarrollo del software en el AMM son:
• Gestión de riesgo
• Administración de la configuración (lo que denota problemas de adaptabilidad entre componentes en las aplicaciones desarrolladas).
• Validación de requerimientos.
Sin embargo, aun cuando se generen los empleos necesarios y esto se realice con la calidad pertinente, persistirá el problema de adaptarse a las necesidades actuales del mercado, el cual exige grandes volúmenes de software y periodos de desarrollo cada vez más cortos.
1.2.4 Necesidad de identificar factores de éxito en la Administración de Proyectos bajo el modelo de fábricas de software.
La administración de proyectos de desarrollo de software orientado a objetos según Dué (1999), además de las variables controladas por la administración de proyectos convencional, como son el costo, el tiempo, el desempeño y la satisfacción de los clientes, incorpora otras como el alcance del producto, y las técnicas y herramientas empleadas (ya que con ellas es posible llevar a cabo el desarrollo y ensamble de los componentes utilizados).
El problema en esta situación, es aplicar una administración de proyectos acorde a las necesidades de este modelo de fábricas de software que asegure que el desarrollo del producto se lleve a cabo exitosamente (con calidad, en el tiempo planeado, bajo el presupuesto y logrando la satisfacción del cliente).
Según Jennex y Adelakun (2003), para lograr exitosamente el desarrollo de software por medio de componentes es necesario considerar factores críticos como son:
• Habilidades técnicas con que cuenta el desarrollador.
• Conocimiento que se tiene del cliente.
• Confianza existente en la relación Cliente-Fabrica de software.
• Infraestructura de Telecomunicaciones.
• Protección de la propiedad intelectual.
Así mismo, mencionan que el costo es un aspecto que queda en segundo plano.
Puesto que el éxito obtenido en el desarrollo de software actual representa un pequeño porcentaje y las debilidades más grandes de este desarrollo se encuentran en la inadecuada administración de proyectos de software actual, es necesario retomar algunos aspectos de esta disciplina, y además adaptarla a los nuevos modelos de desarrollo.
Por lo anterior es necesario estudiar la manera en que este nuevo esquema (fabricas de software) tendrá que adoptarse dentro de la administración de proyectos, identificando nuevos roles, herramientas, modelos, estructuras, etc., para permitir que el desarrollo del software se lleve a cabo a tiempo, dentro del presupuesto, con la calidad requerida y en las cantidades demandadas.
1.3 Objetivo del Estudio
El objetivo principal de este estudio es analizar la manera en que ciertos factores críticos de éxito afectan la administración de proyectos de desarrollo de software bajo un esquema de fábricas de software.
Este análisis se realiza con el propósito de considerar la incorporación de los factores encontrados en las técnicas utilizadas actualmente, y a la vez proveer de una serie de consideraciones que mejoran el desempeño de las empresas desarrolladoras que utilizan un modelo de fábrica de software.
Además, este estudio proporciona elementos críticos que deben de considerarse para la adopción del modelo de desarrollo en cuestión y su correcta administración de proyectos.
1.4 Metodología
Este estudio es de tipo exploratorio, puesto que de acuerdo con Hernández, Fernández y Baptista (2003) el objetivo del mismo consiste en examinar un tema poco estudiado, o bien que existen estudios similares anteriores con la consideración de que fueron aplicados en otros contextos. El tema a examinar en este caso, son los factores críticos de éxito que influyen en los resultados obtenidos del desarrollo de proyectos en fábricas de software.
La presente tesis toma como sujetos de estudio a aquellos administradores de proyectos que trabajen en empresas de desarrollo de software o empresas de cualquier giro que cuentan con áreas de desarrollo de software, que emplean un esquema de fábricas de software establecidas en el Área Metropolitana de Monterrey.
software. Esta muestra de acuerdo con Hernández et al. (2003) es no probabilística, ya que suponen un procedimiento de selección informal.
Para esta muestra, la elección de los sujetos de estudio no depende de que todos tengan la misma probabilidad de ser elegidos, sino de la decisión del investigador. En el caso de este estudio, es importante considerar como parte de la muestra a aquellas personas con conocimiento de los procedimientos y prácticas, que utilizan para desarrollar software en aquellas empresas que califican como parte de la población seleccionada para este estudio, es decir, aquellas con esquemas de fábricas de software.
Por lo anterior, se seleccionaron dentro de la población definida, aquellos líderes de proyectos que cumplieron con los requisitos establecidos, de los cuales 28 fueron encuestados dentro de 14 empresas de desarrollo de software o de otro giro que cuentan con áreas de desarrollo de software.
La medición de la información recaudada se llevo a cabo por medio del uso de un cuestionario aplicado a los sujetos que conforman la muestra definida.
Durante la recolección de la información, se aplico el instrumento o cuestionario por medio de encuestas impresas que fueron entregadas a los administradores de proyectos o bien por medio de correo electrónico, de acuerdo con la disponibilidad que los mismos tuvieron para proporcionar la información.
1.5 Organización del Documento
La presente tesis se encuentra dividida en 7 capítulos. En el capítulo 2 se documenta la revisión bibliográfica, donde se definen conceptos básicos, se presenta una descripción de la administración de proyectos de software, el modelo de desarrollo de fábricas de software, y finalmente consideraciones y factores críticos de la administración de proyectos bajo este esquema.
El capítulo 3 corresponde a la información relacionada con el marco teórico que se utilizó como soporte a la investigación de campo. Incluye metodología utilizada, variables analizadas y como es que fueron medidas. Además de lo anterior, se describe el instrumento utilizado para la recolección de datos, las características de la población, muestra seleccionada y métodos empleados para la recolección de datos.
El capítulo 5, comprende el desarrollo de un análisis detallado de los resultados obtenidos, en base a las relaciones identificadas entre las variables medidas.
A lo largo del capítulo 6 se presentan las conclusiones finales de la presente tesis así como un resumen de los logros alcanzados. En este apartado se incluyen también algunas recomendaciones para estudios futuros relacionados con el tema abordado en este estudio.
Capítulo 2. Literatura previa
2.1 Introducción
Una vez analizada la problemática existente en el desarrollo de software, la cual conduce al objetivo del presente estudio, es necesario realizar una revisión del conocimiento existente sobre el tema. A lo largo de este capítulo se presentan algunos conceptos básicos y descripción de algunos tópicos relacionados con el objetivo de investigación.
Los conceptos que fueron identificados en las problemáticas a lo largo del primer capítulo, se encuentran organizados en las siguientes secciones:
• Desarrollo de software y su ciclo de vida. En esta sección se presenta información básica sobre la situación del desarrollo de software en el área metropolitana de Monterrey, concepto, evolución y ciclo de vida del desarrollo de software.
• Fábricas de software. Al formar parte de la evolución de los modelos de desarrollo de software y debido a que propone una solución a la problemática de la alta demanda de software y los ciclos de vida de menor duración, es necesario abordar este tema. Se presentan conceptos generales, elementos, ciclo de vida del modelo y técnicas que emplea.
• Calidad en el desarrollo de software. Tal como se mencionó en el capitulo anterior, uno de los elementos clave para la mejora del proceso de desarrollo de software es el establecimiento de medidas de calidad del proceso mismo, en esta sección se aborda este tema con más detalle.
• Administración de proyectos. Otro de los puntos primordiales a tratar por este estudio es el correspondiente a la administración de proyectos específicamente orientada al desarrollo de software, debido a las deficiencias existentes en esta área. A lo largo de esta sección se presentan definición, características y etapas.
2.2 Desarrollo de Software y Ciclo de vida
En esta sección se analizarán brevemente algunos conceptos básicos sobre: el desarrollo de software, su ciclo de vida y algunos de sus modelos de desarrollo, para continuar con la situación del desarrollo de software en el área metropolitana de Monterrey.
2.2.1 Desarrollo de Software
De acuerdo con Pressmann (1998), la Ingeniería del Software es la disciplina que estudia los aspectos metodológicos relacionados con el diseño, el desarrollo y el mantenimiento de programas. En general, las etapas para la realización de los proyectos de software siguen algunas de las siguientes fases:
• Análisis de requisitos del software. Debe definirse, de forma precisa, el alcance del proyecto, los contenidos y funciones, el rendimiento del sistema y el conjunto de interfaces del usuario.
• Fase de diseño. En esta etapa se decide el conjunto de estructuras de los datos necesarios, la arquitectura del sistema y el detalle de los procedimientos utilizados en el software. La responsabilidad de esta fase recae en los analistas informáticos, junto con los usuarios finales del sistema. Como resultado se obtendrá el pseudocódigo u organigrama del programa.
• Codificación. En esta etapa se traducen los algoritmos especificados en la fase anterior a un determinado lenguaje de programación. Como resultado de esta fase se obtendrá un programa o conjunto de programas fuente que, una vez compilado, dará lugar a un programa ejecutable.
• Pruebas, depuración y verificación. Es aquí cuando se comprueba el correcto funcionamiento del programa y el cumplimiento de todas las especificaciones y requisitos definidos inicialmente. Para ello, se realizan pruebas de cada módulo o unidad y de la integración de todos ellos, la validación de las especificaciones funcionales, y se realizan las correcciones necesarias para su buen funcionamiento.
• Explotación y Mantenimiento. Esta fase se lleva a cabo una vez que el producto ha sido entregado al usuario. Consta de mantener un periodo de asistencia técnica o mantenimiento y de solución de problemas o corrección de errores que puedan aparecer, se readaptan a nuevas especificaciones o circunstancias o, sencillamente, se mejora algún aspecto del software.
Para efectos de este estudio, se considerará como proceso de desarrollo de software a aquellas actividades derivadas o variantes, de estas etapas básicas que tengan como finalidad la creación de aplicaciones de software.
2.2.2 Evolución de los modelos de desarrollo de Software
Distintas son las necesidades o los requerimientos que tiene el proceso de desarrollo de software con el transcurso del tiempo, y algunos de los modelos creados para disminuir la complejidad que involucra son descritos brevemente a continuación.
Desarrollo de Software mediante programación modular. Es bien conocido que conforme se incrementa el tamaño de un programa, se vuelve más impráctico mantenerlo como una estructura monolítica. Es por esto que es necesario dividirlo en unidades pequeñas, subprogramas o procedimientos llamados Módulos, que en conjunto proporcionan la funcionalidad requerida en una aplicación de Software (Codish, Debray y Giacobazzi, 1993).
De acuerdo con los mismos autores, el desarrollo de software mediante programación modular, consiste en crear aplicaciones integrando piezas de código independientes o módulos para disminuir la complejidad del diseño de la aplicación y aumentar la adaptabilidad del Software terminado y la capacidad de actualizarlo más fácilmente.
Desarrollo de Software orientado a objetos. La principal diferencia entre el desarrollo orientado a objetos y el desarrollo orientado a funciones (uso de módulos y procedimientos), radica en que éste último se organiza en funciones que son aplicadas a los datos, mientras que el primero se organiza en objetos interactivos que mejoran la reutilización de elementos del software y disminuye el alcance o los efectos que tienen los cambios realizados en la aplicación completa. Este modelo reduce considerablemente los costos de desarrollo y mantenimiento de aplicaciones de software (Fayad, Tsai y Fulghum, 1996).
funcionalidad de los demás objetos (Anderson, Sheffler y Ward, 1991). Es decir, los objetos pueden adaptarse a otros tipos de uso o aplicación sin modificar su definición.
De acuerdo con Anderson et al. (1991) el desarrollo orientado a objetos se basa en 3 conceptos:
• Abstracción. Capacidad de revelar únicamente los elementos esenciales de un elemento de software (datos y operaciones) sin mostrar aquellos detalles que no son esenciales para el desarrollador (algoritmos de funcionamiento) y de esta forma disminuir la complejidad.
• Descomposición. Durante este proceso se descompone un sistema
complejo en elementos que preservan sus características (objetos) y de esta manera es posible determinar las piezas necesarias para construir una abstracción.
• Modelación. Medio para representar y analizar los objetos y su comportamiento dentro del dominio de un problema o diseño de software. Es decir, permite representar un conjunto de abstracciones.
Desarrollo de Software basado en Componentes. De acuerdo con Santaolaya, Fragoso y López (1999) se considera a este modelo como una solución al problema de la creciente demanda de aplicaciones de software que a la vez proporciona mejor calidad y costos más bajos. Dicho modelo implica ciertos problemas:
• Carencia de Herramientas adecuadas y/o suficientes para apoyar la totalidad del ciclo de vida del software.
• Falta de personal calificado para el desarrollo de componentes reutilizables.
• Carencia de cultura y políticas organizacionales para construir aplicaciones bajo este enfoque.
El mismo autor define como componentes, a cada elemento de software con características definidas, el cual puede ser utilizado en aplicaciones similares y dentro del mismo dominio. El desarrollo basado en componentes permite crear aplicaciones reutilizables de software tanto para dominios específicos como para aquellos de uso general.
El ciclo de vida de desarrollo de software basado en componentes se ilustra en la figura 2.1.
Fig. 2.1 Ciclo de vida del desarrollo de software basado en componentes. Fuente: Santaolaya, et al., 1999
2.2.3 Desarrollo de Software en el Área Metropolitana de Monterrey
La industria del desarrollo de Software en México presenta una mezcla bastante heterogénea, ya que existen desde micro-empresas hasta empresas internacionales de gran tamaño (Fernández, 2004). Esto resalta el hecho de que en dicha industria existan diferencias en los nichos de mercado a los que pertenecen, el tipo de empresas a las que atienden y el nivel de madurez de las mismas.
De acuerdo con la Secretaría de Economía (2004), en el área metropolitana de Monterrey (AMM) se encontraron las siguientes estadísticas en el Estudio de Nivel de Madurez y de Capacidad de Procesos de la Industria de Tecnologías de Información de varias empresas involucradas en el Programa para la Industria del Desarrollo del Software (PROSOFT):
Diseño Análisis
Composición
Pruebas
Mantenimiento Adaptación de componentes
• El 36% de las empresas desarrolladoras se dedican a la programación de sistemas de cómputo a la medida.
• 55% se dedican al desarrollo de SW a la medida.
• 43% se dedican a la personalización de Software empaquetado.
• 23% de las empresas se dedican al desarrollo Offshore.
• 40% da mantenimiento y soporte de sistemas.
• 38% subcontrata operadores (manpower).
• 38% de las empresas se dedican al desarrollo de software empaquetado.
• 21% de las empresas se dedica a otorgar servicios de integración e implementación de sistemas.
• 4% se dedica a la administración y operación de tecnologías de información.
• 71% tienen ventas de software inferiores a los 2.5 millones de pesos anuales.
• 12% exporta software.
Las empresas que fueron estudiadas pueden pertenecer a más de una de las categorías anteriores.
En el AMM se cuenta con 1515 empleados en el área de desarrolladores de SW: 77% de áreas técnicas (gerentes, líderes, analistas, ingenieros de software, personal de mantenimiento y soporte, y manpower) dentro de los cuales
aproximadamente solo el 2% tiene preparación en la mejora de procesos (Secretaria de Economía, 2004).
Aspectos a resaltar de estas estadísticas son el hecho de que pocas de ellas se dedican a la creación de software de exportación, lo que permite pensar que en su mayoría se enfocan en atender al mercado interno. Por otra parte aun se desarrolla software a la medida en gran proporción, aún cuando se utilizan modelos de desarrollo de software de reutilización de código (orientado a objetos o basado en componentes).
2.3 Fábricas de Software
2.3.1 Definición de Fábricas de Software.
Una Fábrica de Software se puede definir como una línea de producción, arquitectura o esquema de software que permite el desarrollo en forma masiva de software con características similares, la cual genera herramientas para definir una familia de productos. Esto se realiza por medio del uso de plantillas que son utilizadas para crear productos a la medida y específicos a un dominio de aplicación (Cantone, 1992; De Baud y Schmid, 1999; Greenfield y Short, 2005).
Por otra parte, de acuerdo con Li, Li y Li (2001), una fábrica de software involucra: la integración de sistemas de administración de la calidad orientados a procesos, infraestructura y organización acorde para la producción en línea, procesos organizacionales y técnicas de desarrollo. De acuerdo con Cantone (1992) dichas técnicas incluyen: producción de “partes de software” organizadas por medio de repositorios, arquitecturas modulares, integración de métodos heterogéneos, y herramientas para su adecuada configuración y reconfiguración.
Además, una fábrica de Software captura sistemáticamente el conocimiento de cómo producir miembros de una familia de productos y lo transforma en patrones, frameworks, modelos y herramientas, aplicándolos de tal forma que se puede automatizar el proceso de desarrollo de miembros de dicha familia reduciendo costos y tiempo para comercializarlos (Cantone, 1992; Greenfield y Short, 2003).
Para efectos de este estudio se considerará como fábrica de software a la capacidad de desarrollar líneas de producción de software, utilizando técnicas que permitan derivar productos terminados a partir de familias de productos, que tengan capacidad de reutilizar código y además utilicen sistemas de administración de calidad que permitan capturar la experiencia obtenida en cada desarrollo para su uso posterior.
2.3.2 Elementos del desarrollo de aplicaciones en una fábrica de software
Esquemas de Software o Arquitecturas de Infraestructura reutilizable.
Contienen la definición de una familia de productos y los recursos que necesita para la creación de más de un producto de software con características similares. Abarca requerimientos ejecutables, código, pruebas, y artefactos de despliegue. En general, especifica ampliamente las características de una familia de productos de software. Un esquema de software tiene partes variables que se modifican para adecuarlas a las características del producto a desarrollar y otras fijas que conforman la definición de la familia de productos. Por otro lado, De Baud y Schmid (1999) las llaman arquitecturas de infraestructura reutilizable y conforman la base para construir líneas de producción de software.
Plantillas de Software. Se obtienen al empaquetar los lenguajes de dominio específico, los patrones, frameworks y herramientas descritas por un esquema de software para ponerlos a la disposición de un desarrollador de software para la creación de un producto específico. Estas plantillas son cargadas en un ambiente de desarrollo extensible para desarrollar y modificar fácilmente las características del producto generado a partir de ellas (Greenfield y Short, 2005).
Ambiente de desarrollo Interactivo. Es una herramienta por medio de la cual es posible cargar una plantilla de software y de esta manera crear productos a la medida (Greenfield y Short, 2005). La cual incluye la integración de herramientas y métodos heterogéneos con este propósito (Cantone, 1992).
Fig. 2.2. Desarrollo de productos a la medida en fábricas de software
Fuente: Adaptado de Cantone, 1992; De Baud y Schmid, 1999; y Greenfield y Short, 2005.
2.3.3 Técnicas empleadas en el Modelo de Fábricas de Software
De acuerdo con Greenfield (2004) las fábricas de software incorporan las siguientes técnicas de desarrollo de software:
• Reuso sistemático. Permiten crear familias de productos de software por medio de Integradores de Sistemas, los cuales transportan aplicaciones a otros clientes o utilizan aplicaciones existentes para adecuarlas a requisitos o dominios específicos (Arquitectura modular).
Esquemas de Software (Características generales de una familia de productos
de software)
Ambiente de Desarrollo Extensible
(Medio por medio del cual se cargan las Plantillas de
Software) Plantillas de Software (Características que definen
un producto de software específico)
Producto de Software a la Medida
• Producción en Línea. Capturan la forma en que se crean productos de software en componentes reutilizables y de esta manera se acelera la siguiente producción de aplicaciones con características similares.
• Desarrollo conducido por Modelos (MDD). Aumentan el grado de
abstracción de las herramientas para facilitar el trabajo en dominios específicos al documentar el proceso de desarrollo, e inclusive automatizarlo.
• Lenguajes de dominio específico. Para los propósitos del MDD no es de utilidad utilizar lenguajes de propósito general. Un Lenguaje de Dominio Específico (DSL) es la opción adecuada para este esquema de desarrollo. Un DSL tiene que ser de fácil comprensión por una persona que domine el área del lenguaje, debe utilizar conceptos utilizados dentro del dominio para el que fue creado y utilizar nombres que sean fáciles de identificar por éstas personas (notaciones de uso sencillo y reglas propias del dominio para evitar ambigüedades).
• Generación de Código Incremental. Utiliza pequeños elementos de abstracción para producir pequeñas cantidades de código y más acordes con la plataforma. Pueden crearse armazones que son completados con pequeñas cantidades de código por medio de herramientas como lenguajes visuales, o bien, pueden usarse varios DSL para transformar gradualmente el código y refinarlo hasta adoptarlo a la plataforma.
• Mecanismos de integración de componentes.
a) Composición en tiempo de diseño (codificación + framework = aplicación)
b) Composición en tiempo de Ejecución (permite sustituir objetos en el momento de ejecución de la aplicación o cambiar valores) c) Composición en tiempo de compilación.
2.3.4 Ciclo de Vida de desarrollo en Fábricas de Software.
De acuerdo con Greenfield (2004), las etapas de desarrollo de productos en fábricas de software son las siguientes:
• Análisis del problema. Se determina si el producto está dentro del alcance de la fábrica de software o si debe hacerse otro esquema y otra plantilla, o bien adquirir estas a otro desarrollador.
• Mapeo del diseño del producto. Se crea una arquitectura y un proceso de desarrollo a la medida del producto.
• Implementación del producto. Se adaptan los componentes o los
armazones del producto con pruebas de componentes y de ejecución.
• Despliegue del producto. Se crean y reutilizan condiciones,
configuraciones y componentes ejecutables que sean requeridos para la ejecución del producto.
• Prueba. Crear o reutilizar técnicas de prueba, instrumentación y herramientas de medición.
Estas etapas de desarrollo involucran (Cantone, 1992):
• Almacenar componentes genéricos y adaptarlos en tiempo de
producción a componentes personalizados según las necesidades.
• Compartir partes del proceso que son comunes en varias etapas.
• Diseñar la arquitectura del dominio que será compartida por cada aplicación dentro del mismo dominio que se vaya construyendo.
2.3.5 Visión a futuro de las fábricas de Software
De acuerdo con Greenfield y Short (2003) el desarrollo por medio de fábricas de software tendrá impactos en el mercado de desarrollo entre los que se pueden mencionar:
• Se disminuye el desarrollo y se incrementa el ensamblaje del software.
• Se crean cadenas de suministro para el software y estándares de arquitecturas y herramientas de desarrollo.
• Relaciones más estrechas entre proveedores y consumidores para mejorar el servicio.
• Creación de herramientas para el desarrollo en dominios específicos (para desarrollo de aplicaciones y de otras herramientas).
• Desarrollo en masa de aplicaciones a la medida.
• Desarrollo de nuevas habilidades para el ensamblaje y no para escribir código.
2.4 Calidad en el desarrollo de Software
Con este contexto la sección analizará el concepto de calidad en el proceso de desarrollo de software, algunos estándares de calidad empleados en el área, una descripción detallada del modelo CMM, y finalmente una descripción del estado actual de la calidad en los procesos de desarrollo en el área metropolitana de Monterrey.
2.4.1 Calidad del proceso de desarrollo de Software
De acuerdo con Harter y Slaughter (2000), a medida que los productos de software juegan un papel más crítico en áreas de soporte a la estrategia de los negocios, es importante que estos productos funcionen correctamente y de acuerdo a las especificaciones de los usuarios.
Un producto de software que mantiene alta calidad durante su desarrollo, tiene más alta calidad de aceptación y de producción posteriormente. Es decir, reconocer que el proceso de calidad continúa y de mejora del desempeño a lo largo del ciclo de vida de desarrollo, mejorará por consiguiente los resultados obtenidos en el desarrollo de un proyecto (Harter y Slaughter, 2000; Barad y Raz 2000).
En base a lo anterior, es posible afirmar que entre mayor sea la madurez del proceso de desarrollo mayor será la calidad del producto terminado.
Existen en el mundo varios modelos de mejora de procesos de desarrollo de software, sin embargo todos coinciden en que el objetivo primordial consiste en el incrementar la productividad de las empresas y de los desarrolladores de software, por medio del mejoramiento continuo en la calidad del software.
En México se ha optado principalmente como modelo de certificación de las empresas desarrolladoras de software el CMM (Capability Maturity Model), aunque
cabe mencionar que no es la única manera de hacerlo (Fernández, 2004).
Algunos de los modelos de certificación más importantes de muestran a continuación.
Organización Internacional para Estandarización (ISO, por sus siglas en inglés:
International Organization for Standarization). Esta organización ha desarrollado
diversas normas y estándares de calidad entre los que se encuentran los siguientes.
aplicable al Hardware, lo que hace difícil su implementación en desarrollo de software (Kenett y Baker, 1999).
• ISO 9000-3. Guía o manual para aplicar los requerimientos del ISO 9001 al desarrollo de software. Describe una serie de elementos que deben ser incluidos en los sistemas de calidad de software en una organización (Kenett y Baker, 1999).
• SPICE (Software Process Improvement Capability Determination).
Similar al CMM en cuanto a que son definidos niveles de madurez en procesos clave específicos. Tiene una metodología de valoración asociada y los procesos clave a evaluar pueden seleccionarse (Kenett y Baker, 1999).
• ISO 12207. Es un estándar del ciclo de vida del software y trata de cubrir muchos de los elementos contenidos en el CMM (Kenett y Baker, 1999).
• ISO/IEC 9126. Es un estándar de calidad que contiene un conjunto de métricas para evaluar el proceso de desarrollo de software y las actividades de mantenimiento del mismo (Nazir, 2005).
• ISO/IEC 14598. Provee de estándares de evaluación de la calidad del producto durante el ciclo de vida de desarrollo de software (Nazir, 2005).
Instituto de Ingeniería de Software (SEI por sus siglas del inglés: Software Engineering Institute). Su modelo CMM es un estándar para categorizar la
capacidad de las organizaciones para desarrollar software que consta de 5 niveles mostrados en la figura 2.3 (Kenett y Baker, 1999).
2.4.2 Modelo de certificación CMM
Debido a que el modelo mayormente empleado para certificar la calidad del proceso de desarrollo de software actualmente es el modelo CMM, a continuación se presenta una descripción mas detallada de dicho modelo.
El Software Engineering Institute (SEI), es un centro de investigación y
desarrollo, creado por el Departamento de Defensa de los EE UU y asignado en 1984 a la Universidad de Carnegie Mellon. Su principal objetivo consiste en
Con esta orientación, el SEI elaboró el modelo de mejora de procesos conocido como CMM, el cual pretende incrementar la capacidad administrativa de las organizaciones para predecir y controlar la calidad, programa, costo, tiempos y productividad de los sistemas de software adquiridos o construidos (Ferguson, et al., 1999).
[image:40.612.135.529.313.550.2]El modelo CMM es específico para el desarrollo de software y por lo tanto sirve de punto de comparación para medir la capacidad y competitividad de las organizaciones, además de la madurez de sus procesos tanto de los sistemas de software construidos como de los adquiridos. De igual manera, el CMM provee un esquema de niveles por los cuales la empresa avanza conforme su proceso de desarrollo va madurando en el tiempo (Chapela, 2001). Dichos niveles se muestran en la figura 2.3.
Fig. 2.3. Niveles del CMM Fuente: Kenett y Baker. 1999
En este contexto, el CMM se ha convertido en el estándar de facto para la evaluación y el mejoramiento de los procesos de software y en un modelo para juzgar la madurez del proceso de desarrollo de software de una organización e identificar las practicas clave que se requieren para incrementar la madurez de estos procesos (Chapela, 2001).
Administrado (4)
Definido (3)
Repetible (2)
Inicial (1)
Optimizado (5)
Proceso Estandarizado
Proceso Predecible
Proceso de Mejora Continua
2.4.3 Calidad en el desarrollo de Software en el Área Metropolitana de Monterrey
La madurez de la gran mayoría de las empresas de desarrollo de Software en México se encuentra fuera de los modelos de calidad internacionalmente reconocidos (CMM, ISO, etc.) y es posible remarcar los siguientes aspectos de dicha industria (Fernández, 2004):
• La industria nacional se encuentra muy por debajo de tener
competitividad internacional.
• El mercado nacional es atendido por empresas que tienen pobres niveles de calidad en su ingeniería.
• La industria en general puede ubicarse dentro del ramo de la Industria de desarrollo artesanal.
Debido a que muy pocas empresas en México han optado por una dinámica de cambio, el país cuenta con una planta productiva vulnerable. En el año 2000, de aproximadamente 2.8 millones de empresas, el 99% tienen un nivel de competitividad emergente, 3,377 cuentan con ISO 9000, 2,500 son exportadoras y menos de 300 hacen algún tipo de investigación y desarrollo. (Chapela, 2001)
Dentro del Área Metropolitana de Monterrey, en cuanto a la calidad del software desarrollado, el 61% de las empresas demuestran un nivel inferior al general, lo cual indica que estas empresas están llevando a cabo los procesos de manera incompleta. En estas empresas se caracteriza que las personas realizan su trabajo de acuerdo a lo que ellas consideran apropiado o relevante para el logro del propósito del proceso, que por lo general es ineficiente y el trabajo poco productivo. Por lo tanto, estas empresas requieren mejorar sus procesos para alcanzar un nivel satisfactorio (superior a la media) en la calidad de sus productos de software. (Secretaria de Economia, 2004).
Los indicadores de la capacidad y madurez de los procesos de desarrollo de software, proporcionan una “imagen” del nivel de utilización de las mejores prácticas con un enfoque disciplinado y documentado, que garanticen la calidad del producto, así como la identificación de aquellos procesos clave que se requieren para incrementar su capacidad. En este estudio (Secretaria de Economia, 2004), la escala de evaluación de los resultados de dichos procesos fue de 0 a 5 puntos basado en los modelos SPICE y CMM.
de dichas empresas se concentra en los niveles inferiores de capacidad en estas áreas.
Como resultado del análisis de estos indicadores se obtiene que:
• La empresa no identifica y mitiga continuamente los riesgos del proyecto a lo largo del ciclo de vida del mismo.
• La empresa no establece y mantiene la integridad de todos los productos de trabajo. Esto incluye asegurar que en un producto liberado se encuentran todos los componentes en su versión apropiada.
• La empresa no confirma que cada producto de trabajo y/o servicio de software, refleja apropiadamente la especificación establecida, de tal manera que el producto sea útil y aceptado.
• La empresa no administra las modificaciones, migraciones y el retiro de los componentes del sistema (como hardware, software, operacionales manuales, etc.), en respuesta a una petición del cliente.
Un dato alarmante es que para demostrar calidad en la capacidad de los procesos se requiere de un nivel superior al 2 dentro de la organización y únicamente 20% del total de las empresas lo tienen. (Secretaria de Economía, 2004)
2.5 Administración de Proyectos
En esta sección se abordan temas correspondientes a la administración de proyectos en general y algunas consideraciones sobre el desarrollo de software. Se tratarán temas como su concepto, sus ciclo de vida y su diferencia con el ciclo de desarrollo de software.
2.5.1 Concepto de la administración de proyectos
De acuerdo con el Project Management Institute (2000; 2004), la administración de proyectos consiste en la aplicación de conocimiento, habilidades, herramientas y técnicas a las actividades que involucra un proyecto para alcanzar sus requerimientos.
administrar actividades en grupo para cumplir con los objetivos establecidos (Jurison, 1999).
2.5.2 Procesos de la administración de proyectos
La integración y aplicación de ciertos procesos describen el trabajo a realizar la administración de cualquier proyecto (Project Management Institute, 2000; 2004). Estos procesos incluyen:
• Inicio
• Planeación
• Ejecución
• Control y Monitoreo
• Cierre
Dichos procesos se describen con mayor detalle a continuación.
Inicio. Debido a que los recursos son limitados para algunas organizaciones, es necesario identificar y justificar cuales proyectos tienen mayor posibilidad de terminarse con éxito antes de que estos autorizados para ponerse en marcha. Para esto se toman 2 decisiones en la evaluación y selección de proyectos (Thambain, 2000; Project Management Institute, 2004):
• Identificar las oportunidades de éxito de un proyecto (factibilidad).
• Escoger el mejor proyecto entre varias alternativas (portafolio).
A estas dos decisiones se puede agregar el determinar las limitaciones que se tienen para lograr la calidad requerida del proyecto balanceando alcance, costo y tiempo planeado para concluir el proyecto (Project Management Institute, 2004).
Esta evaluación se realiza de 2 formas principalmente:
• Cuantitativamente (para proyectos que requieren de justificación económica)
• Cualitativamente (para proyectos que tienen variables complejas, se utilizan escaneos, procesos intuitivos, toma de decisiones grupales, etc.)
Una vez que se realiza este análisis preliminar y el proyecto es autorizado por los agentes externos al equipo que tienen influencia sobre éste (por ejemplo los inversionistas), se considera como iniciado (Project Management Institute, 2004).
Para una efectiva evaluación y selección de proyectos se recomienda (Thambain, 2000):
• Obtener información relevante.
• Seleccionar e integrar a la gente indicada.
• Deben definirse criterios de éxito.
• La información estrictamente cuantitativa puede no ser confiable.
Planeación. Durante este proceso se definen y refinan los objetivos del proyecto y se seleccionan los cursos de acción. Este grupo de procesos ayuda a reunir información de diferentes fuentes para crear un plan de Gestión del Proyecto (Project Management Institute, 2000)
Esta etapa requiere del desarrollo de una estructura de trabajo que se convierte en la base de la red de actividades del proyecto. Este modelo debe utilizarse para medir y evaluar el desempeño al comparar los datos obtenidos contra los establecidos en dicho modelo (Thambain, 2000).
Las medidas principales del desempeño exitoso del desarrollo del proyecto son: tiempo (terminar en el menor tiempo posible), costo (terminar el proyecto con el menor costo) y calidad (terminar el proyecto con la mayor calidad posible) (Thambain, 2002). A estas se añaden el alcance del proyecto (aspectos con los que se considera el proyecto terminado), el riesgo (probabilidad de ocurrencia de imprevistos que afecten el comportamiento planeado del proyecto), las dependencias, asunciones y limitaciones identificadas en la retroalimentación continua que se obtiene conforme se progresa en dicho proyecto (Project Management Institute, 2000; 2004).
Algunas herramientas para la planeación del proyecto son (Thambain, 2000):
• Administración de alcance (actividades, recursos y productos). Para esto es necesario documentar los requerimientos y parámetros necesarios para completar el proyecto.
• Estructuras particulares de trabajo. Definir la serie de pasos para cumplir con el proyecto.
• Agenda de Actividades. Establecer tiempos para cada actividad
individual.
• Administración de riesgos. Identificar riesgos, analizar sus impactos y planear respuestas (planes de contingencia)
Durante la planeación es importante el involucramiento de las partes interesadas en dicho proyecto, dependiendo de la influencia que tienen en el proyecto y los resultados deseados (Project Management Institute, 2004).
Ejecución. Conforma la puesta en marcha de las actividades de desarrollo específicas del proyecto en cuestión, involucra la coordinación del personal y otros recursos para llevar a cabo el plan (Project Management Institute, 2000; 2004).