Предположим, вы находитесь в середине долгого проекта (длинный пробег = несколько лет), и, как и ожидалось, в новых выпусках будет несколько вещей. Может быть новая .NET Framework с новыми функциями (например, Linq, Entity Framework, WPF, WF ...), новая Visual Studio или V.next из вашей любимой библиотеки управления, новая Mock Framework и многое другое , Каковы ваши рекомендации по обработке этих обновлений технологий? Вы принимаете их мгновенно или игнорируете их до конца проекта? У вас разные рекомендации для разных вещей (Инструменты, Рамки, вспомогательные материалы)?Как вы обрабатываете обновления технологий в долгосрочных проектах?
ответ
По моему опыту, эти решения всегда принимаются в каждом конкретном случае. Рассматриваются несколько факторов, в том числе:
Насколько зрелым является новая технология? Хочет ли организация быть на переднем крае, работая с новыми технологиями, или предпочитает работать с проверенными инструментами и методологиями?
Какие навыки у ваших людей есть? Согласуются ли они с использованием новой технологии или требуется больше обучения? Будет ли улучшенная производительность перевешивать время, необходимое для достижения скорости?
Какие у вас есть инвестиции в существующую технологию? Какова стоимость перехода на новую технологию? Сколько переработка и переписывание кода задействованы?
Какое требование? Поддерживается ли она существующей технологией или являются новыми инструментами, необходимыми для выполнения этого требования?
Каковы ожидания в отношении производительности? Обеспечивает ли новая технология повышение производительности, которое невозможно удовлетворить старой технологии?
А как насчет технологической культуры? Является ли конкретный поставщик организации (например, магазин Microsoft)? Можно использовать код с открытым исходным кодом?
Какова область действия проекта? Является ли это крупным проектом, который выиграет от поддержки технологий, таких как рамки и инструменты, или это небольшой проект, который будет чрезмерно отягощен и осложнен этим?
Как поддерживаются новые технологии? Имеет ли у продавца хорошую документацию? Есть ли кто-то, с кем можно поговорить, если у вас есть проблемы?Или вы - организация, в которой есть люди, которые знают, как решать проблемы без контракта на поддержку?
Является ли технология удобной для работы? Кажется ли это иметь смысл? Является ли он чистым и элегантным? Другие люди, похоже, это нравится? У других людей есть проблемы с этим?
Является ли технология новейшим вкусом недели? Испытывал ли он себя на поле битвы для получения ощутимых результатов или это просто религия?
Сколько времени у вас есть, чтобы изучить новую технологию и устранить изломы? Выгоды превышают затраты?
В очень короткий пример, я выбрал ссылку на SQL для моего последнего проекта, потому что проект был достаточно сложным, чтобы оправдать ОРМ, L2S выполняет хорошо, и легкий, мы являемся Microsoft магазин, и мой смысл в том, что инфраструктура Entity не совсем готова к прайм-тайм (хотя Microsoft заявляет, что она станет основой для будущего).
Я бы предположил, что проект длится недолго. Разработайте приложение в меньших частях с итерациями каждые пару месяцев. Таким образом, по мере того, как выйдет новая технология, вы можете внести необходимые изменения и внедрить обновления по мере того, как вы идете, а затем должны решить переделать все приложение. Как вы говорите, попытка разработки целого приложения по мере того, как все меняется, просто не работает.
Я понял, что «долгосрочный проект» означает «продукт»: например, продукт может развиваться (со многими выпусками) в течение 10 лет. – ChrisW
Придерживайтесь того, с чего вы начали.
Проект с большим и длительным сроком службы часто поставляется с огромным и сложным кодом. Любое изменение или обновление до новой версии библиотеки может добавлять ошибки в очень тонкие и неожиданные способы.
Также: для крупных проектов используемые инструменты и библиотеки должны были быть проверены и оценены в фазе проектирования. Если вы не найдете шоу-стоппер или проблему безопасности, лучше не обновлять.
Всегда помните: не меняйте лошадей посреди ручья. :-)
Я бы сказал, различные факторы, шаг в, как-
- Say программное обеспечение подходит к концу жизни, например, в апреле прошлого года, Microsoft отставной основной поддержки для SQL Server 2000, и ваш продукт использует его, то его разумнее перейти к следующей версии SQL Server в следующей версии.
- Еще один фактор, который приходит в игру, - это то, насколько ценны новые функции последней версии программного обеспечения для вашего продукта. Вполне возможно, что в новой версии .NET framework есть что-то, что не добавляет никакой ценности вашему продукту, тогда это не создает надежный пример для обновления.
- Бюджет также является важным фактором. Я думаю, вам нужно обновить лицензии, чтобы перейти к следующей версии, если вы уже не являетесь частью чего-то вроде обеспечения программного обеспечения.
- Тренировка для команды также является фактором. Если последняя версия будет добавлена в ваш продукт, вам также придется тренировать свою команду.
Ну, могут быть и другие факторы. Это были те, что были у меня на голове. Я надеюсь, что это помогает.
веселит
Если вы говорите о рамочном конкретном примере, самый большой кусок совета, который я дам вам, чтобы система и приложения отдельно. Вот почему я люблю шаблоны, такие как Model-View-Controller - он сохраняет ваш код модульным и означает, что вы можете обновлять разделы, не разбивая приложение как полноту.
На более практическом уровне, если ваша инфраструктура имеет репозиторий Git или SVN, проверьте обычную «системную» директорию из репо, а затем вы можете иногда вызывать «svn update», чтобы идти в ногу с последними и самыми большими сборками.
Как другой плакат сказал, это, безусловно, случайный вещь. То, что вы можете обновить, и когда определяется в основном тем, насколько сложно или легко протестировать новую версию системы. Наличие всестороннего автоматизированного набора тестов для вашего приложения помогает в этом.
Как правило, я стараюсь обновлять до последней стабильной версии библиотек и так далее, насколько это возможно, потому что это упрощает обслуживание. Если вы не обновляете, вы можете обнаружить исправление или работу с ошибками в версии используемой библиотеки.Если вы обновляетесь реже, каждое обновление будет работать больше, потому что у вас больше изменений, и с тех пор прошло больше времени, так как вы последний раз касались системы, и, таким образом, вы меньше всего об этом запомнили.
+1 Хороший подробный ответ. – ralphtheninja