Портирование приложения VB6 к VB.Net: Может кто-либо приблизительная оценка, сколько усилия это?

В 2002 я сделал довольно большое приложение VB6 для клиента. Это использовало много UserControls и стороннего управления меню (для помещения значков рядом с названиями меню). Это имело динамично "расщепляемые" панели, TreeViews с флажками со многими состояниями, и т.д. очень богатый UI. Мое общее время на проекте составляло приблизительно 500 часов, которые клиент любезно позволил мне распространить за целый месяц. (Да, это было такое задание.) Они были очень счастливы, тем не менее, и они оплатили счет вовремя без аргумента.

Таким образом, после наличия никакого контакта с ними в течение многих лет, они внезапно звонят и задаются вопросом, могу ли я обновить приложение к .NET для них. Моя первоначальная реакция должна только уменьшиться, так как я не использую VB.Net. И считавший набор сообщений на ТАК о трудностях портирования, и т.д., и т.д., я еще более склонен уменьшиться, так сказать.

Однако, прежде чем я скажу им не, что я интересуюсь грубый определением количества усилий, которые оно приложило бы. Я хотел бы получить известие от любого, кто сделал такого рода вещь и имеет чувство для того, сколько работы это. Было это:

  • Значительно меньше, чем усилие Вы использовали на оригинале?
  • Несколько меньше, чем усилие Вы использовали на оригинале?
  • То же как усилие Вы использовали на оригинале?
  • Еще?
  • Намного больше?

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

10
задан MarkJ 12 March 2010 в 22:07
поделиться

7 ответов

Я сделал то, о чем вас просили. В моем случае это была (любительская) система управления турнирами по боулингу: управление базой данных участников (личная информация, IRS / информация о выигрышах, списки рассылки и т.д. побочные банки и т. д. и т. д.), а также генерация IRS EDI для всех победителей в данном году. Плюс около миллиарда маленьких элементов, разбросанных по ~ 50 экранам / субэкранам.

Ключевым моментом является ПОНИМАНИЕ КЛИЕНТА. Вы должны ясно дать понять, что они понимают, что это нетривиально; это новое приключение для ОБЕИХ из вас (особенно если вы новичок в VB.Net). Если им нравилась ваша работа раньше, они вполне могут дать вам свободу действий в изучении VB.Net за свои деньги.

