Я прошел через проект, который делал именно то, что вы описываете, с примерно тем же размером кодовой базы. Изначально я был полностью согласен с переписыванием. Это заняло более трех лет и чуть не превратилось в марш смерти. В общем, теперь я гораздо больше согласен с инкременталистами.
Однако, основываясь на нашем опыте, я скажу, что такое переписывание (особенно если вы можете повторно использовать некоторый код бизнес-логики C ++ в .NET) не так технически опасно, как может показаться. Однако это может быть очень социально опасно!
Во-первых, вы должны убедиться, что все полностью понимают, что изначально вы предпринимаете «переписывание» (или «переделку»), а не обновление или «переосмысление». «Психо» 1998 года было поэтапным ремейком оригинала 1960 года. Звездный крейсер «Галактика» 2003 года был переосмыслением оригинала 1978 года. Увидеть разницу?
В нашем случае первоначальный план состоял в том, чтобы воссоздать существующий продукт в .NET. Это не было бы технически сложной задачей, поскольку мы хорошо понимали оригинал. Однако на практике желание добавить, исправить и улучшить всего несколько вещей оказалось непреодолимым и, в конечном итоге, увеличило сроки на 2–3 года.
Во-вторых, вы должны убедиться, что все, от руководителей до торгового персонала и конечных пользователей, согласны с тем, что ваш текущий продукт останется неизменным во время разработки ремейка. Если ваш рынок движется таким образом, что вы не сможете поддерживать свой бизнес в течение этого периода, не делайте этого.
Так что главные препятствия для нас оказались не техническими, а социальными. Пользователи и бизнес-интересы были очень разочарованы отсутствием видимого прогресса. Каждый чувствовал себя обязанным продвигать свои собственные улучшения и функции для домашних животных, поэтому наш конечный продукт имел лишь внешнее сходство с оригиналом. Это определенно было переосмысление, а не ремейк.
В конце концов, похоже, все обошлось для нас, но это была настоящая рутина, и мы не хотели делать это снова. Мы сожгли много доброй воли и терпения (как внутреннего, так и внешнего), чего можно было бы избежать при постепенном подходе.
person
Ryan
schedule
10.06.2009