Re[4]: UML и/или DSL?
От: Sergey Rizhkov Россия  
Дата: 10.08.05 06:58
Оценка:
Здравствуйте, AlexanderLozhechkin, Вы писали:

SR>>+10

SR>>Приятно слышать (и читать) практиков !!!

AL>Сергей, расскажите, плз, о своем реальном и практическом опыте использования UML в реальных, доведенных до конца, проектах?


Александр , приветствую!
Извини, конечно, за предыдущий пост, но заголовок треда "UML и\или DSL", и последующий опрос, где вопросы, в принципе вполне адекватные до "точки", а далее "маркетинговый спам" , цитирую "Для создания высокоуровневых диаграмм без привязки к коду" — вполне нормальная формулировка, но далее "По мере изменения кода диаграммы устаревают, т.к. их лень обновлять" — то что кому-то лень, проблема вовсе не UML, а инструментальной поддержки или организации процесса. И как я могу голосовать за такой ответ? — да я использую UML создания ..., но мне не лень.
Вообще Сергей Орлик высказался (как и часто это он делает) как говорится в точку.

Что касается реальных проектов, вот некоторые из них: ИС учета дорожного хозяйства «ДОДД Спб», ЕУС «ЗАО Петербургрегионгаз», ЕУС КЭП Спб, ГИС "Водоканал" итд. Во всех проектах по крайней мере документ "Концепция и логика" полностью сопровождался диаграммами, причем ни разу не слышал от заказчика каких либо нареканий насчет недоступности представления информации. Задания разработчикам также в основном представлялись с сопутствующими диаграммами.

Особо хотелось подчеркнуть пару проектов ИСУП МЭРТ, СЭДО МЭРТ, Обмен СЭДО МЭРТ и РФФИ , проекты выполнены на платформе DocsVision (узнаешь ), так вот учитывая "ограничения" платформы в средствах моделирования и проектирования, без применения UML просто не реально было что-либо описать, спроектировать, а самое главное донести до разработчиков постановку задачи

AL>Если можно, с конкретикой:

