Как вы справляетесь с технологическими обновлениями в долгосрочных проектах?

StackOverflow https://stackoverflow.com/questions/900634

  •  23-08-2019
  •  | 
  •  

Вопрос

Давайте предположим, что вы находитесь в середине длительного проекта (длительный срок = несколько лет), и, как и ожидалось, появится несколько совершенно новых выпусков.Может появиться новая платформа .Net Framework с совершенно новыми функциями (напримерLinq, Entity Framework, WPF, WF ...), новая Visual Studio или V.next из вашей любимой библиотеки элементов управления, новый Макет фреймворка и многое другое.Каковы ваши рекомендации по обращению с этими технологическими обновлениями?Принимаете ли вы их немедленно или игнорируете до конца проекта?Есть ли у вас разные рекомендации для разных вещей (инструменты, фреймворки, вспомогательные материалы)?

Это было полезно?

Решение

По моему опыту, эти решения всегда принимаются в каждом конкретном случае.Учитывается несколько факторов, в том числе:

  1. Насколько зрелой является новая технология?Нравится ли организации быть в авангарде, работая с передовыми новыми технологиями, или она предпочитает работать с проверенными инструментами и методологиями?

  2. Какими навыками обладают ваши сотрудники?Соответствуют ли они использованию новой технологии или требуется дополнительное обучение?Перевесит ли повышение производительности время, необходимое для того, чтобы набрать скорость?

  3. Какие инвестиции у вас есть в существующую технологию?Какова стоимость перехода на новую технологию?Сколько потребуется доработок и переписывания кода?

  4. Каковы эти требования?Поддерживается ли это существующей технологией или для выполнения этого требования необходимы новые инструменты?

  5. Каковы ожидания от производительности?Обеспечивает ли новая технология повышение производительности, которого нельзя достичь при использовании старой технологии?

  6. А как насчет технологической культуры?Является ли конкретная организация поставщиком (напримермагазин Microsoft)?Можно ли использовать открытый исходный код?

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

  8. Как поддерживается новая технология?Есть ли у поставщика хорошая документация?Есть ли кто-нибудь, с кем вы могли бы поговорить, если у вас возникнут проблемы?Или вы организация, в которой есть люди, знающие, как решать проблемы без контракта на поддержку?

  9. Удобна ли технология для работы?Кажется ли вам, что это имеет смысл?Это чисто и элегантно?Кажется, другим людям это нравится?Есть ли у других людей проблемы с этим?

  10. Является ли эта технология новинкой недели?Доказала ли она свою эффективность на поле боя, чтобы принести ощутимые результаты, или это просто религия?

  11. Сколько времени у вас есть, чтобы освоить новую технологию и устранить недостатки?Перевешивают ли выгоды затраты?

В качестве очень краткого примера я выбрал Link to SQL для своего последнего проекта, потому что проект был достаточно сложным, чтобы требовать ORM, L2S работает хорошо и имеет небольшой вес, мы являемся магазином Microsoft, и, как мне кажется, Entity framework не совсем готова к выходу в прайм-тайм (хотя Microsoft говорит, что это будет общедоступный фреймворк будущего).

Другие советы

Придерживайтесь того, с чего вы начали.

Большой и долго работающий проект часто поставляется с огромной и очень сложной кодовой базой.Любое изменение или обновление до новой версии библиотеки может привести к появлению ошибок очень тонкими и неожиданными способами.

Также:Для крупных проектов используемые инструменты и библиотеки должны были быть протестированы и оценены на этапе проектирования.Если вы не обнаружите блокировку показа или проблему с безопасностью, лучше не обновляться.

Всегда помни:Не меняйте лошадей посреди ручья.:-)

Я бы сказал, что в дело вступают различные факторы, такие как-

  1. Допустим, срок службы программного обеспечения подходит к концу, например, в апреле прошлого года Microsoft прекратила основную поддержку SQL Server 2000, и ваш продукт использует ее, тогда разумнее перейти на следующую версию SQL Server в вашем следующем выпуске.
  2. Еще одним фактором, который играет важную роль, является то, какую ценность новые функции в последней версии программного обеспечения привнесут в ваш продукт.Вполне может оказаться, что в новой версии .NET framework есть что-то, что не добавляет вашему продукту никакой ценности, а значит, это не дает веских оснований для обновления.
  3. Бюджет также является важным фактором.Я думаю, вам нужно обновить лицензии, чтобы перейти к следующему выпуску, если только вы уже не являетесь частью чего-то вроде software assurance.
  4. Подготовка к команде также является важным фактором.Если последняя версия будет добавлена к вашему продукту, то вам также придется обучить свою команду.

Что ж, могут быть и другие говорящие факторы.Это были те, что свалились мне с головы.Я надеюсь, что это поможет.

ваше здоровье

Если вы говорите о примере, специфичном для фреймворка, то самый большой совет, который я вам дам, - это разделять систему и ваше приложение.Вот почему я люблю такие шаблоны, как Model-View-Controller - это сохраняет ваш код модульным и означает, что вы можете обновлять разделы, не нарушая работу приложения целиком.

На более практическом уровне, если в вашем фреймворке есть репозиторий Git или SVN, извлеките обычный каталог 'system' из репозитория, затем вы можете время от времени вызывать 'svn update', чтобы быть в курсе последних и наилучших сборок.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top