четверг, 18 февраля 2010 г.

Чтоб не забыть формулировку

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

От теории к практике (пример реальной разработки)

Архитектура системы: Oracle (данные + бизнес логика) + JSP на Сервере приложений + Internet browser.
Вся информация о структуре операций лежит в БД.
Идеальный операционный GUI, полностью формируемый на основании Операционного графа:

Сценарий работы пользователя выглядит следующим образом:
  1. пользователь выбирает доступный узел графа, т.е. операцию, которую можно выполнить в данный момент;
  2. пользователь задаёт параметры выбранной операции;
  3. пользаватель инициирует исполнение операции;
Операции, расположенные выше по иерархии (зависимые от подчинённых), становятся доступными к исполнению после того, как будут выполнены все исходные операции (подчинённые в соответствии с графом).

Приведённая форма прорисовывается автоматически, на основании данных, внесённых в следующую достаточно простую физическую структуру:













Причём, обратите внимание, что в таблице OPERATION_GRAPH, присутствуют поля BEGIN_DATE и END_DATE, что позволяет менять набор операций системы с течением времени без перепрограммирования, а также возможность проводить операции для прошедших периодов.

среда, 17 февраля 2010 г.

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

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

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

Контейнерная операция - операция, включающая в себя одну, или более подчинённых операций и не порождающая никаких версий данных, кроме как версий, порождённых подчинёнными ей операциями.

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

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


Набор объектов версии - набор объектов, относительно которых проводилась соответствующая листовая операция (например, это может быть набор договоров, относительно которых проводилась операция и т.п.)

Операционный граф - граф зависимостей типов листовых операций:
– узел графа соответствует уникальному типу листовой операции;
– направленная связь из одного узла в другой - означает связь по данным между листовыми операциями.

Фактический операционный граф - граф зависимостей между фактически проведёнными операциями, или, что эквивалентно, между версиями данных; строится на основе операционного графа и функции определения зависимости между листовыми операциями.

Функция определения зависимости между фактически проведёнными ЛО - в качестве входных параметров принимает номера двух ЛО и на основании:

  1. типов соответствующих листовых операций;
  2. операционного графа;
  3. интервалов версий данных, сформированных ЛО;
  4. наборов объектов версий;

- определяет наличие, или отсутствие связи между двумя заданными операциями.

ER-модель операций:







Сценарий проведения операции:

суббота, 13 февраля 2010 г.

Движение — всё, цель — ничто

Начнём, пожалуй.

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

to be continued...

Introduction

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