0

Я разрабатываю довольно большой (для меня) скрипт ruby ​​для инженерных расчетов. Сценарий создает несколько объектов, которые взаимосвязаны иерархически.Зависимость и согласованность данных

Например, один объект (Inp) содержит входные параметры для набора симуляций. Другие объекты (SimA, SimB, SimC) используются для фактического выполнения имитаций, и каждый из них может генерировать один или несколько выходных объектов (OutA, OutB, OutC), которые содержат результаты и создают фактические файлы, используемые для визуализации или анализа, посредством другие объекты и т. д.

В первый раз, когда я выполняю и завершаю все симуляции, все объекты будут полностью определены, и у меня будет серия или файлы, представляющие выходы для пользователя.

Теперь предположим, что пользователю необходимо изменить один из атрибутов Inp. В зависимости от того, какой атрибут был изменен, некоторые симуляции должны быть повторно запущены, а некоторый объект OutX будет отображаться недействительным, иначе согласованность будет потеряна, так как выходы больше не будут соответствовать входам.

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

Из того, что я читал (этот вопрос год назад), я думаю, что для этой цели можно использовать класс Ruby Observable. Каждый раз, когда родительский объект изменяется, он должен отправить сообщение своим дочерним элементам, чтобы они могли обновить свое состояние. Это рекомендуемый подход?

Надеюсь, что этот вопрос станет более понятным.

+0

Я дважды читал вам вопрос, и я все еще не уверен, что вы просите. –

ответ

0

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

Инструменты, которые обычно называются «инструментами сборки», потому что это проблема, которая часто возникает при создании сложных программных систем, но они никоим образом не ограничиваются созданием программного обеспечения. Более подходящим термином будет «программирование на основе зависимостей». Примеры включают make, ant или собственные rake Ruby.

Смежные вопросы