Re[30]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 10:19
Оценка:
Здравствуйте, Сомов Александр, Вы писали:

СА>>>Всё-таки, даже если в математических книгах и есть картинки, то они описывают не структуру формул, а, грубо говоря, результат их применения. А вот тот же UML — описывает как раз-таки более структуру. Аналогом картинок из математических книг в программировании были бы screenshot'ы.


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


СА>А по вашему код должен выглядеть совсем не так? Мой код структурно очень близок к предметной области. И тут можно выделить последовательность взаимодействия в виде высокоуровневых операций в коде.


То есть в твоём коде отсутствуют ключи, идентификаторы, указатели или ссылки — в общем всё то, что отсутствует в предметной области?
Интресно — и как он при этом работает?
Re[32]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 10:27
Оценка:
Здравствуйте, Сомов Александр, Вы писали:

СА>Здравствуйте, AndreyFedotov, Вы писали:


AF>>Здравствуйте, Сомов Александр, Вы писали:


AF>>>>И что в 10% кода содержится описание того, что должно быть в остальных 90%?

AF>>>>Вселенная, конечно, фрактал, но не до такой же степени...
СА>>>Вселенная — нет. А грамотно спроектированный код — да. Вот те 90% "мешающегося" при понимании архитектуры кода очень легко спрятать. Этот давно известный приём ООП называется "инкапсуляция".

AF>>То есть вы возмьмётесь доволдить до победного конца проект, в котором описано 10% интерфейсов, классов и кода — без какой либо документации или других источников информации о том, что нужно делать?

СА>Не так, 10% кода должны отражать логику работу, а 90% — нюансы.
Про должны — это теория. А если не отражают? А если, как это часто бывает, зказчик хочет, что бы сначала заработала часть функционала, а потом делалось всё остальное — и именно этот кусок + обвязка которая ему нужна и реализованы?

СА>Насчёт доводить — функциональные требования нужны всегда, а с ними — да, возьмусь. В этой области UML один из инструментов описания и даже не самый удобный.

То есть тезис о том, что кода достаточно вы только что сами же и отвергли...

СА>Опять же, из функциональных требований, которые сами по себе не требуют UML.

Да, как уже многократно говорилось, обойтись можно. И в зависимости от ситуации это будет разумно использовать UML или не использовать.

СА>А из грамотно написанного, работающего кода я могу извлечь описание функциональности. Разумеется, то, что в коде не содержится, не будет отражено.

То есть нужна документация описывющая модель.
СА>Но в этом случае, если была бы документация, то она просто не соответствовала системе. А когда она полностью соответствует, то она становится ненужной (при условии, что код написан хорошо). Причём ненужной, как документация, — необходимость остаётся при разборе дефектов. Но тут опять же архитектурный UML никаким боком не вылазит, достаточно словесных описаний.
Система может быть написана плохо и действительно не отражать модель. Но ценность часто имеет именно модель, а не сам код — особенно в крупных проектах.
Re[17]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 10:39
Оценка:
Здравствуйте, Сомов Александр, Вы писали:

СА>Здравствуйте, AndreyFedotov, Вы писали:


AF>>Здравствуйте, Сомов Александр, Вы писали:


AF>> Вот именно после такого поверхностного освоения за неделю и рождаются монстры, которых потом программистам приходится потом и кровью выписывать. А простая мысль поговорить с программистами — которые всяко лучше разбираются в технологии — в голову не приходила?

СА>Да вовсе нет. Своевременный грамотный рефакторинг ещё и из не таких дыр выбраться позволяет. Хуже, когда упорно пишутся всё новые и новые абстракции под архитектуру, которая ну никак не соответствует выбранной среде. Я год жил с такой спущенной сверху архитектурой. В итоге, её просто выкинули, а программа была отрефакторена. С тех пор она быстро и качественно развивается.
То есть вы нарушили ключевое условие: учёт особенностей архитектуры выбранной среды. Опять таки — это имеет отношение к среде, но не к языку. Исходный тезис был про знание синтакиса языка. Про особенности архитектуры ничего не говорилось.

AF>> Потом дело совсем в другом. Архитектуру в сложной системе нужно описывать так, что бы от кода вообще не зависела. Тут знание языка вообще может быть вредным — так как появляется тенденция подгонять архитектуру под сиюминутные потребности. Кроме того пример с DCOM как раз иллюстрирует ключевой момент о котором я и говорил:

AF>>

