29

2012 04 24_se_intro_lecture11

Embed Size (px)

Citation preview

Page 1: 2012 04 24_se_intro_lecture11
Page 2: 2012 04 24_se_intro_lecture11

Сборка (building) программного проекта– набор правил и процедур, направленный на получение исполняемой программы

Выпуск (release) программного продукта – процесс отчуждения программы от разработчика и заключающийся в ◦ Сборке программного проекта ◦ Формировании инсталляционного пакета ◦ Формировании документации ◦ Формировании аннотации релиза

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 3: 2012 04 24_se_intro_lecture11

Трансляция всего проекта

Сборка дистрибутива

Подготовка исходных текстов

Подготовка документации

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 4: 2012 04 24_se_intro_lecture11

Проверка работоспособности

Очередная периодическая сборка (еженощная)

Подготовка версии к автоматическому тестированию

Подготовка дистрибутива

Инсталляция дистрибутива (из исходных текстов)

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 5: 2012 04 24_se_intro_lecture11

Проблемы с исходными текстами

Проблемы с подключаемыми файлами

Проблемы с используемыми библиотеками

Проблемы с процедурами сборки

Проблемы со средствами (утилитами) сборки

Проблемы с системной средой и аппаратной платформой сборки

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 6: 2012 04 24_se_intro_lecture11

Исходными для сборки являются ◦ Исходные файлы ЯП ◦ Шаблоны ◦ Конфигурационные файлы ◦ Ресурсные файлы ◦ Файлы документации ◦ И т.п.

Проблемы с исходными текстами ◦ Отсутствие всех исходных текстов ◦ Некорректное расположение исходных

текстов ◦ Неправильные версии исходных файлов

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 7: 2012 04 24_se_intro_lecture11

Подключаемые файлы ◦ Сторонние файлы, необходимые для сборки

проекта. Обычно содержат интерфейсы к библиотечным функциям и основные типы данных

Проблемы с подключаемыми файлами ◦ Отсутствие подключаемых файлов

◦ Неправильное расположение подключаемых файлов

◦ Некорректные версии подключаемых файлов

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 8: 2012 04 24_se_intro_lecture11

Библиотеки ◦ Некоторые компиляторы требуют наличия не только статических, но динамических библиотек с ранним связыванием

Проблемы с используемыми библиотеками ◦ Отсутствие библиотек ◦ Неправильное расположение библиотек

◦ Некорректные версии библиотек

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 9: 2012 04 24_se_intro_lecture11

Проблемы с процедурами сборки ◦ Отсутствие процедуры сборки проекта

◦ Отсутствие процедур сборки компонентов проекта

◦ Несоответствие версии процедуры сборки

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 10: 2012 04 24_se_intro_lecture11

Проблемы с системной средой и аппаратной платформой ◦ Неправильная версия ОС

◦ Неправильные версии компонентов ОС

◦ Некорректный состав аппаратуры Тип процессора

Количество ядер

И т.п.

◦ Некорректные параметры аппаратуры Скорость процессора

Объем памяти

Объем дисков

И т.п.

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 11: 2012 04 24_se_intro_lecture11

Утилиты сборки: ◦ Трансляторы (компиляторы, ассемблеры и т.п.)

◦ Редакторы связей (линкеры) ◦ Библиотекари ◦ Архиваторы ◦ Генераторы дистрибутивов ◦ Генераторы документации ◦ Генераторы кода ◦ И т.п.

Проблемы со средствами (утилитами) сборки ◦ Неполный состав средств сборки

◦ Некорректные версии средств сборки

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 12: 2012 04 24_se_intro_lecture11

Аппаратная платформа

Системное окружение ◦ Операционная система

◦ Системные файлы

Библиотечное окружение ◦ Подключаемые файлы

◦ Библиотечные файлы

Исходные файлы в требуемых каталогах

Средства сборки

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 13: 2012 04 24_se_intro_lecture11

Построение окружения ◦ Установка всех требуемых библиотек

Из дистрибутивов (версия разработчика)

◦ Установка всех средств сборки

Из дистрибутива

◦ Размещение всех исходных файлов

Из СКВ

Из архива

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 14: 2012 04 24_se_intro_lecture11

Сборка должна проводиться на любом компьютере с подготовленным окружением

