On the construction of computational methods for shallow water flow problems