La ingeniería de software requiere llevar a cabo muchas tareas, sobre todo las siguientes:
La habilidad del ingeniero será puesta en juego a la hora de interpretar los requisitos tanto explícitos como ocultos que el software, por medio de un cliente, le demande.
Profundizar en la investigación de aquella información obtenida en el paso anterior. Detallarla, fijar ítems respecto de las interfaces externas, nexo entre diferentes partes de un software en común, para poder desarrollar cada una de estas partes, en un tiempo futuro, pero sin generar incompatibilidades con las demás.
Cómo funcionará de forma general, sin entrar en detalles.
Según Yourdon : consiste en incorporar consideraciones relacionadas a la actualidad y a las posibilidades, como la tecnología, el hardware, etcétera.
Codificar, plasmar en un lenguaje.
Verificar resultados esperados con los obtenidos, no únicamente del total del programa, sino (también), de cada una de las partes que lo constituyen.
Parte importantísima, quizás el aporte más importante desde la Ingeniería del Software. La evolución de los sistemas obliga, genera necesidades de evolución por parte de los programas. Sin nexo entre diversas versiones de un mismo código, la actualización del software no es más que el nacimiento de software nuevo, costosísimo en tiempo y por ello en dinero.
Es el ciclo de retroalimentación, deja de ser como en la etapa de prueba, una emulación con ambiente controlado, para ponerse en contacto con la realidad, y someterse a sus verdaderos usuarios. Momento de corrección y mejoras, de interés por parte del cliente para refinar detalles. Alrededor de 2/3 de toda la ingeniería de software tiene que ver con dar mantenimiento, ya sea relacionado a errores, o a creación de nuevos módulos.