Heat the butter in a pot or Dutch oven over medium-high heat. Saute the onions until soft and translucent, 5-7 minutes. Add the garlic and cook for another minute. Add the carrots and celery and cook for another 10 minutes. Stir in the barley and cook for another minute.
Add all remaining ingredients except for the parsley. Bring it to a boil, reduce the heat to medium-low, cover and simmer for 1 hour.
Remove the chicken, remove the meat from the bones and dice it, discard the skin and bones, and return the meat to the soup. Add the parsley. Simmer for another minute until heated through. Add salt and pepper to taste.
This soup tastes even better the next day. The barley will swell and soak up more liquid so you may need to add a little extra broth when reheating.