Здравствуйте, iZEN, Вы писали:
ZEN>Тем не менее, я настаиваю на своей точке зрения.
Успеха тебе в этом нелёгком деле.
Каждый имеет право на заблуждение
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Maxim S. Shatskih, Вы писали:
RRM>>При разработке какой-либо сложной системы создается прототип, чтобы понять, как лучше делать, какие проблемы могут вылезти и т.п.
MSS>Совсем не обязательно. Это гигантский расход ресурсов.
MSS>Если есть такие вещи, в реализуемости которых действительно есть сомнения — то их можно на эдаких маленьких юнит-тестиках опробовать.
MSS>Все остальное можно сразу начисто писать.
Классическая война "остроконечников" с "тупоконечниками".
По моему опыту, создание прототипа очень помогает в случае работы с "проектами со сложностью вширь". Есть такие специальные проекты, в которых водится много страшных слов типа Business Logic, GUI, взаимодействий компонентов, клиентских требований и т.д — например, системы учета и контроля. Тут прототиапы очень сильно рулят. Собственно, as for me, самой главной целью прототипа является упорядочивание хаоса в мозгах заказчиков и разработчиков.
В случае "проектов со сложностью вглубь" идея прототипирования никуда не годится. В эту группу проектов относятся драйвера, сетевые системы, системы безопасности, DRM всякие и т.д. "Маленькие тесты" в таких проектах естественным образом получатся в результате каждого research'а по конкретной задаче.
З.Ы. Вот не знаю, как обстоит ситуация в геймдеве, не привлекался
Нефиг тут спорить
Я бы не сказал что все так однозначно. Если попытаться выразить коротко: можно не выбрасывать, но быть готовым переписать с нуля.
Когда имеет смысл выбрасывать: когда ясно что это не будет работать достаточно скоро, настолько скоро что лучше сразу сделать "по-нормальному". Если такого понимания нет, наверное лучше оставить.
Был один пример, когда сделали работающий прототип и пустили его в production. Спустя некоторое время говорили что да, сделано криво. Но с другой стороны: решение _работает_, и в тот момент когда его запускали в production не было понимания того что скоро это просто заткнется с точки зрения масштабируемости, производительности etc. Поэтому я бы не сказал что все так однозначно.
С другой стороны, в некотором классе продуктов (в нашей области такое часто бывает), разница между прототипом и финальным вариантом не проходит так четко как при прототипировании каких-то чисто технологических решений. Например, там где критерием "работоспособности" прототипа является не техническая характеристика типа сколько сообщений обрабатывается в секунду, а то насколько удобна и полезна какая-то высокоуровневая функциональность, влияющая при этом на пол-системы, то даже часть уже выпущенного продукта может так и оставаться "прототипом", потому что acceptance test для нее — реальное использование.
Но при всем при этом я бы сказал что часто трудозатраты на переписывание немного переоценивают: прототип создавать гораздо сложнее, потому что в процессе создания пробуются куча разных подходов, что-то отвергается etc. Если же переписать это целиком с нуля — это может быть в 5-10 раз меньше. Единственная опасность — когда прототип абсолютно нерабочий — на нем не отловлена еще куча проблем, которые существуют (видно что работает он так себе). В этом случае переписывание с доведением до ума может быть и дольше чем создание самого прототипа.