La ingeniería de software involucra tres actividades principales: modelado para manejar la complejidad, resolución de problemas mediante el uso de modelos, y fundamentación de decisiones basada en la información recolectada. Los ingenieros de software trabajan bajo restricciones de tiempo, personal y presupuesto, y deben lidiar con cambios constantes en los requerimientos y especificaciones.