НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им.Н.И.ЛОБАЧЕВСКОГО НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ

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