Which is best approach (Agile or waterfall or Agile+waterfall)?
Well this is open ended, but for me this depends on the struture of the development team and the nature of the project. For example if you have a distributed development where a few developers are assigned to local offices and other developers assigned to remote offices (client's premises) then I've found a Waterfall approach is best suited as there is less back and forth banter and all requirements are defined upfront. However Agile approaches provide higher productivity in terms of delivery of projects and Agile also supports the ability for clients to back changes to the requirements late within the development phase.
More so I have found Agile to be at best when developing an application that already exists and the constant enhancements and changes are made.