I am curious because it seems like everyone has different opinions on the matter. When creating an SRS document, do you need both use cases and functional requirements or just one since use functional requirements expand on use cases?
... do you need both use cases and functional requirements or just one ...
The difference is only in approach if one were to close-read the primary authors of these techniques.
Use cases approach is considered a more efficient means of collecting essential requirements, whereas functional requirements approach ensures a complete specification that can then filter out redundancies, overlaps, and unwanted features.
Use cases approach takes into account at the outset external actors (users, processes, agents, etc.) and how they interface with the system, whereas the functional requirements approach the problem from a solution angle (how can we employ this feature to solve our problem?)
Use cases capture actors, users, methods, domain knowledge, unique techniques, etc. Use cases can lead to complete packaged solutions. Functional approach capture product categories, product variants, market differentiations. Functional approach can help develop finely tuned release strategies where functionality is developed and layered over previous releases.
Another way to describe is that use cases is more an user-oriented spec and functional approach is a developer spec. From a language and communication perspective, it is said that use cases approach leads to easier to understand documentation that is already cast in the end-users' language idioms. On the other hand, functional approach is what makes the system complete and integrated whole.
In modern SRS, both perspectives are essential for a complete, useful system. Ideally, one has to map to the other. Benefits of both approaches cannot be discounted no matter where one starts the process.