Ответ
После небольшого поиска у меня получилось следующее: Сервер:
output$Imagen <- renderImage({
if(ratingGiver() > 9){
Leg <- "www/5stars.png"
} else if (ratingGiver() > 8) {
Leg <- "www/45stars.png"
}else if (ratingGiver() > 7) {
Leg <- "www/4stars.png"
}else if (ratingGiver() > 6) {
Leg <- "www/35stars.png"
}else if (ratingGiver() > 5) {
Leg <- "www/3stars.png"
}else if (ratingGiver() > 4) {
Leg <- "www/25stars.png"
}else if (ratingGiver() > 3) {
Leg <- "www/2stars.png"
}else if (ratingGiver() > 2) {
Leg <- "www/15stars.png"
}else if (ratingGiver() > 1) {
Leg <- "www/1stars.png"
}else{
Leg <- "www/0byebitchgone.png"
}
list(src=Leg, height = 90, width = 380)
}, deleteFile = FALSE)
Тело:
imageOutput(outputId="Imagen")
Клиентура является ключевой в определение, необходимо ли поддерживать большую проблему обратной совместимости.
В основном необходимо оценить это как любые другие нефункциональные требования, которые необходимо реализовать, и необходимо тщательно указать то, что включено в функцию "обратной совместимости":
При объединении предыдущих критериев (природа обратной совместимости) с природой клиентуры можно решить что:
Если Ваши клиенты являются внутренними к Вашей компании, потребность ниже, и 2.0 может повредить значительные функции.
Если Ваши клиенты являются внешними, 2.0 могли бы все еще повредить вещи, но Вы, возможно, должны предоставить руководство по миграции
На экстремальном значении, если Ваши клиенты являются всем миром, поскольку я уже упомянул в этом ТАК вопрос о Java, можно закончить тем, что обеспечили новые технические возможности, никогда не удерживая от использования старые! Или даже сохраняя ОШИБКИ Ваших старых продуктов, потому что приложения клиента зависят от тех ошибок!!
Возраст программного обеспечения влияют на Ваше решение? Вы инвестируете меньше времени в обратную совместимость, когда программа будет более новой?
Я полагаю, что это имеет отношение к тому, что уже развертывается: недавняя программа должна будет иметь дело с меньшим количеством потребностей обратной совместимости, чем та, которая является вокруг с 20 лет.
Решение является базирующимся только на числе клиентов с установленными копиями?
Это должно быть основано на экономической модели: Ваша миграция - в случае необходимости из-за отсутствия обратной совместимости - может быть "проданной" эффективно Вашим клиентам (из-за всех новых солнечных функций, которые это приносит?)
Вы прилагаете активное усилие для создания форматов кода и форматов файлов, который поддерживает будущие изменения?
Попытка предсказать "будущее изменение" может быть очень контрпродуктивной и быстро пограничной к YAGNI (Вы не Собираетесь Потребность Это): хороший набор инструментов миграции может быть намного более эффективным.
При разработке v1.0 Вы пытаетесь к созданному помочь v2.0 быть обратно совместимыми с v1.0? (Отъезд "зарезервированных" полей является примером.)
Для внутренних приложений я продолжил работать, нет. Параллельное Выполнение является нашим способом гарантировать "функциональную" обратную совместимость. Но это не универсальное решение.
Как Вы решаете, что "нет, Мы не собираемся поддерживать это еще" на функциях?
Снова, для внутренних приложений, процесс принятия решений может очень отличаться, чем для внешне развернутого. Если функция не приносит добавленной стоимости для бизнеса, внутренняя задача "когерентности" поставилась для сверений с любым внутренним приложением стоимость их миграции (т.е. "не использующий больше эту функцию"). Та же задача намного тяжелее относится к клиентам за пределами Вашей организации.
Чем больше Вашей системы используется ежедневное, тем больше необходимо сфокусироваться на ней.
Чем больше Вашей системы глубоко встраивается в базовые процессы Ваших клиентов, тем больше необходимо сфокусироваться на ней.
Чем больше Вашей системы имеет конкурентов, тем больше необходимо сфокусироваться на ней.
Чем больше пользователей, которые используют более старые версии, тем больше необходимо сфокусироваться на нем.
Чем более сложное и более глубокое закрытие сделки там для клиента к Вашей системе, с точки зрения того, как большой из влияния Ваше программное обеспечение имеет на их бизнесе, тем больше необходимо сфокусироваться на обратной совместимости.
Если Вы не можете способствовать им на новые версии посредством привлекательной оценки, и т.д., это могло бы быть достойно рассмотрения риск для повышения всех.
Как Vista или Office 2007. Это было потрясающим в помощи мне к Apple.
Мое взятие на обратной совместимости программного обеспечения:
1.) Если бы это уже - широко используемый продукт многими клиентами, то я удостоверился бы, что новая версия этого продукта все еще использует тот же "основной код" (Код, который достигает основной функциональности разрабатываемого приложения). Новые возможности должны быть включены в эту кодовую базу или созданы сверх этой кодовой базы с как можно меньшим изменением, необходимым в среде выполнения этого приложения. Вы не хотите заставлять своих существующих пользователей выполнить партию изменений в их существующих установках. Таким образом, это - компромисс между поддержкой новой функциональности и модернизацией в существующем процессе установки и использования для клиента.
2.) В новом продукте, Если возможно определите все возможные функции того приложения прямо в начале даже, прежде чем v1.0 будет отсутствовать. Определите, какие функции Вы собираетесь поставить в v1.0. и которые были бы сохранены для более поздних выпусков. Везде, где возможно помните об этих "более поздних функциях времени" в то время как дизайн, реализация кода, завершая вывод из / приложения для размещения функций в будущих версиях. например, Отпуск дополнительные элементы/битовые поля в Ваших структурах данных.
- AD.
Много. Если Вы не хотите бесить каждых из своих лояльных клиентов!
Мой опыт работы со сложными системами термоусадочной упаковки с относительно небольшим (100-5000) пользователями.
Маркетинг часто требует особого отношения к обратной совместимости без полной оценки затрат на жизненный цикл.
Например, экономия на устранении ошибок в вашей системе для текущей пользовательской базы может быть легко затмевалась затратами на поддержку новых пользователей в течение всего срока службы системы.