четверг, 25 января 2018 г.

Микро примеры по использованию языка Capella (snippets)

Чтобы научиться говорить на новом языке не достаточно изучить грамматику, нужно начинать говорить. Так и с языком моделирования - нужно учиться описывать различные системные конфигурации с использованием данного языка.

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

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

Зелеными прямоугольниками на рисунке изображены функции. Синими/голубыми - компоненты. Компоненты выполняют функции, которые находятся внутри.

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


Видео демонстрация учебной модели

Доступна видео демонстрация модели
Управление железнодорожным переездом для Capella
https://www.youtube.com/watch?v=4jSoVNb4gaQ



Размещение функции по компонентам структуры в Capella

Сделал небольшую презентацию которая иллюстрирует как выглядят функциональныные/структурные описания в Capella.
Презентация


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


Возможность исполнения/анимации разрабатываемых моделей и инструментов

http://gemoc.org/ - фреймворк для разработки языков/инструментов моделирования, позволяющий добавить возможность исполнения/анимации к разрабатываемым моделям/инструментам.

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

По ссылке презентации об исполнении моделей Capella
http://gemoc.org/pub/anr/finalworkshop/2016-03-anr-gemoc-workshop-final-experimentations.pdf

понедельник, 22 января 2018 г.

Ускоряем контекстное меню в Capella Project Explorer

В последних версиях Capella Project Explorer контекстное меню,  используемое для создания элементов и диаграмм, стало работать ну очень медленно. Пришлось искать решение. И решение было быстро найдено.

Замедление меню имеет место в Capella версий 1.1.x (Eclipse Mars) и 1.2.x (Eclipse Neon).

Разработчики Capella быстро отреагировали и нашли решение для ускорения меню.
https://bugs.polarsys.org/show_bug.cgi?id=1916

В моем случае работа меню была восстановлена после следуюших действий:
- Обновление Java 8 Update 151 to Java 8 Update 161
- Добавление дополнительного флага в eclipse.ini

В Eclipse Mars и Neon есть проблема со скоростью работы динамических меню. Пока в Eclipse реализован workaround. Для его применения в текущей версии Capella необходимо добавить в файл eclipse.ini флаг:

-Declipse.workaround.bug467000=true
В результате eclipse.ini для Capella 1.2.0 должно выглядеть вот так:
-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711. jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1. 401.v20161122-1740
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Declipse.workaround.bug467000=true
-Xms1000m
-Xmx3000m
-Xss4m

Данный workaround будет включен в следующей версии Capella, а пока нужно добавлять вручную. 

Поддержка клавиатуры для создания элементов модели Capella

Реализовал поддержку клавиатуры для создания новых элементов модели в Capella Project Explorer.

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

Создавать элементы с помощью контекстного меню само по себе медленно, а тут еще возникла проблема, что контекстное меню стало очень долго появляться. Как оказалось, проблема производительности возникла из-за Java 151 updata. Обновление до Java 161 решило проблему.

Но благодаря этой проблеме, я наконец-то реализовал поддержку клавиатуры для создания элементов модели в Capella Project Explorer.

Вот так это теперь выглядит



Выложил update site с плагином по ссылке (версия 0.2)
https://yadi.sk/d/IOs23v7q3RgFjg

В данной версии доступны следующие команды с клавиатуры:
- Ins - добавить элемент\пакет того же типа после выбранного элемента\пакета
- Alt-Ins - добавить дочерний элемент\пакет того же типа для выбранного элемента\пакета
- Ctrl-Ins - добавить элемент с типом по-умолчанию в выбранный пакет

Но есть и недоделка. Фокус выбора элемента должен перемещаться на вновь созданный элемент. После этого можно нажать F2 для его переименования. В данной версии фокус остается на исходном элементе и для переименования необходимо предварительно выбирать новый элемент:
- если новый элемент находится на том же уровне, то достаточно нажать клавишу вниз и  затем нажать F2
- если новый элемент создан внутри выделенного элемента и это первый элемент, то тоже достаточно нажать клавишу вниз и нажать F2

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

Разработчики пишут, что в Thales для создания модели использую диаграммы, а браузер модели не используют. Мне это не понятно и кажется не правильным. Однако, после выкладывания начальной версии плагина, разработчики Capella написали мне, что в будущем можно будет интегрировать мой код по поддержке клавиатуры в Capella.

пятница, 19 января 2018 г.

1С: Enterprise Development Tools основана на Eclipse, EMF, Xtext

Новая среда разработки для 1C Предприятия основана на Eclipse и технологиях EMF и Xtext!

Язык программирования 1С в редакторе ниже реализован с использованием EMF и XText



Обзор среды разработки 1С: Enterprise Development Tools
http://v8.1c.ru/overview/release_IDE/

Статья на Хабре про технологии Eclipse для 1С: Enterprise Development Tools
https://habrahabr.ru/company/1c/blog/323508/

среда, 17 января 2018 г.

Интеграция стандартных/DSL языков в редакторы на основе технологии языковых серверов

Технология языковых серверов позволяет разрабатывать стандартные/DSL текстовые языки один раз и использовать их в различных редакторах, таких как Eclipse, Visual Studio Code и т.д. Технология языковых серверов изначально разработана Microsoft, сделана open source, и поддержана в других проектах.

Microsoft разработала новый редактор Visual Studio Code, который изначально основан на технологии языковых серверов.
https://code.visualstudio.com/

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

На следующей странице доступен список языков, для которых реализованы языковые сервера. Список достаточно внушителен.
https://langserver.org/

Примечательно, что над разработкой редактора Visual Studio Code работает Erich Gamma, один из ключевых разработчиков Eclipse.

Технология языковых серверов теперь поддержана и в Eclipse в рамках проекта LSP4E
https://projects.eclipse.org/projects/technology.lsp4e
Пока это версия 0.4, версия 1.0 ожидается летом 2018 года.
Например, в результате данной поддержки в Eclipse становится возможным использовать Net языки, такие как C#
https://marketplace.eclipse.org/content/acute-c-edition-eclipse-ide-experimental

Ранее я писал про технологию Xtext, которая позволяет создавать собственные DSL и редакторы для них. Ранее речь шла от редакторах в рамках Eclipse. Теперь же применение данных DSL расширяется.

Возможность генерации языковых серверов для собственных DLS теперь включена и в средства разработки Xtext. Это позволяет разрабатывать собственные DSL, доступные как в Eclipse, так и в Visual Studio Code
https://www.eclipse.org/community/eclipse_newsletter/2017/may/article5.php

Учебная модель управления железнодорожным переездом для Capella

Новая учебная модель Level Crossing Traffic Control для Capella доступна по ссылке.
Данная модель ииспользуемая для иллюстрации Arcadia в книге
Model-based System and Architecture Engineering with the Arcadia Method

Данная модель описывает систему управления железнодорожным переездом и включает все уровни описания : от операционного анализа до организационного (EPBS). Это самая большая и наиболее полная модель Capella, доступная в открытом доступе. Рекомендую.


среда, 10 января 2018 г.