?
Инструментальная поддержка эволюционного расширения программ при инкрементальной разработке
В настоящее время используются разнообразные подходы к эволюционной разработке программ. Ряд их широко применяется на практике, найдя воплощение в различных техниках и парадигмах программирования. В статье рассматриваются особенности программных объектов современных языков программирования, обеспечивающих поддержку эволюционной разработки программного обеспечения. Среди множества существующих методов можно выделить те, которые ориентированы на поддержку полиморфизма, позволяющего изменять поведение процедур или функций за счет динамического связывания во время выполнения. Проводится сравнени подходов, используемых в процедурной, объектно-ориентированной, процедурно-параметрической парадигмах, а также использование интерфейсов в языке программирования Go. За исключением процедурной парадигмы все прочие подходы предлагают свои варианты реализации полиморфизма, сопоставление которых представляет определенный интерес для разработчиков перспективных языков программирования. Предлагается набор базовых ситуаций инкрементального расширения программ, на основе которого осуществляется сопоставление различных подходов: расширение обобщений специализациями; добавление новых процедур, обеспечивающих дополнительную функциональность; добавление новых полей данных в существующие типы; добавление новых процедур, предназначенных для обработки только одной из специализаций; создание нового обобщения на основе существующих специализаций; добавление в программу мультиметода; изменение мультиметодов при добавлении новых специализаций. Оцениваются возможности использования разных методов полиморфизма в языке функционально-потокового параллельного программирования.