Negotiation, meaning "discussion intended to produce agreement", is fundamental to every software project. Developers and customers must reach agreement on what the system is supposed to do. A wise agreement will define achievable goals and meet the users' real needs. How should we reach wise agreements? How should we reach agreements that create good outcomes for both parties?
There are excellent answers to these questions...in the classic book, Getting To Yes
*Separate People from the Problem
*Focus on Interests, not Positions
*Invent Options for Mutual Gain
*Use Objective Criteria"
Each is explained in "Getting to Yes". This article from AgileKiwi discusses just one - Focussing on Interests, not Positions.