List of requirements. What the software has to provide its users.
List of non-functional requirements. What king of functionalities are required from the software, but those requirements are not belonging the application (or solution) that software is providing.
List of constraints. What the software is assuming. Hardware limitations (used hardware), operating system limitations (used operating system). Communication limitations (used network technologies).
The major components in the software system. Client computers, server computers, databases. Used technologies.
Architectural design. Example system deployment.
[DRAFT] Package guidance diagram.
Descriptions about the packages and their dependencies.
Include Class diagrams. Class diagram should include classes considering certain view or aspect of the software.
For each <class>:
For each <interface>:
For each <operation> (or message) in <interface>
Repeat for each package.
[DRAFT, as much you are found to draft phase]
[DRAFT] Include use case diagrams here for guidance for reader to see specific use cases.
[DRAFT] Put for each use case into its section. Name of the use case must match the name in guidance use case diagram.
Include sequence diagram for that use case.
If sequence diagrams does not describe use case enough describe the use case as text as well.
[DRAFT] Repeat for each use case.