Новости
09.05.2023
с Днём Победы!
07.03.2023
Поздравляем с Международным женским днем!
23.02.2023
Поздравляем с Днем защитника Отечества!
Оплата онлайн
При оплате онлайн будет
удержана комиссия 3,5-5,5%








Способ оплаты:

С банковской карты (3,5%)
Сбербанк онлайн (3,5%)
Со счета в Яндекс.Деньгах (5,5%)
Наличными через терминал (3,5%)

РЕАЛИЗАЦИЯ МОДЕЛИ КОНФИГУРИРОВАНИЯ ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЯ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ PYTHON

Авторы:
Город:
Таганрог
ВУЗ:
Дата:
05 марта 2016г.

Введение

Для построения конфигурируемой пользователем информационной системы необходимо обеспечить возможность задания пользователем  своей деятельности в доступной ему форме, а затем – автоматическое (автоматизированное) отображение такого описания в реализованных механизмах информационной системы.

Первой задачей является обеспечение способа задания действий пользователя, из которых состоит его деятельность, нуждающаяся в автоматизации [1, 2].

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

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

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

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

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

Модель действий пользователя

В качестве универсальной модели активности пользователя предлагается использовать методологическую категорию "труд". Одним из первых начал применять методологические категории в анализе познания Г. П. Щедровицкий [3], пытавшийся прямо перенести на познание структуру труда. Структура познания представляется в виде механизма действия выполняемой субъектом, состоящего из следующих характеристик[4]: элементы (Э), функции (Ф), инструменты (И)  и результат. Результатом мыслительной работы есть цель ее выполнения (Рисунок 1). Формой содержания работы, как внешнего представления внутреннего знания об объекте есть метод.  Метод, как форма содержания  мыслительной работы, находится внутри мыслительной работы. Абстрактная форма метода состоит из трех структурных элементов, которые имеют то же значение, что и для работы[4] – Э, Ф и И (Рисунок 1). Метод является содержанием абстрактной формы мыслительной работы. Метод, как абстрактная форма, заполнен абстрактными знания об объекте. Можно отметить, что метод является отражением принципа двойственности – он является содержанием работы, но, одновременно, и формой для содержания.

Таким образом абстрактная форма мыслительной работы содержит внутри себя форму своего содержания – метод, а внутри метода находится содержание – знания об объекте.

Такая модель действий пользователя позволяет построить модель его деятельности, как совокупности взаимосвязанных действий.

Программная реализация компонентов

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

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

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

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

Программная реализация на языке Python

Рассмотрим реализацию данной идеологии на высокоуровневом языке. Одним из языков, который хорошо подходит для реализации такой идеологии является язык программирования Python. Язык Python реализует объектно-ориентированный подход и динамическую типизацию. Для реализации абстрактного класса на Python используется модуль abc, с помощью которого определяется абстрактный класс действия AbstractAction.

class AbstractAction:

  metaclass   = ABCMeta

def   init__(self, goal, elem, func, res): self.name = goal

self.goal = goal self.elem = elem self.func = func self.res = res

def do(self, res): pass

def getElementsValue(self): for el in self.elem:

el.getElementsValue()

Данный класс AbstractAction является базовым для всех последующих, а именно, классов элемента, функции и результата – Element, Function, Result, соответственно. Данные классы являются также абстрактными и используются как составляющие в классе действия.

Совокупность описанных четырех абстрактных классов является базовой для всех классов действий, которые необходимо реализовывать для действий (см. Рисунок 2).




Реализация пользовательского действия конструируется из       уже реализованных классов действий.

Базовыми элементами такого конструирования являются классы базовых действий.

Например, для реализации арифметических действий базовыми классами являются класс переменной, константы и классы арифметических действий сложения, вычитания и т.д.

Выполнение действия по вычислению выражения «a+b» может быть реализовано в виде следующего класса:

class Addition(AbstractAction): def   init__(self):

self.func = OperationAdd()

self.elem = [Variable('a'), Variable('b'), ] self.getElementsValue()

self.goal = 'Addition of 2 arguments a+b' self.instr = "no"

def do(self):

self.res = self.func.do(self.elem[0],self.elem[1]) return self.res.Value

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

Заключение

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

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

Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 14-07-00910a.

 

 

Список литературы

1.     Рогозов Ю.И., Свиридов А.С. Элементы управления в структуре информационной системы. Информатизация и связь. 2012. № 5. С. 112-116.

2.     Свиридов А.С. Конфигурирование информационных систем с точки зрения систем управления. Известия ЮФУ. Технические науки. 2014. № 6. С. 168-172.

3.     Щедровицкий Г. П. Два понятия системы // Труды XIII Международного конгресса по истории науки и техники. М., 1974. Т.1а. [Электронный ресурс]. URL: http://www.fondgp.ru/gp/biblio (дата обращения: 20.08.2012).

4.     Рогозов Ю.И., Свиридов А.С. Концепция построения методологических информационных систем. Информатизация и связь. 2014. № 2. С. 11-14.

5.     Y. Rogozov, A. Sviridov, S. Kutcherov, W. Bodrow, "Purpose- Driven Approach For Flexible Structure- Independent Database Design," in Proceedings of the 5th International Conference on Software and Data Technologies, ICSOFT, 2010. С. 356-362.