Partial Success: This is an example of one of my projects where I used a formal requirements gathering approach.
The approach I used in this one was Systems Analysis and Design (SSAD). This approach identifies the methods and processes needed to complete a particular user task. It is more applicable to Database development and functional programming. The issue was that was using an Object Oriented programming paradigm for the software implementation = inadequate upfront design. I needed to interpolate the objects eventually during design anyways.
Although the design was pretty thorough, it was only a partial success: there was an "impedence mismatch" between the functional approach of Systems Analysis and Design (SSAD) and Object Oriented Programming.
At the time I didn't understand the difference between functional and object oriented programming paradigm. So consequently the systems approach was innapropriate for a OOP programming language: (it resulted in all the functions, and what sequence to call them in, BUT you didn't know what objects to put them into so you needed to interpolate at implementation time.)
Even though this project was only a partial success, it became a great learning expirence: use the right design method for the right programming or database paradigm (OOP, Functional, Relational, or Graphing).
If I had implemented this using a functional language, I would have much more success on the application part of it (it worked perfectly).