Прочитав некоторые из предыдущих ответов, позвольте мне сделать несколько предложений (основанных на 30-летнем опыте разработки программного обеспечения, последние 20 из которых в качестве консультанта ....)

  1. БРАТЬ ИХ ДЕНЬГИ, ЕСЛИ ОНИ ПРЕДЛАГАЮТ ЭТО. Вам нужно перенести свои навыки в 20-й век; пусть платят за это (опять же, если они согласятся.) Они могут серфить по журналам и хотят "новейших вещей" НЕ НАДО УДОБНОЙ ПРИЧИНЫ - но, возможно, они понимают, что могут продлить жизнь (вашей ) через этот порт. По сути, у них могут быть всевозможные глупые причины для этого ... если они НЕ нанимают вас, чтобы РЕШИТЬ, является ли этот порт хорошей идеей. Затем вы можете выразить любое беспокойство по поводу ПРОЦЕССА принятия решения, связанного с построением хороших отношений с клиентами; НО если они захотят это сделать, то это может быть и ваша работа.

  2. Возьмите всю эту чепуху: C # против VB.Net с долей скептицизма. Я работал ИСКЛЮЧИТЕЛЬНО в VB.Net / ASPX.net (против C #) с момента его создания и еще не встречал ЛЮБОЙ функциональности, недоступной в VB.Net. Есть некоторые «пуристы», которые просто рассматривают VB.Net как игрушку. Ну, я пришел из тех времен, когда писал на Ассемблере, затем на C, затем на C ++ (и вы можете добавить Fortran, PL1 для хорошей меры), затем VB5, затем 6, затем VB.Net ... и СЕЙЧАС JAVA для Android. Это ВСЕ ДОБРО ПОЖАЛОВАТЬ ... и у каждого есть свои достоинства и недостатки. Помните, что C # и VB.Net - это, по сути, просто графические интерфейсы для достижения промежуточного уровня метаязыка. Вы можете написать УЖАСНУЮ (измеряемую эффективностью, использованием памяти или любой другой метрикой!) Программу на C # и отличную программу на VB.Net (и наоборот). НЕ УПРАВЛЯЙТЕ ХОРОШЕЕ ПРОГРАММИРОВАНИЕ С ЯЗЫКОВЫМ СИНТАКСИСОМ. (... C # "лучше" ???? Дайте мне перерыв.)

  3. Я решил позволить Visual Studio сделать большую часть тяжелой работы для первого прохода. Затем вы просматриваете множество ошибок и устраняете их. Идет довольно быстро.

  4. НО вам нужно решить, использовать ли преимущества фреймворка, вручную написанного на VB6. НАПРИМЕР. цикл по строке для поиска определенного символа (ов) теперь так же прост, как The_String.IndexOf ("c"). Я обнаружил, что в моем случае я прошел код несколько раз и все лучше и лучше использовал преимущества класса (т. е. объекта ориентации), а также фреймворков, когда мне стало комфортно ... это увеличивает ваше время разработки (см. мантру ПОНИМАНИЕ КЛИЕНТА), НО ваш код БУДЕТ БОЛЕЕ ЭФФЕКТИВНЫМ, чем он когда-либо мог быть на VB6.Вы могли бы просто выполнить перенос, чтобы избавиться от ошибок, и не использовать ЛЮБЫЕ преимущества, которые необходимо использовать во фреймворке.

  5. Я не обнаружил никаких проблем со сторонними элементами управления active-x. Вы можете добавить ссылку на объекты FRAMEWORK, COM-объекты и т. Д. Возможно даже, что поставщик элемента управления имеет версию .Net (управляемый код) ... ИЛИ могут быть подходящие альтернативы, поскольку вы написали эту вещь на VB6. (См. Мантру «ПОНИМАНИЕ КЛИЕНТА»).

Итак, если ваше все еще читается, то теперь я наконец скажу вам, что вторая попытка моего приложения в VB.Net ПРЕОБРАЗОВАННО / ПОРТОВАНО из VB6 была ~ 1/3 первоначальное время, чтобы перейти к работающей модели ... и я тоже изучал структуру. (Если вы уверены в своих навыках, выучили несколько языков за эти годы, вы быстро поймете суть VB.Net - это ПРОМЕЖУТОЧКИ, на которые нужно время.)

