La ingeniería de software es una aplicación práctica del conocimiento científico para proveer metodologías y técnicas que ayuden a desarrollar sistemas de software a tiempo, y a su vez que aseguren que el desarrollador cumpla con las expectativas de calidad y permanezca dentro del presupuesto.
-Diseñar programas informáticos que se adecúen a las exigencias de la sociedad.
-Liderar y acoplar el desarrollo de programaciones complicadas.
-Actuar en todas las fases del ciclo de vida de un producto.
-Computar los costos de un proyecto y evaluar los tiempos de desarrollo.
-Realizar el seguimiento de costes y plazos.
-Liderar equipos de trabajo de desarrollo software.
Ingeniería del Software, es el término utilizado por Fritz Bauer en la primera conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia de la OTAN celebrada en Garmisch (Alemania), en octubre de 1968, previamente había sido utilizado por el holandés Edsger Dijkstra en su obra The Humble Programmer.
-El término “evolución” del software se utiliza desde los sesenta para denominar la dinámica de crecimiento del software.
-Una definición atribuida a Lehman y Ramil dice que la evolución del software es “todas las actividades de programación que se orientan a generar una nueva versión de un software a partir de una versión anterior operativa.
-La palabra crisis se define en el diccionario como "un punto decisivo en el curso de algo; momento, etapa, o evento decisivo o crucial". Sin embargo para el software no ha habido ningún punto crucial, sólo una lenta evolución.
-La crisis en la industria del software permanece durante muchos años, lo cual parece una contradicción para el término. Lo que si se podría decir es que hay un problema crónico en el desarrollo de software.
La ingeniería de software se crea debido a las siguientes características:
-El producto debe ser confiable y realizar sólo las tareas especificadas en los requerimientos.
-El producto debe ser robusto. Esto quiere decir que el software se comporta de manera razonable, incluso en circunstancias no anticipadas desde el principio.
-El producto de software debe ser lo más reutilizable posible, de manera tal que pueda ser incorporado en otro producto de software si se requiere.
-El producto de software debe ser eficiente en el uso de los recursos del sistema.
Las direcciones en las que evoluciona la ingeniería del software hoy en día pueden agruparse de la siguiente manera:
-Metodologías ágiles
-Experimentación
-Desarrollo dirigido por modelos
-Líneas de productos software