ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 354
Скачиваний: 11
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Глава 1. Введение в Agile
66
гоняют под действительность . Некоторые функции оставляют на потом .
Порядок реализации функционала
Непременно будет так, что заказчики прицепятся к какой-то функ- ции, которую мы уже реализовали, и скажут нам: «Позорище! За- чем вы это сделали? Нам это не надо» .
Мы не хотим снова это выслушивать! Так что теперь в нача- ле каждой итерации придется спрашивать заинтересованные стороны, какие функции реализовать следующими . Да, разные функции зависят друг от друга, но мы же программисты и долж- ны справляться с этим . Так или иначе, мы будем реализовывать функции в том порядке, в котором попросят заинтересованные стороны .
Завершение обзора
Вот мы и рассмотрели Agile . Но пока что только издалека . В обзоре опущены многие подробности, но в нем вся суть гибкой методологии .
Agile — это процесс, в котором проект разделяют на отрезки, называ- емые итерациями . Объем работ, проделанный во время каждой ите- рации, измеряют и исходя из этого выверяют график . Функционал реализуется в том порядке, в котором это удобнее заинтересованным сторонам . Функции, необходимые в первую очередь, реализуют в первую очередь .
Планку качества нужно держать как можно выше . График в основ- ном зависит от объема выполняемых работ .
Это и есть Agile .
Жизненный цикл
67
ЖИЗНЕННЫЙ ЦИКЛ
Схема Рона Джеффриса, изображенная на рис . 1 .8, объясняет принципы экстремального программирования . Эта схема также известна как «жизненный цикл» .
Команда
Разработка через тестирование
Непрерывная интеграция
Коллективное владение
Рефакторинг
Парное программирование
Игры в планирование
Простой дизайн
Постоянный темп
Частые небольшие релизы
Метафора
Приемочное тестирование
Рис. 1.8. Жизненный цикл
Я посчитал, что для этой книги лучше всего подойдут методы экс- тремального программирования, потому что из всех методологий, составляющих Agile, экстремальное программирование является наиболее определенным, исчерпывающим и наименее замутненным .
Почти все прочие методологии, входящие в Agile, — это составля- ющие или разновидности экстремального программирования . Это не означает, что остальными методологиями, образующими Agile, нужно пренебрегать . Они могут быть очень ценны для различных проектов . Но чтобы понять, что такое Agile и с чем его едят, нет способа лучше, чем изучить экстремальное программирование .
Глава 1. Введение в Agile
68
Оно прообраз, лежащий в основе Agile, который одновременно является его лучшей составляющей .
Кент Бек — отец экстремального программирования, а Уорд Кан- нингем — его дедушка . Эти два человека, работая совместно в ком- пании Tektronix в середине 1980-х, исследовали множество идей, которые в конечном итоге породили экстремальное программиро- вание . Впоследствии Бек придал этим идеям точную форму . Таким образом, около 1996 года появилось экстремальное программи- рование . В 2000 году Кент Бек обнародовал свою окончательную работу: Extreme Programming Explained: Embrace Change
1
Жизненный цикл подразделяется на три кольца . Внешнее кольцо отражает методы экстремального программирования при взаимо- действии с клиентами . Это кольцо, по сути, эквивалентно тому, что предлагает методология Scrum
2
. Эти методы обеспечивают струк- туру взаимодействия между командой разработчиков и клиентами, а также принципы, по которым заказчики и разработчики ведут управление проектом .
z
Прием
«игра в планирование» занимает центральное поло- жение . Благодаря ему мы можем понять, как разбить проект по функциям, историям и задачам . Он содержит указания по оценке, постановке приоритетов, а также планированию соот- ветствующих функций, историй и задач .
1
Beck K . Extreme Programming Explained: Embrace Change . Boston, Massa- chusetts: Addison-Wesley, 2000 . Также существует второе издание 2005 года, но мое любимое издание — первое, я считаю именно эту версию окончатель- ной работой . Возможно, Кент не согласится со мной . (На русском языке:
Бек К . Экстремальное программирование . — СПб .: Питер, 2002 . — 224 с .: ил . — Примеч. ред.)
2
Или, по крайней мере, так изначально задумывалось . Сейчас Scrum вобрал в себя множество методов экстремального программирования .
Жизненный цикл
69
z
Небольшие и частые релизы не позволяют команде «откусить» больше, чем возможно .
z
Приемочное тестирование позволяет определять, какие функ- ции реализованы, а также какие истории и задачи выполнены .
Оно показывает команде, как определить однозначные показа- тели завершения .
z
«Одна команда» позволяет понять, что в процессе разработ- ки программного обеспечения принимают участие различные специалисты, в том числе программисты, тестировщики и ру- ководители, а также то, что клиенты и сами принимают непо- средственное участие, находясь на связи и будучи открытыми для вопросов . Все должны работать совместно для достижения общей цели .
Среднее кольцо жизненного цикла отражает методы экстремаль- ного программирования при взаимодействии внутри команды . Эти методы обеспечивают рамочную основу для взаимодействия между членами команды разработчиков, а также для самоуправления .
z
Постоянный темп — это метод, который предохраняет команду разработчиков от перерасхода своих сил и банального выгора- ния до достижения финишной черты .
z
Коллективное владение не позволяет членам команды тянуть одеяло на себя, благодаря чему каждый вносит посильный вклад в проект и несет ответственность за всю работу .
z
Непрерывная интеграция позволяет команде сосредоточиться на частом слиянии рабочих копий в основную ветвь разработ- ки и частом создании сборок, чтобы своевременно выявить ошибки и точнее отследить продвижение проекта .
z
Метафора — это метод, который позволяет создавать и ут- верждать общую терминологию, благодаря которой команда
Глава 1. Введение в Agile
70
разработчиков и клиенты находят понимание при обсуждении вопросов, связанных с проектом .
Внутреннее кольцо жизненного цикла представляет собой тех- нические методы, которые позволяют направлять и в чем-либо ограничивать программистов для достижения наиболее высокого уровня качества .
z
Парное программирование — это метод, который помогает членам команды делиться сведениями и сотрудничать в парах, в том числе проводить совместный анализ, чем достигается высокий уровень обеспечения точности и внедрения нов- шеств .
z
Простота проектирования — это метод, который позволяет команде не расходовать силы впустую .
z
Рефакторинг кода способствует непрерывному совершенство- ванию и доработке всего, что получается в ходе работы .
z
Разработка через тестирование — это страховочный канат, благодаря которому команда технических специалистов может быстро выполнять работу, не снижая планку качества .
Все методы очень тесно связаны с целями, которые провозглашает
Манифест Agile, по меньшей мере в том, что перечислено ниже:
z
Люди и взаимодействие важнее процессов и инструментов .
z
«Одна команда», метафора, коллективное владение, парное про- граммирование, 40-часовая рабочая неделя .
z
Работающий продукт важнее исчерпывающей документации .
z
Приемочное тестирование, разработка через тестирование, простота проектирования, рефакторинг кода, непрерывная интеграция .
Заключение
71
z
Сотрудничество с заказчиком важнее согласования условий
контракта .
z
Небольшие и частые релизы, игра в планирование, приемочное тестирование, метафора .
z
Готовность к изменениям важнее следования первоначально-
му плану .
z
Небольшие и частые релизы, игра в планирование, 40-часовая рабочая неделя, разработка через тестирование, рефакторинг кода, приемочное тестирование .
Однако по мере знакомства с этой книгой можно будет заметить, что связи между жизненным циклом и Манифестом Agile гораздо глубже и теснее, чем упрощенная модель, которая приведена выше .
ЗАКЛЮЧЕНИЕ
Таков Agile и история его появления . Agile — небольшая дисци- плина, помогающая решению небольших задач, поставленных не- большими командами программистов для управления небольшими продуктами . Но несмотря на то что Agile невелик сам по себе, его значение и влияние достаточно велико, поскольку все большие проекты так или иначе состоят из множества маленьких .
С каждым днем программное обеспечение все больше переплета- ется с нашей повседневностью . Число людей, не мыслящих свою жизнь без него, постоянно растет . Не побоюсь сказать, что без про- граммного обеспечения Земля перестанет вертеться . Если Земля остановится без программного обеспечения, то Agile — именно то, что позволяет наилучшим образом вести его разработку .
2
ПОЧЕМУ ЖЕ AGILE?
Профессионализм
73
Прежде чем углубиться в тонкости разработки с помощью Agile, хотелось объяснить, что стоит на кону . Agile важен не только для отрасли разработки программного обеспечения, но и для промыш- ленности, общества и, наконец, всей цивилизации .
Разработчики и руководители зачастую прибегают к Agile в силу каких-то временных обстоятельств . Они могут использовать его потому, что считают правильным подходом, или, возможно, про- сто потому, что купились на обещания уложиться в минимальные сроки при достижении самого высокого качества . Причины не- осязаемы, неясны и могут противоречить друг другу . Многие от- казались от Agile просто потому, что не смогли незамедлительно обрести ожидаемого, поскольку восприняли обещанное буквально .
Agile важен не по причинам, вызванным изменчивыми обстоя- тельствами . Agile важен в силу куда более глубоких философских и этических причин . Эти причины связаны с профессиональной деятельностью и обоснованными ожиданиями наших клиентов .
ПРОФЕССИОНАЛИЗМ
Agile привлекает меня тем, что ставит на первое место дисциплину, а не церемониальность . Чтобы правильно применять Agile, нужно работать в парах, в первую очередь писать тесты, проводить рефак- торинг кода и соблюдать правила простоты проектирования . При- дется работать короткими циклами, получая в результате каждого из них рабочий результат . А еще придется постоянно и непрерывно взаимодействовать с клиентами .
Взгляните на жизненный цикл и рассмотрите каждый из при- веденных методов как обещание или обязательство — вам станет
Глава 2. Почему же Agile?
74
понятно, откуда ноги растут . Для меня Agile — это очередной виток мастерства и приверженность идее продвигать профессиональный подход к работе по всей индустрии разработки ПО .
В этой отрасли крайне важно повышать профессионализм . Мы слишком часто терпим крах . Слишком много занимаемся ерундой .
Миримся с чрезмерным количеством ошибок . Заключаем ужасные сделки . Слишком часто мы ведем себя как сопляки, которым дали кредитку . Раньше все было проще, можно было позволить себе тор- мозить, так как на кону стояло меньше, чем сейчас . В 1970-х и 80-х, и даже в 1990-х цена ошибки в программе была не так высока . По крайней мере, убытки были ограниченны и контролируемы .
Куда ни глянь, везде оно!
Времена меняются .
Прямо сейчас оглянитесь вокруг . Даже не надо вставать со своего места, просто оглянитесь на то, что в комнате вокруг вас . Сколько компьютеров в комнате?
Давайте теперь я . Сейчас я в своем летнем домике, который на- ходится в лесу на севере штата Висконсин . Давайте посчитаем, сколько компьютеров и процессоров в них у меня здесь?
z
4 . Я набираю этот текст на ноутбуке Mac Book Pro с четырьмя ядрами . Производитель заявляет, что их восемь, но не стану считать виртуальные ядра . Также не стану брать в счет все малые вспомогательные процессоры, которые используются в MacBook .
z
+1 . Мышь Apple Magic Mouse 2 . Уверен, что там больше одного процессора, но буду все считать за один .
Профессионализм
75
z
+1 . Планшет iPad с монитором Duet в качестве дополнительно- го . Мне прекрасно известно, что в iPad много малых процессо- ров, но все равно посчитаю как один .
z
+1 . Ключ от машины (!) .
z
+3 . Наушники Apple AirPods . По одному для каждого наушника и еще один в зарядном кейсе . Вероятно, процессоров больше, ну и ладно . . .
z
+1 . Мой iPhone . Да-да, на самом деле в iPhone, вероятно, около дюжины процессоров, но все равно, пускай будет один .
z
+1 . Взгляд упал на ультразвуковой датчик движения (в доме их куда больше, но я вижу и посчитаю один) .
z
+1 . Термостат .
z
+1 . Панель управления системой безопасности .
z
+1 . Телевизор с плоским экраном .
z
+1 . DVD-проигрыватель .
z
+1 . Устройство для воспроизведения IP-телевидения Roku .
z
+1 . Apple AirPort Express .
z
+1 . Apple TV .
z
+5 . Пульты дистанционного управления .
z
+1 . Телефон (да, именно телефон) .
z
+1 . Имитация камина (вы бы видели, какую красотищу он мо- жет выдавать!) .
z
+2 . Старенький телескоп Meade LX 200 EMC с компьютером .
Один процессор в приводе, а другой — в переносном блоке управления .
z
+1 . Флэшка у меня в кармане .
z
+1 . Стилус Apple pencil .
Глава 2. Почему же Agile?
76
На свою душу я насчитал, по крайней мере, 30 компьютеров, и это только в этой комнате . Действительное количество можно уве- личить примерно вдвое, поскольку в большинстве устройств по несколько процессоров . Но пока что давайте остановимся на трид- цати .
А сколько насчитали вы? Уверен, что у большинства из вас получи- лось примерно столько же, сколько у меня . Действительно, бьюсь об заклад, что почти у каждого из 1,3 млрд человек, проживающих в западном мире, постоянно имеется рядом не один десяток ком- пьютеров . Это что-то новое . В начале 1990-х это число в среднем было бы близко к нулю .
Что общего у всех компьютеров, которые мы видим рядом с собой?
Их все надо программировать . Для них нужно программное обе- спечение, которое как раз мы и пишем . И как вы думаете, каково качество этих программ?
Хорошо . Давайте рассмотрим вопрос с другого бока . Сколько раз на дню ваша бабушка пользуется программным обеспечением?
У тех из вас, у кого она еще жива, дай бог ей здоровья, счет может идти на тысячи, потому что в современном обществе почти ничего нельзя сделать, не прикасаясь к программному обеспечению . У вас не получится:
z
Говорить по телефону .
z
Купить или продать что-либо .
z
Пользоваться микроволновкой, холодильником или даже то- стером .
z
Постирать или высушить одежду .
z
Помыть посуду .
z
Слушать музыку .