Легалов Александр Иванович,
Косов Павел Владимирович,
Легалов Игорь Александрович
Аннотация
Эволюционная разработка программного обеспечения опирается на различные технические приемы и парадигмы программирования. Применение наследования и виртуализации позволили безболезненно наращивать классы и их функциональность. Добавление новых процедур и функций не вызывает проблем при использовании процедурного и функционального программирования. В более сложных случаях на помощь приходят паттерны проектирования, учитывающие особенности парадигм программирования и ситуации, возникающие при написании фрагментов программного кода. Вместе с тем следует отметить, что эволюционному расширению процедур и функций в настоящее время уделяется недостаточно внимания. В работе рассматривается возможность добавления новой функциональности без изменения уже написанного кода за счет перегрузки процедур с одинаковой сигнатурой. Данный подход базируется на раздельной компиляции таких процедур и связывании их воедино во время окончательной компоновки программы, проходящей на более поздних этапах. Представлены общая идея подхода и возможность ее реализации с использованием традиционных языков программирования. Предлагаются языковые конструкции, которые добавляют в традиционные процедуры опции, задающие перегрузку одинаковых сигнатур. В статье рассмотрены ситуации, в которых применение перегрузки процедур с одинаковой сигнатурой позволяет сделать эволюционную разработку программного обеспечения более гибкой. На конкретных примерах рассмотрены варианты расширения синтаксиса и семантики языков программирования. Предлагаемый подход может использоваться для расширения возможностей процедур и функций в различных парадигмах программирования.
Ключевые слова: эволюционная разработка программ, перегрузка процедур, перегрузка функций, техника программирования, парадигмы программирования.
Авторы:
Легалов Александр Иванович
д-р техн. наук, профессор, заведующий кафедрой вычислительной техники Сибирского федерального университета. Область научных интересов: технологии разработки программного обеспечения, языки программирования, параллелизм. Опубликовано свыше 160 научных работ. (Адрес: 660074, Россия, Красноярск, ул. акад. Киренского, 26. Email: legalov@mail.ru).
Косов Павел Владимирович
аспирант кафедры вычислительной техники, Сибирский федеральный университет. Область научных интересов: техника и методы программирования, языки программирования, трансляторы. Опубликовано 3 научные работы. (Адрес: 660074, Россия, Красноярск, ул. акад. Киренского, 26. Email: kosov_@mail.ru).
Легалов Игорь Александрович
канд. техн. наук, доцент кафедры информационных систем Сибирского федерального университета. Область научных интересов: технологии разработки программного обеспечения, языки программирования, трансляторы. Опубликовано 11 научных работ. (Адрес: 660074, Россия, Красноярск, ул. акад. Киренского, 26. Email: igor@legalov.ru).
Список литературы
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ / пер. с англ. под ред. И. Романовского, Ф. Андреева. – 2-е изд. – М.: Бином; СПб.: Невский диалект, 1998. – 560 с.
- Eclipse AspectJ: Aspect-oriented programming with AspectJ and the eclipse AspectJ development tools / A. Colyer, A. Clement, G. Harley, M. Webster. – Boston, Massachusetts: Addison Wesley Publ., 2004. – 504 p.
- Чарнецки К., Айзенекер У. Порождающее программирование: методы, инструменты, применение: пер. с англ. – СПб.: Питер, 2005. – 736 с. – (Для профессионалов).
- Легалов А.И. Процедурно-параметрическая парадигма программирования: возможна ли альтернатива объектно-ориентированному стилю? / Красноярский государственный технический университет. – Красноярск, 2000. – 43 с. – Депонировано в ВИНИТИ 13.03.2000, № 622-В2000.
- Приемы объектно-ориентированного проектирования: паттерны проектирования: пер. с англ. / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. – СПб.: Питер, 2001. – 368 с.
- Горбунов-Посадов М.М. Расширяемые программы. – М.: Полиптих, 1999. – 336 с.
- Легалов А.И., Привалихин Д.В. Эволюционное расширение программ в функциональном языке параллельного программирования // Вестник Красноярского государственного университета. Физико-математические науки. – 2004. – № 5/2. – С. 40–48.
- Остерн М.Г. Обобщенное программирование и STL: использование и наращивание стандартной библиотеки шаблонов C++: пер. с англ. – СПб.: Невский диалект, 2004. – 544 с.
- Moessenboeck H., Wirth N. The programming language Oberon-2 / Institut für Computer-systeme. – Zurich: ETH, 1996. – 27 p.
- Barnes J. Programming in Ada 95. – 2nd ed. – Harlow, Addison-Wesley Publ., 1998. – 720 p.
- Легалов А.И., Швец Д.А. Процедурный язык с поддержкой эволюционного проектирования // Научный вестник НГТУ. – 2003. – № 2 (15). – С. 25–38.
- Легалов А.И., Бовкун А.Я., Легалов И.А. Расширение модульной структуры программы за счет подключаемых модулей // Доклады Академии наук высшей школы Российской Федерации. – 2010. – № 1 (14). – С. 114–125.