AL>1. Какие создавались диаграммы?
UseCase, Activity, State, Sequence,Class (правда обычно при моделировании, при проектировании редко и в основном на бумаге для коммуникации между членами команды.
Могу сказать какие не использовал, так как трудны понимания (для меня) — Collaboration

AL>2. Каким образом поддерживалась их непротиворечивость друг другу?

Я никогда не задавался такой целью, я использовал UML как стандарт при коммуникации.

AL>3. Создавался ли на основе диаграмм код? Каким образом?

Создавал и создаю. Например, для генерации мэппинга, Entity-классов, DAO-классов при использовании ORM.

AL>4. Поддерживались ли диаграммы в актуальном состоянии в течение проекта? Каким образом?

Нет. Считаю это излишним. IMHO, "рисовать" — нужно до тех пор, пока это полезно, но не использовать модели ради самих моделей

AL>5. Какие проблемы помогло решить использование UML в проекте?

Основная решаемая проблема — это IMHO, коммуникация, все члены команды говорят на одном языке.

AL>6. Насколько сложные это были проекты?

Про некоторые ты и сам знаешь Вообще трудно по каким-либо метрикам оценить "сложность"
Re: UML и/или DSL?
От: opossum  
Дата: 10.08.05 13:16
Оценка: 68 (7) +3
Позвольте я скажу:

Определение DSL содержится в его названии:
Domain Specific Language — Специализированный язык предметной области.

Определение DSL от Ложечкина:
> http://blogs.gotdotnet.ru/personal/allo/CommentView.aspx?guid=8b96b298-edfb-4f45-b2c8-89f1a3ed610e
> Но сначала немного о DSL. DSL (Domain Specific Languages) – это технология и методология,
> которую предлагает Microsoft в области моделирования.

Тут нужно сказать следующее — звучит сие чрезмерно претенциозно.

Семантика выражения
"это технология и методология, которую предлагает Microsoft в области моделирования"
несколько отлична
от "это технология и методология, которую Microsoft начала другим советовать."

Правда звучит так:
Domain Specific Language — Специализированный язык предметной области.

Создание DSL — старый как человеческий разум подход к абстрагированию,
который переживет и UML и много других страшных терминов из
современного IT.

Microsoft приняло решение обратить мощь PR машины и подразделений
разработчиков внутри компании на этот факт и предоставить (i.e. продать)
методологию и средства ее поддержки (tools) для технологий MS.


Как обычно чтобы сделать сообщение полезным, несколько ссылок и цитат:
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-25.html#%_chap_4
Chapter 4 Metalinguistic Abstraction
...
Metalinguistic abstraction -- establishing new languages -- plays an
important role in all branches of engineering design. It is
particularly important to computer programming, because in programming
not only can we formulate new languages but we can also implement
these languages by constructing evaluators. An evaluator (or
interpreter) for a programming language is a procedure that, when
applied to an expression of the language, performs the actions
required to evaluate that expression.

It is no exaggeration to regard this as the most fundamental idea in
programming:

The evaluator, which determines the meaning of expressions in a
programming language, is just another program.

To appreciate this point is to change our images of ourselves as
programmers. We come to see ourselves as designers of languages,
rather than only users of languages designed by others.

(перевод: http://newstar.rinet.ru/~goga/sicp/sicp.pdf)
...

И сюрприз:
Форматная строка в fprintf(), regexp, конфигурация от make, скрипты
awk, yacc/lex, и SQL, HTML, это то же DSL.

Мир нормального программирования, не зашторенный
"умными" IDE, монстровидными run-time библиотеками для всего,
полон DSL'а уже давно, т.к. ценится возможность компактного
описания проблемной области.

The Practice of Programming
by Brian W. Kernighan and Rob Pike.
http://cm.bell-labs.com/cm/cs/tpop/
Chapter 9: Notation
9.1 Formatting Data
9.2 Regular Expressions
9.3 Programmable Tools
9.4 Interpreters, Compilers, and Virtual Machines
9.5 Programs that Write Programs
9.6 Using Macros to Generate Code
9.7 Compiling on the Fly

(перевод: http://www.ozon.ru/context/detail/id/938233/
Автор(ы): Б. Керниган, Р. Пайк
Издательство: Невский Диалект
Цена: 168р.

Книга написана известнейшими американскими специалистами — авторами многих книг (в том числе переведенных на русский язык) и программистами (разработчиками таких систем, как ОС UNIX, язык программирования Си, язык скриптов AWK и др.). В

Б. Керниган, Р. Пайк Практика программирования)
--

Что же касается того, что в Microsoft сами ее уже давно используют
разнообразные DSL то в этом нет сомнений, т.к. там вполне адекватные люди.

А отношение к CASE утилитам в Microsoft:
Освящено в вышей степени ироничной, но глубокой книге
посвященной снятию лапши с ушей "молодых профессионалов":

Edward Yourdon "Death March"
известной в переводе как Эдвард Йордан «Смертельный марш»

ГЛАВА 6. ТЕХНОЛОГИЯ И СРЕДСТВА

Летом 1992 года мне довелось обедать с дружной группой менеджеров
среднего уровня Microsoft. Во время завязавшейся беседы я спросил,
является ли для проектных команд Microsoft обычным делом использование
таких методологий, как структурный анализ или объектно-ориентированное
проектирование. Ответы были примерно следующими: «иногда», «хммм,
вроде бы да», «от случая к случаю» и «а что это такое?». Когда же я
спросил их относительно использования CASE-средств (которые в то время
все еще были довольно популярными в индустрии ПО), то из их ответов
понял, в чем заключается общее мнение майкрософтовцев: такие средства
годятся для «людей с улицы». С таким выражением я еще не встречался,
его можно грубо интерпретировать как «невежественные дикари, которые
только что вылезли из своего первобытного леса и начали обучаться
программированию, в отличие от настоящих программистов, которые не
нуждаются во всяких финтифлюшках».

Будучи слегка уязвленным, я поинтересовался, используют ли их
проектные команды хоть какие-нибудь средства, и в ответ услышал, что
каждая команда Microsoft может выбрать любые средства, которые сочтет
подходящими для своего проекта. Ухватившись за такой ответ, я спросил,
какое средство считает наиболее важным типичная проектная команда?

«На днях я задал одной из проектных команд такой же вопрос», — ответил
один из менеджеров. «Как вы думаете, что они ответили?» «Какой-нибудь
высокопроизводительный компилятор С++?», — спросил я. «Ассемблер? Или
мощное средство отладки для устранения множества ошибок в их коде
(хи-хи-хи)?» «Ничего подобного», — ответил менеджер, игнорируя мое
гнусное хихиканье. «Они ответили: электронная почта. Средний
разработчик Microsoft получает сотню сообщений в день; он живет в
электронной почте. Уберите электронную почту, и проект умрет».
---------------------------------------------------------------------

Итог: следите за тем не превратилась вы вы в «людей с улицы».

Снимайте лапшу, и читайте книги — они ключ к знаниям.

Статьи от MSFT надо воспринимать как PR — это есть их работа.
В данном случае, статья привлекает внимание к важной теме — DSL
(более актуальной чем прибитый гвоздями UML), незаслуженно мало
обсуждаемой.

И в ближайшем будущем надеюсь автор раскроет нам суть Microsoft way,
в отношении DSL, сделав упор на предлагаемые методологии и утилиты.

P.S. а определение DSL все же поправить хорошо бы.

Ваш opossum.
Re[2]: UML и/или DSL?
От: AlexanderLozhechkin Россия http://blogs.gotdotnet.ru/personal/allo
Дата: 22.08.05 11:33
Оценка:
Спасибо за ваш отзыв!

1. Мое определение, если его так можно называть, относится _только_ к реализации технологии DSL от Microsoft.

2. По поводу цитаты из Йордана. Мой опыт общения с членами команд разработки в Microsoft показывает, что каждая команда выбирает средства разработки и проектирования, которыми она будет пользоваться, самостоятельно. Поэтому нельзя говорить о таком понятии, как «типичная проектная команда». Я знаю команды в Microsoft, в которых пишут на голом С без использование IDE и знаю команды, которые используют Visual Studio в полный рост.
Данная информация предоставляется на условиях «КАК ЕСТЬ», без предоставления каких-либо гарантий и прав. Используя данную информацию, Вы соглашаетесь с тем, что Майкрософт не несет ответственности за использование Вами данной информации.
Re[3]: UML и/или DSL?
От: GlebZ Россия  
Дата: 22.08.05 15:47
Оценка:
Здравствуйте, AlexanderLozhechkin, Вы писали:

AL>UML, как впрочем и DSL — это способы моделирования. Но если в UML больший упор делается на именно рисование (простите такое упрощение), то DSL изначально делается упор на то, чтобы модель не была оторвана от кода.

Я согласен с Сергеем в том, что вопрос поставлен некорректно. UML слишком большой, чтобы его можно было сравнивать с DSL. Его можно разделить на две части. 1 часть, моделирование бизнес-процессов, и написание требований. Вторая часть — логическая и физическая модели. Если с первой частью все понятно (хотя мы максимум используем use case диаграммы), то вторую часть мы практически используем не для моделирования, а именно для документирования. Максимум моделирования диаграммы компонентов. И физику мы вообще тут uml'ом не трогаем. Описанию поддвергаются только наиболее важные вещи, например внешние интерфейсы. Физический уровень практически никому(кроме узкого класса девелоперов) не нужен. По нему легче прокатится какой-нибудь автоматикой для сборки информации из комментариев. И в данном случае, DSL будет очень полезен. Но то что касается тех важных мест, которые мы должны отдать клиентам, отдается только внешний интерфейс, на который пишется документация(часть которой и является диаграмма), и к которому подходят особенно тщательно. Поэтому ручное управление этими диаграммами не является преступлением.
Что касается моделирования архитектуры, то моделирование с помощью uml — это большая потеря времени, по сравнению с обсуждениями, исписанными листочками, и примерным описанием в word. Подробности предоставляемые DSL здесь не особо важны.
Полностью поставленный процесс документирования именно в UML, или близкий к этому, я никогда не видел, и об этом никогда не слышал. Значительно важнее те документы на русском(английском) языке которые сопровождают софт.

С уважением, Gleb.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.