You, as the customer, want to buy a system that implements certain functionality. The software developer wants to provide you with that system at a price that is worth it to him. There are no fixed 'things' that you need to include. You just need to agree a complete written functional specification of the final system with the developer that you are both happy with and that hopefully has no loopholes, ambiguities or omissions. The details of that specification will vary according to your requirements for the specific job but should contain descriptions of the required functionality that can be measured/tested to check a conformal implementation of that specification.