Agile Development

The Agile software development metodology is dominiant.  But is it right in all cases?  What are the trade-offs?