Прошу посоветовать книг по архитектуре программных продуктов, паттернам проектирования и прочей проектировочной части программирования. В частности, интересен вопрос создания ПО под будущее расширение и, как следствие изменение формата данных (как в таком случае обеспечивать обратную совместимость).