Alexey Tigarev ([info]t_gra) wrote,
@ 2004-11-04 18:46:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:software_development

Метафора: производство ПО и выпечка пирога

Хорошее программное обеспечение нельзя сразу, в один присест сделать хорошим. Ну, скажем, хотим мы испечь пирог. Нету такого рецепта, чтобы быстренько ссыпать в одну посудину все ингридиенты, сунуть в духовку и получить пирог с нужным набором вкусовых качеств. Можешь купить в магазине готовый, если он тебе подойдёт - хорошо.

А когда ты хочешь сделать свой уникальный пирог, который удовлетворит именно твой взыскательный вкус - даже если ты наймёшь пекаря для этого, а не будешь печь сам, - то какое-то время придётся выбирать ингридиенты, перемешивать их, затем то, что ты в итоге хочешь сделать пирогом, становится куском бесформенным куском теста, который прилипает к рукам и который нужно с усилием месить. Потом тесту нужно дать время пожить собственной жизнью, "подойти". И уже потом - отправить в печку, чтобы температура ещё раз изменила структуру теста и покрыла пирог красивой корочкой. Но и после этого нужно быть осторожным и не спешить употреблять пирог! Он, во-первых, горячий и обжигает, а во-вторых, печёный продукт только из печки может не очень хорошо перевариваться незадачливым едоком. Первый едок должен иметь крепкие кишки :)

Нужно пройти все необходимые этапы. И с пониманием относиться к тому, что на промежуточных стадиях мы имеем ещё тесто, а не готовый продукт сразу.</p>

Update: Вот в этом треде пошло обсуждение с [info]emeltchenkov о правомерности этой метафоры применительно к экстримальному программированию, процессу итераций в экстримальном программировании, и меняющимся требованиям:
http://www.livejournal.com/users/t_gra/113536.html?thread=343680#t343680




(Post a new comment)


[info]emeltchenkov
2004-11-04 09:03 am UTC (link)
Это расходится с концепцией экстремального программирования.

(Reply to this)(Thread)


[info]t_gra
2004-11-05 12:02 am UTC (link)
В чём именно?

(Reply to this)(Parent)(Thread)


[info]gressus
2004-11-05 12:06 am UTC (link)
а там пробуют после каждого этапа

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-05 12:15 am UTC (link)
Тогда это не пирог. :)
Был бы слоёный пирог с отдельно выпекаемыми коржами, однако они же ещё и рефакторинг делают - перекраивают уже имеющиеся коржи.

(Reply to this)(Parent)


[info]emeltchenkov
2004-11-05 01:05 am UTC (link)
В XP каждая итерация производит готовый продукт, а не его полуфабрикат. В этом и расхождение.

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-05 01:13 am UTC (link)
Но, скажем, на начальных итерациях может быть поставлена во главу угла "функциональность", а не "удобство использования"?

(Reply to this)(Parent)(Thread)


[info]emeltchenkov
2004-11-05 01:18 am UTC (link)
В случае XP, думаю, нет.

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-05 02:08 am UTC (link)
А почему user story не может звучать так: вы сейчас сделайте нам быстро, чтоб как-то работало, а потом сделайте, чтобы хорошо работало?

(Reply to this)(Parent)(Thread)


[info]emeltchenkov
2004-11-05 02:12 am UTC (link)
Потому что придётся переделывать, т.е. фактически писать заново. Т.к. чаще всего написание бизнес-логики бесполезно без написания интерфейса.

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-05 02:26 am UTC (link)
Тут я начинаю плавать в вопросе, каким критериям должна удовлетворять хорошая user story.
Каждой user story соответствует отдельный бюджет?
Поэтому я обращаюсь к знаниям по requirements engineering и более стандартной методологии. Скажем, есть видение проекта в целом (самые высокоуровневые requirements), есть план, какие основные возможности включать в каждый релиз.
Есть более детальная спецификация требований, где у каждого требования есть приоритет, то есть прежде всего следует заботиться о том, чтобы продукт удовлетворял высокоприоритетным требованиям, затем - менее приоритетным. Я представляю последовательность итераций в XP как последовательность релизов, которые удовлетворяют требованиям по мере их приоритетности. Только в XP вроде как целостное SRS не составляется, что позволяет получить большую гибкость в смысле пожеланий пользователя. (И требует искусного рефакторинга при изменении требований).

P.S.: Может, приведёшь пару точных ссылочек по теме организации итераций в extreme programming?

(Reply to this)(Parent)(Thread)


[info]emeltchenkov
2004-11-09 06:48 am UTC (link)
Приоритеты к теме не относятся. Я лишь говорил о том, что на каждой итерации заказчик получает работоспособный продукт.

Ссылок не приведу, т.к. книжку читал.

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-09 07:13 am UTC (link)
В такой интерпретации я согласен. Работоспособный, но отнюдь не идеальный.

(Reply to this)(Parent)(Thread)


[info]emeltchenkov
2004-11-09 07:17 am UTC (link)
Да, это я и имел ввиду.

(Reply to this)(Parent)


[info]vi_z
2004-11-05 02:45 am UTC (link)
Либо это готовый продукт, и последующие итерации клиенту не нужны, либо то, что промежуточные итерации производят готовый продукт -- ложь.

(Reply to this)(Parent)(Thread)


[info]t_gra
2004-11-05 03:21 am UTC (link)
Возможно, это "идеальное" убеждение экстримистов, что "любой релиз - готовый продукт", чем-то полезно.
В общем, нужно выяснить критерий "готовности" продукта и "кошерности" user-story - спецификации требований для отдельной итерации.

P.S.: Мне не хватает теоретической базы по XP для серьёзного обсуждения этого. Где почитать именно на тему итераций?

(Reply to this)(Parent)


[info]emeltchenkov
2004-11-09 06:44 am UTC (link)
Я неправильно выразился: не готовый продукт, а продукт, который готов к использованию на каждой итерации.

(Reply to this)(Parent)


[info]_glav_
2004-11-04 09:08 am UTC (link)
эх, ну и нагоняешь же ты аппетит... :)

(Reply to this)


[info]ingenieurin
2004-11-04 09:25 am UTC (link)
Только вот ПО можно улучшать и перекраивать до бескончености, а пирог на составные части уже не разберешь :)

(Reply to this)(Thread)


[info]t_gra
2004-11-05 12:04 am UTC (link)
Иногда дешевле тоже полностью с нуля переписать.
А так - да. :)

(Reply to this)(Parent)


[info]t_gra
2004-11-05 12:06 am UTC (link)
Взять хотя бы прототайпинг. Это программирования в стиле "паска, паска, если не получишься, я тебя убью". И если получится - то это тоже выбросят и напишут заново.

(Reply to this)(Parent)


[info]gressus
2004-11-05 12:07 am UTC (link)
осталось погрузить заказчика в транс, чтобы у него хватило ... выслушать метафору полностью

(Reply to this)(Thread)


[info]t_gra
2004-11-05 12:12 am UTC (link)
Вот как бы для того и... :)
Только заказчики находятся внутри собственной фирмы - программисты, которые будут использовать некий инструмент, разработанный мной.

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…