La tendencia actual en la industria del software, a nivel mundial, es hacia la construcción de sistemas de software o aplicaciones cada más grandes y complejas. Se requiere, además, que estos sistemas se construyan en el menor tiempo posible; bien para satisfacer los requisitos internos de una empresa o para ganar ventaja competitiva en un mercado cada vez más exigente. El costo de producir estos sistemas es otra necesidad inherente al desarrollo de software. Satisfacer estos requisitos no es una labor fácil. Ellos han sido el motivador principal de la Ingeniería de Software; área de la Computación encargada de estudiar los principios, prácticas, métodos, modelos, técnicas y herramientas requeridas para producir y mantener software de alta calidad, a bajo costo y en el menor tiempo posible.
La Ingeniería de Software es un área de conocimientos muy bien establecida; tanto desde perspectiva de la investigación como desde la perspectiva profesional. Desde sus inicios, en 1967, su principal objeto de estudio ha sido los procesos de desarrollo y mantenimiento de software. Durante estos años, se han propuesto cientos de instrumentos metodológicos (métodos, modelos, prácticas, técnicas, estándares y herramientas) dirigidos a mejorar estos dos procesos y resolver los múltiples problemas que enfrentan los especialistas de software. Uno de las dificultades que afrontan los especialistas es coordinar los múltiples flujos de trabajo que se ejecutan cuando se desarrolla software [JBR00]. Una solución ampliamente probada es el uso de un proceso que integre las múltiples facetas del desarrollo del software. La presencia de un proceso bien definido y bien gestionado es una diferencia esencial entre los proyectos de software exitosos y los que fracasan [GUP00].
En los últimos años, se ha hecho mucho hincapié en la madurez de este proceso [PAU93]. Los modelos CMM (Capability Maturity Model) y CMMI (Capability Maturity Model) de Instituto de Ingeniería de Software (http://www.sei.cmu.edu) y el estándar IEEE-1074 (http://standards.ieee.org/) constituyen esfuerzos concretos por mejorar los procesos que emplean las empresas para desarrollar software. Sin embargo, la aplicación de estos instrumentos en el contexto empresarial, particularmente en nuestro país, deja mucho que desear. La mayoría de las empresas e instituciones públicas venezolanas desarrollan software usando procesos ad-hoc o métodos y técnicas inapropiadas u obsoletas, muchas de las cuales llevan utilizándose más de 25 años.
Un indicador importante de esta crítica situación es que, hasta la presente fecha, sólo dos empresas venezolanas han sido certificadas con el modelo CMM; el modelo de evaluación de la madurez de los procesos de desarrollo de software de mayor aplicación en el mundo.
Esta situación es, sin lugar a dudas, un problema crítico que enfrentan la gran mayoría de empresas en nuestro país. A menos que renueven sus métodos de desarrollo de software y los apliquen eficazmente, estas empresas no podrán cumplir con los requisitos que los usuarios y clientes de productos de software exigen cada vez más: desarrollar software complejo, de bajo costo, alta calidad y en corto tiempo. Mucho menos podrán competir con sus productos en el plano internacional; pues no logran alcanzar los estándares mínimos que exigen la mayoría de empresas en el exterior. Los métodos de la Ingeniería de Software indican cómo construir técnicamente el software bajo restricciones de costo, tiempo y calidad.
Abarcan una gran gama de tareas que incluyen la gestión del proyecto, el análisis de requisitos, el diseño arquitectónico, el diseño y construcción de programas, las pruebas del software y su mantenimiento. Estos métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas [PRE02].
Una metodología de desarrollo de software estandariza el proceso de desarrollo, definiendo un conjunto de métodos, modelos, mejores prácticas, entregables y herramientas automatizadas [WET04].
Lo deseable es que la metodología sea flexible de forma tal que se adapte, con relativa facilidad, a los diferentes tipos de software y los diferentes tipos de organizaciones [SET04]. Según las estadísticas del Standish Group [STG03]: - En el 2002, sólo el 34% de los proyectos de tecnologías de la información en Estados Unidos fueron entregados a tiempo, dentro del presupuesto y cumpliendo los requisitos acordados. - 15% fallaron completamente. - Del 51% restante: 41% fueron entregados cumpliendo con menos del 50% de las especificaciones y pasándose del 50% del tiempo planificado y 27% de esos proyectos se sobrepasaron más del 50% del presupuesto estimado El problema, tal como lo reflejan estas estadísticas, no está presente solamente en nuestro país. La mayoría de paises enfrentan situaciones similares a la nuestra. La diferencia está en que muchos de ellos ya han tomado iniciativas concretas para resolver estas dificultades que están presentes en sus industrias de software.
Son muchos los esfuerzos que han llevado a cabo, en esta dirección, institutos acreditados, tales como el Instituto de Ingeniería de Software (SEI-Software Engineering Institute) de la Universidad Carnegie Mellon y el Instituto de Software Europeo (ESI-European Software Institute). En Latinoamérica, es importante mencionar las iniciativas que han concretado México y Costa Rica. En particular, México ha desarrollado un método para desarrollo de software adaptado a las necesidades y condiciones de su industria de software [OET03]. Este método denominado MoProSoft fue desarrollado, por varias universidades y empresas mexicanas con el apoyo del gobierno nacional, a fin de proporcionarle a sus empresas un estándar para desarrollar software fundamentado en las mejores prácticas y principios de la Ingeniería de Software y adaptado a las necesidades reales de sus empresas.
La necesidad de elaborar nuevos métodos y modelos de desarrollo de software, adaptados a las características propias que tienen las empresas de nuestro país, es, por lo tanto, evidente e impostergable, si queremos colocar a nuestra industria de software en un plano verdaderamente competitivo.