Особенности практической реализации процесса интеграции при разработке сложных аппаратно-программных комплексов НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им.Н.И.ЛОБАЧЕВСКОГО НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ ЛАБОРАТОРИЯ АППАРАТНО-ПРОГРАММНЫХ СИСТЕМ Докладчик: Кузьмина Ирина, НИФТИ ННГУ
НИФТИ ННГУ2 Комплекс управления проверочной аппаратурой
НИФТИ ННГУ3 Схема зависимости программных компонентов vxi adl ADL Dispatcher VXI CSPDI Dselector Tibbo VN6204 VN1404 Cdisp Creference Generator Converter Cresearch Convdistr Manager Imitator
НИФТИ ННГУ4 Недостатки процесса разработки программного обеспечения (ПО) отсутствие этапа интеграции программных компонентов при разработке; отсутствие согласования размещенных в системе версионного контроля исходных кодов и бинарных файлов; высокий риск потери возможности разработки компонента в случае болезни или увольнения разработчика; проблемы взаимодействия с аппаратурой, возникающие при отладке комплекса.
НИФТИ ННГУ5 Схема процесса разработки ПО РАЗРАБОТЧИК 1 ИНТЕГРАТОР РАЗРАБОТЧИК N РАЗРАБОТЧИК 2 Создание дистрибутива (Setup.exe) *.exe *.dll *.dll Setup.exe Setup.exe Репозиторий
6 Выделение процесса интеграции программных компонентов весь исходный код хранится в версионном хранилище и компилируется из командной строки на сборочном сервере при сборке комплекса по требованию; удовлетворение зависимостей на сборочном сервере обеспечивается настройками среды разработки на бинарные файлы зависимых проектов, а не на бинарники установленного комплекса предыдущей версии; после компиляции кода на сборочном сервере из полученных исполняемых файлов и библиотек собирается дистрибутив, а файлам исходного кода присваивается метка, определяющая текущую версию комплекса. Синхронизация интерфейсовна этапе сборки комплекса Синхронизация интерфейсов на этапе сборки комплекса Сборка комплекса любой версии
НИФТИ ННГУ7 Схема процесса разработки ПО РАЗРАБОТЧИК 1 ИНТЕГРАТОР РАЗРАБОТЧИК N РАЗРАБОТЧИК 2 Создание дистрибутива (Setup.exe) *.exe *.dll *.dll Setup.exe Setup.exe Исходныйкод Исходныйкод Компиляция Создание дистрибутива (Setup.exe) Репозиторий
НИФТИ ННГУ8 Анализ результатов процесса интеграции + снизились риски, связанные с человеческим фактором; + сократились временные затраты как процесса разработки ПО, так и процессов тестирования программной части и всего комплекса в целом.
НИФТИ ННГУ9 Анализ результатов процесса интеграции - «волшебная машина»; - невозможность проведения модульного тестирования на этапе сборки комплекса вследствие зависимости тестов от аппаратуры; - отсутствие полностью автоматической сборки (без участия человека). - тесная взаимосвязь программных компонентов и, как следствие, необходимость постоянного согласования интерфейсов;
НИФТИ ННГУ10 ADL Creference Cresearch VN6204 VN1404 Dselector Condistr VXI Manager CSPDI Imitator Tibbo Cdisp Комплекс ADL Creference Cresearch VN6204 VN1404 Dselector Condistr VXIManager CSPDI Imitator Tibbo Cdisp Ошибка интеграции Ошибка интеграции Ошибка интеграции Ошибка интеграции
НИФТИ ННГУ11 РАЗРАБОТЧИК 1 ИНТЕГРАТОР РАЗРАБОТЧИК N РАЗРАБОТЧИК 2 *.exe *.dll *.dll Setup.exe Setup.exe Исходныйкод Исходныйкод Компиляция Создание дистрибутива (Setup.exe) Ошибка интеграции Ошибка интеграции Ошибка интеграции Ошибка интеграции разработка \ интеграция Репозиторий
НИФТИ ННГУ12 Шаги развития процесса интеграции УСТРАНЕНИЕ «ВОЛШЕБНОЙ МАШИНЫ»: использовать только программные продукты, размещенные в версионном хранилище; создать документ, включающий описание программных продуктов; перейти от использования ссылок на исполняемые файлы компонентов к ссылкам непосредственно на программный проект; разместить сторонние библиотеки в общей структуре системы версионного контроля и настроить ссылки на них в каждом проекте. Компонент А бинарии (.lib) исх. код (.proj) Компонент B бинарии (.lib) исх. код (.proj) Компонент А бинарии (.lib) исх. код (.proj) Компонент B бинарии (.lib) исх. код (.proj)
НИФТИ ННГУ13 Шаги развития процесса интеграции РАЗДЕЛЕНИЕ МОДУЛЬНОГО И ФУНКЦИОНАЛЬНОГО ТЕСТИРОВАНИЯ: модульные тесты не зависят от аппаратуры; тестируют окружение (наличие библиотек, конфигурационных файлов); тестируют алгоритмы.
НИФТИ ННГУ14Аппаратура Окружение *.dll *.xml *.config Алгоритмы Модульные Модульные тесты тесты
НИФТИ ННГУ15 Шаги развития процесса интеграции РАЗДЕЛЕНИЕ ПРОЦЕССА ИНТЕГРАЦИИ НА ЭТАПЫ: интеграция программных компонентов (выявление конфликтов взаимодействия зависимых интерфейсов); сборка комплекса.
НИФТИ ННГУ16 Компонент А Репозиторий Разработчик 1 Компонент B Компонент C Компонент D Разработчик 2Разработчик 3Разработчик N Check In Сервер сборки Изменения Сборка компонента B Компиляция Модульное тестирование Инспекция исходного кода Сборка компонента А Компиляция Модульное тестирование Инспекция исходного кода Сборка компонента C Компиляция Модульное тестирование Инспекция исходного кода Сборка компонента D Компиляция разработчикам компонентов A и D Ошибка интеграции
НИФТИ ННГУ17 Шаги развития процесса интеграции СОЗДАНИЕ ПЛАНА КОНФИГУРАЦИОННОГО УПРАВЛЕНИЯ, РЕГЛАМЕНТИРУЮЩЕГО ВСЕ ОПИСАННЫЕ ВЫШЕ ПРОЦЕДУРЫ. Конфигурации включают : стандарты наименования; соглашения о едином стиле оформления исходного кода, комментариев, документов; порядок разработки, сборки и тестирования; распределение ролей в проекте.
НИФТИ ННГУ18 ОРГАНИЗАЦИЯ АВТОМАТИЧЕСКОЙ НЕПРЕРЫВНОЙ СБОРКИ ПРОГРАММНЫХ КОМПОНЕНТОВ И КОМПЛЕКСА В ЦЕЛОМ. Сервер сборки Сервер сборки Шаги развития процесса интеграции компиляция исходных кодов; модульное тестирование (NUnit, CUnit, CppUnit ); инспекция исходного кода (NDepend, CppDepend); уведомление разработчиков о результатах сборки.
НИФТИ ННГУ19 Сервер сборки OC Windows XP Сервер сборки OC QNX 6.3 CruiseControl.Net ClearCase LT CruiseControl ClearCase LT
20 РАЗРАБОТЧИК 1 РАЗРАБОТЧИК N РАЗРАБОТЧИК 2 Сервер сборки build-qnx QNX 6.3 Компиляция Тестирование (модул.) Создание дистрибутива (Setup.qpr) Putty Сервер сборки build-windows Сервер сборки build-windows CruiseControl.Net ClearCase LT Компиляция Тестирование (модул.) Инспекция кода Удаленный запуск сборки на build-qnx Создание дистрибутива (Setup.exe) рассылка Putty Windows XP Исходныйкод Исходныйкод Putty Setup.exe Setup.qpr Схема процесса интеграции ПО после автоматизации Setup.qpr Репозиторий
НИФТИ ННГУ21 Выводы Представленный в данной работе комплекс мер позволил сократить временные затраты, необходимые на создание очередной версии ПО АПК, с нескольких дней до нескольких часов Разработанная схема процесса интеграции является универсальной и может быть применена в проектах, независимо от операционной системы, на которой ведётся разработка ПО Для успешного внедрения непрерывной интеграции необходимо, чтобы все процедуры процесса были хорошо документированы и донесены до сведения разработчиков до начала этапа разработки ПО