Какие есть варианты для проверки вашего приложения на будущее?

Я смотрю на минимизацию будущего воздействия на еще не написанное заявление. Я стараюсь избегать любых сторонних продуктов и даже избегать вызовов, связанных с конкретной операционной системой. Кто-нибудь может предложить другие способы проверки приложения на будущее. Идея заключалась в том, что не нужно переписывать основные части через 10 или 20 лет, и что когда-либо нужно будет выполнять только техническое обслуживание (исправление ошибок).

6 ответов

Решение

Если вы хотите, чтобы ваша программа продолжала работать (на современных ОС) в течение такого периода времени, вам, вероятно, придется писать ее только на чистом ANSI C (или C++). Все остальное, вероятно, нуждается в некоторой доработке на протяжении многих лет, и никто не знает, что произойдет в течение следующих 10-20 лет.

Тем не менее, вот несколько советов, чтобы минимизировать подобные проблемы:

  1. Избегайте странных зависимостей. Если вы собираетесь зависеть от какой-то библиотеки, убедитесь, что она очень устоявшаяся (и, следовательно, вероятно, выживет как минимум 5 из этих 10-20 лет), или, по крайней мере, с открытым исходным кодом, чтобы вы могли в случае необходимости использовать ее самостоятельно. быть.
  2. Избегайте вызовов, связанных с ОС. Это будет балансирование с 1. - вы можете использовать библиотеку-обертку, такую ​​как boost или Qt или glib или what-have-you - но это увеличит вероятность проблем совместимости на этом фронте.
  3. Документ все. На самом деле, как бы вы ни старались, этой программе потребуются исправления совместимости и исправления ошибок, а также, возможно, и дополнения функций. Облегчите жизнь этому плохому программисту, который работает через 15 лет.:)

Отыщите около 10 и 20-летних программ, которые все еще работают на современных машинах, и посмотрите, почему они все еще работают и почему они имеют ценность. Я вижу, что некоторые консольные приложения, требующие большого объема вычислений, все еще время от времени используются, в основном написаны на C и FORTRAN, которые вызываются другими приложениями. Если в вашем приложении много графического интерфейса, уверены ли вы, что через несколько десятилетий оно по-прежнему будет иметь какую-то ценность? Возможно, стоит рассмотреть возможность отделения пользовательского интерфейса от основной функциональности таким образом, чтобы пользовательский интерфейс мог быть заменен в будущем по мере изменения и развития парадигм пользовательского интерфейса. Если вы пишете свою систему очень модульно, модули, которые все еще обеспечивают ценность, можно сохранить, а те, которые явно устарели, можно заменить.

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

Лучший способ создать приложение, которое все еще функционирует с минимальным техническим обслуживанием в течение 10 лет, - это посмотреть на системы, которые были созданы и работают 10 лет назад.

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

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

Многие приложения, которые я разрабатываю, работают по циклу (пример: ежегодно). Самое важное, что я делаю, чтобы убедиться, что они продолжают работать, это не жесткие даты или диапазоны дат. Пример:

  • year(now()) на год
  • DateSubmitted BETWEEN year(now()) AND DATEADD(year,1,year(now())) для диапазона

Конечно, это всего лишь примеры.

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

Другие вопросы по тегам