When talking about collecting requirements, one of the challanges is what we mean with requirements and level of detail. The requirements we ask for should also be possible to verify.
Therefore, one of the questions is why we need the requirements. Some examples, but not all are:
A future roadmap to fulfill a business strategy. An example could be the requirements needed to make a roadmap to a digital business with more customer involvement, faster and cheaper compared to as today.
Start a large transformation program. The cost of one horse is a tricky question and IT-systems are alike. When we are talking about large transformation programs it's much much worse. We need requirements to plan och make estimates for something that takes several years to finalize.
Pre-study for a medium size project. This is what I would call high-level requirements, e.g. manage orders & invoices, manage customers or manage a product catalogue.
Project planning for a medium size project. This is when we need more detail requirements in order to make estimations for a descision to start a development and implementation.
If we are going to implement COTS or cloud services, we only need requirements for configuration and for integration to other systems
Software development to replace legacy is very difficult. You need to define all requirements needed to develop your own application. The huge problem is to assure that you don't forget any undocumented functionality in the existing application. The concept of minimum viable product will not work when replacing legacy systems.
Software development to develop a new type of application. This is manageble from a development perspective as you could add more functionality step by step. The challenge is to prepare for and capture for requirements not known, or not asked for, by the users.
Small agile project to add functionality in existing application. This is the paradise where users work together interactivly with developers. The big issue is that agile development is very hard to scale. More people involved and often diffentent skill-levels in participants are some of the challenges.
The combination of why and for what purpose we need requirements, makes it utterly important to be very precise of the definition of a requirement.