Проектування системи (подробиці під катом)

Доброго вам дня!

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

Отже, що мені потрібно зробити - невелике введення. У мене є програма, яка відповідає за моніторинг певного технічного об'єкта. Іншими словами, програма відображає стан об'єкта, що діагностується в графічній формі на екрані комп'ютера. Контрольно-вимірювальна апаратура на об'єкті надсилає дані у вигляді UDP-пакетів, моя програма обробляє ці пакети. До додатку підключаються спеціальні модулі, які визначають елемент на об'єкті — датчик тиску, температури, висоти. У цьому модулі зберігається така інформація:

1. Як датчик повинен виглядати на екрані (тобто набір графічних примітивів);

1а. Як датчик повинен виглядати у випадку, якщо параметр, що вимірюється, коректний;

1б. Як датчик повинен виглядати у випадку, якщо параметр, що вимірюється, некоректний;

1в. Як датчик має виглядати у разі, якщо немає сигналу з контрольно-вимірювальної апаратури.

Невеликий приклад, розглянемо найпримітивніший елемент - датчик тиску.

Апаратура на об'єкті відправляє для датчика тиску число 0, на екрані з'являється білий квадрат із чорним контуром. Число 1 — білий квадрат із зеленим контуром, число 2 — зелений квадрат із зеленим контуром, 3 — зелений квадрат із зеленим контуром та літерою «К» у центрі, і.т.д. - всього 16 варіантів.

Проблема в тому, що вся інформація про кольори, фігури повинна зберігатися в модулях. А датчики можуть бути не тільки квадратні, але і обертові, що просто заповнюються (на кшталт Progress Bar) іпросто цифрові. І це все потрібно уніфікувати.

Я зараз прийшов до наступної схеми: я маю набір графічних примітивів, з яких будується графічне представлення елемента. У випадку з датчиком тиску — контур, заливка та текст. І є ще об'єкт, який ставить відповідно до кожного значення від апаратури — відповідну фігуру та відповідні кольори. Виходить наведений приклад можна наступним чином:

Наведена схема хоч і об'ємна, але працює. Але як додавати ще й анімацію на кшталт обертання чи заповнення (progress bar) — взагалі незрозуміло.

Ну ось і виходить наступне питання — чи на правильному шляху, чи роблю свій велосипед? Може бути якийсь спосіб простіше уявити подібний модуль? Чи хтось займався подібними проектами та поділиться досвідом?