Сборка должна проводиться отдельно от рабочего места разработчика ◦ Версии подключаемых файлов ◦ Версии библиотек ◦ Расположение исходных файлов ◦ Версии средств сборки ◦ Влияние временных файлов

Объектные файлы Исполняемые файлы

Предкомпилированные заголовки И т.п.

Процедура сборки должна быть: ◦ Документирована ◦ Прозрачна ◦ Повторяема

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 15: 2012 04 24_se_intro_lecture11

С помощью среды разработки

С помощью запуска компилятора командной строки

С помощью сценариев

С помощью различных make tools ◦ make ◦ nmake ◦ Ant ◦ Maven ◦ И т.п.

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 16: 2012 04 24_se_intro_lecture11

Для каждого компонента проекта должна быть сформирована локальная процедура сборки ◦ Например, makefile

В каждом компоненте проекта в сборка должна проходить одной командой ◦ Например, make

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 17: 2012 04 24_se_intro_lecture11

Процедуры сборки должны ◦ находиться под управлением СКВ

◦ помечаться и ветвиться аналогично файлам проекта

◦ изменяться в соответствии с изменениями проекта

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 18: 2012 04 24_se_intro_lecture11

Make tools: ◦ GNU Make

◦ Nmake

◦ Ant

◦ Maven

◦ …

Генераторы make-файлов ◦ GNU Automake

◦ Makedep

◦ Makedepend

◦ …

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 19: 2012 04 24_se_intro_lecture11

Средства управления сборкой: ◦ IBM Rational Build Forge ◦ FinalBuilder ◦ TeamCity ◦ Visual Build ◦ Codefast PerfectBuild ◦ OpenMake ◦ Anthill Pro ◦ … (около 100)

Ицыксон В.М. ОСНОВЫ ПРОГРАММНОЙ ИНЖЕНЕРИИ © 2012

Page 20: 2012 04 24_se_intro_lecture11
Page 21: 2012 04 24_se_intro_lecture11

Непрерывная интеграция

Непрерывная интеграция (continuous integration или CI) — один из процессов ПИ, предполагающий периодическую (частую) интеграцию отдельных частей проекта

Ицыксон В.М. Основы программной инженерии © 2012

Page 22: 2012 04 24_se_intro_lecture11

Требования к проектам

Все компоненты проекта находятся в СКВ

Операция сборки проекта — автоматизирована

Операция тестирования проекта — автоматизирована

Ицыксон В.М. Основы программной инженерии © 2012

Page 23: 2012 04 24_se_intro_lecture11

Действия в системах непрерывной интеграции

Инкремент текущего номера сборки («билда»)

Пометка текущим тэгом сборки файлов собираемого проекта

Получение проекта (помеченного тэгом) из репозитория

Сборка проекта

Запуск тестирования (и/или других процедур обеспечения качества)

Развертывание проекта

Формирование отчета

Ицыксон В.М. Основы программной инженерии © 2012

Page 24: 2012 04 24_se_intro_lecture11

Условия запуска сборки

По расписанию

По каждому обновлению файлов репозитория

По запросу

Ицыксон В.М. Основы программной инженерии © 2012

Page 25: 2012 04 24_se_intro_lecture11

Запуск сборки по распианию

Обычно запуск производится ночью (nigthly build, daily build)

Проводится запуск полного набора тестов

Ицыксон В.М. Основы программной инженерии © 2012

Page 26: 2012 04 24_se_intro_lecture11

Запуск сборки по обновлению

Цель — определить, что данное обновление (фиксация) не испортило систему

Запуск производится после каждого обновления в репозитории проекта

Запускается сокращенная процедура сборки и тестирования

Длительность 5-15 минут

При большей длительности — интеграция бессмысленна

Ицыксон В.М. Основы программной инженерии © 2012

Page 27: 2012 04 24_se_intro_lecture11

Промышленные средства непрерывной интеграции

CruiseControl

CruiseControl.NET

Hudson/Jenkins

BuildBot

Bitten — плагин для Trac

MS Team Foundation Server

… (более 20 средств)

Ицыксон В.М. Основы программной инженерии © 2012

Page 28: 2012 04 24_se_intro_lecture11

Hudson/Jenkins

Ицыксон В.М. Основы программной инженерии © 2012

Page 29: 2012 04 24_se_intro_lecture11

BuildBot

Ицыксон В.М. Основы программной инженерии © 2012