Научная статья на тему 'Основные методы и компоненты систем непрерывной интеграции в ИТ-проектах'

Основные методы и компоненты систем непрерывной интеграции в ИТ-проектах Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
296
70
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СИСТЕМА НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / ИТ-ПРОЕКТЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Арланов И. В.

Статья посвящена вопросам использования концепции непрерывной интеграции при реализации ИТ-проектов, рассматриваются методы, используемые при построении систем непрерывной интеграции, основные компоненты таких систем.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Арланов И. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Основные методы и компоненты систем непрерывной интеграции в ИТ-проектах»

нестандартные творческие подходы к поиску верного решения. В настоящее время весьма важно, чтобы специалист умел представлять научную базу обоснования принятых решений и выполняемых функций, владел системой различных методик научной работы, способствующих осуществлению результативной деятельности. Исходя из сказанного, следует сделать вывод о том, что научная работа имеет огромное значение для воспитания не просто специалиста в определенной области деятельности, владеющего определенным набором знаний, но и самостоятельную, высокоорганизованную личность, обладающую способностями быстро и грамотно принимать решения, использовать новые творческие подходы для достижения цели, адекватно оценивать ситуацию и на основе проведенного анализа действий системно обосновывать показатели и результаты собственной работы. Научно-исследовательская деятельность вуза, являясь важным фактором воздействия на ресурсный потенциал таможенных органов, выступает в качестве инструмента, позволяющего сформировать полноценную личность и высококвалифицированного специалиста, способного в будущем стать основой кадрового резерва таможенных органов.

Список литературы:

1. Образование как базовый ресурс научного потенциала общества // «Ученый совет». - 2013. - № 9. - С. 50-56.

ОСНОВНЫЕ МЕТОДЫ И КОМПОНЕНТЫ СИСТЕМ НЕПРЕРЫВНОЙ ИНТЕГРАЦИИ В ИТ-ПРОЕКТАХ

© Арланов И.В.*

Государственный университет управления, г. Москва

Статья посвящена вопросам использования концепции непрерывной интеграции при реализации ИТ-проектов, рассматриваются методы, используемые при построении систем непрерывной интеграции, основные компоненты таких систем.

Ключевые слова система непрерывной интеграции, программное обеспечение, ИТ-проекты.

Процесс интеграции программного обеспечения в конечный продукт -далеко не новая проблема. Интеграция в техническом смысле - это объединение отдельных частей исходного кода вместе, позволяющее проверить их совместную работу. В ИТ-проекте, выполняемом одним человеком с немногими внешними зависимостями, получение рабочей версии продукта не пред-

* Аспирант кафедры «Управление проектом».

ставляет большой сложности, но при разработке относительно крупных проектов, над которыми работают команды разработчиков, возникает насущная потребность в проверке слаженной работы компонентов программного обеспечения, причем постоянно и часто. Ориентироваться на конец проекта для проведения интеграции и выявления всего спектра возможных ошибок за два дня до срока сдачи проекта - неразумно и к тому же не способствует качеству программного обеспечения, а зачастую приводит к задержке сроков сдачи ИТ-проекта и повышению его стоимости. Непрерывная интеграция (Continuous integration - CI) позволяет избежать подобных ситуаций.

Одним из наглядных компонентов непрерывной интеграции является сценарий автоматизированной сборки. Автоматизированная сборка кода стала настолько типичной задачей, что зачастую её используют в качестве синонима непрерывной интеграции. В начале XX века рабочие на конвейере Форда собирали автомобили вручную. Сборка модели «Т» занимала несколько дней. Современные автомобили намного сложнее модели «Т», но их сборка происходит быстрее, благодаря автоматизации. Точно так же, используя автоматизированное построение, можно механизировать трудоемкие задачи процесса разработки программного обеспечения.

Непрерывная интеграция - практика разработки программного обеспечения, когда участники группы осуществляют частую интеграцию своих работ, по крайне мере ежедневно, а лучше несколько раз в день. Для максимально быстрого обнаружения ошибок каждая интеграция должна осуществляться автоматизировано, со всеми регламентированными проверками. Применение непрерывной интеграции позволяет снизить трудоёмкость практически любого ИТ-проекта.

В течение дня разработчик вносит исправления в исходные файлы проекта и проверяет их на работоспособность, выполняя построение на своем локальном компьютере. Убедившись в работоспособности, автор передаёт файлы в систему контроля версий.

Ночью или рано утром сервер получает обновлённые файлы всех разработчиков и начинает процесс интеграционного построения, сводя воедино изменения, внесённые разработчиком и проверяя их на совместимость. После сервер выполняет автоматизированную проверку кода и формирует дистрибутив программного продукта. Также сервер может выполнять функциональное тестирования продукта, если это позволяют условия разработки проекта (например, с помощью запуска автоматизированных тестов, или прогона на большом количестве данных).

