Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Анализ и оценка методов разработки программного обеспечения (Agile)

Покупка
Артикул: 825184.01.99
Доступ онлайн
1 000 ₽
В корзину
Курс посвящен быстрым методам разработки программных систем - методам agile. Курс создан по книге Бертрана Мейера "Agile! Прекрасный, ужасный, шумный”. Дается обзор: XP, Scrum, Lean, Crystal. Анализируются принципы agile, применяемые практики и инструменты, отмечаются блестящие находки, и недостатки. Курс представляет взвешенную оценку современных приемов разработки программного обеспечения.
Мейер, Б. Анализ и оценка методов разработки программного обеспечения (Agile) : краткий учебный курс / Б. Мейер. - Москва : ИНТУИТ, 2016. - 190 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2137462 (дата обращения: 29.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

                                    
Анализ и оценка методов разработки программного
обеспечения (Agile)

2-е издание, исправленное

Мейер Б.

Национальный Открытый Университет “ИНТУИТ”
2016

2

Анализ и оценка методов разработки программного обеспечения (Agile)/ Б. Мейер - М.:
Национальный Открытый Университет “ИНТУИТ”, 2016

Курс посвящен быстрым методам разработки программных систем – методам agile.
Курс создан по книге Бертрана Мейера “Agile! Прекрасный, ужасный, шумный”. Дается обзор: XP,
Scrum, Lean, Crystal. Анализируются принципы agile, применяемые практики и инструменты,
отмечаются блестящие находки, и недостатки. Курс представляет взвешенную оценку современных
приемов разработки программного обеспечения.

(c) ООО “ИНТУИТ.РУ”, 2015-2016
(c) Мейер Б., 2015-2016

3

Введение. Обзор

ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЮ

С большим удовольствием представляю российским читателям свою книгу “Agile! The
Good, the Hype and the Ugly”. Перевел ее профессор Владимир Биллиг, ранее
сделавший прекрасный перевод моих книг “Object-Oriented Software Construction” и
“Touch of Class”1), за что я ему очень благодарен. Надеюсь, что и это издание в
переводе Владимира Биллига будет интересно и полезно читателям.

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

Реакция на английское издание книги “Agile! The Good, The Hype and The Ugly” была
потрясающей. Конечно, некоторые энтузиасты agile решили, что я покусился на их
“священную корову”, но большинство комментариев были одобрительными. Так, один
из обозревателей (Т. Андерсон, я с ним незнаком) написал на Амазоне:

Наконец-то появилась книга от одного из лидеров индустрии, у которого хватило
мужества описать реальный мир agile разработки программ. Если бы мне нужно было
охарактеризовать одним словом эту книгу, то я выбрал бы слово “истина”. Уверен, что
у некоторых поклонников agile будет повышаться давление при ее чтении. Если вы
являетесь одним из них, то рекомендую успокоиться и все время помнить, что автор
также указал на все хорошее, что есть в agile. Он не представляет в ней однобокий
подход. Когда читаешь подобную книгу с ясно выраженным авторским мнением, то
осознаешь, что некоторые вещи, на которые указывает автор, были превратно поняты
из-за собственных ошибок, нашего непонимания и что из-за слепоты мы могли
пропустить драгоценности, которые действительно могли принести нам пользу. За
многие годы мне самому приходилось не один раз так ошибаться.

Вот мнение другого читателя (Comai Adriano, я с ним также незнаком):

Бертран Мейер дал на данный момент лучшую и всеобъемлющую оценку agile методов
разработки программных систем. Его книга “Agile!” является редким примером
качественной критики в программной инженерии. В традиции лучших образцов
литературной и музыкальной критики его критика анализирует произведения (в
данном случае наиболее известные agile методы – Scrum, XP, Crystal и Lean), указывая
их сильные и слабые стороны, в живой и остроумной манере.

4

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

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

В России с ее известными софтверными компаниями и разработками мирового уровня
agile привлекает особое внимание. Последние годы я работаю не только в Европе и
США, но и в России: в 2011–2014 годы – в ИТМО в Санкт-Петербурге, а теперь в
университете Иннополис в Казани, где мы создаем амбициозный проект по
программной инженерии. О нашей работе и о доступных вакансиях можно узнать на
сайте ссылка: http://university.innopolis.ru/en/research/selab/research http://university.innopolis.ru/en/research/selab/research.

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

Бертран Мейер Казань, 2015 г.

ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА

Профессор Бертран Мейер написал книгу по agile, в самом названии которой
заключена интрига: Agile – Прекрасный и Agile – Ужасный. Что же прекрасного
увидел Бертран Мейер в agile и что ужасного нашел он в нем? Чтобы понять суть agile,
стоит прочесть эту книгу.

Общепринятый перевод термина “agile” – “гибкие методы разработки” программных
систем. Неявно в книгах по agile предполагается, что речь идет не просто о “гибких”
методах, а о “революционных” изменениях в подходах к разработке программных
систем. Недаром одним из важнейших agile документов является манифест Agile,
который, как и положено революционному манифесту, содержит яркие,
привлекательные и зажигательные лозунги, например: “Люди и взаимодействие важнее
процессов и инструментов!”

Привлекательны, особенно для молодежи, сами названия методов agile:
“Экстремальное программирование” (Extreme Programming), “Схватка” (Scrum),
“Экономное программирование” (Lean), “Парное программирование” (Pair
Programming). Однако в этой внешней привлекательности есть и обратная сторона.

5

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

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

Как преподаватель вуза, я рекомендовал бы прочесть эту книгу всем будущим ИТспециалистам. Она поможет им понять простую истину: для успеха в работе
недостаточно обладать специальными знаниями – нужно уметь взаимодействовать с
коллегами, быть членами одной команды (взаимодействие важнее собственных
знаний!).

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

Книг по agile много. Почему следует прочесть именно эту? Во многом это обусловлено
личностью ее автора: в Бертране Мейере сочетаются, казалось бы, трудносочетаемые
ипостаси ученого, преподавателя, практика. Бертран Мейер – ученый с мировым
именем, автор “Проектирования по контракту”, теоретик объектно-ориентированного
программирования, создатель языка Eiffel, в котором эти концепции нашли достойное
воплощение. Его многостраничный труд “Объектно-ориентированное конструирование
программных систем” (оригинальное издание появилось в 1988 году) во многом
способствовал утверждению объектно-ориентированного программирования как
основного метода разработки программных систем.

Относительно недавно вышедшая книга “Почувствуй класс. Учимся программировать
хорошо с объектами и контрактами” обобщает его преподавательский опыт на самой
известной в мире кафедре программной инженерии в университете ETH в Цюрихе,
которой он руководит. Этой кафедрой долгие годы заведовал Никлас Вирт – создатель
серии замечательных языков программирования Euler и Pascal, Modula и Oberon. Хотя
на практике преобладают такие языки, как С++, Java, C#, важность и роль
“академических” языков, например Pascal и Eiffel, трудно переоценить, поскольку они
во многом определяют направление развития.

Немаловажную роль в жизни профессора Мейера играет практическая деятельность.
Он является создателем успешно работающей фирмы “Eiffel Software”, научное
руководство фирмой – часть его повседневной работы. С методами agile Бертран
Мейер знаком не только по книгам. Подходы agile с успехом используются в работе
его фирмы, а сам он является сертифицированным Scrum-мастером.

6

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

Ну, а скептики поймут, что игнорирование ключевых идей agile при разработке
программных продуктов снижает шансы на создание успешного продукта в заданные
сроки.

Несмотря на критику agile, а, возможно, и благодаря ей, книга профессора Мейера
является лучшей книгой, пропагандирующей agile.

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

Владимир Биллиг Тверь, 2015

Введение

Перед вами книга для практиков. Она не для философов, не для теоретиков.

Ее цель – дать возможность разработчикам ПО, ИТ-менеджерам, преподавателям
оценить преимущества хороших идей agile (гибких методов разработки ПО) и избежать
недостатков, присущих этим методам. Методы agile, возможно, являются одними из
наиболее важных современных разработок в программной инженерии, но
представляют удивительную смесь лучших и худших подходов. Такая ситуация
экстраординарна: обычно, когда бурно развивается новое множество концепций,
каждый может довольно быстро оценить его общий вклад как благотворный,
нейтральный или пагубный. С текстами agile ситуация не такая. Здесь неприменимо
простое суждение. В одном параграфе можно найти блестящее проникновение в суть
проблем, в другом – безвредную банальность, а в следующем – причудливые советы,
способные навредить процессу разработки и конечному продукту.

Нет ничего удивительного в том, что многие практики пренебрегают требованиями
использовать во всей полноте те или иные agile методы – такие как Scrum, eXtreme
Programming (XP), LSD (Lean Software Development), Crystal. Индустрии виднее, и
каждая agile команда создает свой собственный коктейль из agile практик, отклоняя те,

7

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

Описание и оценка

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

Описательный компонент книги важен, поскольку, несмотря на обилие литературы по
agile методам, до сих пор, насколько я знаю, невозможно найти полное и точное
представление основ agile – идей, не привязанных к конкретному методу, не
сводящихся к призывам, напоминающим культовые обряды. Моральные наставления
играют полезную роль, но для большинства людей интереснее вникнуть в смысл таких
терминов, как “velocity”(скорость разработки), “continuous integration” (непрерывная
интеграция), “user story” (пользовательская история), “self-organizing team”
(самоорганизующаяся команда), “sprint review” (обзор спринта), “planning game” (игра
в планирование). Выяснить смысл этих и других терминов – это то, что я попытаюсь
сделать на последующих страницах.

Вторая, не менее важная цель книги – это оценка. С непредвзятым взглядом на agile
методы попытаемся выделить то, что действительно помогает, что не заслуживает
внимания, что, наконец, вредно: оценим прекрасное, ужасное, шумно рекламируемое.
Наша оценка беспристрастна (как говорят англичане, моя лошадь в этой гонке не
участвует).

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

 – такой значок появится там, где начинается обсуждение. Значок в начале абзаца

