Названо много хороших книг. Добавлю:
1) шаблоны проектирования:
Применение шаблонов JAVA (С.Стелтинг, О.Маассен)
Шаблоны проектирования в Java (Марк Гранд)
2) про гибкие методологии:
Экстремальное программирование (Кент Бек)
Экстремальное программирование. Разработка через тестирование (Кент Бек)
Srcum и XP: заметки с передовой (Хенрик Книберг)