• No se han encontrado resultados

Estudio Exploratorio: Factores Críticos de éxito para la Administración de Proyectos en Fábricas de Software Edición Única

N/A
N/A
Protected

Academic year: 2020

Share "Estudio Exploratorio: Factores Críticos de éxito para la Administración de Proyectos en Fábricas de Software Edición Única"

Copied!
134
0
0

Texto completo

(1)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. MONTERREY, N.L.. ABRIL 2006.

(2) 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. Abril 2006.

(3) “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. Abril 2006.

(4) 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í. A mis Amigos que a pesar de todos estos años y las grandes distancias aún continúan conmigo.. iv.

(5) 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. A aquellos compañeros profesionistas y personas en general que con diversas aportaciones contribuyeron en este proyecto.. v.

(6) 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. Como resultado del análisis de la información recopilada, se presentan los factores críticos de éxito con más influencia: uso de repositorios de información de proyectos anteriores, confianza con clientes, conocimiento y experiencia para la reutilización de elementos, infraestructura de comunicaciones y análisis de riesgos. Los cuales influyen positivamente y de manera considerable en el desempeño de la administración de proyectos de desarrollo de software bajo este modelo, en términos del éxito obtenido al cierre del proyecto.. vi.

(7) 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.2.3 Desarrollo de Software en el Área Metropolitana de Monterrey ............... 15. vii.

(8) 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.1 Tipo de Investigación................................................................................ 43 3.4.2 Población.................................................................................................. 43 viii.

(9) 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 Correlaciones entre variables del contexto general y variables de factores de éxito. ..................................................................................................................... 77 ix.

(10) 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 Vita...................................................................................................................... 121. x.

(11) 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.21 Calidad del producto en función de errores detectados posterior a su entrega .................................................................................................................. 69. xi.

(12) 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 Fig. 4.26 Percepción del éxito obtenido en el proyecto......................................... 73. xii.

(13) 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 Tabla 5.7 Correlaciones entre los factores de éxito de desarrollo por componentes y el éxito obtenido en el proyecto.......................................................................... 94. xiii.

(14) Tabla 5.8 Correlaciones entre los factores de éxito de calidad del proceso y el éxito obtenido en el proyecto ................................................................................ 97 Tabla 5.9 Resumen de correlaciones de mayor magnitud (a)............................... 99 Tabla 5.10 Resumen de correlaciones de mayor magnitud (b)........................... 100. xiv.

(15) 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).. 1.

(16) 1200000 1065000. 1000000 850000. 800000 675000. 635000. 600000. 535000 415000. 445000 360000. 400000 200000. 475000. 145000. 0 2001. 2002. 2003. Demanda Global. 2004. 2005. India. 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.. 2.

(17) 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 3200 desarrolladores capacitados y 40 empresarios de software.. 3.

(18) 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). De acuerdo con Peñaloza (2002), el esquema de fábricas de software contrasta con el modelo tradicional de desarrollo de software actual, siendo capaz de crear productos de software a nivel mundial, en cantidades masivas y de aplicaciones especializadas en un dominio particular. La calidad de este proceso es evidenciada por medio de la certificación.. 4.

(19) 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. Existe una necesidad de mejorar la manera en que el software es desarrollado (Blackburn y Scudder, 1996), ya que es difícil cumplir con costos y tiempos de desarrollo planeados inicialmente, mantener la calidad en el producto 5.

(20) 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. • Mantenimiento del software.. 6.

(21) 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. Si las fábricas de software son la generación posterior al desarrollo orientado a objetos, al igual que este último y que cualquier otro modelo de desarrollo de software requieren de una adecuada administración de proyectos (Dué, 1999).. 7.

(22) 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. La muestra se conformó por líderes o administradores de proyectos de software en empresas que emplean de alguna forma un esquema de fábricas de. 8.

(23) 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. Dentro del capítulo 4 se presentan los datos recopilados durante la investigación de campo una vez que estos fueron procesados, así como un análisis estadístico básico de la información obtenida.. 9.

(24) 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. Por último, en el capítulo 7 se presenta la bibliografía revisada a lo largo del proceso de elaboración del presente documento.. 10.

(25) 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.. •. Factores críticos de éxito en la administración de proyectos y el desarrollo de software. Por último se presenta una recopilación de factores críticos de éxito identificados por varios autores, los cuales se relacionan con la administración de proyectos de desarrollo en fábricas de software. 11.

(26) 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.. •. Instalación y Puesta en Funcionamiento. En esta etapa se instala el software a la plataforma utilizada por los usuarios finales.. 12.

(27) •. 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). Un objeto es cualquier cosa que puede ser percibida y es relativamente estable en forma, se denota con un nombre, tiene un contexto e interfase bien definida y su funcionalidad no puede considerarse como independiente de la 13.

(28) 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 desarrollo de componentes aplicables al reuso requiere de mayores esfuerzos y recursos que aquellos desarrollados para un producto específico, pero permite reducir el tiempo de desarrollo y mantener los niveles de calidad (Rothenberger, 2003).. 14.

(29) Análisis. Diseño. Composición. Pruebas. Adaptación de componentes. Recuperación de Componentes. El ciclo de vida de desarrollo de software basado en componentes se ilustra en la figura 2.1.. Mantenimiento. 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):. 15.

(30) • • • • • • • • • • •. 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 Además del desarrollo basado en componentes existen modelos que incorporan además otros elementos de desarrollo. Ejemplo de ello es el modelo de fábricas de software el cual incluye características de los modelos mencionados y algunas otras técnicas. Dicho modelo se describe a continuación.. 16.

(31) 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. De acuerdo con Greenfield y Short (2005) se necesitan elementos o estructuras para aplicar el modelo de fábricas de software: esquemas y plantillas de software y un ambiente de desarrollo interactivo.. 17.

(32) 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).. En conjunto estos elementos permiten el desarrollo de aplicaciones específicas dentro de un dominio y conforman un producto terminado, tal como se muestra en la figura 2.2.. 18.

(33) Esquemas de Software (Características generales de una familia de productos de software). Plantillas de Software (Características que definen un producto de software específico). Ambiente de Desarrollo Extensible (Medio por medio del cual se cargan las Plantillas de Software). Desarrollo de Productos en Fábricas de Software. Producto de Software a la Medida. 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).. 19.

(34) •. 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. • Especificación del producto. Se definen las diferencias que existen entre las características del producto con la línea de producción.. 20.

(35) • • • •. 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 En esta sección se abordarán aspectos relativos con la calidad del desarrollo de software para fundamentar la importancia de esta y la influencia que tiene en el éxito de un proyecto de desarrollo. 21.

(36) 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. •. ISO 9001. Estándar de calidad de sistemas aplicable al diseño, manufactura, instalación, prueba y mantenimiento de sistemas. Más. 22.

(37) 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 mejorar e impulsar la práctica de la Ingeniería de Software, para que el software que se produzca sea de calidad, esté en tiempo y dentro del presupuesto asignado (Ferguson, et al., 1999).. 23.

Figure

Fig. 1.1 Especialistas en tecnologías de Información requeridos a nivel mundial y generados  en la India
Fig. 2.1 Ciclo de vida del desarrollo de software basado en componentes.
Fig. 2.2. Desarrollo de productos a la medida en fábricas de software
Fig. 2.3. Niveles del CMM  Fuente: Kenett y Baker. 1999
+7

Referencias

Documento similar

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)