Ciencias de la computación
La relación entre las ciencias de la computación y la ingeniería de software es un tema muy discutido, por disputas sobre lo que realmente significa el término "ingeniería de software" y sobre cómo se define a las ciencias de la computación. Algunas personas creen que la ingeniería de software sería un subconjunto de las ciencias de la computación. Otras, tomando en cuenta la relación entre otras disciplinas científicas y de la ingeniería, creen que el principal objetivo de las ciencias de la computación sería estudiar las propiedades del cómputo en general, mientras que el objetivo de la ingeniería de software sería diseñar cómputos específicos para lograr objetivos prácticos, con lo que se convertiría en disciplinas diferentes. Este punto de vista es el que sostiene, por ejemplo, Parnas (1998). Incluso hay otros que sostienen que no podría existir una ingeniería de software.
Historia de la ingeniería del software
Desde sus inicios en la década de 1940, escribir "software" ha evolucionado hasta convertirse en una profesión que se ocupa de cómo crear software y maximizar su calidad. La calidad puede referirse a cómo de mantenible es el software, su estabilidad, velocidad, usabilidad, comprobabilidad, legibilidad, tamaño, coste, seguridad y número de fallos o "bugs", así como, entre muchos otros atributos, a cualidades menos medibles como elegancia, concisión y satisfacción del cliente. La mejor manera de crear "software" de alta calidad es un problema separado y controvertido cubriendo el diseño de "software", principios para escribir código, llamados "buenas prácticas", así como cuestiones más amplias de gestión como tamaño óptimo del equipo de trabajo, el proceso, la mejor manera de entregar el "software" a tiempo y tan rápidamente como sea posible, la "cultura" del lugar de trabajo, prácticas de contratación y así sucesivamente. Todo esto cae bajo la rúbrica general de ingeniería de software.