Здравствуйте, Неизвестный пользователь
 
Пообщаться
Шутки
Ссылки
Книги
Статьи
Новости
Версии
 
Логин

Пароль

Регистрация

Статьи

28.02.2011/147

Действующая модель

Сергей Шмаков
Попытка сформулировать новую технологию программирования

Требования

Цель

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

Общие требования

Для получения готовой программы нужны следующие элементы:

  • Модель
  • "Преобразователь" модели в код
  • Декоратор(-ы)

Программа (вообще система, не только исполняемый код или БД) описывается моделью. Модель может включать:

  • Сущности и связи между ними
  • Объекты
  • Поток объектов
  • Процессы и связи между ними

Кроме модели, нужно:

  • "Преобразователь" модели в программу

Пожелания

Постараться уйти от чисто "технических" описаний атрибутов - "displayed", "read only", "mandatory" и т.п.

Модель

Объекты

Это похоже на классическое описание классов - самое простое, давно освоенное дело.

Нужно описание объектов, с которыми работает пользователь, точнее, это бизнес-сущности. Объект описывается как совокупность (агрегат) сущностей, реквизитов и связей. У объекта всегда должна быть определена главная сущность, экземпляр которой соответствует экземпляру объекта. Эта сущность может отвечать за множество объектов.

В описании объекта могут декларироваться ограничения на связи и реквизиты. Например, вводим сущность "человек", тогда объект "мужчина" - это "человек", у которого реквизит "пол" имеет значение "муж.".

Объекты классифицируются в иерархической структуре (или тэговой?). Варианты классификации:

  • Стереотипы - линейный список
  • Единая для всех иерархическая структура классов
  • Пара "тэг-значение"
  • Отдельный класс "классификатор". Создаем столько классификаторов, сколько нам надо, иерархических и нет, привязываем к ним объекты. Есть стандартные классификаторы (для облегчения первоначального заполнения), которыми можно не пользоваться.

Объект имеет текущее состояние (многосегментное?) - не понятно, надо ли, может лучше обойтись текущим положением объекта на DFD диаграмме.

Запускаем модель и можем увидеть результат - работающее приложение, пусть медленно, но работающее. Вариант (худший, но часто единственный) - через компиляцию, как в RAD.

Процессы

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

Выборки

Определяем выборки (view). Декоратор работает только с выборкой. Объекты включаются в выборку

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

Действия

Важно

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

Группы действий (пунктов меню), по примеру IE, Outlook

  • Файл - работа с документом в целом
    • создание, открытие, сохранение, удаление
    • закрытие окна с объектом
  • Редактирование
    • работа с clipboard
    • функции по изменению содержимого объекта
    • поиск
  • Просмотр - варианты отображения, управление декоратором
  • Избранное - переход к другим представлениям, наращиваемый пользователем список
  • Переход - переход к другим представлениям, статический список
  • Действия
    • функции по изменению состояния объекта
  • Инструменты - управление системой (специальный singletone)
  • Помощь
    • вызов описания текущего контекста
    • поиск в описаниях
    • подключение и работа со сторонними описаниями и help-ами

Если действие запрещено, то оно либо не показывается, либо показывается запрещенным

Преобразователь

Способы редактирования объектов

  • Форма полного редактирования. Выглядит как таблица из двух столбцов: "поле" и "значение".
  • Список объектов - грид
  • Другие формы, каждая имеет свое предназначение (классификация форм по цели). Одно предназначение может иметь много форм (?).

На будущее

  • просмотр (отладка) выполнения программы по графической модели
  • метаданные (общие правила) могут использоваться на правах read-only в других проектах

Клавиши

Определяем группы семантически близких действий, например:

  • Clipboard
  • работа с окнами - переход, изменение размеров, закрыть
  • операции поиска, фильтрации
  • выполнение обработки объекта
  • создание, сохранение, удаление объекта, перемещение его в другое место хранения, дублирование
  • посмотреть детали объекта

Группа/подгруппа действий --> семантика отдельного пункта -->

Изменено: 28.02.2011