AF>>Секрет в том, что бы знать принципы построения языков и архитектуру используемых библиотек, а вот синтаксис — вовсе не обязательно...

СА>Да... на самом деле, я понял, мы почти об одном говорим. Просто нынче первая используемая библиотека идёт чуть ли не с языком в поставке. Вот я её имел в виду, когда писал. Вот её — да, нужно знать. Но если так, то у нас архитектура строится библиотекозависимо. А это достаточно серьёзная привязка к тому же языку, например. Это знания всё равно будут соседствовать. Т.е. это ещё не тот уровень, который не зависит от окружения. Если так, то много нюансов окружения придётся включать в архитектуру. И, опять же, разве не код (ну и, где совсем необходимо, текстовое описание) может содержать эти нюансы.
Совершенно верно. С поправкой на то, что библиотека может быть инвартантна по отношению языку (.NET) или по отношению к платформе (QT).
Потому тут три наиболее характерных пути. Первый — когда мы согласны с привязкой к библиотеке/платформе — тогда мы можем подгонять архитектуру под её особенности. В мелком проекте так обычно и делается. Второй — когда нам требуется инвариантность к библиотеке/платформе. В этом случае разрабатывают API — который должен обеспечивать эту инвариантность и архитектура делается под него. И наконец, в крупных и дорогих проектах требуется инвариантность по отношению к реализации нижележащих уровней. В этом случае на верхнем уровне архитектура может быть сколь угодно абстрактна и до определённой степени вообще игнорировать какие-либо особенности платформ.

СА>Можно ведь и архитектуру поддерживать, и картинки не рисовать. Высокоуровневая (модульная) архитектура и так практически от кода не зависит, а уровень взаимодействия объектов внутри модулей в программе меняется уже без особых усилий. И заранее нужно писать именно высокоуровневую архитектуру и там не то, что картинок, а текста-то на страничку — две. А внутримодульный уровень писать отдельно от кода смысла нет.

Теория. Такое возможно только в мелкой системе. В крупной это уже 20-30 страничек, если не 200-300.

AF>>Вы хотите сказать, что архитектор или разработчик, которые легко за неделю осваивают синтаксис нового языка не в состоянии за ту же неделю понять, что означает десяток стрелочек?

СА>Освоит. Но зачем? До кучи?
Для того, что бы понимать друг-друга даже если мысли описаны на бумаге...
Re[18]: UML
От: Merle Австрия http://rsdn.ru
Дата: 16.06.05 10:44
Оценка:
Здравствуйте, Alexey Rovdo, Вы писали:

AR> Вы высказываете примерно те же мысли, которые я пытался объяснить в самом начале этого спора.

С этими мыслями никто и не спорит, не соглашаются с другим Ваши утверждением, что UML хорошо подходит для документирования готового кода.
Тут во-первых сама посылка не верна, хороший код не нуждается в документировании, а во-вторых, идея не удачна, уж если документировать то нет смысла изобретать для этого новый язык.
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[2]: UML
От: Merle Австрия http://rsdn.ru
Дата: 16.06.05 10:44
Оценка: :)))
Здравствуйте, bralgin, Вы писали:

B>Господа! Предлагаю определится с терминологией!

Не надо, так интереснее..
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[2]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 10:45
Оценка:
Здравствуйте, bralgin, Вы писали:

B>Здравствуйте, ВСЕ УЧАСТНИКИ ОБСУЖДЕНИЯ, Вы писали:



B>Господа! Предлагаю определится с терминологией! А то, похоже, каждый под архитектурой понимает что-то свое:

B>кто бизнес логику, кто иерархию объектов, etc.

Совершенно верно. А заодно и о том, о каких системах идёт речь. Так как налицо когда сопоставляются методы для разработки бухгалтерских программок на месяц работы и крупных аппаратно-программных компелксов на 1000 человеколет.
Re[18]: UML
От: Merle Австрия http://rsdn.ru
Дата: 16.06.05 11:04
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF> То есть вы нарушили ключевое условие: учёт особенностей архитектуры выбранной среды.

Не нарушили, а как раз наоборот. Учета не было с самого начала, а потом переделали с этим учетом.

AF>Исходный тезис был про знание синтакиса языка.

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

AF> Для того, что бы понимать друг-друга даже если мысли описаны на бумаге...

