Данный документ является обработкой(компиляцией) документа <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 репозитория!