Cuando comencé la planificación de la asignatura: “Programación IV” vi que entre los temas que había que tratar estaba la Ingeniería de Software. Las dudas enseguida comenzaron a darme vueltas en la cabeza del por qué insertar ese tema aquí si justo el próximo semestre recibirían la asignatura: “Ingeniería de Software I” que partía desde cero. Junto a esto me sugirieron que tratara la importancia de esta materia apoyándome en el libro: “Software Engineering Project Management” donde de manera muy somera inducen a pensar en ella. Como colofón a las razones que me hicieron escribir estas notas fue la ayuda que me solicitó una alumna para que le prestara los apuntes que había recopilado hasta el momento; así que me di la tarea de darle forma para que sirviera de material de consulta.

Un ejemplo clásico de lo que puede constituir un buen diseño de software fue lo que sucedió con el sistema automatizado de transportación de equipajes del nuevo aeropuerto internacional de Denver que reunía, entre otras, estas características:

  • 2 veces el tamaño de Manhattan.
  • Capacidad para aterrizar tres jets a la vez en mal tiempo.
  • 21 millas de pista de acero para equipajes.
  • 100 computadoras en red.
  • 5000 ojos electrónicos.
  • 56 escáneres de códigos de barra.

Inicialmente planificado para ser desarrollado en nueve meses una vez llegado su fecha límite en Septiembre, fue pospuesto para Diciembre, de ahí para Marzo, luego para Mayo y después para Junio. Ya el Junio este proyecto estaba costando alrededor de 1.1 millones de dólares diarios. El proyecto fue suspendido cuando las pérdidas superaron los 193 millones de dólares. Lo que se pensó fuese el sistema de transportación de equipajes más avanzado de la historia, se convirtió en un gran fracaso por cuestiones de desarrollo de software.

Ejemplos como este son muchos los que día a día nos topamos a tal punto que de cada seis nuevos grandes proyectos puestos en operación, otros dos son cancelados. Que si le agregásemos que la mitad de los proyectos se cancelan sin haberse puesto en operación y que las tres cuartas partes de los grandes proyectos funcionan mal, es decir, que no cumplen con las especificaciones; vemos entonces que el desarrollo de proyectos informáticos no está nada bien que digamos y que hay que poner en marchas estrategias que ayuden a contrarrestar este fenómeno.

El software si bien comenzó a producirse solo para las computadoras ya hoy en día es difícil encontrarse un equipo electrodoméstico que no tenga incorporado algunas líneas de códigos. Incluso en aquellos que pueden poner en riesgo la vida humana. A continuación, una tabla con algunos equipos y una medida del código que incorpora:

Televisión —> 500Kb de código Depiladora —> 2Kb de código Trenes —> 30000 líneas de código

Un fallo en estos softwares, por mínimo que sea, puede traer consecuencias desastrosas.

Un grupo consultor de IBM encuestó a 24 compañías que desarrollan grandes proyectos de software arrojando que el 55% de los proyectos terminan costando más que lo planificado, el 68% sobrepasan el tiempo límite de entrega y el 88% son substancialmente rediseñados. Otras razones más para comenzar a “pensar distinto”.

Por suerte no todo es malo y no puede verse como un caos (sino como algo que está cambiando para bien y que hizo falta para darnos cuenta). La industria y la academia (lo práctico y lo teórico) han dado pasos significativos en todo este meollo con el confeccionamiento de CMM y otros estándares del desarrollo de software como es el ISO.

En cuanto a CMM tenemos que el 75% de las compañías productoras de software son Nivel 1; el 24% tienen Nivel 2 ó 3 (ejemplos: NASA y USAF); mientras que el solo el 1% posee Nivel 4 ó 5. Chile es el único país latinoamericanos con una compañía de Nivel 5. El estándar ISO es mucho más fácil de obtener pues está diseñado para cualquier proceso productivo mientras que CMM solo para software, el estándar ISO es equivalente a CMM Nivel 3.

La intención de este artículo fue hacerlo reflexionar un poco en el tema de la Ingeniería de Software comprendiendo su importancia derivada de ejemplos y estudios realizados en el campo del desarrollo de software. Ahora le toca a usted sacar sus propias conclusiones a la hora de llevar a cabo un proyecto.