Государственный университет им. Н.И. Лобачевского Национальный исследовательский университет Докладчик: Алексей Сиднев Макромодульный подход к разработке программ
Макромодульная технология Проблема разработки ПО Декомпозиция задачи. Реализация отдельных модулей. Отсутствие стандартов на интерфейсы модулей. Проблема выбора наиболее оптимальной библиотеки под текущие задачи проекта.
Макромодульная технология Проблема разработки ПО Отсутствие стандартов на интерфейсы модулей. Проблема выбора наиболее оптимальной библиотеки под текущие задачи проекта. При переходе на новую библиотеку разработчику необходимо выполнить модификацию используемых структур данных и функций под те, которые используются в библиотеке. Такой переход может быть очень трудоёмким.
Макромодульная технология Общая идея подхода
Макромодульная технология Использование подхода (1) 1. Описание участков кода программы с помощью директив препроцессора. 2. Задание целевой платформы для сборки. Автоматически выполняется: Препроцессирование исходных кодов программы. Замена размеченных блоков на реализации из библиотек.
Макромодульная технология Использование подхода (2)
Макромодульная технология Макроописание (исходная программа) «Матричное умножение» for(i = 0; i < n; i++) for(l = 0; l < n; l++) for(j = 0; j < n; j++) C[i*n+j] += A[i*n+l] * B[l*n+j];
Макромодульная технология Макроописание (модификация) #pragma mmt mmult(A=Matrix (n, n), B=Matrix (n, n), C=Matrix (n, n)) { for(i = 0; i < n; i++) for(l = 0; l < n; l++) for(j = 0; j < n; j++) C[i*n+j] += A[i*n+l] * B[l*n+j]; }
Макромодульная технология Результаты экспериментов (1) Три версии программы из одного исходного файла.
Макромодульная технология Результаты экспериментов (2) На разных платформах библиотеки показывают различную эффективность
Макромодульная технология Заключение Использование ММП позволяет решить ряд проблем модульной разработки ПО. Для использования ММП разработчику достаточно описать участки кода программы с помощью директив на макроязыке. Текущее состояние: –разработан прототип системы, реализующий поддержку макромодульной технологии в виде надстройки к Microsoft Visual Studio; –реализована поддержка библиотеки MKL; –разработано демонстрационное приложение.
Макромодульная технология Вопросы ???