В итоге разработчик получает готовую к использованию версию программного обеспечения, в которой реализованы все последние изменения. Если кто-то допустил ошибку, то её исправление занимает минимальное количество времени, так как она уже изначально локализована.

Основными задачами, решаемыми в рамках непрерывной интеграции в ИТ-проектах, являются:

- Автоматизированная компиляция исходного кода - одно из наиболее простых и обычных средств системы непрерывной интеграции. Компиляция подразумевает создание исполняемого кода из исходного автоматически, по заранее заданному графику с генерацией отчёта.

- Интеграция базы данных (БД) - база данных является неотъемлемой частью прикладного программного обеспечения во многих проектах. Непрерывная интеграция осуществляется при помощи единого источника: хранилища с контролем версий, что позволяет всегда поддерживать БД в актуальном состоянии.

- Проверка - без автоматизированной проверки разработчикам и другим участникам проекта трудно гарантировать корректность изменений программного обеспечения. Кроме того, из системы можно запускать проверки различных категорий, чтобы ускорить построение. Данные категории могут включать проверки компонентов, системы, нагрузки и эффективности, защиты и другие.

- Инспекция - автоматизированная инспекция кода (например, статический и динамический анализ) применяется для улучшения качества программного обеспечения за счёт применения правил. Например, в проекте могло бы существовать правило, согласно которому размер класса не должен превышать 300 строк кода. Тогда можно использовать систему непрерывной интеграции для автоматической инспекции базового кода на предмет соответствия этим правилам.

- Развертывание - непрерывное развертывание позволяет предоставлять работоспособное программное обеспечение в любой момент времени. Ключевая цель системы непрерывной интеграции заключается в том, чтобы создать связные артефакты программного обеспечения с учётом последних изменений и сделать их доступными для системы проверки. Перед развёртыванием следует выполнить множество действий: проверить файлы исходного кода в хранилище с контролем версий, осуществить построение, добиться успешного выполнения всех проверок и инспекций, а также пометить релиз и организовать развертываемые файлы. Система непрерывной интеграции вполне может автоматически произвести развертывание (или установку) файлов в соответствующей среде, если это позволяют условия проекта. Кроме того, развёртывание должно подразумевать возможность автоматической отмены всех изменений (откат), сделанных в его процессе.

- Документирование - система непрерывной интеграции может обеспечивать возможности автоматизированного документирования. Для этого могут использоваться специальные утилиты. Кроме того, существуют средства, позволяющие создавать схемы классов и дру-

гую информацию, на основании исходного кода из хранилища с контролем версий. Это даёт возможность получения документации практически в реальном масштабе времени при помощи системы непрерывной интеграции.

- Обратная связь - постоянная обратная связь уменьшает время между обнаружением ошибки и её исправлением. Её можно реализовать самыми разными способами, от простой доступности отчётов на сервере, до автоматизированный рассылки разработчикам e-mail и sms сообщений со сведениями об ошибках.

- Частая передача кода. Одним из основных принципов непрерывной интеграции является ранняя и частая интеграция. Чтобы ощутить преимущества непрерывной интеграции, разработчики должны передавать код часто. Ожидание передачи кода в хранилище с контролем версий более одного дня делает интеграцию слишком долгой и может помешать разработчикам использовать последние изменения.

- Ликвидация проблем сборки сразу после их обнаружения. Сбойное построение (broken build) - это построение, потерпевшее неудачу. Причиной может быть ошибка компиляции, неуспех проверки или инспекции, проблема с базой данных или неудача при развертывании. В системе непрерывной интеграции данные проблемы устраняются немедленно. (В некоторых кампаниях, например на виновника сбоя надевают специальную шапку, и он обязан носить её, пока все проблемы не будут устранены).

- Использование закрытого построения для контроля работоспособности кода. Для предотвращения сбоев при построении разработчики должны имитировать интеграционное построение на своей локальной рабочей станции после завершения проверок модуля. Такая операция позволит интегрировать новое работоспособное программное обеспечение с работоспособным программным обеспечением от всех других разработчиков, полученным из хранилища, причем с учётом последних изменений, внесённых в него. Таким образом, снижается вероятность того, что переданный разработчиком код потерпит неудачу на сервере интеграционного построения.

Стандартная система непрерывной интеграции состоит из следующих компонентов:

- Хранилище с контролем версий - его задача заключается в контроле изменений исходного кода и других элементов программного обеспечения (например, документации), а так же в управлении доступом. Хранилище с контролем версий позволяет возвращаться к прежним версиям исходного кода и других файлов.

