2010-02-04 5 views
4

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

Этот вопрос пришел в голову в результате открытия, что UML и его схемы терпит неудачу при описании сложных функциональных возможностей пользовательского интерфейса с событийного потока исполнения (т.е. JavaScript/JQuery большие проекты.)

EDIT: I я думал об использовании BPMN, но он не был создан для этой цели.

+0

Есть некоторые конкретные технологии DSL,, но не стандарта я не знаю. Поэтому, пожалуйста, прежде чем создавать что-либо, если вы хотите, чтобы это было полезно, подумайте о различных парадигмах пользовательского интерфейса (не все динамическое поведение всегда поддерживается). Пожалуйста, не делайте эту технологию специфичной и, пожалуйста, рассмотрите текстовый синтаксис для такой спецификации. Если вы выберете текстовый путь, загляните в Eclipse TMF Xtext. –

ответ

3

Может быть user interface prototypes или storyboards может быть полезно ... они не являются частью «языка моделирования», но очень хорошо зарекомендовавших себя методов проектирования GUI ...

+0

Прототипы пользовательских интерфейсов предназначены только для удобства использования статических интерфейсов. Материалы раскадровки выглядят лучше, но у них нет спецификации. Я не уверен, может ли он быть оценен как «лучше, чем диаграммы состояний»;), и он возвращает мне BPMN http://en.wikipedia.org/wiki/Business_Process_Modeling_Notation – naugtur

3

Одна вещь, которая приходит на ум, Джесси Джеймс Гаррет Visual Vocabulary for Information Architecture.

+0

Прохладная вещь для статических страниц. Может быть полезно в моем случае, если взломано немного :) – naugtur

2

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

Главным образом, я думал, что если профиль UML или метамодель определены с компонентами и событиями основного интерфейса («текстовое поле», «один клик» и т. Д.), Различные реализации пользовательского интерфейса (HTML, Swing, AJAX) может быть сгенерирован с использованием преобразований на XMI модели экземпляра. При этом, по крайней мере, был бы более четкий и формальный способ описания функциональности данного пользовательского интерфейса.

+0

Это близко к тому, о чем я думал. Я также добавлю новый способ представления событий на диаграмме. – naugtur

1

Я просто наткнулся на ваш вопрос, и это проблема, которую я серьезно отношусь. Here's my answer, и я использовал его в различных формах более 20 лет.

В основном, здесь критерии я искать в таком описательном языке:

  • язык не должен быть полит вниз и не в состоянии вещей, как доступ к данным или основным потока неконтролируемых примитивам, как IF, FOR и подпрограммы. Я выполняю это, создавая язык поверх базового стандартного языка, используя макросы и определения функций. Таким образом, он не требует синтаксического анализатора или интерпретатора, имеет прямой доступ к данным приложения и имеет примитивы контрольного потока основного языка (но только около из них).
    Причина включения примитивов управления потоком в описательный язык для их описательной полезности. Конструкция IF (test) -ELSE-END - это способ сказать, что один из двух наборов элементов управления должен отображаться в зависимости от значения (test). Конструкция FOR - END - это способ сказать, что набор элементов управления, отображаемых в кратность, например, линейный массив элементов управления. Они могут быть вложены для получения 2-D матрицы элементов управления, если это необходимо. Подпрограмма (с параметрами) может отображать набор элементов управления и затем может быть вызвана в нескольких местах для повторной репликации этого набора несколько раз. Без таких примитивов в DSL такие структуры трудно определить.

  • Язык не должен требовать, чтобы пользователь, определяющий пользовательский интерфейс, имел дело с проблемами, которые существуют только для реализации, такими как обработка входных событий, создание, удаление и именование элементов управления и перемещение данных между элементами управления и Данные Приложения. Так, например, каждое редактирование, кнопка или другой элемент управления представляет собой одну строку кода. Код для обработки событий, таких как щелчок на кнопке, записывается непосредственно рядом с строкой кода, определяющим кнопку (не в отдельной функции или закрытии). Связывание элементов управления с данными приложения обрабатывается «под» и не является проблемой программиста пользовательского интерфейса.Чтобы сделать все это, он основан на структуре управления под названием «Дифференциальное исполнение», на которую я наткнулся в 1986 году. Он основан на инкрементальном повторном выполнении программы таким образом, что он может постепенно обновлять свой вывод. В этом случае выход представляет собой набор элементов управления на поверхности окна. Эти элементы управления автоматически создаются, удаляются, перемещаются или иным образом изменяются в ответ на изменения состояния приложения, без необходимости программировать пользовательский интерфейс с точки зрения изменений состояния.

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

+0

Кажется, что вы пропустили некоторые части моего вопроса. Я говорил о не-программировании. Это должно быть больше похоже на UML-диаграмму, как я уже сказал, - для документации, предваряющей любую реализацию GUI. Итак, вы говорите о создании графического интерфейса из приложения, тогда как я спросил о том, какие материалы для графических дизайнеров использовать, которые могут обрабатывать функциональность/поведение, а не внешний вид и позиционирование. – naugtur

+0

Что касается вашего ответа, который также занимается интересными вещами, я скорее за то, что программист думает только об изменениях событий/состояний. Быть в состоянии забыть о проблемах с интерфейсом было бы неплохо, но тогда вы потеряете контроль над «внешностью». И большинство запросов, созданных клиентами, похожи на «это приятно, но положите это поверх этого и дайте ему некоторые градиенты сияния и тени». И он вернулся к разработке технологий интерфейса. Вот почему я думаю, что не должно быть элементов управления привязкой, но интерфейс должен быть клиентом приложения, действующего как сервер. [продолжение в следующем комментарии] – naugtur

+0

[продолжение] Тогда логика должна иметь своего рода api, а клиент - это просто приложение интерфейса + подключение, которое легко поддерживать парнем интерфейса. Любая абстракция над элементами управления интерфейсом затрудняет и быстро делает любое глупое бесполезное изменение, которое хочет клиент, только потому, что он выглядит лучше или его графический дизайнер обнаружил некоторые новые трюки для фотошоп. Я видел (веб-проекты) сбой только потому, что они не могли адаптировать готовое решение к ожиданиям клиентов относительно обслуживания данных в виде таблицы, а не для того, чтобы пользователь щелкал каждый элемент, чтобы прочитать подробности. – naugtur

2

Вы можете использовать традиционные обозначения моделирования для моделирования пользовательского интерфейса, но это скоро заканчивается беспорядочными и бесполезными моделями. Вы должны подумать о таких моделях, как WebML (вскоре станет стандартом OMG под названием IFML). В этом случае вы также получаете бесплатный инструмент моделирования, который называется WebRatio, который обеспечивает быстрое прототипирование и интеграцию с спецификациями BPMN.

[Отказ от ответственности: Я с Миланским и WebRatio, и среди изобретателей WebML/IFML]

Смежные вопросы