On the Reuse of Knowledge to Develop Intelligent Software Engineering Solutions