La ingeniería de software comprende una amplia gama de actividades diferentes que se utilizan tanto para diseñar como para desarrollar software. Estos pueden involucrar actividades de modelado, resolución de problemas, adquisición de conocimientos y motivaciones. La ingeniería de software también gira en torno a conceptos que se ocupan de la abstracción, el análisis y el diseño, la creación de prototipos, la arquitectura y el proceso de software, la reutilización, la medición, así como las herramientas y el entorno integrado.
El trabajo básico en ingeniería de software se puede dividir en tres fases, sea cual sea el área de aplicación o cuán grande sea el proyecto y cuán complicado pueda ser. Estas fases incluyen las siguientes.
La primera parte de cualquier proyecto de software es la fase de definición y esta parte se centra en responder la pregunta "¿qué?" Esto incluiría la información que se debe procesar, la función y el rendimiento que se pretende realizar, las interfaces que deben establecerse, los diseños que deben incluirse más los criterios de validación que calificarían a un sistema para ser exitoso. .
Esta es la parte que respondería a la pregunta "¿cómo?" Los desarrolladores de software deben poder identificar el proceso de construcción de los datos, la función que debe implementarse e incorporarse en la arquitectura del software, las interfaces que se incluirán y la traducción del diseño a un lenguaje de programación aceptable. Esta parte incluye generación de código y pruebas de software.
Esta parte ahora se ocupa de corregir los errores o defectos del sistema, haciendo los ajustes y cambios necesarios para cumplir con los requisitos cambiantes de los clientes. El mantenimiento adaptativo también puede ser necesario para adaptarse a los cambios relacionados con el entorno externo. El soporte también puede venir en forma de mantenimiento preventivo para el uso efectivo del programa para responder a las diferentes necesidades de los usuarios.
Aparte de las fases genéricas, la ingeniería de software también puede incluir una serie de otras actividades como seguimiento y control de proyectos de software, gestión de riesgos, revisiones técnicas y gestión de configuración de software, entre otras.