Экстремальное программирование. Разработка через тестирование



Download 1,35 Mb.
Pdf ko'rish
bet7/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   2   3   4   5   6   7   8   9   10   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

От издательства
Ваши замечания, пред ложения, вопро сы отправляйте по ад ресу
электронной 
почты 
comp@piter.com
(изд ательство 
«Питер»,
компьютерная ред акция).
Мы буд ем рад ы узнать ваше мнение!
На 
веб-сайте 
изд ательства 
http://www.piter.com
вы 
найд ете
под робную информацию о наших книгах.


Введение 
Од нажд ы рано утром в пятницу к Уорд у Каннингэму зашел бо сс и
пред ставил его Питеру, перспективному заказчику системы WyCash. Эта
система пред назначалась д ля управления портфелем облигаций, ее
разработкой и прод ажей занималась компания Уорд а. «Возможно сти
вашей системы впечатляют, – сказал Питер. – Но вот в чем проблема:
я собираюсь открыть новый фонд облигаций. Как я понял, ваша система
под д ерживает облигации, номинированные только в д олларах США.
Мне же понад обится система, под д ерживающая разные валюты». Бо сс
повернулся к Уорд у и спро сил: «Мы сможем это сд елать?»
Вот он, кошмарный сценарий д ля любого разработчика. Все шло
хорошо, пока события развивались по намеченному плану, и вд руг все
меняется. Над о сказать, это было кошмаром не только д ля Уорд а – бо сс,
съевший собаку на управлении программными проектами, тоже не знал,
что ответить.
Система 
WyCash 
была 
разработана 
небольшой 
команд ой
программистов за пару лет. Она позволяла работать с большинством
ценных бумаг с фиксированным д оход ом, имеющих хожд ение на
американском рынке. Более того, она под д ерживала некоторые ред кие
инструменты 
рынка 
ценных 
бумаг, 
например 
гарантированные
инвестиционные контракты (Guaranteed Investment Contracts), и этим
выгод но отличалась от конкурентов.
В о снову разработки WyCash легли объектно-ориентированные
технологии, также была использована объектная база д анных. Базовой
абстракцией системы был класс Dollar, класс, который отвечал за
вычисления и форматирование результатов. В самом начале работы над
системой его разработку поручили отд ельной группе хороших
программистов.
В течение по след них шести месяцев Уорд и о стальные члены
команд ы по степенно уменьшали количество обязанно стей класса Dollar.
Оказало сь, что числовые классы языка Smalltalk вполне под ошли д ля
реализации вычислений, а д ля округления д о трех д есятичных знаков
был написан специальный код . Результаты вычислений становились все
точнее и точнее, и в конце концов сложные алгоритмы тестирования,
выполнявшие сравнение величин с учетом погрешно сти, были заменены
про стым сравнением реального и ожид аемого результатов.


За форматирование результатов в д ействительно сти отвечали
классы пользовательского интерфейса, а не класс Dollar. Так как
соответствующие тесты были написаны на уровне этих классов, в
частно сти д ля под системы отчетов
[2]
, поэтому пред полагаемые
изменения не д олжны были их ко снуться. В результате, спустя шесть
месяцев, у объекта Dollar о стало сь не так уж много обязанно стей…
Од ин 
из 
наиболее 
сложных 
алгоритмов, 
вычисление
сред невзвешенных величин, также по степенно менялся. Вначале
существовало 
много 
различных 
реализаций 
этого 
алгоритма,
разбро санных по всему код у. Од нако позже, с появлением под системы
отчетов, стало очевид но, что существует только од но место, гд е этот
алгоритм д олжен быть реализован, – класс AveragedColumn. Именно
этим классом и занялся Уорд .
Если бы уд ало сь внед рить в этот алгоритм под д ержку работы с
несколькими 
валютами, 
система 
в 
целом 
смогла 
бы 
стать
«мультивалютной». Центральная часть алгоритма отвечала бы за
хранение количества д енег «в столбце». При этом алгоритм д олжен
быть д о статочно абстрактным д ля вычисления сред невзвешенных
величин любых объектов, которые под д ерживали арифметические
операции. К примеру, с его помощью можно было бы вычислять
сред невзвешенное календ арных д ат.
Выход ные прошли как обычно – за отд ыхом, а в понед ельник утром
бо сс поинтересовался: «Ну как, мы сможем это сд елать?» – «Дайте мне
еще д ень, и я скажу точно», – ответил Уорд .
В вычислении сред невзвешенной величины объект Dollar как бы
являлся переменной. В случае наличия нескольких валют потребовало сь
бы по од ной переменной на кажд ый тип валюты, нечто врод е
многочлена. Только вместо 3x2 и 4y3 – 15 USD и 20 °CHF
[3]
.
Быстрый эксперимент показал, что при вычислениях можно
работать не с объектом Dollar (д оллар), а с более общим объектом –
Currency (валюта). При этом, если выполнялась операция над д вумя
различными валютами, значение след овало возвращать в вид е объекта
PolyCurrency (мультивалютный). Сложно сть заключалась в том, чтобы
д обавить новую функционально сть, не сломав при этом то, что уже
работает. А что, если про сто прогнать тесты?
По сле 
д обавления 
к 
классу 
Currency 
нескольких 
(пока
нереализованных) операций большинство тестов все еще успешно
выполняло сь; к концу д ня проход или все тесты. Уорд интегрировал


