- PVSM.RU - https://www.pvsm.ru -
Не так давно, я заинтересовался трудами идеологов программирования, таких как Кент Бэк, Роберт Мартин, Мартин Фаулер, Пол Дюваль.
Их книги произвели на меня впечатление и воодушивили попробовать некоторые описанные практики. Refactoring, TDD, XP, и, наконец, Continuous Integration, это то, что в последнее время интересует меня в процессе разработки программного обеспечения.
Хочу поделиться с хабросообществом тем, что я вынес из книг и с чем приходится сталкиваться в реальности.
Continuous Integration (далее CI) — это практика разработки программного обеспечения, в которой члены команды проводят интеграцию не реже чем раз в день. Результаты интеграции проверяются автоматически, используя автотесты и статический анализ кода.
Использование CI позволяет вовремя отслеживать ошибки интеграции, сделать систему и процесс разработки более «прозрачными» для всех участников команды, также, CI избавляет от рутинных операция по сборке продукта, повышает качество продукта, включает в себя профит от написания тестов, который, я думаю, для всех хаброюзеров очевиден.
Фактически, CI позволяет избавиться от предположений, при процессе разработки ПО. Менеджер предполагает, что продукт готов и стабилен, программист — что в коде нет ошибок и т. д. Избавиться от вопросов, таких как: «стабильна ли последняя сборка, какие фичи готовы, соответствует ли код стандартам компании» и т.д.
Всех, кому интересна тема CI прошу под кат.
Идеологически CI базируется на следующих соглашениях:
Скрипт сборки — это набор комманд, которые будут выполнены при запуске процесса интеграции. Чаще всего он выглядит как следующий набор шагов:
Всем, кто собирается внедрять CI, придется смириться с тем, что автоматические тесты это неотъемлемая часть процесса непрерывной интеграции. И один лишь статический анализ кода в автоматическом режиме не является Continuous Integration, такой подход называют Continuous Compilation.
В CI используются тесты всех уровней за исключением исследовательских. Так как на разных ресурсах список уровней тестирования разный приведу те, которые описывают идеологи CI:
По написанию и запуску тестов также принят ряд соглашений:
За надежность системы отвечает каждый ее компонент, поэтому очень важно уделить повышению надежности системы свое внимание. Я думаю, что никто не хотел бы пользоваться компьютером, который 20% времени не отвечает на ваши запросы. Для того, чтобы продемонстрировать важность надежности представьте себе, что у вас система из 3-х компонентов. Каждый их этих компонентов, надежен на 90%, таким образом общая надежность системы представляет произведение надежностей каждого компонента, итого — 73%. А теперь вспомните, сколько компонентов в последнем написанном вами приложении…
Continuous Inspection — это один из шагов build script, который предполагает проверку соответствия кода в репозитории код стандартам, соответствие уровня code coverage и других метрик заданному порогу.
Одним из самых важных действий в CI является механизм обратной связи, который согласно положениям CI, должен осуществляться с учетом правила: «Правильным людям. В правильное время. Правильным образом.» (ориг. — «The right people. The right time. The right way.»).
Существуют следующие популярные механизмы осуществления обратной связи:
Также, стоит отметить, что многие IDE (NetBeans, PHPStorm), позволяют синхронизироваться с популярными (Jenkins, TeamCity) CI серверами.
Так уж случилось, что учавствую в разработке «кровавого энтерпрайз проекта», пришлось адаптировать идеальный вариант CI под реалии сурового мира. К тому времени, как я начал заниматься CI, в распоряжении компании уже были:
Главные проблемы:
Решения:
Планы:
CI практика, которая в данное время набирает популярность в связи с развитием все большего колличества «взрослых» решений, которые несут серьезную ответственность за качество выпускаемого ими продукта.
Заинтересовавшимся предлагаю прочести книги по CI и смежным или производным от него темам:
Пол Дюваль — Continuous-Integration [1]
Джез Хамбл — Continuous Delivery [2]
Роберт Мартин — Clean Code, Clean Coder [3]
Автор: Samhayn
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/59162
Ссылки в тексте:
[1] Пол Дюваль — Continuous-Integration: http://www.amazon.com/Continuous-Integration-Improving-Addison-Wesley-Signature-ebook/dp/B0026772IS/ref=la_B001IGOHG8_1_1?s=books&ie=UTF8&qid=1397745362&sr=1-1
[2] Джез Хамбл — Continuous Delivery: http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912/ref=sr_1_1?s=books&ie=UTF8&qid=1397747286&sr=1-1&keywords=continuous+delivery
[3] Роберт Мартин — Clean Code, Clean Coder: http://www.amazon.com/Robert-Martin-Clean-Code-Collection-ebook/dp/B00666M59G/ref=sr_1_2?s=books&ie=UTF8&qid=1397747328&sr=1-2&keywords=Clean+code
[4] Источник: http://habrahabr.ru/post/219891/
Нажмите здесь для печати.