Flexible, reliable software : using patterns and agile development /: using patterns and agile development. (©2010)