Existen diversas respuestas e interpretaciones para esa pregunta. Hace mucho tiempo tal vez habría respondido que en realidad la ingeniería del software no era más que la aplicación de diversas tecnologías para darle forma a una aplicación o programa computacional.

Más allá de una definición escolar, es mejor enlistar los beneficiosa que se brinda al aplicar ingeniería del software en nuestros proyectos. Basado en mi experiencia puedo decir que la ingeniería del software nos ayuda a no “reinventar la rueda” puesto que nos provee de conocimientos, vivencias, y experiencias que han sido probadas y que se sabe que funcionan. Todo lo anterior con el objetivo de generar un producto de calidad, que satisfaga al usuario pero también al desarrollador, además de entregarse en tiempo y dentro del presupuesto acordado.

Este conocimiento del que hablo es aquello que denominan “Estado del arte” del software. El cual pretende enseñarnos el aprendizaje que surgió como resultado de la elaboración de proyectos realizados por otras personas. Dicho aprendizaje nos ayuda a solucionar o reducir alguna complejidad en los procesos de desarrollo de software y sistemas.

Muchas veces el estado del arte tiende a producir conocimiento de mucho valor y estabilidad tanto que se vuelve esencial y llega a estar vigente durante muchos años, a tal grado de considerarse como un conjunto de principios. Hay que tener muy en cuenta que cuando hablamos de principios no hablamos de “leyes” o “reglas”, solo hablamos de buenas prácticas que mientras más las apliquemos a nuestro software mayor serán las propiedades benéficas que poseerá.

En general la ingeniería del software pretende afrontar los problemas comunes al momento de desarrollar software, muchos de los cuales minimizan la calidad del producto desarrollado. Para lograr medir la calidad, la ingeniería del software utiliza las siguientes características deseadas en un producto:

  • Mantenimiento
  • Confiabilidad y seguridad
  • Eficiencia
  • Aceptabilidad

Antes de finalizar cabe destacar que la ingeniería del software abarca una cantidad enorme de conocimiento clasificado en diversas categorías. En resumen nuestra ingeniería es el“cómo se aplican”las teorías y fundamentos(“que se realiza”) de la ciencia de la computación.

Luego entonces la ingeniería a diferencia de la ciencia de la computación se enfoca y preocupa en aplicar en un sentido práctico (tomando en cuenta la complejidad del mundo real) las teorías y formulaciones de los programas informáticos.

Las preguntas que comúnmente me hago cuando determinó que es necesario aprender de otras experiencias son:

  • ¿Como lo hubiera resuelto algún ingeniero del software importante?
  • ¿Como lo hace Google?
  • ¿Como lo hace Microsoft?
  • ¿Qué estrategias conocidas se pueden aplicar a este problema?