Опубликован: 24.02.2017 | Доступ: свободный | Студентов: 1109 / 167 | Длительность: 10:06:00
Лекция 4:

Философия рабочего процесса

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

4.7. Инженерные практики

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

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

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

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

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

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

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

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

Как следствие получаем экономию на дальнейшем сопровождении и поддержке.

Build Automation. Это техника автоматической сборки исходного кода, выполнения тестов и развертывания программы на целевом ландшафте. Автоматизация позволяет повысить качество процесса разработки и поставки продукта. Результаты Build Automation не так очевидны бизнес-заказчикам системы, но за счет внедрения этой техники с технической команды снимается часть работы, после чего они могут направить освободившиеся ресурсы на более значимые для бизнес-пользователей активности.

Continuous Integration. Практика непрерывной интеграции направлена на выполнение частых автоматизированных сборок программного продукта. Цель - выявление и решения интеграционных проблем. Переход к непрерывной интеграции позволяет снизить трудоемкость интеграции и сделать ее более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

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

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

4.8. Краткие выводы

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

Основным представителем семейства гибких процессов по распространенности и эффективности является Scrum. Именно на его рассмотрении будет сосредоточен фокус данного курса. Главной отраслью, в которой Scrum нашел свое применение на сегодня, является сфера информационных технологий. Именно поэтому в Scrum появились специализированные артефакты, которые призваны адаптировать его под реалии данного направления деятельности.

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

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

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

О команде и ролях мы поговорим в "Роли Scrum" .

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >
Александр Борисенко
Александр Борисенко

Мне кажется, или курс сыроват. При прочтении обнаруживается ощущения размытости, неточностей и прочего в том же роде. Например - "ЦФО - центр финансовых затрат" в пункте 2.4. Это как понимать? "О" - это расшифровывается как "затрат"? Как-то довольно много воды. Кстати, почему нет ссылок на глоссарий? Только сейчас обратил внимание, что он есть. Поначалу очень удивился почему столько английских терминов без расшифровки

Дмитрий Марушко
Дмитрий Марушко
Беларусь, Минск
Александр Юрченко
Александр Юрченко
Россия, г. Москва