- Сервер непрерывной интеграции выполняет интеграционное построение всякий раз, когда в хранилище с контролем версий пере-

даются изменения. Как правило, сервер настраивается так, чтобы проверять изменения в хранилище с контролем версий каждые несколько часов, однако это время может довольно сильно варьироваться. Сервер получает файлы исходного кода и запускает сценарий или сценарии построения. Серверы непрерывной интеграции допускают планирование, обеспечивая построение с необходимой частотой (каждый час, день, несколько раз в неделю и т.д.). Так же сервер непрерывной интеграции позволяет запускать построение вручную при необходимости.

- Сценарий построения - это единый сценарий, или набор сценариев, используемый для компиляции, проверки, инспекции и развёртывания программного обеспечения. Сценарий может быть реализован на разных языках автоматизации процессов.

- Механизм обратной связи - один из ключевых элементов непрерывной интеграции. Благодаря механизму обратной связи можно оперативно узнать о проблемах, возникающих при очередном построении, и максимально быстро внести необходимые изменения в исходный код.

Довольно часто возникают ситуации, когда забранный из системы контроля версий код не компилируется, малейшие изменения в одном из компонентов сразу вызывают цепную реакцию, и на решение проблемы уходит много времени. Иногда в ИТ-проекте просто необходимо протестировать свою подсистему на работоспособность с более новой версией программного продукта, или просто нет времени на забор компонентов из системы контроля версий и их компиляцию.

Сборка (build) - в системе непрерывной интеграции больше, чем просто компиляция исходного кода, она может состоять из компиляции, проверки, инспекции, развертывания системы. Можно сказать, что сборка это процесс соединения исходного кода в единый модуль и проверки его на работоспособность.

Выделяют несколько типов построения системы:

- Закрытое построение. Разработчик выполняет закрытое построение перед передачей своего кода в хранилище. Осуществляя закрытое построение, разработчик интегрирует свои изменения с последними изменениями, доступными в хранилище с контролем версий. Это может предотвратить сбой построения.

- Интеграционное построение. Интегрирует изменения, внесённые в хранилище группой.

- Финальное построение. Готовит программное обеспечение к выпуску для пользователей. Одной из задач непрерывной интеграции является создание развёртываемого программного обеспечения. Финальное построение, происходящее в конце итерации или неко-

торого другого промежуточного этапа, может включать более обширные проверки, в том числе проверку производительности, загруженности и все приёмочные испытания. Кроме того, здесь создаётся установочная среда, запускаемая в системе пользователя.

Несомненно, отдельные методы непрерывной интеграции применялись и раньше, однако широкое распространение технологий непрерывной интеграции приходится на середину 2000-х годов. Одной из основных причин этого является появление свободно распространяемых программ для организации и поддержки систем непрерывной интеграции. На данный момент наиболее распространены следующие программные продукты для организации непрерывной интеграции: CruiseControl, CruiseControl.Net, Atlassian Bamboo, Hudson, Microsoft Team Foundation Server, TeamCity и другие. На сегодняшний день методы и технологии непрерывной интеграции используются практически во всех современных крупных зарубежных ИТ-компаниях.

Список литературы:

1. Дюваль, Поль М., Матиас III, Стивен М., Гловер, Эндрю. Непрерывная интеграция: улучшение качества программного обеспечения и снижение риска. - М.: И.Д. Вильямс, 2008. - 240 c.

2. Brett G. Durret, Vice President Engineering & Operations, IMVU, Inc. Scaling with Continuos Deployment. Social Development Summit. - San Francisco, CA, USA, June 29, 2010.

ЭКОНОМЕТРИЧЕСКОЕ МОДЕЛИРОВАНИЕ ВЛИЯНИЯ УРОВНЯ БЕЗРАБОТИЦЫ НА КРИМИНОГЕННОСТЬ ОБСТАНОВКИ В РОССИИ

© Атамуратов Т.К.*

Оренбургский государственный университет, г. Оренбург

В статье рассматривается возможность построения регрессионного уравнения влияния численности безработных на уровень преступлений в разрезе субъектов РФ, при этом в модели учитывается принадлежность субъекта к какому-либо типу (крупный или мелкий объект), что достигается посредством введения в модель фиктивной переменной (манекена).

Ключевые слова безработица, преступность, криминогенность, взаимосвязь, корреляция, регрессия, кластерный анализ, фиктивные переменные, типологическая регрессия.

* Студент кафедры Статистики и эконометрики.

i Надоели баннеры? Вы всегда можете отключить рекламу.