Изучение объектно-ориентированных систем программирования. Исследование слабо формализованного процесса рефакторинга как задачи оптимизации целевой функции. Определение классов программного продукта, для которых целесообразно выполнение рефакторинга.