OpenSCADA 0.3.0
Данный документ является обработкой(компиляцией) документа <ChangeLog> системы OpenSCADA версии 0.3.0.
Ключевыми особенностями данной версии являются:
- обновленная (актуализированная) документация проекта системы OpenSCADA;
- новые документы: to_do.sxw и roadmap.sxw;
- приведены к однообразному виду имена функций всех объектов;
- новое модульное API подсистемы “БД”;
- объединение механизма хранения данных объекта и механизма доступа к БД вокруг объекта TConfig;
- удалены модули – Special::test_bd и Special::test_transp;
- все подсистемы и узлы переведены на использование механизма авто-освобождения ресурсов и прямого доступа к объекту.
Новые и значительно обновленные модули:
- основанный на библиотеке QT конфигуратор системы OpenSCADA - UI::QTCfg;
- модуль с полной поддержкой БД MySQL - BD::my_sql;
- модуль тестирования функций ядра – Special::test_kernel;
- Информацию по модулям можно получить из документации на них!
1. Обновленная документация проекта системы OpenSCADA.
Обновление документа проекта направленно на систематизацию информации о системе и её модулях. Значительно обновлены и дополнены подверглись следующие разделы:
- Внутренняя структура ядра системы. Полностью переработаны все существующие подразделы и добавлены важные подразделы:
- Атрибуты параметров;
- Язык управления системой (TContr);
- XML в системе OpenSCADA (XMLNode);
- Ресурсы в системе OpenSCADA (ResAlloc, THD, AutoHD).
- Организация и структуры баз данных. Обновлено описание структур старых таблиц и добавлено описание структур новых таблиц.
- API модулей модульных подсистем. Полностью обновлено описание API модулей модульных подсистем.
2. Новые документы: to_do.sxw и roadmap.sxw
Для предоставления информации о плане развития и задачах требующих реализации созданы два новых документа.
to_do.sxw – содержит сортированный по подсистемам, узлам и модулям список задач ждущих реализации.
roadmap.sxw – содержит ориентировочный график выпуска новых версий и список ключевых задач которые должны быть реализованы к указанной версии.
3. Приведены к однообразному виду имена функций всех объектов
В целях систематизации внутреннего API системы и API модулей модульных подсистем имена публичных методов были приведены к общему виду. В качестве схемы именования методов классов был выбран метод использующийся в языке Java и QT библиотека. Суть метода заключается в том что:
- именовании всех объектов(классов) начинать с большой буквы, также как и слова внутри названия начинать с большой буквы. Например: “TConfVal”. Внутреннее соглашение рекомендует имена классов начинать с символа 'T', а имена структур начинать с символа 'S';
- имена публичных методов всегда начинать с маленькой буквы, а слова внутри названия с большой. Например: “valGet”. Внутреннее соглашение рекомендует в названии метода первым писать имя сущности а затем операцию над ней.
4. Новое модульное API подсистемы “БД”
Причиной создания нового API подсистемы “БД” стала острая необходимость в расширении функций подсистемы “БД” до поддержки методов работы с современными БД. Суть заключалась в методах запроса значений полей(строк) не по номеру строки и номеру столбца а по ключевому элементу. Новое API основано на наличии ключевых элементов в структуре таблицы и запросе к полям соответствующим значению ключевого(ых) элементов. Новое API также предусматривает запрос поля(строки) целиком с помещением значений в объект TСonfig, кроме того структура TConfig определяет структуру таблицы БД.
5. Объединение механизма хранения данных объекта и механизма доступа к БД вокруг объекта TConfig
Для упрощения доступа к данным в БД и систематизации механизма хранения внутренних данных было принято решение объединить эти операции вокруг объекта TConfig поскольку он хранит значения данных их типы и структуру. Механизм позволяет абстрагировать работу с данными БД рамками объекта TConfig. А функции поддержания структуры БД и доступа к элементам БД переложить на модули подсистемы “БД”.
6. Удалены модули – Special::test_bd и Special::test_transp
С целью свести все тесты тестирования функция ядра системы в один модуль тесты БД и Транспортов были перемещены в модуль тестов ядра Special::test_kernel.
7. Все подсистемы и узлы переведены на использование механизма авто-освобождения ресурсов и прямого доступа к объекту
Механизм авто-освобождения ресурсов построенный на основе шаблона AutoHD позволяет гарантировать прямой доступ к узлам системы без угрозы удаления объекта другим потоком. Также механизм обеспечивает автоматическое освобождение ресурса в случае разрушения AutoHD в деструкторе, что позволило значительно упростить и сделать читабильней исходный код с повышением общей надёжности системы. В данной версии все подсистемы и узлы переведены на использование данной методики.
8. Краткие замечания об остальных важных изменениях
Для общей информации приведён список комментариев к важным изменениям в системе:
- Система: в составе системы выпущены новые версии модулей:
- ui_qtcfg - 0.9.0
- ui_web_cfg - 1.1.0
- bd_my_sql - 1.0.0
- bd_direct_dbf - 1.5.0
- spec_test_kernel - 1.0.0
- arh_base - 0.3.0
- prot_http - 1.1.0
- cntr_sys - 0.6.0
- cntr_virt1 - 0.0.15
- tr_socket - 1.1.0
- БД: удалены таблицы transport.dbf и arhive.dbf и добавлены вместо них transp_in.dbf и transp_out.dbf в связи с расщеплением подсистем “Транспорты” и “Архивы” на две ветки;
- Система: удалены из репозитория и пакета с исходниками все *.pot файлы, поскольку они автоматически генерируются при сборке пакета;
- Система: для повышения надёжности изменён способ инициализации TFld и подключения его к объекту структуры TElem;
- Система: множество структур были занесены в область имён своих родительских объектов;
- TContr: добавлены функции кодирования и декодирования элементов пути;
- Система: исправлена ошибка не освобождения ресурса на момент ожидания удаления объекта в THD;
- Tmessage: Системные сообщения теперь помещаются в буфер сообщений независимо от уровня отладки;
- Система: обновлено содержимое языка управления всех узлов;
- Система: добавлено удаление полей БД в случае удаления самих объектов через язык управления.
Для более детальной информации о изменениях в текущей версии обращайтесь к <ChangeLog> и исходным текстам системы. Текущее состояние системы всегда можно получить с CVS репозитория!