Необходимость классификации типов данных возникает в работе программистов и бизнес-аналитиков при решении нескольких задач – создании программного продукта, предназначенного для обработки данных, и при анализе информации, в особенности Big Data. Современные методы интеллектуального анализа данных, понятие на английском звучит как Data mining, рассматривают более широкий спектр значений, чем привычный Excel, оперирующий только числами, текстами и формулами. Но для программирования используются более сложные модели, созданные по международным и национальным стандартам.
В работе с программным обеспечением для обработки данных используют такое понятие типа данных – допустимое множество значений, обладающих общими признаками и объединяемых операциями, которые могут быть к ним применены. Например, для числовых данных применимы математические операции, а для текста – семантический анализ.
Различные характеристики определения можно найти в стандартах:
Понимание типа данных и его описание упрощают работу программиста и аналитика.
Если системный инженер опирается на идеологию ГОСТ, то существует больше гарантий, что созданное им ПО пройдет сертификацию ФСТЭК и будет в дальнейшем закупаться государственными организациями и банками. ГОСТ идентичен международному стандарту ИСО 10303-11:2004 «Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными» и фактически является его официально подтвержденным переводом.
Стандарт определяет:
ГОСТ предлагает разделение типов данных и их описание для языка EXPRESS, чаще всего используемого для моделирования АСУ. Для С++, Python и других дифференциация типов не отличается, меняются названия элементов и их ранжирование. При создании нового программного продукта каждый атрибут, локальная переменная или формальный параметр находятся во взаимосвязи с одним или несколькими типами данных. Стандарт вводит два варианта дифференциации: по сложности и по применению, с дальнейшим раскрытием взаимосвязей между ними.
По сложности типы данных классифицируются на:
По применению:
Для каждого типа данных в Стандарте приведены операции, которые могут с ними производиться.
По признаку сложности структуры выделяют пять групп, которые формируются за счет структуры и типа включаемых в нее элементов.
Анализ информации, которая хранится в файловой системе предприятия, помогает провести «СёрчИнформ FileAuditor».
Для разных языков программирования простые типы данных носят разные названия – primitive, fundamental, basic, plain, simple, built-in data type, но имеют общее функциональное содержание:
Стандартные простые типы – число, двоичный код, значение строки, выбор True или False (логический тип). В некоторых языках к простым данным относится время.
Эта модель рассматривает типы данных, представляющих набор значений с одинаковыми общими характеристиками, сгруппированными по определенному признаку.
Здесь рассматриваются:
Для агрегированных типов данных характерна одномерность представления. Многомерность, необходимая для операций математического анализа, достигается созданием массива или списка из агрегированных типов.
Здесь рассматриваются наборы данных, которые могут быть названы в документации к ПО, например, «Клиенты» или «Сделки». Они делятся на группы:
Объектные полностью формируются программистом, он же дает им обозначение. Полное описание данных этого типа содержит информацию, определяющую область возможных значений компонентов и описание допустимых операций над ними и их составными частями. Описание всегда является ссылкой на объект. Определенные типы не описываются, разработчик дает им только название-ссылку.
В этой модели предполагается наличие двух типов данных – перечисляемых и выбираемых. Для перечисляемых создается список объектов, наличие которых в группе допускается. Идентификационная метка для конкретного типа и выбор допустимых объектов находятся в зоне ответственности программиста. Перечень идентификаторов всегда ограничен, например, он может выглядеть так: type Cardsuit = (clubs, diamonds, hearts, spades). Здесь для игры перечисляются карточные масти.
Выбираемые или интервальные типы наборов предполагают задание пограничных значений, в рамках которых предполагается выбор компонентов группы. Пример такого интервала – дни месяца (typeDays = 1…31). Выбор всегда происходит из блока именованных компонентов.
К этой категории Стандарт относит редкие типы данных, используемых не во всех языках программирования. Они характерны для С++, Java, EXPRESS. Могут обобщать все агрегированные или все именованные типы данных для каких-либо целей. Область компонентов ограничена количеством элементов более низкого уровня, используемых в программном продукте.
В нее входит несколько вариантов объединения данных по тем или иным параметрам, связанных с их применением для конструирования программных продуктов. Компоненты и их объединения могут использоваться как:
В Стандарте рассматривается четыре группы типов по применению: конкретизирующие, параметрические, базисные и именованные.
Этот тип данных используется в двух целях: для задания постоянных характеристик элементов агрегированных групп и для определения атрибутов данных, описывающих конкретные объекты, существующие в программе.
Параметры этого класса всегда должны быть конкретными, неабстрактными, исключающими возможность расширения перечня или неверное толкование.
Они описывают алгоритмы, функции, процедуры. Также с их помощью описывают результаты применения функций. Из предыдущей модели в эти группы попадают конкретизирующие и обобщающие типы данных.
Они применяются для описания критериев формирования определенных групп – списков, пакетов. В эту подгруппу попадают простые, агрегированные, конструкционные и определенные типы.
Любой тип данных описывается с их помощью. Стандартно к ним относятся такие характеристики, как:
Именованные – модели, позволяющие присваивать имена отдельным группам. Они описываются программистом исходя из стоящих перед ним прикладных задач, но никогда не выходят за пределы значений, рекомендованных стандартом.
***
Рассмотренная в ГОСТ дифференциация типов данных позволяет конструировать программы наиболее четким образом. Приоритет описательной модели с отказом от любых абстрактных или произвольно расширяемых параметров позволяет решать задачу отсутствия в программах управления предприятием уязвимостей и незадекларированных возможностей.
По данным Лаборатории Касперского, в 2018 году на 40 % АСУ в стране зарегистрированы хакерские атаки. В связи с общим нарастанием уровня угроз растет и этот риск. Остановка производства или техногенная авария способны нанести ущерб не только предприятию, но и населению. Хакеры часто пользуются уязвимостями ПО, создаваемыми нечеткостью описания отдельных параметров, допускающими расширенное толкование.
Использование алгебраической классификации типов данных, позволяющей устранить любые неточности в описывании компонентов и рассматривающей каждый объект в двух измерениях, способно снизить уровень рисков.
01.12.2020
Подпишитесь на нашу рассылку и получите
свод правил информационной безопасности
для сотрудников в шуточных