Читаем Экстремальное программирование полностью

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

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

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

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

<p>Глава 6.</p><p>Обучение управлению автомобилем</p>

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

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

Я отлично помню тот день, когда впервые начал учиться водить машину. Я и моя мать сели в машину и выехали на автостраду Interstate 5 вблизи Чико (Chico) в штате Калифорния. Это прямой как стрела пустынный участок шоссе, выходящий из-под колес машины и, подобно натянутой струне, устремляющийся вдаль – к линии горизонта. Моя мать позволила мне пересесть в водительское кресло, а сама села на место переднего пассажира. И мы поехали. В начале я с осторожностью изучил, как именно движение рулевого колеса влияет на направление движения автомобиля, затем, освоившись, я позволил себе несколько расслабиться. Управлять машиной надо так, – учила меня моя мама, – направь машину строго по середине дороги и езжай по этой дороге прямо в направлении горизонта.

Мы ехали достаточно долго, и где-то посередине нашего путешествия что-то отвлекло мое внимание. Машина стала смещаться в сторону края дороги. Моя мать несколько обеспокоилась...

Перейти на страницу:

Похожие книги

Иная жизнь
Иная жизнь

Эта книга — откровения известного исследователя, академика, отдавшего себя разгадке самой большой тайны современности — НЛО, известной в простонародье как «летающие тарелки». Пройдя через годы поисков, заблуждений, озарений, пробившись через частокол унижений и карательных мер, переболев наивными представлениями о прилетах гипотетических инопланетян, автор приходит к неожиданному результату: человечество издавна существует, контролируется и эксплуатируется многоликой надгуманоидной формой жизни.В повествовании детективный сюжет (похищение людей, абсурдные встречи с пришельцами и т. п.) перемежается с репортерскими зарисовками, научно-популярными рассуждениями и даже стихами автора.

Владимир Ажажа , Владимир Георгиевич Ажажа

Альтернативные науки и научные теории / Прочая научная литература / Образование и наука
100 великих загадок Африки
100 великих загадок Африки

Африка – это не только вечное наследие Древнего Египта и магическое искусство негритянских народов, не только снега Килиманджаро, слоны и пальмы. Из этой книги, которую составил профессиональный африканист Николай Непомнящий, вы узнаете – в документально точном изложении – захватывающие подробности поисков пиратских кладов и леденящие душу свидетельства тех, кто уцелел среди бесчисленных опасностей, подстерегающих путешественника в Африке. Перед вами предстанет сверкающий экзотическими красками мир африканских чудес: таинственные фрески ныне пустынной Сахары и легендарные бриллианты; целый народ, живущий в воде озера Чад, и племя двупалых людей; негритянские волшебники и маги…

Николай Николаевич Непомнящий

Приключения / Научная литература / Путешествия и география / Прочая научная литература / Образование и наука