the solution: agile development
A complex specification is an obstacle to development, so we don't produce one. Instead your requirements are described in simple terms as a set of user stories, e.g.
"As the sales manager I want a daily summary of my team's communications."
"As a salesperson I want to view all my recent interactions with a particular client."
Instead of a waiting for a single large deployment and praying it meets your needs, we deliver fully functional stories to you as they are completed, preferably on a daily basis, in order of the value that they bring to your organisation. This way you see your software develop rapidly - and can adapt as you do so. Costs are directly linked to functionality and you pay only for the time spent producing something you can actually use.
This is known as agile development... simple definitions, regular delivery, maximum flexibility. Everyone involved becomes as excited by the process as they are about the final result.