Для этого UML не нужен.
... << RSDN@Home 1.1.4 beta 7 rev. 0>>
Мы уже победили, просто это еще не так заметно...
Re[31]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:11
Оценка: 1 (1)
СА>>А по вашему код должен выглядеть совсем не так? Мой код структурно очень близок к предметной области. И тут можно выделить последовательность взаимодействия в виде высокоуровневых операций в коде.

AF>То есть в твоём коде отсутствуют ключи, идентификаторы, указатели или ссылки — в общем всё то, что отсутствует в предметной области?

AF>Интресно — и как он при этом работает?

Хм... да ведь это же всё, что запятые в тексте. Читать-то нисколько не мешают.

Вот когда там появляется дополнительная логика или нюансы — это хуже. Они скрывают общую логику. Ну так их можно отделить, инкапсулировать во что-нибудь, чтобы в глазах не маячили. А основной код остаётся лакончным и близким к предметно области.

К тому (можно я тоже попередёргиваю ) — в предметной области, как правило и стрелочек с рамочками нет.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[33]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:11
Оценка:
AF>>>То есть вы возмьмётесь доволдить до победного конца проект, в котором описано 10% интерфейсов, классов и кода — без какой либо документации или других источников информации о том, что нужно делать?
СА>>Не так, 10% кода должны отражать логику работу, а 90% — нюансы.
AF> Про должны — это теория. А если не отражают? А если, как это часто бывает, зказчик хочет, что бы сначала заработала часть функционала, а потом делалось всё остальное — и именно этот кусок + обвязка которая ему нужна и реализованы?
Да какая разница — какое там отношение процентное. Просто код, отражающий нюансы, должен быть инкапсулирован. А то, что останется — читать несложно. И поддерживать несложно.

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

СА>>Насчёт доводить — функциональные требования нужны всегда, а с ними — да, возьмусь. В этой области UML один из инструментов описания и даже не самый удобный.

AF> То есть тезис о том, что кода достаточно вы только что сами же и отвергли...
Для понимания архитектуры — достаточно, для развития и исправления дефектов — недостаточно.

СА>>Опять же, из функциональных требований, которые сами по себе не требуют UML.

AF> Да, как уже многократно говорилось, обойтись можно. И в зависимости от ситуации это будет разумно использовать UML или не использовать.
Ну вот. А я предлагаю структурировать код, чтобы и архитектура (не функциональные требования) им же просто и описывалась. Чтобы этот не очень удобный инструмент (UML то есть) и вовсе не был нужен.

СА>>А из грамотно написанного, работающего кода я могу извлечь описание функциональности. Разумеется, то, что в коде не содержится, не будет отражено.

AF> То есть нужна документация описывющая модель.
СА>>Но в этом случае, если была бы документация, то она просто не соответствовала системе. А когда она полностью соответствует, то она становится ненужной (при условии, что код написан хорошо). Причём ненужной, как документация, — необходимость остаётся при разборе дефектов. Но тут опять же архитектурный UML никаким боком не вылазит, достаточно словесных описаний.
AF> Система может быть написана плохо и действительно не отражать модель. Но ценность часто имеет именно модель, а не сам код — особенно в крупных проектах.
А как хорошо, когда там ещё и код модель отражает.

Мы же не говорим о том, как быть с уже написанной лапшой, мы говорим, как писать код так, чтобы он не требовал (или требовал минимум) подобных дополнений.

Как работать с лапшой — это уже совсем другая головная боль.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[19]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:12
Оценка:
AR>> Вы высказываете примерно те же мысли, которые я пытался объяснить в самом начале этого спора.
M>С этими мыслями никто и не спорит, не соглашаются с другим Ваши утверждением, что UML хорошо подходит для документирования готового кода.
M>Тут во-первых сама посылка не верна, хороший код не нуждается в документировании, а во-вторых, идея не удачна, уж если документировать то нет смысла изобретать для этого новый язык.

Код — не нуждается. А функциональность нуждается. Иначе у нас нет эталона, к которому приводить код.

А про второе, насколько я понял, Alexey Rovdo и не говорит.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[18]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:12
Оценка:
AF>>> ...пропущено...
Почти согласен.

AF>>>Вы хотите сказать, что архитектор или разработчик, которые легко за неделю осваивают синтаксис нового языка не в состоянии за ту же неделю понять, что означает десяток стрелочек?

СА>>Освоит. Но зачем? До кучи?
AF> Для того, что бы понимать друг-друга даже если мысли описаны на бумаге...
Возможно. Но лучше освоить настолько же родной язык и свои же мозги. Это как из неверных UML картинок получаются неверные программы, так и из каши в голове получается каша. А какая разница — будет она в словах или в картинках. А если всё чётко — слов более чем достаточно.

Проблема ведь, как правило, не в том, UML или не UML, а в том, работает голова как надо или нет. А UML — один из (и не более того) инструментов. Вовсе не обязательный и не всегда удобный. Я бы вообще не стал утверждать, что он где-то особо нужен или напротив не применим. Но вот я его не выбрал. И не использую. Он мне не нравится. И бумажек со словами хватает.

Сама концепция — общего языка — очень неплохая. Реализация — не тянет. Да и дублирование, мне кажется, на этом пути можно устранить, совместим архитектуру и код. Для этого и то и то нужно править. Нынешние языки не очень хорошо для совмещения подходят, UML — тоже.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[3]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:12
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:

AF>Здравствуйте, bralgin, Вы писали:


B>>Здравствуйте, ВСЕ УЧАСТНИКИ ОБСУЖДЕНИЯ, Вы писали:



B>>Господа! Предлагаю определится с терминологией! А то, похоже, каждый под архитектурой понимает что-то свое:

B>>кто бизнес логику, кто иерархию объектов, etc.

AF>Совершенно верно. А заодно и о том, о каких системах идёт речь. Так как налицо когда сопоставляются методы для разработки бухгалтерских программок на месяц работы и крупных аппаратно-программных компелксов на 1000 человеколет.


Ну. Так сразу всё интересное кончится, потому что будет сразу видно, что в одних случая UML хорошо применяется, а в других — не очень, и потому все и спорят.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[19]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:13
Оценка:
AF>>Исходный тезис был про знание синтакиса языка.
M>Исходный тезис был вообще не про синтаксис, а про умение программировать на уровне своих разарботчиков на языке на котором будет вестись разработка.
Согласен.

AF>> Для того, что бы понимать друг-друга даже если мысли описаны на бумаге...

M>Для этого UML не нужен.
Ещё раз согласен.

... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[4]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 11:18
Оценка:
Здравствуйте, Сомов Александр, Вы писали:

AF>>Совершенно верно. А заодно и о том, о каких системах идёт речь. Так как налицо когда сопоставляются методы для разработки бухгалтерских программок на месяц работы и крупных аппаратно-программных компелксов на 1000 человеколет.


СА>Ну. Так сразу всё интересное кончится, потому что будет сразу видно, что в одних случая UML хорошо применяется, а в других — не очень, и потому все и спорят.


А так тут оказывается процесс главное! Спор ради спора? Ну тогда радуйтейсь — вы победили! I'm quit
Re[5]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:23
Оценка:
AF>А так тут оказывается процесс главное! Спор ради спора? Ну тогда радуйтейсь — вы победили! I'm quit
Да ладно. Это я иронизирую по поводу появления вопроса, который практически и является решением проблемы.

А на самом деле все к одному мнению не придут. То пользы — только разные точки зрения послушать.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[19]: UML
От: Alexey Rovdo Россия http://ru.linkedin.com/in/rovdo
Дата: 16.06.05 11:46
Оценка: +1
Здравствуйте, Сомов Александр, Вы писали:

СА>... Но лучше освоить настолько же родной язык и свои же мозги. Это как из неверных UML картинок получаются неверные программы, так и из каши в голове получается каша. А какая разница — будет она в словах или в картинках. А если всё чётко — слов более чем достаточно. ...


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

СА>Сама концепция — общего языка — очень неплохая. Реализация — не тянет. Да и дублирование, мне кажется, на этом пути можно устранить, совместим архитектуру и код. Для этого и то и то нужно править. Нынешние языки не очень хорошо для совмещения подходят, UML — тоже.


Да, сегодня архитектура и код оказались разъединенными. Но вот каким образом их соединить? Представляется три возможных варианта:
1) Расширить возможности UML и инструментария для работы с ним, включив в него возможности для встраивания исходного кода непосредственно в UML-модели (путь описанный _Obelisk_). В таком варианте исходный код может автоматически генерироваться прямо из полной UML-модели.
2) Расширить возможности исходного года и инструментария по работе с исходным кодом с тем, чтобы обеспечить комфортную работу архитекторов именно с исходным кодом, но не на уровне конкретных строк, а на уровне самой модели системы. В таком варианте UML-модели могут автоматически генерироваться из исходного кода. (путь в некотором приближении близкий идиологии Together и DSL).
3) Заменить UML чем-то иным.

Вариант "отказаться от UML и оставить все как есть" я все-таки пропускаю. Что бы выбрали вы?
Re[20]: UML
От: Сомов Александр Россия  
Дата: 16.06.05 11:49
Оценка:
AR>Кстати, мы тут все пишем о тексте, комментариях в коде и на словах. А вот на каком собственно языке должны быть эти комментарии? Мне кажется, что ценность таких стандартов как UML состоит еще и в том, что они позволяют легче переступать банальные языковые проблемы. Все таки UML освоить можно быстрее, чем научиться грамотно излагать свои мысли хотя бы даже по английски.
А комментарии в коде при том, что код понятен — тоже не нужны. А вот идентификаторы — однозначно на английском. Если что — Lingvo поможет.

СА>>Сама концепция — общего языка — очень неплохая. Реализация — не тянет. Да и дублирование, мне кажется, на этом пути можно устранить, совместим архитектуру и код. Для этого и то и то нужно править. Нынешние языки не очень хорошо для совмещения подходят, UML — тоже.


AR>Да, сегодня архитектура и код оказались разъединенными. Но вот каким образом их соединить? Представляется три возможных варианта:

AR>...
AR>Вариант "отказаться от UML и оставить все как есть" я все-таки пропускаю. Что бы выбрали вы?
Да в принципе, все три вполне подходят. Только вот кто бы сделал.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[20]: UML
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 16.06.05 13:09
Оценка:
Здравствуйте, Alexey Rovdo, Вы писали:

AR>Да, сегодня архитектура и код оказались разъединенными. Но вот каким образом их соединить? Представляется три возможных варианта:


Мне нравится идея литературного программирования. Но по этому пути никто не пошел
... << RSDN@Home 1.1.3 stable >>
Re[21]: UML
От: AndreyFedotov Россия  
Дата: 16.06.05 13:22
Оценка:
Здравствуйте, Сомов Александр, Вы писали:

СА>>> Однако, это верно для очень квалифицированного программиста.

M>>Естественно, но лично я с турдом себе представляю архитектора, который не является квалифицированным программистом...
СА>А я об этом и говорю. Да здравствует код! Долой UML!

Гениально. Правда я где то видел обратный лозунг:
Долой код! Да здравствует UML!
Да и денег у них поболее будет...
Re[20]: UML
От: nixite  
Дата: 16.06.05 14:05
Оценка:
AR>Да, сегодня архитектура и код оказались разъединенными. Но вот каким образом их соединить? Представляется три возможных варианта:
AR>1) Расширить возможности UML и инструментария для работы с ним, включив в него возможности для встраивания исходного кода непосредственно в UML-модели (путь описанный _Obelisk_). В таком варианте исходный код может автоматически генерироваться прямо из полной UML-модели.

Ужаснейший вариант, просто страшно становиться если это кто-то сделает... чем это лучше RAD-средств, абстракция иная только. Представляете как с этим работать...

AR>2) Расширить возможности исходного года и инструментария по работе с исходным кодом с тем, чтобы обеспечить комфортную работу архитекторов именно с исходным кодом, но не на уровне конкретных строк, а на уровне самой модели системы. В таком варианте UML-модели могут автоматически генерироваться из исходного кода. (путь в некотором приближении близкий идиологии Together и DSL).


Были такие интересные идеи помнится, как абстрагироваться от файлов и от места хранения, вроде того что достаточно СУБД по проекту, код представим структурами и классами и навигация идёт не по файлам, что в принципе не очень удобно ибо искуственно разными способами всё группируется и логически выстраивается, а от классов... вобщем идеи явы мне нравятся, реализация вообще не нравится
Из такой концепции однозначно строиться любая UML или что-то иное позволяющее просмотреть взаимодействие классов/объектов, стурктура этих классов и может является с одного представления UML, с другого обычным кодом, редактировать такое будет просто с одной стороны можно графически, с другой текстово... по-моему удобно, возможно это путь DSL, я пока что это не видел.

AR>3) Заменить UML чем-то иным.


я бы выбрал 3. или по крайней мере пересмотреть UML от и до -- рефакторинг вобщем.

p.s. кстати на Use Case мне откровенно смотреть проивно ибо кажется поделкой из десткого сада. Его целесообразность вообще мне сомнительна. Текстовый документ описывающий всё тоже самое более подробно и ясно, займёт меньше места, сэкономит бумагу и время.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.