'Ball-Park Figures', just get the ball rolling ;)
If your project requires code written especially then it is subject to functional requirements. This is a key factor in assessing the cost of production.
Your applications 'Functional Requirement' states what the program is expected to do and the process of creating this begins with consultation. It's the start of risk assessment.
The discussion document(s) are information records of thoughts, comments and expectations. This is where Famous Websites will examine the 'challenge' in search of an expedient solution. It may be the case the particular need the software is meant to fulfil already has a solution or it's viability is questionable. In all cases this discussion is meant to establish whether your company should invest in the software or find alternative solutions. If the conclusion is a clear brief to build the next step is appraisal.
In effect the appraisal takes the matter of the discussion and formulates into a concise document summarizing the objectives. If the appraisal recommends the creation of new software then the next step is software design. By this time the documentation is somewhat formal, the appraisal will need approval before moving on.
Software design has little to do with web or graphic design even though on the type of projects discussed here the internet plays such an important role. The software design in essence examines those challenges detailed in the appraisal and details a scheme to meet them. The design looks at the platform and architecture of the systems and what functionality will be needed. Part of this process is also a review of the interface and examining any automation that can be applied effectively.
The software design is presented as a document of technical nature but accessible to 'the layman' so as to make it very clear what the finished project is capable of. On approval the design is specified.
The specification is a technical document which details aspects of the software design in as much detail as possible. The finished specification IS the functional requirement, meaning to achieve to desired project goals all the elements specified must be present in the finished build.
With the design and specification one can request a build estimate from any number of software houses. It's a little like an architects plans, just as one can ask property developers for a cost based on the architects blue-prints. Using this as a basis for their costs they can then return a realistic valuation of the budget required plus, a time-scale to complete.
This process is is an in depth examination of your requirements. It also means, your investment is scrutinized thoroughly before any software is written so the finished system is fit for purpose.