Инженерные практики Agile

автор Николай Макаров

14 Авг 2013

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

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

Немаловажным фактором при внедрении практик является понимание преимуществ и возможностей того или иного инструмента, а также сложностей и специфики внедрения.

Нашей командой успешно были внедрены следующие инженерные практики agile:

Code Review

Ревизия кода, систематическая проверка исходного кода программы, позволяющая обнаружить и исправить ошибки, оставшиеся незамеченными. Эта практика позволяет разрабатывать более стабильные и качественные программные продукты. Данная практика была внедрена нами на основе инструмента Review Bord. Этот инструмент позволяет проводить ревизию кода после каждого изменения в версии продукта и предоставляет все необходимые возможности для этого.

Code Review особо хорош в применении, когда в команде работают новички. Более опытные программисты назначаются ревьюверами за остальными участниками команды. Раз в неделю или чаще ревьюверы смотрят код и вносят свои замечания и предложения по его улучшению. Таким образом, исходный код программы становится более структурированным и стабильным, что делает конечный продукт более стабильным и легким в сопровождении.

Code review

Until Testing

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

Until testing

Code Refactoring

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

Code refactoring

Build Automation

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

Build automation

Continuous Integration

Данная практика направлена на выполнение частых автоматизированных сборок проекта с целью выявления и решения интеграционных проблем. Ее внедрение производилось на основе Hudson Continuous Integration Server, представляющий собой сервис сервера непрерывной интеграции со всеми необходимыми возможностями.

Continuous integration

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

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

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

  • 0 Репосты

Комментарии

Фильтр

Закрыть

Технологии

Индустрии