UML - для моделирования бизнеса и ОО проектирования, всё. Кроме ОО есть ещё не мало архитектур... кернел и постгрескуэл ваще сюда мало лепятся. кде - могли бы и с умл, могли - не значит были обязаны. умл, кстати, достаточно молод и идея его не достаточно новаторская: были "умлы" и до умла :)
UML нужен, пока существуют Java, C#, C++ и пр. и на этой #$йне по воле {работодателя,клиента,чёрта} приходится писать. Если уж приходится запихивать идею в рамки примитивной message-passing объектной парадигмы, иногда требуется эту идею в запихнутом состоянии как-то проиллюстрировать, для проектной документации и пр. Вот для этого UML и нужен. А чтобы генерить код из более высокоуровневого представления, существует defmacro ;-)
но есть одно "но": при промышленном производстве софта ум не нужен - нужны шестерёнки, которые вертятся и которые легкозаменяемые. это не плохо и не хорошо: просто оно так есть.
>UML - для моделирования бизнеса и ОО проектирования, всё.
Правда? А каким образом, например, state/activity-диаграммы завязаны на OOP? Если ты кроме диаграммы классов (одна из самых бесполезных, имхо) ничего в UML не видел, это не значит, что там больше ничего нет. :)
Частично, конечно, согласен - UML для OOP в первую очередь разрабатывался.
Приходится на работе иметь дело с UML. Описание при помощи UML - не видел ничего более бесполезного и неподходящего. Описания получаются менее понятными, чем исходный код. Нет, конечно, если взять какой-нить учебный пример, чуть посложнее "Hello, World!!!", то все просто замечательно. Всякие там activity-диаграммы и пр. Но если взять что-то близкое к реальной задаче, то получается полная лажа. Неприменимо к жизни.
>ничего в UML не видел, это не значит, что там больше ничего нет. :)
видел ;) ещё я видел дублирующие друг друга кооперации и последовательности. стейт и активити, таки для моделирование бизнеса и можно использовать, при этом там навязывается состояние объектов
>видел ;) ещё я видел дублирующие друг друга кооперации и последовательности.
sequence диаграммы и collaboration диаграммы вообще изоморфны. В Rational Rose по кнопке F5 можно из одной другую сочинить. :)
А насчет состояния - ну на то они и state/activity. Остальные виды диаграмм тоже можно использовать, но пользы от них меньше. sequence/collaboration уже на передачу сообщений завязаны.
А, ну еще диаграммы компонентов полезно в документацию вставлять. Чтоб видно было что вообще присутствует. Плюс диаграммы развертывания, но их лучше все-таки в чем-то менее фформальном рисовать, например, в Visio.
>Бесполезная. UML - средство для распальцовки и пускания соплей о крутезне.
Я думал ,что для этого используется lor и nickname logIN ;-)
При разработке больших OOP программ очень полезно описывать поведение системы на UML
Сложные иерархии наследования (там где в голове все целиком держать уже не удаться)
Объекты с сложными состояниям и условиях перехода в состояние(лазить каждый раз в код долго и не эффективно (если вам за время просиженное на работе конечно не платят ;-) )
Про use case'ы вообще молчу (для user story очень удобно).
Лично я ещё использую Delpoyment диаграммы - так как разрабатываю server side решения.
>kernel, kde, postgresql, ... писалось без uml.
При разработке KDE применялся UML
>Сложные иерархии наследования (там где в голове все целиком держать уже не удаться)
Гон. У класса есть лучшее описание в .hxx файлах, реализация никого не интересует - это черный ящик, который выполняет поставленную перед ним цель. Для наследования тем более uml не нужен, так как для описания наследованных функций используется автоматизированный софт (doxygen, к примеру).
>При разработке KDE применялся UML
Чем подкрепишь свои слова? Я КДЕ использую с первых версий, читаю ихние ml, но об UML не слышал. Кинь ссылку, может чего пропустил...
> Гон. У класса есть лучшее описание в .hxx файлах
ага, а если их 500 и тебя интересует общая структура приложения то reverse engineering в UML очень полезная штука
> doxygen, к примеру
не замечал что он еще и диаграммы рисует
> А чтобы генерить код из более высокоуровневого представления, существует defmacro ;-)
а всегда ли нужно изобретать это высокоуровневое представление ? ИМХО UML метамодель и ее механизмы расширения для многих задач подходят намного лучше
>Бесполезная. UML - средство для распальцовки и пускания соплей о крутезне. kernel, kde, postgresql, ... писалось без uml.
:) Как тебе уже сказали - это все делалось не на ООП языках.
На самом деле никакой распальцовки нет - если у тебя в проекте 1000 сущностей то их иногда просто нужно ВИДЕТЬ. Опять-же коллективная разработка и т.д.
>>Сложные иерархии наследования (там где в голове все целиком держать
>>уже не удаться)
>Гон. У класса есть лучшее описание в .hxx файлах, реализация никого не >интересует - это черный ящик, который выполняет поставленную перед ним >цель. Для наследования тем более uml не нужен, так как для описания >наследованных функций используется автоматизированный софт (doxygen, к >примеру).
Во умарил иерархии наследников в .hxx файлах ))))
>>При разработке KDE применялся UML
>Чем подкрепишь свои слова? Я КДЕ использую с первых версий, читаю ихние ml, но об UML не слышал. Кинь ссылку, может чего пропустил...
Звучит как
- того чего я не видел - нет ))))
А на C++, C#, Java можно пользоваться ООП без UML => UML в топку,
А ядро написано не не ООП языке => ООП в топку,
А самые узкие куски ядра написаны на асме => С в топку,
А когда то не было асма и программы писали сразу в двуичном виде => Асм тоже в топку.
Нету никакого UML, нету java, нету ООП,
идите рубите лес двуручными пилами ....
>Во умарил иерархии наследников в .hxx файлах ))))
Читай выше - про иерархию тебе расскажет doxygen, к примеру.
>Звучит как - того чего я не видел - нет ))))
Звучит так, как будто ты просто языком чешешь, без всяких аргументов. Пость ссылку на то как KDE'шники используют UML или возьми свои слова обратно и заткнись до лучших времен.
> Бесполезная. UML - средство для распальцовки и пускания соплей о > крутезне.
О, да! Настоящие бравые парни даже веб браузят телнетом, а о содержании картинок в GIF догадываются, просматривая их в hexedit. Ведь браузер -- это всего лишь средство представления той же самой информации в другом, более графическом виде, а следовательно, распальцовка и полный сакс! А главное, что ПАНАСТАЯЩИМУ КРУТЫЕ ПАЦАНЫ никогда не позволят себе взглянуть на мир иными глазами, потому что на свете существует всего два мнения: их и неправильное.
> Кроме ОО есть ещё не мало архитектур... кернел и постгрескуэл ваще сюда мало лепятся
Я тут человек левый ;), но, вообще-то, объектно-ориентированные программы можно писать на любом языке. И из того, что в ядре нет двух крестов, не следует отсутствия в нем объектной модели. Так же, как, и, например, в GTK.
Генерить "это" из UML, конечно, бредово, а вот документировать на нем зачастую возможно и полезно.
народ, буква мэ в слове умыэл, комунить чтонить напоминает?!
Какая на документация?! UML - язык для моделирования.
В чем у вас там будут доки, в умыле, в хытымыле или в .hxx (вот уж действительно хахаха) к самому умылю никакого отношения собственно не имеет и вообще говоря третье дело.
Никоим образом не хочу задеть аппологетов других способов разработки. Но если вы используете UML для моделирования структуры будущего приложения. Тоесть ежели вы в нем все (или хотябы общую картину) придумаете, то что такого плохого, чтобы потом сгенерировать скелет кода по этой модели? На вам руками опять вбивать те же имена классов и методов в код?
К тому же UML по хорошему не зависит от языка. Скажем я пишу на Python/PHP/C++/Java, я могу создать модель одну приложения в UML использовать ее для написания приложения на любом языке. Скажем обкатать некоторые фишки на Python прежде чем садиться писать полномасштабное приложение на С++.
В конце концов UML - это язык для передачи идей, если хотите. Заголовочные файлы, канешна здорово, но что если вы желаете донести идею (скажем некий паттерн), до человека который ни бэ ни мэ в вашем любимом языке, а вы ни бэ ни мэ в его любимом языке? А если вы при этом один русский, а другой китаец и оба не знаете английского? Что, будете пантомиму разыгрывать? 8))
По теме: Umbrella - не фонтан, но может быть лучшее что есть под линукс и это здорово, что они развиваются.
>>Во умарил иерархии наследников в .hxx файлах ))))
Читай выше - про иерархию тебе расскажет doxygen, к примеру.
Вы умрете пользоватся генератором helpов для чтения иерархий и отношений между классами. Во первых долго, на динамично меняющемся коде каждый раз генирить во вторых не наглядно.
Если бы было бы наглядней делать все текстом, чертежей двигателей бы не существовало.
>>Звучит как - того чего я не видел - нет ))))
>Звучит так, как будто ты просто языком чешешь, без всяких аргументов.
http://www.kdedevelopers.org/
>Пость ссылку на то как KDE'шники используют UML или возьми свои слова обратно и заткнись до лучших времен.
Выбирайте выражения.