метод организации репозитория исходного кода - Presentation Transcript
Метод организации репозитория исходного кода Шмаркатюк Сергей (EPAM Systems)
Актуальность организации налаженных процессов разработки Особенности, которые присущи современному стилю разработки веб-приложений: Подверженность частым изменениям требований Проекты более склонны к увеличению в размерах чем к уменьшению Большое число используемых при разработке инструментов и технологий Некоторая степень хаотичности, с которой всегда приходится бороться Как используемые инструменты влияют на процесс разработки?
Каждый инструмент используется для решения ряда специфических задач
Решение задачи предполагает предшествующее использованию инструмента удовлетворение набора требований, без которых инструмент не будет эффективен или не будет работать
Часто набор требований, выдвигаемый множеством используемых инструментов удовлетворен не полностью, в связи с чем эффективность их использования уменьшается
Управление конфигурациями Управление конфигурациями определяет:
Способ управления рабочими материаламипроекта
Как производится контроль над проектом
Как осуществляется внесение изменений
Как определить состояние отдельных задач
Как определить состояние всего проекта в целом
В частности, управление конфигурациями занимается:
Управлением выпуском (release management)
Наладкой поставок (delivery)
Организацией налаженных процессов разработки
Согласованием способа взаимодействия разных частей программного проекта
3
Классификация инструментов управления конфигурациями В область интересов управления конфигурациями попадают следующие процессы: Контроль версий (version control) Юнит-тестирование Анализ покрытия кода Непрерывная интеграция (continuous integration) Статический анализ кода Генерация документации Управление сборками (build management)
Контроль версий(version control)
Контроль версий – основной процесс управления конфигурациями
Отсутствие необходимости использовать контроль версий при разработке практически равна нулю
Большинство разработчиков знакомы с CVS,Subversionили VSS; популярность приобретают распределенные системы контроля версий: git, mercurial, bazaar
Обычно разработчики не задумываются о продуманной организации репозитория. Subversion предлагает простейшее решение, которое используется чаще всего: деление на trunk, branches и tags.
Одна из самых больших головных болей разработчиков – слияние. Без слияний жизнь проще.
При командной разработке полностью избежать слияний сложно.
Можно минимизировать их количество регламентируя ситуации, при которых можно проводить слияния, а при которых – нет.
5
Управление сборками (build management) Управление сборками – автоматизация действий по:
Наличием специфических для процесса сборки команд:
Групповые операции над файлами
Компиляция
Развертывание
Взаимодействие с системами контроля версий
Простотой интеграции с инструментами, использующимися при разработке
Юнит-тестирование(unit-testing)
Большинство инструментовюнит-тестирования очень похожи между собой и заимствуют идеи, заложенные при создании JUnit
Использование юнит-тестирования в программных проектах, написанных на интерпретируемых языках программирования (PHP, в частности) определяет кроме необходимости управления сборками также и нужду в более основательном подходе к управлению конфигурациями.
Юнит-тестирование появляется там, где предполагается проведениерефакторинга
При принятии решения о применении юнит-тестов обычно принимается во внимание архитектурная и логическая целостность проекта, которую нужно поддерживать на достаточном уровне.
Хоть это и неочевидно, но принятие решения о использовании юнит-тестирования автоматически подразумевает введение ряда дополнительных процессов связанных с организацией разработки.
7
Статический анализ исходного кода(static code analysis)
Кроме поддержки архитектурной и логической целостности в больших проектах существует необходимость выявления синтаксических ошибок на ранних стадиях разработки
Статический анализ кода более актуален для интерпретируемых языков
Кроме выявления синтаксических и логических ошибок в коде часто необходимо в автоматическом режиме проводить верификацию на соответствие code conventions
Иногда статический анализ может производиться для сбора метрик исходного кода и составления соответствующей отчетности
PHP-библиотеки, используемые для статического анализа исходного кода:
PHP_Depend
PHP_Codesniffer
PHP-sat
Генерация документации(documentation generation)
Генерация документации на основе исходного кода и комментариев в стиле phpDocактуальна чаще всего для проектов с активным использованием исходного кода: библиотек, повторно используемых компонентов, фреймворков и др.
Инструменты для генерации документации на основе комментариев к исходному коду:
phpDocumentor
Doxygen
Полезной особенностью представляется возможность интеграции сгенерированной документации с системой tracпосредством соответствующих плагинов: DoxygenPluginи PhpdocPlugin
9
Непрерывная интеграция(continuous integration)
Непрерывная интеграция – это практика разработки, состоящая в выполнении частых автоматизированных сборок для раннего выявления и решения ошибок интеграции.
Требования к проекту для организации непрерывной интеграции:
Исходный код и всё необходимое для сборки сохраняется либо в репозитории исходного кода, либо в легкодоступном месте;
Операции копирования из репозитория, сборки и тестирования всего проекта автоматизированы и легко вызываются из внешней программы
При наличии этапа развертывания включенного в процесс сборки непрерывная интеграция может быть приспособлена к обеспечению команды тестировщиков работающей и готовой к тестированию копии приложения
Обычно для организации процесса интеграции выделяется отдельный сервер
Интеграция баз данных(database integration)
База данных обычно требует процесса сборки аналогично с, например, компиляцией исходного кода.
SQL-приложение имеет свою специфику. Часто его можно рассматривать как приложение в приложении и выделять в отдельный проект, подлежащий версионированию.
Выделяют два типа идентификационных элементов, использующихся при версионировании баз данных: DML (Database Manipulation Language) и DDL (Database Definition Language)
Интеграция баз данных предусматривает наличие общих шагов:
Шаблоны управления конфигурациями http://www.scmpatterns.com/ 13
Конфигурационные элементы Исходный код Библиотеки (бинарные файлы) Конфигурационные файлы Документация Файлы ресурсов (изображения, иконки) Структура БД Данные и словари данных Тесты (юнит-тесты) Исполняемые файлы и инсталляционные пакеты
Элементы идентификации 15 Сборки Типы сборок Релизы Типы релизов Платформы Компоненты (third-party) Экспериментальные разработки
Типы сборок и релизов Сборки
PA – пре-альфа(тестирование производится разработчиками, smoke testing)
A – альфа (тестирование производится тестировщиками)
B – бета (тестирование производится тестировщиками и пользователями)
Детализация процесса интеграции Условные обозначения Директория сборки в репозитории исходного кода Проверкаслужбойнепрерывнойинтеграцииизменений в директориисборокрепозиторияисходногокода и инициированиепроцессасборки Процесс выполнения сборки CI служба Детализацияпроцессаинтеграции Процесс сборки Загрузка исходногокодаизрепозитория Репозиторий Файловаясистема Файловаясистема Определениепараметровсборки Развертывание результатов сборки Выполнениеинтеграциибазыданных Production-сервер 27
Процесс непрерывной интеграции веток 28
Архитектура программных средств 29
Заключение Метод организациирепозитория исходного кода позволяет достичь:
Прозрачности процессов управления конфигурациями
Улучшенного контроля и учета изменений при разработке программного обеспечения
Упрощенного развертывания программных артефактов на рабочие платформы
Использования усовершенствованных процессов тестирования и, как результат, ПО более высокого качества
Уменьшения времени, необходимого для выпуска рабочей версии ПО
Простоты при построении платформы управления конфигурациями для разработки программного обеспечения
0 comments
Post a comment