IT experts have pointed out how requirements engineering remains a significant challenge for companies, partly because of the ambiguous nature of software development, the challenge of getting accurate requirements from a client, and the ongoing process of matching internal processes at a development company to the goals and objectives of an outside client. In other words, requirements engineering attempts to bridge that divide between what the client and what the developers are thinking, and to create a solid, consistent framework for the actual construction of sophisticated software products.