обычно применим к оставшейся части текущего абзаца, значок в начале раздела – ко
всему разделу, заключительная оценка дается в последней главе. Два аспекта
изложения – “Новости” и “От редактора” – разделены. На любом этапе чтения будет
ясно, о чем идет речь: о фактическом изложении agile методов или обсуждении их
достоинств.

8

Сохраняя беспристрастность

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

Большинство из существующих agile текстов пристрастны. Речь идет не о нормальном
феномене автора, пропагандирующего свое изобретение, а об отсутствии каких-либо
ограничений. О пристрастии, граничащем иногда с религиозной лихорадкой и
требующем от читателя отказа от всяких сомнений.

Если вспомнить три предыдущие разработки, оказавшие значительное влияние на то,
как мир строит ПО, – структурное программирование, объектная технология,
проектирование по образцам, то их первые представления с энтузиазмом продвигали
новые идеи, но не игнорировали рациональное правило серьезного обсуждения.
Методы agile требуют от вас “пасть на колени и молиться”. Однако это не тот путь,
который может приблизить нас к решению проблем инженерии, включающих как
технические, так и гуманитарные аспекты.

Литература по agile часто носит характер устрашения, запугивания. Она отклоняет
предыдущие подходы как старомодные, пренебрежительно называя их “водопадом”
(хотя ни в одной компании модель “водопада” не применяется в чистом виде), создавая
впечатление, что всякий, кто поддерживает “старый подход”, является закостенелым,
консервативным типом. Мы сталкивались с авторами, для которых любая критика agile
методов является признаком бюрократии, некомпетентности и посредственности. Само
выбранное для подхода имя – agile, то есть “гибкость” – является примером блестящего
маркетингового решения. Гениальное решение, заставляющее любого скептика дважды
подумать: кто же захочет быть признанным “негибким”? Если в английских словарях
поискать антонимы к слову agile, то можно найти такие слова, как awkward
(неуклюжий), lumbering (тяжело двигающийся) и ungraceful (неизящный)2). Если
альтернативы таковы, то и вы, и я, и любой другой захочет быть гибким (agile)!

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

Оценка усложняется экстремизмом. Проектировщики ряда методов упорно
настаивают, что их методы следует применять в полном объеме. Не все проповедуют
принцип “все или ничего”: подход Crystal, например, не столь жесткий. Но
превалирование этого принципа характерно для многих основополагающих книг по
agile, что усложняет понимание того, какие приемы будут работать в вашем проекте с
пользой, а какие нет.

Предыдущие попытки

Среди многих книг по agile методам я знаю только три, в которых отсутствует тон
преклонения:

9

McBreen: “Questioning Extreme Programming” (Макбрин: “Вопросы к
экстремальному программированию”);
Stephens and Rosenberg: “Extreme Programming Refactored: The Case Against XP”
(Стефенс, Розенберг: “Рефакторинг экстремального программирования: Case
против XP”);
Boehm and Turner: “Balancing Agility with Discipline” (Боем, Тёрнер:
“Балансирование между гибкостью и дисциплиной”.

В первой книге выяснение вопросов производит печальное впечатление, оставляя у
читателя неопределенность относительно любых серьезных проблем XP (eXtremal
Programming) – экстремального программирования.

Вторая книга чувства печали не создает – это памфлет, забавный и назидательный, но,
как и всякий памфлет, он, скорее, выявляет абсурдность утверждений, чем выполняет
серьезный анализ всех аргументов “за” и “против”.

Наиболее серьезная попытка такого анализа предпринята в третьей книге. Здесь
сопоставляются agile подходы и традиционные методы планово-управляемой
разработки, характерные для инженерии ПО. Достоинство этой книги в том, что она
основана на эмпирических данных, позволяющих сравнивать эффективность agile
методов и их классических двойников. По-моему, в книге слишком заметна
осторожность в суждениях, возможно, потому, что Боем – весьма уважаемая фигура в
мире ИТ – боится прослыть защитником “старого порядка”, так что авторы избегают
резких критических суждений.

В данной книге не ожидайте такой робости (упоминаю об этом на тот случай, если вас
это может беспокоить). Уважение – есть, почитания – нет. Все хорошие идеи будут
выявлены и получат заслуженную хвалу. Но всякий раз, когда мы столкнемся с
вздором и чепухой, будет ясно сказано, что это вздор и чепуха.

Структура книги

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

Начальная, обзорная, глава представляет сводку agile идей и первую общую оценку.
Она формирует каркас книги в целом.

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

Третья глава содержит эскизное описание всего того, чем не хотят быть agile методы, и
то, что в agile литературе любят побивать камнями: традиционные методы инженерии
ПО, основанные на планировании, включая упомянутую выше модель “водопада”.

Следующие главы представляют обзор основных agile идей:

10

Доступ онлайн
1 000 ₽
В корзину