Я должен вас предупредить, что то, что может ДЕЙСТВИТЕЛЬНО убить вас, если вы недостаточно хорошо проповедуете ПОНИМАНИЕ КЛИЕНТА, если они хотят внести изменения, пока вы портируете (и это ОЧЕНЬ ВЕРОЯТНО, поскольку они использовали его некоторое время ... Я был очень прав в моем случае

Здесь нет жесткого правила. Возможно, изменения действительно ПОМОГУТ ВАМ быстрее понять структуру ИЛИ изменения могут стать настоящей проблемой. Только вы можете определить, какой они могут быть. И если они выглядят как БОЛЬШИЕ - вы можете попросить сначала выполнить преобразование, чтобы надежно воспроизвести функциональность - ЗАТЕМ вернитесь и просмотрите код, чтобы внести изменения и при необходимости воспользоваться фреймворком.Но, как я уже сказал, здесь НЕТ жестких правил - и не позволяйте пуристам говорить вам иначе - помните, что они, вероятно, те же самые ребята, которые сказали, что PASCAL собирается захватить мир!

9
ответ дан 3 December 2019 в 17:58
поделиться

На мой взгляд,

Visual Basic 6 и Visual Basic .NET настолько разные, что вы должны забыть об их совпадении в названии и относиться к этому в качестве перехода на .NET = P

я думаю, что у вас есть одно большое преимущество и один недостаток:

  • Преимущество: вы уже знаете, что приложение должно делать. Возможно, у вас будут встречи с вашими клиентами, чтобы добавить какие-то модификации или новые функции, но у вас очень четкая основная часть требований. У вас даже будет старое работающее приложение, которое вы сможете увидеть, пока вы или ваша команда пишете код.

  • Недостаток : придется учить новый язык. Сказать, сколько времени уйдет, очень субъективно. Я всегда думал, что изучение нового языка - не проблема, большая проблема будет, если вам придется научиться программировать !. Но вы умеете программировать. Вы будете знать, что хотите делать, и вам останется только искать, как это сделать на новом языке.

Поскольку вам нужно учиться.NET, если вам нужно прикинуть, я думаю, вы должны предположить, что вам потребуется как минимум столько же, сколько и предыдущее приложение , даже больше.

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

Вы не можете сказать клиенту, что знаете все требования, поэтому он каким-то образом экономит деньги вместе с вами. И они должны пойти на этот небольшой риск (мы говорим о небольшом модуле), потому что кто лучше вас, чтобы сделать проект, вы прекрасно знаете старое приложение!

Если клиент прав в этом, вы можете принять решение с большим количеством аргументов. И если, наконец, вы решите продолжить, с этим маленьким модулем вы сможете оценить весь проект лучше, чем раньше.

К сожалению, мой английский не очень хороший, и, вероятно, я сделал много грамматических ошибок.

ИЗМЕНИТЬ грамматических ошибок ... = P

2
ответ дан 3 December 2019 в 17:58
поделиться

Это огромная тема.

Вам следует взглянуть на бесплатную книгу MS - Обновление Microsoft Visual Basic 6.0 до Microsoft Visual Basic .NET .

Если вы переписываете с нуля, а не просто пытаетесь перенести предыдущее приложение, это не займет много времени. VB.Net имеет некоторые функции, которые сокращают время сборки нового приложения. Поскольку кажется, что вы еще не знакомы с VB.Net, больше всего у вас уйдет на то, чтобы научиться делать что-то по-новому (tm) .

1
ответ дан 3 December 2019 в 17:58
поделиться

В этот раз я бы поехал на два месяца.

А если серьезно, то это, вероятно, не за горами - или даже низко - потому что у клиента будет какая-то причина для необходимости создания порта. Это будет не просто прямой порт - им понадобится «небольшое небольшое улучшение», которое взорвет весь проект.

Кроме того, я бы немного побеспокоился о сторонних элементах управления. Большая часть остальной части должна нормально конвертироваться, но иногда возникает проблема с поиском хорошего аналога стороннего элемента управления в .Net.

Меня также беспокоит, что вы не используете vb.net. Если вы пользователь C # и хотите повторно реализовать этот способ, все будет в порядке, но в остальном это не для начинающих. VB.Net достаточно отличается от vb6, чтобы у вас возникли проблемы.

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

1
ответ дан 3 December 2019 в 17:58
поделиться

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

У меня есть одно хорошее предложение - использовать для преобразования Visual Studio 2008 (не VS 2005). При использовании встроенного конвертера в VS 2008 было гораздо меньше проблем, чем с VS 2005. Не знаю почему, просто так.

Итак, я не могу сказать, что вы больше не проведете 500 часов, но, скорее всего, нет. Большую часть времени следует потратить на тестирование, чтобы убедиться, что функциональность не была потеряна.

2
ответ дан 3 December 2019 в 17:58
поделиться

И вот, после того как с ними не было никаких контактов в течение многих лет, они вдруг звонят и спрашивают, могу ли я обновить приложение до .Net для них.

Вам нужно спросить, почему они хотят это сделать.

Плохой план (tm) для клиентов - принимать технические решения по прихоти. Прежде чем применить какое-либо решение, тщательно изучите их потребности и проблему. Только после того, как вы поймете проблему так же, как они, вы должны давать рекомендации.

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

4
ответ дан 3 December 2019 в 17:58
поделиться

Я бы планировал, что это займет около 50% времени и усилий, затраченных на его создание.

Я сделал ТОЧНО то, о чем вы спрашиваете, для коммерческого программного продукта, который состоял примерно из 500 kloc. Мы уравновешивали стремление к рефакторингу желанием получить что-то работающее и выпустить как можно быстрее.

Почти вся команда потратила около 1 года на то, чтобы сделать это... для продукта, на создание которого ушло 4 года. Это было грандиозное предприятие... нельзя недооценивать.

3
ответ дан 3 December 2019 в 17:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: