LINUX.ORG.RU

В защиту UML.


0

1

Эх, опять я не успел на этот праздник жизни. Позволю себе не запрыгивать в последний вагон, а поехать на следующем поезде.

Первое. Как было справедливо замечено, UML-диаграммы и инженерные схемы/чертежи служат в общем идентичным целям. Но есть одно архиважное различие. В электронике без принципиальной схемы можно спаять максимум детекторный приемник; в строительстве без чертежа можно соорудить только сарай-скворечник. Для любой мало-мальски серьезной затеи приходится прибегать к графической нотации, это абсолютно нормально и не вызывает претензий. С software engineering ситуация другая. Спектр программных решений невероятно широк, а UML оправдывает себя в довольно узкой (хоть и очень масштабной) нише. Как правило, это - программные системы уровня предприятия, где: а) существенным образом используется ООП, б) фигурирует большое количество персистентных бизнес-сущностей и связей между ними, в) есть четкое деление системы на «ярусы» (tiers), г) систему разрабатывает большая команда, д) есть строгие требования к документации. Для проектирования игр, музыкальных плееров или научного софта UML мало полезен. Так вот, проблема в том, что подавляющее большинство крикунов о ненужности UML не имеют никакого отношения к разработке ПО уровня предприятия. Точнее, имеют враждебное отношение; одни подсознательно понимают, что эта область для них недостижима (вследствие низкой квалификации); другие презирают enterprise за то, что якобы enterprise «убивает искусство в программировании и поощряет ремесленничество» (позволю себе не комментировать эту точку зрения); третьи не признают все корпоративное (в том числе и ПО) из чистого нонкоформизма. Далее, негативное отношение к корпоративному ПО переносится на UML - вот и разгадка. Добавим сюда так любимый лисперами «Blub paradox»: понимающий UML смотрит «сверху вниз» и видит возможности его успешного применения, непонимающий - смотрит «снизу вверх» и видит угрозу, как от всего непонятного.

Второе. Тезис о том, что лучшим инструментом проектирования/документирования является словесное описание и сам исходный код. Исходный код не годится для этих целей потому, что огромное количество (если не большинство) терминов UML просто не имеют (и не могут иметь) отражения в исходном коде. Так утверждают, опять-таки, лишь те, кто совершенно не владеет UML и счтает, что UML ограничивается лишь одной диаграммой классов. При этом про такие важные вещи как диаграмма вариантов использования (use-case diagram), диаграмма размещения (deployment diagram), диаграмма состояния (statechart diagram) и диаграмма последовательностей/взаимодействия (sequence/collaboration diagram) ВНЕЗАПНО остаются за кадром. Да, кое-что из этого можно кое-как восстановить по исходному коду, но это задача уровня reverse engineering.

Второе с половиной. Верно, что для любой UML-диаграммы возможно изоморфное текстовое описание. Но выразительность UML на много порядков выше. Как говорит один очень уважаемый Java EE специалист, «a clear, accurate, and easy-to-understand picture is truly worth a thousand words.» И я почему-то склонен ему верить. В самом деле, нарисовать диаграмму можно гораздо быстрее, чем описывать все то же словами. А «распарсить» диаграмму человеку еще проще. И не только распарсить, а увидеть «паттерны» (так ненавидимые все теми же крикунами), а также аномалии. Если электронщику сразу покажется подозрительным отсутствие развязывающего конденсатора в цепи транзистора, то опытный проектировщик сразу заметит циркулярные ссылки. Или возможность разнести иерархии интерфейсов и имплементаций в соответствии с паттерном «мост». Я уже не говорю об удобстве навигации по модели, которое предоставляют современные инструменты для моделирования. А сколько времени понадобится на то же самое с использованием только текстового описания?

Третье. Претензии к якобы «статичности» UML, неприменимости к развивающимся системам и неизбежном устаревании не выдерживают никакой критики. Высказывающим подобные претензии рекомендую курить статью о Round-trip engineering до полного просветления. RTE - пройденный этап, давно известная и обкатанная методология, распространяющаяся не только на UML, но и вообще на системы, представленные множеством гетерогенных артефактов. Вопрос поддержания актуальности UML-моделей - исключительно вопрос владения инструментами и правильной постановки процесса разработки. Нетривиальным (и, тем более, критическим) этот момент может показаться только тем, кто впервые слышит о RTE (что еще раз подтверждает мое предположение о главной причине претензий к UML - далекости от промышленной разработки ПО).

Четвертое. Атоматическая верификация по UML-моделям, точнее якобы ее невозможность. Утверждение об этом снова свидетельствует о незнании предмета дискуссии; я бы рекомендовал сперва ознакомиться с текущей ситуацией в этом плане. Однако, никто не спорит о том, что у UML в этом контексте есть свои недостатки, такие как многословность. Они были учтены в более перспективной методологии LePUS3 и соответствующем инструменте моделирования и верификации Two-tier Programming Toolkit.

Резюме. Пользоваться UML можно и нужно. Но, как и любым другим сложным инструментом - к месту и умеючи. Большая команда, работающая над большим проектом и владеющая UML, получает огромную фору в виде чрезвычайно выразительного языка для обмена информацией об архитектуре системы, завтрашней и сегодняшней.

А борцунов с UML слушать не надо. Их претензии, как показывает практика, носят исключительно нетехнический характер.

★★
Ответ на: комментарий от siberean

Зря он дисклеймер на таком видном месте оставил. Очень задорное обращение — лоровским троллям до такого еще учиться и учиться.

baverman ★★★
()

г) систему разрабатывает большая команда

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

shty ★★★★★
()

Для проектирования игр, музыкальных плееров или научного софта UML мало полезен.

это смотря что понимать под «играми», если пасьянс какой - тогда более или менее понятно, если навороченная ММОРПГ - тогда извините

shty ★★★★★
()

не имеют (и не могут иметь) отражения в исходном коде

Это ещё почему? Я бы сказал, что верно обратное: огромное количество конструкций в коде не имеют (и не могут иметь) отражения в UML.

нарисовать диаграмму можно гораздо быстрее, чем описывать все то же словами

Ну 4.2 же.

А «распарсить» диаграмму человеку еще проще.

Опять 4.2. Текст, содержащий столько же информации, сколько и диаграмма, парсится быстрее.

Miguel ★★★★★
()

ОП, ты накатал простыню текста, в которой объяснил, зачем нужна документация и удобные графические нотации, но ни одного слова не сказал, зачем нужен именно сам UML. Давай учтем, что диаграммы классов, юзкейсы, стейтчарты и диаграммы последовательности ничем специфическим для uml не являются. Есть ли что-то полезное в uml, что было бы специфическим для самого UML? Чем использование диаграмм, специфических для uml-нотации, предпочтительнее использования диаграмм в нотации, специально заточенной под конкретный проект (благо цена разработки и внедрения таковых слабо отличается от нуля)?

anonymous
()
Ответ на: комментарий от Miguel

> Это ещё почему?

Приведи мне кодовые аналоги следующих UML-терминов:

1) Link / extended dependency (class diagram);
2) Node (deployment diagram);
3) Part (component diagram);
4) Transition (statechart diagram).

Для начала хватит.

Я бы сказал, что верно обратное: огромное количество конструкций в коде не имеют (и не могут иметь) отражения в UML.


И что? Не надо передергивать. UML не предназначен для отражения «конструкций кода», и это никак не доказывает, что UML можно 100% заменить сорцами.

нарисовать диаграмму можно гораздо быстрее, чем описывать все то же словами

Ну 4.2 же.


Ты просто не владеешь инструментами. Рисовать UML-диаграммы от руки будет только полный идиот.

А «распарсить» диаграмму человеку еще проще.

Опять 4.2. Текст, содержащий столько же информации, сколько и диаграмма, парсится быстрее.


Пусть есть текстовое описание нескольких десятков классов. Сколько тебе понадобится времени, чтобы «распарсить» все описания и выяснить, между какими из них есть циркулярные ссылки? а чтобы выявить известные паттерны? При помощи диаграмм это делается моментально.

И так во всем.

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

> Есть ли что-то полезное в uml, что было бы специфическим для самого UML?

1) Открытый стандарт;
2) Поддержка инструментами;
3) Industry acceptance.

Полагаю, достаточно?

благо цена разработки и внедрения таковых слабо отличается от нуля


Юноша бледный со взором горящим.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

> При помощи диаграмм это делается моментально.

А если у тебя сотня классов? За сколько ты распарсишь все это дело в UML? При помощи таблицы это будет сделано моментально.

anonymous
()
Ответ на: комментарий от anonymous

> А если у тебя сотня классов?

Если у меня сотня классов, то они сгруппированы по своим диаграммам и пакетам. В чем проблемы?

При помощи таблицы это будет сделано моментально.


Что - «это» и при помощи какой «таблицы»? Если имеется в виду настраиваемое табличное представление классов модели, то любой современный UML modeling tool это умеет. Опять-таки не вижу проблем.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

> Полагаю, достаточно?

Я, видимо, неверно выразился. полезно в сравнении с другими, более удобными решениями.

Юноша бледный со взором горящим.

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

anonymous
()
Ответ на: комментарий от anonymous

> Я, видимо, неверно выразился. полезно в сравнении с другими, более удобными решениями.

Например?

Все подобные нотации всегда совершенно естественны и очевидны, пишутся за полчаса под задачу


А инструмент для рисования, с поддержкой командной работы? А кодогенерация? Верификация? Reverse-engineering? UML - не только (и не столько) набор спецификаций, сколько поддержка большим количеством инструментов. В этом и профит его передо всеми «остальными, более удобными решениями».

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

> Если у меня сотня классов, то они сгруппированы по своим диаграммам и пакетам.

А если не сгруппированы и не сгруппируются?

Что - «это»

Ты читать разучился?

и при помощи какой «таблицы»?

Любой аналог матрицы смежности.

Если имеется в виду настраиваемое табличное представление классов модели, то любой современный UML modeling tool это умеет.

Но зачем тогда нужна диаграмма классов, если можно просто написать таблицу, что удобнее по всем параметрам? И если уж на то пошло, то это любая современная IDE умеет и UML тут снова остается не у дел, а когда придумали тот же grep, то uml и в проекте не было.

anonymous
()
Ответ на: комментарий от Kuka

> Например?

Ну например - чем умл-овские стейтчарты удобнее диаграммы состояний?

А кодогенерация? Верификация? Reverse-engineering?

Ты кодогенерацию и верификацию собрался по юзкейсам проводить, нет? Давай уж отделять мух от котлет. Если мы говорим конкретно о тех диаграммах, для которых можно проводить кодогенерацию/верификацию, то укажи их, о них говорить и станем. А остальные - в мусор.

anonymous
()
Ответ на: комментарий от anonymous

> А если не сгруппированы и не сгруппируются?

Значит, диаграмму рисовал дворник. Любую, даже самую правильную и красивую технологию, можно скатить в говно неправильным использованием. И что?

Ты читать разучился?


Ваша неспособность четко сформулировать вопрос не является проблемой оппонента.

Но зачем тогда нужна диаграмма классов, если можно просто написать таблицу, что удобнее по всем параметрам?


Вы представляете себе, сколько есть разновидностей отношений между классами в UML? Может, все-таки стоило предварительно прочитать хотя бы туториал? Это позволило бы вам не говорить глупости. Если вы утверждаете, что по «матрице смежности» готовы идентифицировать, скажем, паттерн Composite - то вы наглый лжец.

Kuka ★★
() автор топика
Ответ на: комментарий от anonymous

> Ну например - чем умл-овские стейтчарты удобнее диаграммы состояний?

Тем, что UML'евский State можно привязать к классу, определенному в class diagram. Сгенерировать дополнительный код или документацию, а то и прогнать симуляцию. Фишка UML - в целостности.

Ты кодогенерацию и верификацию собрался по юзкейсам проводить, нет? Давай уж отделять мух от котлет. Если мы говорим конкретно о тех диаграммах, для которых можно проводить кодогенерацию/верификацию, то укажи их, о них говорить и станем. А остальные - в мусор.


Хорошо. Вот список UML-диаграмм, которые допускают кодогенерацию и верификацию:

1) Activity diagram
2) Class diagram
3) Communication diagram
4) Object diagram
5) Package diagram
6) Sequence diagram
7) Statechart diagram

Поехали.

Kuka ★★
() автор топика
Ответ на: комментарий от Kuka

Приведи мне кодовые аналоги следующих UML-терминов:

Я спросил «почему». Это не возражение, это вопрос (смешанный с удивлением). То есть, я прошу ТЕБЯ объяснить, почему аналога данных терминов в коде, по твоему утверждению, быть не может.

UML не предназначен для отражения «конструкций кода»

А код, будешь смеяться, не предназначен для отражения «терминов UML». Симметрия почти полная, с той только разницей, что программа получается таки из кода.

Ты просто не владеешь инструментами.

Владею. Код, при наличии правильных инструментов, набирается очень быстро.

Сколько тебе понадобится времени, чтобы «распарсить» все описания и выяснить, между какими из них есть циркулярные ссылки?

Вообще нисколько, подобные тупые задачи надо автоматикой делать, а не глазами.

Miguel ★★★★★
()

> software engineering ситуация другая. Спектр программных решений невероятно широк, а UML оправдывает себя в довольно узкой (хоть и очень масштабной) нише. Как правило, это - программные системы уровня предприятия, где:

Правила? Нам не нужны никакие правила. Мы творцы, а не ремесленники!

Только, лмять, Мона Лиза влезает в стандартную рамку и не беспокоится об этом, а ваши, лмять, приложения, не влезают в мою память. И крошатся на руках, у некоторых приложений размер security-бюллетеней больше, чем (разбухший) размер кода. Это всё следствия правила «в жопу все правила, все методики, все практики, весь накопленный опыт».

kid_lester
()
Ответ на: комментарий от Miguel

> А «распарсить» диаграмму человеку еще проще.

Опять 4.2. Текст, содержащий столько же информации, сколько и диаграмма, парсится быстрее.

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

shty ★★★★★
()
Ответ на: комментарий от Kuka

Рисовать UML-диаграммы от руки будет только полный идиот.

это почему? иногда это очень удобно, например у whiteboard наглядно проиллюстрировать свою мысль :)

shty ★★★★★
()
Ответ на: комментарий от anonymous

> Если у меня сотня классов, то они сгруппированы по своим диаграммам и пакетам.

А если не сгруппированы и не сгруппируются?

намёк для архитектора, что пора делать сепукку

shty ★★★★★
()
Ответ на: комментарий от Miguel

> Сколько тебе понадобится времени, чтобы «распарсить» все описания и выяснить, между какими из них есть циркулярные ссылки?

Вообще нисколько, подобные тупые задачи надо автоматикой делать, а не глазами.

назови что-ли ту «автоматику», раз уж начал этот разговор

shty ★★★★★
()
Ответ на: комментарий от kid_lester

Только, лмять, Мона Лиза влезает в стандартную рамку и не беспокоится об этом

а сикстинская капелла нет, и что делать будем?

shty ★★★★★
()
Ответ на: комментарий от shty

> а сикстинская капелла нет, и что делать будем?

Будем считать это ДРУГИМ жанром искусства, со своими правилами, нормами и ограничениями. Точнее я буду считать. А другие могут выставить её и на конкурс картин, потому что делалось спонтанно и без всяких там... а теперь перерисовывать лень.

Любая практика, которая способна сбить спесь с программиста, указать его место, и загнать его в точные, чёткие, однозначные и строгие рамки - в нынешних реалиях, когда каждый винтик конвейера мнит себя пупом земли - будет работать. Да даже helloworld, обвешанный всем этим, в обмен на небольшое время потери сразу, экономит годы, мегабайты и киловатты.

kid_lester
()
Ответ на: комментарий от kid_lester

> а сикстинская капелла нет, и что делать будем?

Будем считать это ДРУГИМ жанром искусства, со своими правилами, нормами и ограничениями.

но это не будет означать, что она не является проищведение искусства, не так ли?

Точнее я буду считать. А другие могут выставить её и на конкурс картин, потому что делалось спонтанно и без всяких там... а теперь перерисовывать лень.

«мона лизу» выставлять на конкурс картин? OMG, да ты чувак с оригинальным мышлением :)

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

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

shty ★★★★★
()
Ответ на: комментарий от shty

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

Почему любые проявления формализма и бюрократии, да и вообще любая бумажка - это концлагерь?

Впрочем, для некоторых и система контроля версий с багтрекером - концлагерь. А уж любая сопроводительная писулька, или даже комментарии - и говорить нечего.

kid_lester
()
Ответ на: комментарий от kid_lester

Почему любые проявления формализма и бюрократии, да и вообще любая бумажка - это концлагерь?

а где я сказал, что __любые__ проявления формализма - это концлагерь?

лично я считаю, что «сбить спесь с программиста, указать его место» - это несколько более сильное воздействие, нежели требуется при нормальной работе, либо мне непонятно зачем Вы себе на работу настолько «спесивых» берёте, что их приходится «сбивать» :)

shty ★★★★★
()
Ответ на: комментарий от shty

> делать из отдела разработки

А вообще, нужна такая система, когда этому отделу нужно непрерывно доказывать, что он является лучшим по соотношению критериев и потребностей на данный момент. А схемы, бумажки, и прочие формальности - они позволяют тыкнуть носом в факт «сделал-не_сделал», и разогнать этот отдел. В идеале, конечно, хорошо бы иметь конкурентную систему, чтобы не было зависимости, но это практически невозможно сделать.

kid_lester
()
Ответ на: комментарий от kid_lester

Впрочем, для некоторых и система контроля версий с багтрекером - концлагерь. А уж любая сопроводительная писулька, или даже комментарии - и говорить нечего.

этак можно договориться и до того, что и сам код - страшный формализм и пережиток прошлого :)

shty ★★★★★
()
Ответ на: комментарий от kid_lester

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

«доказывать», на мой взгляд это какое-то неправильное здесь слово, но то, что эффективность работы отдела считать необходимо - это факт, и во многих фирмах этим занимаются

shty ★★★★★
()
Ответ на: комментарий от shty

> этак можно договориться и до того, что и сам код - страшный формализм и пережиток прошлого :)

Главное - чтобы машина жужжала, и результат выдавала. А на чём она работает, на коде, на неонке, на угле или на бензине - это никого не интересует.

Никто же не интересуется у уборщицы, чем она убирает, фейри или спиртом. Лишь бы чисто было. Если становится грязно - уборщицу меняют. Просто и понятно, без всякого UML, кстати. :)

kid_lester
()
Ответ на: комментарий от kid_lester

А схемы, бумажки, и прочие формальности - они позволяют тыкнуть носом в факт «сделал-не_сделал», и разогнать этот отдел.

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

shty ★★★★★
()
Ответ на: комментарий от kid_lester

> этак можно договориться и до того, что и сам код - страшный формализм и пережиток прошлого :)

Главное - чтобы машина жужжала, и результат выдавала. А на чём она работает, на коде, на неонке, на угле или на бензине - это никого не интересует.

Никто же не интересуется у уборщицы, чем она убирает, фейри или спиртом. Лишь бы чисто было. Если становится грязно - уборщицу меняют. Просто и понятно, без всякого UML, кстати. :)

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

shty ★★★★★
()
Ответ на: комментарий от shty

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

Быстрее, если считать по занимаемому пространству. Если считать по количеству собственно информации - то медленнее.

именно поэтому знаки дорожного движения - это не плакаты с текстом, а схематические изображения

Это у нас. А, скажем, в США большинство дорожных знаков содержат именно текст.

Miguel ★★★★★
()
Ответ на: комментарий от shty

назови что-ли ту «автоматику», раз уж начал этот разговор

Вот когда мне понадобится по работе «выяснять, есть ли между классами циркулярные ссылки», тогда и назову. Или напишу, это, в конце концов, достаточно тривиальная задача.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

> если человек умеет читать и то и другое, то графическая информация воспринимается быстрее

Быстрее, если считать по занимаемому пространству. Если считать по количеству собственно информации - то медленнее.

Ваши критерии вызывают удивление

> именно поэтому знаки дорожного движения - это не плакаты с текстом, а схематические изображения

Это у нас. А, скажем, в США большинство дорожных знаков содержат именно текст.

то что они __содержат__ текст, свосем не означает отсутствие графической информации на них

shty ★★★★★
()
Ответ на: комментарий от Miguel

> назови что-ли ту «автоматику», раз уж начал этот разговор

Вот когда мне понадобится по работе «выяснять, есть ли между классами циркулярные ссылки», тогда и назову. Или напишу, это, в конце концов, достаточно тривиальная задача.

вопросов больше нет

shty ★★★★★
()
Ответ на: комментарий от shty

Ваши критерии вызывают удивление

Удивительно, что я считаю количество информации более важным, чем занимаемое пространство?

то что они __содержат__ текст, свосем не означает отсутствие графической информации на них

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

http://t0.gstatic.com/images?q=tbn:ANd9GcSpTt7ROHohnxSQnWlxnikFewQxtXVpy4ww1T...

http://www.milebymile.com/hwy_item_images/photo_US_NY_17_28956_6195.jpg

http://i.pbase.com/o4/93/329493/1/91442199.5jSVmloT.TorontoNFDec07116.jpg

Miguel ★★★★★
()

ИМХО: автору, как приличному человеку, просто необходимо проиллюстрировать тезис "... выразительность UML [сравнительно с текстовым описанием] на много порядков выше" на примере собственной статьи...

RVictor
()

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

4.2

Почти везде Anemic Domain Model

http://lmgtfy.com/?q=UML automatic verification

По ссылке тяжелые наркотики. Заходить не рекомендую.

dizza ★★★★★
()
Ответ на: комментарий от Kuka

1) Link / extended dependency (class diagram);

2) Node (deployment diagram); 3) Part (component diagram); 4) Transition (statechart diagram).

Вы о какой-то фигне спорите. Перечисленное выше настолько тривиально и понятно всем участникам, что не стоит даже холивара чем это описывать. Хоть мелком машенька на столе техдира. Хоть псевдокодом в комментарии. Хоть edsl-ем. Хоть Uml-ем.

Я не говорю, что не нужно. Например считать до 10 всем нужно. Но это тривиально для большинства людей, что не стоит вообще какого-то обсуждения.

dizza ★★★★★
()

то опытный проектировщик сразу заметит циркулярные ссылки

Я не понял этого момента. А что не так? Как они разруливаются?

vertexua ★★★★★
()

> В электронике без принципиальной схемы можно спаять максимум

детекторный приемник; в строительстве без чертежа можно соорудить

только сарай-скворечник.



Давно известно, что с помощью надуманной аналогии можно доказать всё что угодно. Осталось только понять, ты действительно не понимаешь, что опираться на опыт гражданского строительства, по крайней мере, глупо?

Как правило, это - программные системы уровня предприятия


Да, там ниже есть описания, но я всё таки не могу понять, какой всё же смысл вкладывается в это понятие? Я всегда думал, что «система уровня предприятия» это такой buzzword.

систему разрабатывает большая команда


Что такое большая команда? Я вот постоянно перед собой имею пример очень большого enterprise, который сильно зависит от информационной системы и стремится большую её часть разрабатывать собственными силами, но там редко на одном проекте может быть задействовано хотя бы 10 человек.

archimag ★★★
()
Ответ на: комментарий от kid_lester

>Лишь бы чисто было

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

Karapuz ★★★★★
()
Ответ на: комментарий от archimag

>«система уровня предприятия» это такой buzzword

Экспресс-3 например. Продажа билетов на поезда, а предприятие РЖД. ну или учет паспортов

Karapuz ★★★★★
()

>«a clear, accurate, and easy-to-understand picture is truly worth a thousand words.»

Это понятно. Вопрос в том, стоит ли она дюжины. Иными словами, сколько «слов» должно быть в эквивалентном описании, чтобы картинка стала понятнее:

1. В случае одного элемента на картинке, выразительность картинки отличается от выразительности текста отношением количества графического мусора в первой к количеству синтаксического во втором. Информация в этом случае сосредоточена в тексте и взаимном его расположении(выше/ниже/правее/левее). Поскольку текст у нас отображается на таком же устройстве, можем придумать язык, превосходящий картинку хотя бы за счёт отсутствия лишних рамочек по краям.

2. Добавим к нашей картинке ещё один элемент. В эквивалентном тексте добавится ещё один параграф «лучшего»(см. п. 1) качества. В случае значимого взаимного расположения элементов картинки, текстовое описание сможет безобидно повторить только одно из измерений (выше/ниже, например), второе потребует добавления лишнего текста. Вопрос знатокам: Значимы ли в UML оба измерения? Волосы на отсечение, что нет, т.к. было бы невозможно нарисовать 2 эквивалентных по обоим параметрам сущности, а такие наверняка бывают.

3. По индукции, любая картинка без связей проигрывает аналогичному тексту.

4. Добавим в картинку связь между 2мя элементами. Текст обретёт ещё 1-2 слова (ссылки на имена связанных объектов). Вопрос в том, как соотносятся «выразительности» линии, мечущейся по полотну с целью привести зрителя к другому квадратику, и записанного непосредственно в месте «начала линии» имени целевого квадратика (или 2х) ещё ждёт своего исследователя. Однако, уже теперь очевидно, что даже если линия круче, для превосходства «на порядки» связей должно быть _очень_ много, на порядки больше кол-ва квадратиков. Очевидно, что картинка с таким количеством связей хорошо выражает только одну идею, «уволить архитектора», и, вероятно, для обнаружения этого факта UML подходит лучше текста, т.к. с эквивалетнным текстовым описанием всё ещё можно работать.

выразительность UML на много порядков выше

Т.ч. пока я пойду придумывать способ сравнения выразительностей линиии нарисованой и заданной перечислением концов, вы можете посгорать со стыда за неудачную попытку солгать:)

DonkeyHot ★★★★★
()
Ответ на: комментарий от Karapuz

> Экспресс-3 например. Продажа билетов на поезда, а предприятие РЖД.

ну или учет паспортов


Ну, это должно работать на большом колличестве рабочих мест. И всё? Т.е. система уровня предприятия это система которая должна работать на большом колличестве мест?

archimag ★★★
()
Ответ на: комментарий от shty

> это почему? иногда это очень удобно, например у whiteboard наглядно проиллюстрировать свою мысль :)

Да, согласен. Во время брифингов имеет смысл рисовать диаграммы на доске. Я лишь имел в виду, что потом они все равно перекочуют в репозиторий, причем отнюдь не бумажный :)

Kuka ★★
() автор топика
Ответ на: комментарий от dizza

> Почти везде Anemic Domain Model

Вы в курсе, что такое «Anemic Domain Model»? В курсе, что это понятие ортогонально ООП, не поощряет и не препятствует его использованию? Судя по-всему, вы просто нахватались умных слов. Если бы знали истинное значение, то не позволяли бы себе таких ляпов.

По ссылке тяжелые наркотики. Заходить не рекомендую.


Я не виноват, что сложная и нетривиальная тема кажется вам наркоманским бредом. Виновато ваше непонимание, и только оно.

Kuka ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.