I agree with all that has been said heretofor regarding the technical specifications of the project. Something that also needs to be considered is the intended audience of the software. Who will be using it? If the product will have a visible frontend with a target user base it is essential to gather reqirements from the audience and draft a general design document from these requirements.
, more detailed, technical design documentation can be prepared. Having this general design in-hand and signed off on by your audience will prepare you for the unavoidable eventualities of users who are dissatisfied with the product or claim that the product lacks intended features.