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