tag:blogger.com,1999:blog-3208941668630248550.post8206828177644005562..comments2024-03-13T10:43:06.615+02:00Comments on 18-ть лет с Delphi: Об "общей" модели системыAlex W. Lulinhttp://www.blogger.com/profile/08400475846894229767noreply@blogger.comBlogger59125tag:blogger.com,1999:blog-3208941668630248550.post-36262842894522280352015-11-14T22:13:26.855+02:002015-11-14T22:13:26.855+02:00:-):-)Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-3749733307648556402015-11-12T03:37:14.238+02:002015-11-12T03:37:14.238+02:00Извиняюсь за массу опечаток, тем не менее надеюсь,...Извиняюсь за массу опечаток, тем не менее надеюсь, что смысл не пострадал.NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-11575110943681448882015-11-12T03:30:27.516+02:002015-11-12T03:30:27.516+02:00Я многое пересмотрел...
-- Не убеждён, что понял В...<i><b>Я многое пересмотрел...</b></i><br />-- Не убеждён, что понял Вас, Александр...<br />На мой взгляд, отличие "матрёшки" от "множества слабосвязанных моделей" сводится только к замене композиции на агрегацию, или другой вид связи.<br />Ещё сложнее мне понять, когда Вы говорите о выделении "граничных слоёв".<br />Свою точку зрения я изложил выше - перечитал немного, и пока себе самому мне возразить нечего, по крайней мере в части операционного языка.<br />Поделюсь - в последнее время мне приходится сталкиваться с диаграммами чаще, чем это было в два года назад, и те проблемы, на которые я указал тогда, никуда неделись. Чем сложнее диаграмма, тем сложнее с ней работать. Хорошая диаграмма - это маленькая диаграмма, которая иллюстрирует идею. на может попасть в документацию, иногда она может жить действительно долго, но генерировать по ней код... Я бы не стал.<br />Но я с интересом наблюдаю за Вашей работой, и вполне позитивно ссылаюсь на Вас на занятиях со студентами, приводя примеры былоо широкого применения UML, чем мне казалось бы уместным. В любом случае, люди должны знать, что идея непрерывной генерации кода в соответствии с графической нотацией не утратила актуальность, хотя бы, как альтернативное мейнстриму направление.<br />Вместе с тем, я считаю, что основным предметом приложения сил программиста является код, а место всего остального (и диаграмм в частности) - облегчать, упрощать управление этим кодом. Среди задач управления осоняком стоит тема документирования архитектуры - вот здесь UML (и прочие нотации) могут существенным образом помочь. Но только в том случае, если диаграммы не будут перегружены деталями. Тогда они и актуальность сохранят дольше.<br />Чем глубже детализация - тем сложнее диаграмма. Даже если в ней будет не так много сущностей и отношений, одними стереотипами можно существенно перегрузить модель. А как обойтись без расширения базового UML, если требуется поддерживать семейства разновидностей связей? Получается ещё один язык, но его применение только повышает порог входа, да и сопровождать это эффективно можно только в случае, если не отдаляться от темы.<br />"Масла в огонь" подливает и <a href="http://programmingmindstream.blogspot.ru/2015/11/1178.html" rel="nofollow">этот материал</a> - спасибо, кстати, что опубликовали. ПМСМ, обозначенная проблема - суть, прямое следствие непрерывной (т.е. повторяющейся, систематической) генерации кода, отвечающего за бизнес-логику, того, что код перестаёт быть первоисточником, но исполняется ведь всегда код! Отсюда и справедливые опасения за то, как бы чего не утратило работоспособность.<br />Помочь могут тесты, но всего ведь не протестируешь... 100% покрытие - удел небольших проектов, да и создание тестов - затратная вещь, а также то, за что клиент платить не захочет.<br />Разумеется, прошу считать всё вышесказанным, моим глубоко личным мнением.NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-8739965154805592182015-11-12T00:39:22.230+02:002015-11-12T00:39:22.230+02:00http://programmingmindstream.blogspot.ru/2015/11/1...http://programmingmindstream.blogspot.ru/2015/11/1187-delphi.html<br /><br />"Да Александр...<br />Как Вы любите всё запутать...<br />С одной стороны, Вы говорите о преимуществах UML как графической нотации, которая (читай, по своей природе) человеку ближе, что всё нагляднее с UML и понятнее. Упоминаете диаграмму мета-модели, которая способствует навигации и способствует не только осознанию замысла, но и принятию правильных решений.<br />С другой - приводите этот хичкоковский триллер, причём говорите, что весь его показать не можете, поскольку "не уместилось"..."<br /><br />Я многое пересмотрел:<br /><br />"Ну и свою концепцию матрёшки - я с тех пор сильно пересмотрел. Теперь в моём понимании это скорее не "матрёшка", а набор карт. Разного масштаба. Слово "разного" - ключевое.<br /><br />Карты разного масштаба, которые "слабо связаны" с другими картами. Особенно с картами другого масштаба.<br /><br />С выделением "граничных слоёв" для места "сшивок карт".<br /><br />Чтобы была не ОДНА общая модель системы, а чтобы она развалилась на множество СЛАБОСВЯЗАННЫХ моделей."<br />Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-55274534794991520382014-01-17T10:15:07.009+03:002014-01-17T10:15:07.009+03:00Интересно взглянуть...Интересно взглянуть...NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-66835167882939358152014-01-17T02:34:24.708+03:002014-01-17T02:34:24.708+03:00Про "сложность и запутанность"..
Во-пер...Про "сложность и запутанность"..<br /><br />Во-первых: я перерисовал эту дуаграммму<br />Во-вторых: я теперь понимаю как "такие диаграммы рисовать проще".<br />В-третьих: У меня есть понимание "как надо упростить UML (вернее его "конкретную реализацию") чтобы таких "монстров" не было".Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-60127909275147938192013-10-01T01:01:36.588+03:002013-10-01T01:01:36.588+03:00«я уже на половину закончил )) не знаю... опублико...«я уже на половину закончил )) не знаю... опубликовать как "первую часть" или уже все сразу.. просто первая без второй может не очень интересной показаться, имхо.»<br />-- Мне было бы интересно посмотреть на первую часть до того, как Вы закончите вторую :-)<br />В любом случае появятся вопросы.NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-77827330754242198162013-09-30T23:20:02.007+03:002013-09-30T23:20:02.007+03:00Реально, Макс. РЕСПЕКТ!Реально, Макс. РЕСПЕКТ!Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-41381842052523760532013-09-30T21:43:50.746+03:002013-09-30T21:43:50.746+03:00То, что я увидел в черновике - это круто. Я бы - о...То, что я увидел в черновике - это круто. Я бы - опубликовал бы.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-48713526028685901302013-09-30T19:59:05.187+03:002013-09-30T19:59:05.187+03:00>>Но "не тороплюсь", не значит, чт...>>Но "не тороплюсь", не значит, что не *жду с нетерпением* :-)<br /><br />я уже на половину закончил )) не знаю... опубликовать как "первую часть" или уже все сразу.. просто первая без второй может не очень интересной показаться, имхо.Максим Крыловhttps://www.blogger.com/profile/17443805180550384967noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-4096643029970538392013-09-28T02:37:27.631+03:002013-09-28T02:37:27.631+03:00"В Вашем случае оглавление было бы выделено в..."В Вашем случае оглавление было бы выделено в отдельный аспект, разновидности печати - тоже. Если у разновидностей печати много общего - можно было бы выделить общего предка или агрегировать один объект."<br />-- Приятно с умным человеком разговаривать.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-67291690168989804812013-09-28T02:26:51.668+03:002013-09-28T02:26:51.668+03:00"Как-то странно для меня выглядит то, что Вы ..."Как-то странно для меня выглядит то, что Вы сказали... Изменения в общей части обычно тестируются отдельно, если тесты системной части проходят нормально, то почему у коллег должно что-то "сломаться", если коллеги работают с протестированным кодом?"<br />-- понимаете - у нас не TDD. а регресс-тесты и тесты прецедентов.<br />Мы тестируем ошибки требования. И только "иногда" - проводим Unit-тестирование. Для особо критичных участков.<br /><br />Так что есть вероятность, что у нас НЕ сломается, а коллег сломается.<br /><br />Когда у них СЛОМАЕТСЯ - мы сделаем регресс-тест. И БОЛЬШЕ там ломаться не будет. НО это ТОЛЬКО когда ошибка уже была. А ВСЁ ПОКРЫТИЕ - мы не гарантируем. Да и не стремимся к этому. Это ОЧЕНЬ ДОРОГО.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-83561668506783431052013-09-28T02:23:55.292+03:002013-09-28T02:23:55.292+03:00"Существенное дополнение... Очень интересно....."Существенное дополнение... Очень интересно..."<br />- да.. существенное.. сам не знал..Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-76328309547473311372013-09-28T02:23:14.722+03:002013-09-28T02:23:14.722+03:00" Мнда... Надо дождаться всё-таки примера от ..." Мнда... Надо дождаться всё-таки примера от Максима... "<br />-- вряд ли пример от Максима вам именно этот аспект прояснит. Он тестированием не занимается. Но - стоит дождаться.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-49006031817556060172013-09-28T02:21:32.578+03:002013-09-28T02:21:32.578+03:00Понимаете - это ведь вы такой УМНЫЙ.
И про аспекты...Понимаете - это ведь вы такой УМНЫЙ.<br />И про аспекты знаете и про примеси. Многие ведь не знают "зачем виртуальность конструктору"..<br /><br />Это - горькая правда :-(Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-86747611012843925482013-09-28T02:20:34.255+03:002013-09-28T02:20:34.255+03:00«"Как обстоятельство существования разных про...«"Как обстоятельство существования разных проектов может препятствовать проведению функциональной и объектной декомпозиции предметной области?" <br />-- корневые элементы диаграммы это суть папки на файловой системе. Их моно конечно слить в одну. Но об этом тоже надо "думать". А разные папки - это разные настройки проектов. Поделил у себя на две. Свои настройки и ночную компиляцию поправил - а у коллег вылезло. И они - недовольны. Имеют право.»<br />-- Существенное дополнение... Очень интересно...NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-88896399702687198012013-09-28T02:17:44.222+03:002013-09-28T02:17:44.222+03:00"Вероятно, под "контрольными точками&quo..."Вероятно, под "контрольными точками" Вы понимаете места подключения аспектов..."<br />-- именно!<br />Просто про контрольные точки я узнал раньше, чем про АСПЕКТЫ. И сам - "придумал" их в программировании. А потом оказалось, что "всё придумано до нас"..Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-66632737529083496142013-09-28T02:16:28.621+03:002013-09-28T02:16:28.621+03:00«"Ну, у Вас же тесты есть. У нас на них ресур...«"Ну, у Вас же тесты есть. У нас на них ресурсов не всегда хватает..." <br />-- есть... в "пяти" проектах из "двадцати". <br /><br />Мы можем знать, что не разломали у себя. Но не гарантируем, что не разломали у коллег.»<br />-- Мнда... Надо дождаться всё-таки примера от Максима... :-)<br />Как-то странно для меня выглядит то, что Вы сказали... Изменения в общей части обычно тестируются отдельно, если тесты системной части проходят нормально, то почему у коллег должно что-то "сломаться", если коллеги работают с протестированным кодом?NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-67349424511369209792013-09-28T02:15:42.881+03:002013-09-28T02:15:42.881+03:00"Ну да... Где-то так и случается. Впрочем сом..."Ну да... Где-то так и случается. Впрочем сомневаюсь, что это повредит новому аспекту..."<br />-- не повредит конечно. Если аспект УЖЕ выделен и ОТТЕСТИРОВАН, в разных вариациях - это только на руку всей системе.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-37386169039924808372013-09-28T02:14:07.594+03:002013-09-28T02:14:07.594+03:00"Кроме того, если нужно срочно (а когда бывае..."Кроме того, если нужно срочно (а когда бывает по-другому?) можно временно смириться с дублированием, тем не менее, выполнив создание отдельного аспекта. Дальше нужно адаптировать существующий код, содержащий в себе элементы этого нового аспекта, заменив фрагменты на использование нового аспекта."<br />-- логично.. И так - тоже бывает.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-59954686778803616732013-09-28T02:13:25.437+03:002013-09-28T02:13:25.437+03:00"Ну, у Вас же тесты есть. У нас на них ресурс..."Ну, у Вас же тесты есть. У нас на них ресурсов не всегда хватает..."<br />-- есть... в "пяти" проектах из "двадцати".<br /><br />Мы можем знать, что не разломали у себя. Но не гарантируем, что не разломали у коллег.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-57171350648946920152013-09-28T02:12:34.005+03:002013-09-28T02:12:34.005+03:00«-- логично. У нас - тоже. Я не зря про "конт...«-- логично. У нас - тоже. Я не зря про "контрольные точки" писал. Тут - http://18delphi.blogspot.ru/2013/04/blog-post_6244.html. Там правда про тестирование. Но мы эту технику и для программирования используем.»<br />-- Вероятно, под "контрольными точками" Вы понимаете места подключения аспектов...NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-2076216637055347452013-09-28T02:11:20.249+03:002013-09-28T02:11:20.249+03:00Правда от "событий" (Event'ов) мы ст...Правда от "событий" (Event'ов) мы стараемся уходить. Используем что-то вроде publisher/subscriber или strategy.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-38190203886258749362013-09-28T02:10:18.854+03:002013-09-28T02:10:18.854+03:00«И тут есть ещё один момент. Завтра приходит "...«И тут есть ещё один момент. Завтра приходит "заказчик" и говорит - "надо этот аспект убрать".»<br />-- Убираете инициализацию соответствующего объекта-обработчика в данном контексте.<br /><br />«Это - "нехитро".. а если ДОБАВИТЬ?»<br />-- Выполняете инициализацию соответствующего "паразита" в нужном контексте.<br /><br />«А если это и не аспект вовсе в терминах системы? Значит - надо выделять аспект..»<br />-- Да. Но вот почему-то мне кажется, что в коде это сделать проще, чем через UML.<br />Возможно, пока кажется.<br /><br />«да так, чтобы другое не разломать..»<br />-- Ну, у Вас же тесты есть. У нас на них ресурсов не всегда хватает...<br />Кроме того, если нужно срочно (а когда бывает по-другому?) можно временно смириться с дублированием, тем не менее, выполнив создание отдельного аспекта. Дальше нужно адаптировать существующий код, содержащий в себе элементы этого нового аспекта, заменив фрагменты на использование нового аспекта.<br />Кстати, вот думаю... У нас такое происходит нечасто... Я про материал предыдущего абзаца. Наверное потому, что о потенциальном дублировании функциональности меня оперативно информируют, и рефакторинг часто опережает реальные требования к нему... Ну не всегда конечно.<br /><br />«и быть готовым к тому, что завтра "заказчик" может поменять своё мнение...»<br />-- Ну да... Где-то так и случается. Впрочем сомневаюсь, что это повредит новому аспекту...NameRechttps://www.blogger.com/profile/00070033877714975718noreply@blogger.comtag:blogger.com,1999:blog-3208941668630248550.post-71729738904486773792013-09-28T02:09:17.585+03:002013-09-28T02:09:17.585+03:00"У нас объект автоматизации практически никог..."У нас объект автоматизации практически никогда не функционирует непосредственно, ему практически всегда "помогают" специально настроенные уже упомянутые "паразиты", которые и отражают специфику прецедента в терминах UML."<br />-- логично. У нас - тоже. Я не зря про "контрольные точки" писал. Тут - http://18delphi.blogspot.ru/2013/04/blog-post_6244.html. Там правда про тестирование. Но мы эту технику и для программирования используем.Alex W. Lulinhttps://www.blogger.com/profile/08400475846894229767noreply@blogger.com