Friday, December 11, 2015

Отличный проект



A free and open source modelling tool to create ArchiMate models and sketches. Used by hundreds of Enterprise Architects throughout the world.


Archi

Опенсорс, Eclipse RCP - супер!  Есть маленькое сомнение в производительности. Вот бы написать конвертер своих проектов из yEd в Archi, тогда бы сразу всё стало понятно.

UPD1:
Archi установился и запустился из исходников(из гита) в пол пинка(30 минут).

UPD2:
Конвертанул DrakonGen из yEd в Archi. Пока в черне так:

Tuesday, December 8, 2015

Финита ля ...


Постскриптум к предыдущему посту.

Проект сдан, по крайней мере, формально. На мой взгляд, реализован вполне успешно и сейчас самое время сделать предварительные выводы.  Итак...


Sunday, October 18, 2015

Лебединая песТня.


     Давно мечтал об этом и вот наконец-то, сбылась "мечта идиота",  я сделал свой кусок реального проекта(для одного весьма центрального банка одной весьма страны) используя визуализацию кода. Забавно, но, кажется, это последний мой проект в IT.

Когда я показал картинки алгоритмов, Заказчик сказал - "я восхищен вашим подходом", (эх, при этом он не знает ещё о кодогенерации, и никогда не узнает). Коллеги-разработчики сказали - "главное, чтобы нас не заставили делать так-же".  И это очень верно, это лишняя работа для них.

Несколько картинок:

Thursday, November 20, 2014

Страсти по редактору


"Мышки плакали, кололись, но продолжали есть кактусы".
(вообще-то, это анекдот, да только не в моём случае)



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


Saturday, November 15, 2014

Принципы



"Не могу поступаться принципами"
(Нина Андреева)


Мои Принципы визуального программирования.


Решил собрать на одну страничку всё, чем не могу поступаться:

Принцип Красоты  - Красота и эстетический вид кодограммы имеют приоритет над качеством и функциональной полнотой получаемого из неё кода. Это наиглавнейший принцип.

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

Принцип Полёта - Легкое масштабирование картинки, возможность удобно перемещаться от общего к частному дает полноту и связанность восприятия.

Принцип Импровизации - Спецификации не догма, всё должно подчиняться и подстраиваться для удовлетворения принципа Красоты, но нельзя нарушать строгие правила.

Принцип Алгоритмической инвариантности - Алгоритм не может зависеть от конкретной реализации получаемого кода.


Friday, November 14, 2014

Бочка дёгтя в ложке мёда


(15.11.2014)

"Вот казалось бы, всё есть, а счастья нет"
(народная идиома)


   Как известно, отрицательный результат - тоже результат. Но для человека не достигшего успеха, это является слабым утешением, так как и дураку ясно, что ложных путей тысячи, а плодотворных тропок раз-два и обчёлся. Я как могу пытаюсь продвинуться в визуализации, в том далеко несовершенном виде, в котором её понимаю, однако, есть смутное опасение, что ничего путного не выйдет. Решил все подобные сомнения, все трудности с которыми сталкиваюсь, собирать здесь и наполнить эту "бочку дегтя" до краев, а ложка мёда в ней на дне есть. И ложечка эта заключается в том, - что уже не возникает подсознательного желания забросить работу на верхнем уровне, уровне кодограмм и опять спуститься в адову кочегарку текстового кодирования.

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

Совершенно очевидно, что это вовсе не проблема, - нужно использовать старую, добрую декомпозицию. Вопрос только какую? Разбивать на более мелкие силуэты, или выделять блоки визуально?

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



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


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

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


 Пока всё, буду добавлять...лять...лять...  


Wednesday, November 12, 2014

Исчисление икон




Чувствую, как-то мне неудобно работать в кодограмме и что-то мешает перестраивать логику легко и непринужденно, как оно задумывалось в идеале) 


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


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

Однако, эта "краснуха" существенна только для схемы самого драконгена, а для рабочих схем не так существенна... 

Хотя и ясно как инструменталку сделать но не буду. Хочется уже к корабликам вернуться.