Аннотация
Эволюционная разработка программного обеспечения опирается на различные технические приемы и парадигмы программирования. Применение наследования и виртуализации позволили безболезненно наращивать классы и их функциональность. Добавление новых процедур и функций не вызывает проблем при использовании процедурного и функционального программирования. В более сложных случаях на помощь приходят паттерны проектирования, учитывающие особенности парадигм программирования и ситуации, возникающие при написании фрагментов программного кода. Вместе с тем следует отметить, что эволюционному расширению процедур и функций в настоящее время уделяется недостаточно внимания. В работе рассматривается возможность добавления новой функциональности без изменения уже написанного кода за счет перегрузки процедур с одинаковой сигнатурой. Данный подход базируется на раздельной компиляции таких процедур и связывании их воедино во время окончательной компоновки программы, проходящей на более поздних этапах. Представлены общая идея подхода и возможность ее реализации с использованием традиционных языков программирования. Предлагаются языковые конструкции, которые добавляют в традиционные процедуры опции, задающие перегрузку одинаковых сигнатур. В статье рассмотрены ситуации, в которых применение перегрузки процедур с одинаковой сигнатурой позволяет сделать эволюционную разработку программного обеспечения более гибкой. На конкретных примерах рассмотрены варианты расширения синтаксиса и семантики языков программирования. Предлагаемый подход может использоваться для расширения возможностей процедур и функций в различных парадигмах программирования.
Ключевые слова: эволюционная разработка программ, перегрузка процедур, перегрузка функций, техника программирования, парадигмы программирования.