Intelligent layer for the design of software architectures