Основные принципы дизайна классов в объектно-ориентированном проектировании: единственной обязанности, открытости-закрытости, подстановки Барбары Лизков, разделения интерфейса, инверсии зависимостей. Понятие быстрой разработки программ Мартина Роберта.