новый код в текущую версию и пошел к бо ссу. «Мы сможем это
сд елать», – уверенно сказал он.
Давайте зад умаемся над этой историей. Через пару д ней
потенциальный рынок д ля системы WyCash увеличился в несколько раз,
соответственно под скочила ее ценно сть. Важно, что возможно сть
созд ать значительную бизнес-ценно сть за такое короткое время не была
случайной. Свою роль сыграли след ующие факторы:
• Метод – Уорд у и команд е разработки WyCash потребовался опыт в
пошаговом наращивании проектных возможно стей системы, с хорошо
отработанным механизмом внесения изменений.
• Мотив – Уорд у и его команд е было необход имо четкое
пред ставление о значимо сти под д ержки мультивалютно сти в WyCash, а
также потребовалась смело сть взяться за такую на первый взгляд
безнад ежную зад ачу.
• Возможно сть – сочетание всеохватывающей, прод уманной
системы тестов и хорошо структурированной программы; язык
программирования, обеспечивающий локализацию проектных решений
и тем самым упрощающий ид ентификацию ошибок.
Мотив – это то, чем вы не можете управлять; сложно сказать, когд а
он у вас появится и заставит заняться техническим творчеством д ля
решения бизнес-зад ач. Метод и возможно сть, с д ругой стороны,
наход ятся под вашим полным контролем. Уорд и его команд а созд али
метод и возможно сть благод аря таланту, опыту и д исциплине. Значит ли
это, что, если вы не вход ите в д есятку лучших разработчиков планеты и
у вас нет приличного счета в банке (настолько приличного, чтобы
попро сить бо сса погулять, пока вы занимаетесь д елом), такие под виги
не д ля вас?
Нет, вовсе нет. Всегд а можно развернуть проект так, чтобы работа
над ним стала творческой и интересной, д аже если вы обычный
разработчик и прогибаетесь под обстоятельства, когд а приход ится туго.
Разработка через тестирование (Test-Driven Development, TDD) – это
набор спо собов, вед ущих к про стым программным решениям, которые
может применять любой разработчик, а также тестов, прид ающих
уверенно сть в работе. Если вы гений, эти спо собы вам не нужны. Если
вы тугод ум – они вам не помогут. Для всех о стальных, кто наход ится
межд у этими крайно стями, след ование д вум про стым правилам
поможет работать намного эффективнее:
• перед тем как писать любой фрагмент код а, созд айте
автоматизированный тест, который поначалу буд ет терпеть неуд ачу;


• устраните д ублирование.
Как конкретно след овать этим правилам, какие существуют в
д анной области нюансы и какова область применимо сти этих спо собов
– все это со ставляет тему книги, которую вы сейчас читаете. Вначале мы
рассмотрим объект, созд анный Уорд ом в момент вд охновения, –
мультивалютные д еньги (multi-currency money).



Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish