b59d78641fa9b3fcaac7c2d88cede914.ppt
- Количество слайдов: 47
Открытое акционерное общество Научно-инженерный центр Санкт-Петербургского электротехнического университета Исследования и разработки Информационные технологии Преимущество через партнерство
Открытое акционерное общество Научно-инженерный центр Санкт-Петербургского электротехнического университета Конфигурационное управление в АО "НИЦ СПб ЭТУ" Инженер конфигураций Петров Андрей Санкт-Петербург 25. 11. 2016
Цели и задачи конфигурационного управления Цели: Контроль (соблюдение процесса разработки) Управление (простота модификации и сопровождения ПО) Экономия средств (снижение риска потерь от ротации кадров) Качество Задачи: Идентификация рабочих продуктов Стабилизация результатов работы и определение базы для дальнейшей работы Отслеживание запросов на изменение Контроль версий Обеспечение параллельности разработки Сбор метрик и формализация применяемых методов
Определение конфигурации Конфигурация – совокупность версий рабочих продуктов. Элементы конфигурации readme. txt В е р с и и image. png source. java lib. jar pom. xml 1 1 1 2 2 3 3 3 4 4 Конфигурация 1 2 Конфигурация 2 5 Конфигурация 3
Управление конфигурацией продукта Основные направления деятельности и инструменты: Управление запросами на изменение (bug tracking) Управление исходным кодом (version control) Автоматизация сборки и непрерывная интеграция Работа по выпуску продукта и учёт выпускаемых артефактов (release management) Развёртывание продуктов
Конфигурационное управление в «НИЦ СПб ЭТУ» Конфигурационное управление Проблемы и их решение Системы контроля версий Системы автоматизации сборки Непрерывная интеграция Инструментарий КУ Взаимодействие подразделений План конфигурационного управления проектом (база знаний проекта)
Проблема: отсутствие единого подхода к хранению проектных артефактов артефакты Локальные репозитории Разрабатываемое изделие арт еф акт артефакты Центральный репозиторий акт ы PC
Проблема: использование множества инструментальных средств в проекте IBN SQL Developer прочие JIRA Центральный репозиторий SVN Центральный репозиторий FTP Confluence Eclipse IDEA Visual Paradigm Wiki Jenkins Стенд 1 ER-win … Стенд N
Проблема: процесс внесения изменений в изделие 01001 11011 001010 Описание постановки задач с помощью: IBN PC JIRA Confluence … определение РП заказчик менеджер аналитик старший разработчик *. doc (SVN) На бумажке Устно из головы в голову По электронной почте … исполнение разработчик
Проблемы и их решение с помощью КУ Проблема Решение Хранение артефактов вне центрального репозитория Выявление (идентификация) и хранение в центральном репозитории Несогласованность проектных артефактов в множестве инструментальных средств Сквозная идентификация артефактов и их привязка к версиям изделия Отсутствие необходимых артефактов Выявление, создание, хранение в в проекте центральном репозитории Отсутствие единого подхода к структуре хранения и наименованию артефактов Унификация хранения и наименования артефактов Отсутствие единого подхода к внесению изменений в изделие Унификация инструментария и сквозная связанность артефактов Отсутствие работоспособной версии изделия в любой момент времени Унификация процессов выпуска релизов и их хранения
Системы контроля версий Система управления версиями (version control system, VCS) — программное обеспечение, позволяющее создавать версии элементов и работать с этими версиями, как с самостоятельными элементами. Позволяет хранить несколько версий одного и того же файла, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение. Централизованная (CVCS) Распределенная (DVCS)
Системы контроля версий: Subversion (SVN) — свободная централизованная система управления версиями. Создание локальной рабочей копии Фиксация изменений Репозиторий Subversion Базовый рабочий цикл Разрешение конфликтов (слияние изменений) Внесение изменений Проверка изменений, внесенных другими пользователями Обновление локальной рабочей копии
Системы контроля версий: Web. SVN – веб-интерфейс Subversion
Системы контроля версий: структура репозитория Репозиторий common doc <репозитории с исходным кодом> Назначение Хранение информации, относящейся к работе предприятия в целом Хранение документации по проектам Хранение исходного кода программ и библиотек и их технического описания СМК 7. 3. 3 -01 РИ Центральный репозиторий. Регламент работы.
Системы контроля версий: структура репозитория исходного кода Каталог/подкаталог Описание <Наименование Краткое название программы или библиотеки на программы или библиотеки> английском языке. /branches Хранение информационных ресурсов, участвующих в альтернативной разработке по сравнению с базовой версией программы или библиотеки (trunk). Создается длительной разработки новых функций, модулей и т. п. требующего в дальнейшем слияния с базовой версией /tags Хранение срезов, соответствующих выпускаемым релизам /trunk Базовая версия программы или библиотеки, являющаяся основой для создания очередного релиза /trunk/src Исходные коды и ресурсы разрабатываемой программы или библиотеки. Название программного модуля Ресурсы используемые при функционировании программного модуля (рисунки, иконки и т. п. ) Исходные файлы программного модуля Unit-тесты, реализуемые для программного модуля trunk/doc Документы, содержащие описания и пояснения к исходному коду программы или библиотеки
Системы контроля версий: Subversion Git — распределенная система управления версиями. Рабочая директория Базовый рабочий цикл Индекс Локальный репозиторий Центральный репозиторий
Системы контроля версий: Git. Lab – веб-интерфейс Git
Системы автоматизации сборки Apache Maven Средство управления проектами, включающее в себя объектную модель проекта, набор стандартов, модель жизненного цикла сборки и систему управления зависимостями. CMake Кроссплатформенная система автоматизации сборки ПО. Генерирует файлы управления сборкой (Makefile, . vcxproj/. vcproj/. sln, XCode …)
Системы автоматизации сборки: Apache Maven: Модель проекта Средство описания сборки Система управления зависимостями Шаблоны/стандарты/best practice Maven - обеспечивает декларативную сборку проекта. В файлах описания проекта POM (Project Object Model) содержится его спецификация, а не отдельные команды выполнения. Все задачи по обработке файлов, описанные в спецификации, Maven выполняет посредством их обработки последовательностью встроенных и внешних плагинов.
Системы автоматизации сборки: Apache Maven parent pom Он же superpom — механизм наследования атрибутов проектной модели и обобщения одинаковых проектов v Общие зависимости v Общие версии и конфигурации плагинов v Общие репозитории и свойства v Общая мета информация v Общие ресурсы У любого проекта есть родительский pom, явный или нет
Системы автоматизации сборки: Apache Maven – Superpom
Системы автоматизации сборки: Apache Maven superpom-light, superpom-lib, superpom Тройка соответствует делению общий-ресурсный-шаблон v Superpom-light — для проектов, не включающих java кода и мультимодульных проектов с собственной моделью v Superpom-lib — для библиотек и проектов с собственной конфигурацией создания конечного артефакта v Superpom — шаблон для простой сборки конечного приложения с созданием rpm и инсталятора.
Непрерывная интеграция (Continuous Integration, CI) — способ разработки ПО, при котором все участники группы осуществляют частую интеграцию результатов своей работы. Результат каждой интеграции автоматически проверяется на предмет ошибок и проходит инспекцию. Репозиторий Subversion Сервер CI Пе ре изм дача ене ний PC PC Механизм обратной связи
Мы люди науки и практики Жизненный цикл информационной системы (программной системы) Проектирование НИР ЭП Разработка ТП Бизнес-анализ Проектирование интерфейса пользователя Проектирование архитектуры ГОСТ 34. 601 -90 Автоматизированные системы. Стадии создания Разработка РКД Непрерывная интеграция Разработка базы данных Разработка кода Тестирование Оформление документации Ввод в эксплуатацию Сопровождение
Непрерывная интеграция: преимущества 1. Снижение риска некорректной работы разрабатываемого ПО 2. Уменьшение количества повторяемых процессов, выполняемых вручную 3. Построение развертываемого ПО в любой момент, в любом месте 4. Обеспечение лучшего контроля проекта
Непрерывная интеграция: общая схема процесса
Непрерывная интеграция: задачи Автоматическая сборка Сборка по расписанию Выпуск релиза Автоматическое развертывание Автоматическое тестирование Выпуск версии (продукта)
Непрерывная интеграция: инструментарий Наименование Назначение Ant Автоматизация процесса сборки ПО Maven Автоматизация процесса сборки ПО Cmake Автоматизация процесса сборки ПО Jenkins Реализует непрерывную интеграцию Nexus Хранилище собранных артефактов Sonar Сбор метрик исходного кода NSIS Сборка дистрибутивов Inno. Setup Сборка дистрибутивов Rpm. Build Сборка дистрибутивов
Непрерывная интеграция: Jenkins
Непрерывная интеграция: Jenkins – распределенная сборка Билд-агент 1 (Windows) Билд-агент 2 (МСВС) Сервер Jenkins Билд-агент 3 (Astra Linux) Репозиторий Subversion
Непрерывная интеграция: Jenkins – распределенная сборка
Непрерывная интеграция: Nexus
Непрерывная интеграция: базовый сценарий 1. Разработчик передает код в хранилище с контролем версий 2. Система контроля версий уведомляет сервер CI об изменениях в хранилище 3. Сервер CI получает последнюю копию кода из хранилища и запускает сценарий построения 4. Север CI отрабатывает обратную связь, посылая по электронной почте результаты построения соответствующим участникам проекта
Непрерывная интеграция: этапы Фиксация (компиляция, модульные тесты) Анализ кода (инспекция) Развертывание (на целевой платформе) Автоматическое тестирование (интеграционное, функциональное, нагрузочное. . . ) Обратная связь Сохранение артефактов (ftp, nexus)
Непрерывная интеграция: типы сборок Автоматическая сборка Настраивается в начале разработки Сборка по расписанию В начале разработки может не иметь этапов развертывания и автоматического тестирования Выпуск релиза Обязательно наличие всех этапов Выпуск версии (продукта) Обязательно наличие всех этапов
Непрерывная интеграция: последовательность прохождения этапов выпуска Команда разработки Фиксация, разверт-е SVN Автомат. тесты Сохранение артеф-ов Билд-агент (МСВС) commit запуск Н обратная связь У – успех Н – неудача commit запуск У обратная связь запуск Н обратная связь commit запуск обратная связь У обратная связь запуск У обратная связь утверждение У запуск Ручное тестир-е
Непрерывная интеграция: Особенности сборки проектов, подлежащих сертификации Заморозка времени Исходный код в src. rpm Сборка rpm для неизменяемых файлов Сборка сторонних библиотек из исходных кодов в отдельные rpm Сборка или средствами целевой платформы или средствами записываемыми на диск с исходным кодом
Непрерывная интеграция: взаимодействие отделов
Непрерывная интеграция: ответственность Зона ответственности Ответственный Исполнитель Настройка CI НО СПОи. БД ИК Инициация подключения проекта к CI РП АП, МРГ Подготовка входных данных по проекту для подключения РП АП, МРГ, разработчики, БИ Подключение проекта к CI НО СПОи. БД ИК, АП, МРГ, разработчики Контроль исполнения регламента CI НО СПОи. БД ИК Выполнение требований к процессу разработки РП АП, МРГ, разработчики ИК – инженер конфигураций БИ – билд инженер РП – руководитель проекта НО – начальник отдела АП – архитектор проекта МРГ – менеджер рабочей группы
Взаимодействие подразделений JIRA - система отслеживания требований, ошибок и других типов запросов в зависимости от настройки бизнес-процессов. JIRA позволяет передавать запросы на рассмотрение (утверждение) должностным лицам в соответствии с установленным бизнеспроцессом.
Взаимодействие подразделений: заявки по CI
План конфигурационного управления (база знаний проекта) План конфигурационного управления – документ описывающий процесс конфигурационного управления в проекте. В плане излагается перечень конфигурационных объектов, имплементация средств автоматизации и расписываются роли участников проекта. Wiki – база знаний по всем проектам. Хранит перечень используемого в проекте инструментария и ссылки на конфигурационные объекты (альтернативное решение документу по КУ)
Wiki – База знаний
Wiki - База знаний проекта
Инженер конфигураций Должностные обязанности: Настройка, ввод в эксплуатацию и модернизация инструментального ПО, связанного с процессами разработки Разработка и поддержка сборочных скриптов Подготовка стендового оборудования Проектирование и настройка отказоустойчивых конфигураций программных комплексов и систем
Спасибо за внимание!
b59d78641fa9b3fcaac7c2d88cede914.ppt