Классификация типов данных - SearchInform

Классификация типов данных

Защита информации
с помощью DLP-системы

Необходимость классификации типов данных возникает в работе программистов и бизнес-аналитиков при решении нескольких задач – создании программного продукта, предназначенного для обработки данных, и при анализе информации, в особенности Big Data. Современные методы интеллектуального анализа данных, понятие на английском звучит как Data mining, рассматривают более широкий спектр значений, чем привычный Excel, оперирующий только числами, текстами и формулами. Но для программирования используются более сложные модели, созданные по международным и национальным стандартам.  

Определение понятия 

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

Различные характеристики определения можно найти в стандартах:

  • ISO/IEC/IEEE 24765-2010, применяемом инженерами информационных систем;
  • ГОСТ Р ИСО 10303-11-2009, говорящем о создании систем автоматизации и их интеграции.

Понимание типа данных и его описание упрощают работу программиста и аналитика.

Виды классификации

Если системный инженер опирается на идеологию ГОСТ, то существует больше гарантий, что созданное им ПО пройдет сертификацию ФСТЭК и будет в дальнейшем закупаться государственными организациями и банками. ГОСТ идентичен международному стандарту ИСО 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. Могут обобщать все агрегированные или все именованные типы данных для каких-либо целей. Область компонентов ограничена количеством элементов более низкого уровня, используемых в программном продукте.

По признаку применения

В нее входит несколько вариантов объединения данных по тем или иным параметрам, связанных с их применением для конструирования программных продуктов. Компоненты и их объединения могут использоваться как:

  • первичные единицы списков или пакетов;
  • элементы списка, из которого производится выбор;
  • базисные характеристики для формирования групп или иных объектов.

В Стандарте рассматривается четыре группы типов по применению: конкретизирующие, параметрические, базисные и именованные.

Конкретизирующие

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

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

Параметрические

Они описывают алгоритмы, функции, процедуры. Также с их помощью описывают результаты применения функций. Из предыдущей модели в эти группы попадают конкретизирующие и обобщающие типы данных. 

Базисные типы

Они применяются для описания критериев формирования определенных групп – списков, пакетов. В эту подгруппу попадают простые, агрегированные, конструкционные и определенные типы. 

Любой тип данных описывается с их помощью. Стандартно к ним относятся такие характеристики, как:

  • True or False (Булев тип);
  • дата;
  • время;
  • перечисление;
  • целое число 32 бита;
  • целое число 64 бита;
  • вещественность;
  • данные о строке.

Именованные – модели, позволяющие присваивать имена отдельным группам. Они описываются программистом исходя из стоящих перед ним прикладных задач, но никогда не выходят за пределы значений, рекомендованных стандартом.

***

Рассмотренная в ГОСТ дифференциация типов данных позволяет конструировать программы наиболее четким образом. Приоритет описательной модели с отказом от любых абстрактных или произвольно расширяемых параметров позволяет решать задачу отсутствия в программах управления предприятием уязвимостей и незадекларированных возможностей.

По данным Лаборатории Касперского, в 2018 году на 40 % АСУ в стране зарегистрированы хакерские атаки. В связи с общим нарастанием уровня угроз растет и этот риск. Остановка производства или техногенная авария способны нанести ущерб не только предприятию, но и населению. Хакеры часто пользуются уязвимостями ПО, создаваемыми нечеткостью описания отдельных параметров, допускающими расширенное толкование.

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

01.12.2020

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