|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekbBsplesk, а теперь представь, что таких компаний тысяча, у каждой уже реализованы какие-то системы, у кого-то микросервисы, у кого-то монолиты, у кого-то вообще непонятно что написанное 30 лет назад, у кого-то ничего. Более того, эти компании находятся в разных странах с разным законодательством. И у них даже криптографические стандарты разные! А, ведь, данные при передаче нужно как-то подписывать или шифровать. Все эти программы сертифицируются разными органами. Именно так и работаем, как внутри и снаружи куча разных систем с совершенно различными архитектурами и стеком. Но нет никакой "регулирующей организации" . Каждая компания/вендор предоставляет способ интеграции - в виде того или иного api (PublicAPI), при это чтобы все могли нормально с ним работать это должен быть определенный и не обязательно строгий стандарт. При данных требованиях рулит http/REST - да он "кривой и косой", да это "натягивание совы на глобус", но он работает и позволяет интегрироваться с минимум затрат/времени . Тот-же wsdl/soap на три головы круче, но нужна соответствующая поддержка на уровне стека, а это может быть "очень доооолгой пластинкой", которая отобьёт всё желание, да и экономический эффект будет не очевиден (а доброго Васи на голубом вертолете, который качественно и бесплатно создаст реализацию под ваш стек и будет её поддерживать все нет). авторПричём, сами данные, которые передаются, они же не хранятся где-то в одном месте. Нельзя написать один REST сервис, к которому люди будут обращаться. Достаточно, чтобы у каждой компании был "REST Public API" - каждое API уникально, но разобраться можно. https://developer.paypal.com/ https://www.developer.ebay.com/docs https://developers.digitalocean.com/documentation/v2/ https://developer.americanexpress.com/ https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html https://developer.sberbank.ru/ https://developer.qiwi.com/ru/pull-payments/ https://oplata.tinkoff.ru/landing/develop/documentation https://developer.mercedes-benz.com/apis/dealer_api/docs https://developer.equifax.com/products ... etc Ares_ekbBsplesk, И над всем этим стоит регулирующая организация, ЦБ - XBRL . Нужен ли UML если есть регулирующая организация? https://habr.com/en/post/333636/ http://www.xbrl.org/Specification/XBRL-2.1/REC-2003-12-31/XBRL-2.1-REC-2003-12-31 corrected-errata-2013-02-20.html The logos of our sustaining partners – Fujitsu , SAP , Workiva, ACRA and the Association of International Certified Professional Accountants – are all registered to their respective organisation and are used with permission. The IFRS Foundation’s logo and the IASB®, IFRS®, IFRS for SMEs®, IFRS Foundation®, International Accounting Standards®, International Financial Reporting Standards® are registered trade marks of the IFRS Foundation. The W3C’s logo, as well as terms including XML, DOM, HTML, XHTML, HTML5, XSL and XSLT are registered and unregistered Trademarks of the Massachusetts Institute of Technology (MIT), European Research Consortium for Informatics and Mathematics (ERCIM), or Keio University (Keio) on behalf of the World Wide Web Consortium. All use of the W3C Trademarks is governed by the W3C Trademark and Service Mark License. Зачем носиться исключительно с ребятами/теоретиками из OMG головного мозга, когда есть практики из w3c? (хотя часть компаний дублируется?) uml Copyright © 2009-2013 88Solutions Copyright © 2009-2010 Artisan Software Tools Copyright © 2001-2013 Adaptive Copyright © 2009-2010 Armstrong Process Group, Inc. Copyright © 2001-2010 Alcatel Copyright © 2001-2010 Borland Software Corporation Copyright © 2009-2010 Commissariat à l'Energie Atomique Copyright © 2001-2010 Computer Associates International, Inc. Copyright © 2009-2010 Computer Sciences Corporation Copyright © 2009-2013 Data Access Technologies, Inc. (Model Driven Solutions) Copyright © 2009-2013 Deere & Company Copyright © 2009-2013 European Aeronautic Defence and Space Company Copyright © 2001-2013 Fujitsu Copyright © 2001-2010 Hewlett-Packard Company Copyright © 2001-2010 I-Logix Inc. Copyright © 2001-2013 International Business Machines Corporation Copyright © 2001-2010 IONA Technologies Copyright © 2013 Ivar Jacobson International SA Copyright © 2001-2010 Kabira Technologies, Inc. Copyright © 2009-2010 Lockheed Martin Copyright © 2001-2010 MEGA International Copyright © 2009-2010 Mentor Graphics Corporation Copyright © 2009-2013 Microsoft Corporation Copyright © 2001-2010 Motorola, Inc. Copyright © 2009-2010 National Aeronautics and Space Administration Copyright © 2009-2013 No Magic, Inc. Copyright © 1997-2017 Object Management Group, Inc Copyright © 2009-2010 oose Innovative Informatik GmbH Copyright © 2001-2010 Oracle Corporation Copyright © 2009-2010 Oslo Software, Inc. Copyright © 2009-2010 Purdue University Copyright © 2012-2013 Simula Research Laboratory Copyright © 2009-2010 SINTEF Copyright © 2001-2010 SOFTEAM Copyright © 2009-2013 Sparx Systems Pty Ltd Copyright © 2001-2010 Telefonaktiebolaget LM Ericsson Copyright © 2009-2010 THALES Copyright © 2001-2013 Unisys Copyright © 2001-2010 X-Change Technologies Group, LLC w3c (xml schema) At the time this document is published, the members in good standing of the XML Schema Working Group are: David Ezell, National Association of Convenience Stores (NACS) (chair) Shudi (Sandy) Gao 高殊镝, IBM Mary Holstege, Mark Logic Sam Idicula, Oracle Corporation Michael Kay, Invited expert Jim Melton, Oracle Corporation Dave Peterson, Invited expert Liam Quin, W3C (staff contact) C. M. Sperberg-McQueen, invited expert Henry S. Thompson, University of Edinburgh Kongyi Zhou, Oracle Corporation The XML Schema Working Group has benefited in its work from the participation and contributions of a number of people who are no longer members of the Working Group in good standing at the time of publication of this Working Draft. Their names are given below. In particular we note with sadness the accidental death of Mario Jeckle shortly before publication of the first Working Draft of XML Schema 1.1. Affiliations given are (among) those current at the time of the individuals' work with the WG. Paula Angerstein, Vignette Corporation Leonid Arbouzov, Sun Microsystems Jim Barnette, Defense Information Systems Agency (DISA) David Beech, Oracle Corp. Gabe Beged-Dov, Rogue Wave Software Laila Benhlima, Ecole Mohammadia d'Ingenieurs Rabat (EMI) Doris Bernardini, Defense Information Systems Agency (DISA) Paul V. Biron, HL7; later Invited expert Don Box, DevelopMentor Allen Brown, Microsoft Lee Buck, TIBCO Extensibility Greg Bumgardner, Rogue Wave Software Dean Burson, Lotus Development Corporation Charles E. Campbell, Invited expert Oriol Carbo, University of Edinburgh Wayne Carr, Intel Peter Chen, Bootstrap Alliance and LSU Tyng-Ruey Chuang, Academia Sinica Tony Cincotta, NIST David Cleary, Progress Software Mike Cokus, MITRE Dan Connolly, W3C (staff contact) Ugo Corda, Xerox Roger L. Costello, MITRE Joey Coyle, Health Level Seven Haavard Danielson, Progress Software Josef Dietl, Mozquito Technologies Kenneth Dolson, Defense Information Systems Agency (DISA) Andrew Eisenberg, Progress Software Rob Ellman, Calico Commerce Tim Ewald, Developmentor Alexander Falk, Altova GmbH David Fallside, IBM George Feinberg, Object Design Dan Fox, Defense Logistics Information Service (DLIS) Charles Frankston, Microsoft Matthew Fuchs, Commerce One Andrew Goodchild, Distributed Systems Technology Centre (DSTC Pty Ltd) Xan Gregg, TIBCO Extensibility Paul Grosso, Arbortext, Inc Martin Gudgin, DevelopMentor Ernesto Guerrieri, Inso Dave Hollander, Hewlett-Packard Company (co-chair) Nelson Hung, Corel Jane Hunter, Distributed Systems Technology Centre (DSTC Pty Ltd) Michael Hyman, Microsoft Renato Iannella, Distributed Systems Technology Centre (DSTC Pty Ltd) Mario Jeckle, DaimlerChrysler Rick Jelliffe, Academia Sinica Marcel Jemio, Data Interchange Standards Association Simon Johnston, Rational Software Kohsuke Kawaguchi, Sun Microsystems Dianne Kennedy, Graphic Communications Association Janet Koenig, Sun Microsystems Setrag Khoshafian, Technology Deployment International (TDI) Melanie Kudela, Uniform Code Council Ara Kullukian, Technology Deployment International (TDI) Andrew Layman, Microsoft Dmitry Lenkov, Hewlett-Packard Company Bob Lojek, Mozquito Technologies John McCarthy, Lawrence Berkeley National Laboratory Matthew MacKenzie, XML Global Nan Ma, China Electronics Standardization Institute Eve Maler, Sun Microsystems Ashok Malhotra, IBM, Microsoft, Oracle Murray Maloney, Muzmo Communication, acting for Commerce One Paolo Marinelli, University of Bologna Lisa Martin, IBM Noah Mendelsohn, Lotus; IBM; invited expert Adrian Michel, Commerce One Alex Milowski, Invited expert Don Mullen, TIBCO Extensibility Murata Makoto, Xerox Ravi Murthy, Oracle Chris Olds, Wall Data Frank Olken, Lawrence Berkeley National Laboratory David Orchard, BEA Systems, Inc. Paul Pedersen, Mark Logic Corporation Shriram Revankar, Xerox Mark Reinhold, Sun Microsystems Jonathan Robie, Software AG Cliff Schmidt, Microsoft John C. Schneider, MITRE Eric Sedlar, Oracle Corp. Lew Shannon, NCR Anli Shundi, TIBCO Extensibility William Shea, Merrill Lynch Jerry L. Smith, Defense Information Systems Agency (DISA) John Stanton, Defense Information Systems Agency (DISA) Tony Stewart, Rivcom Bob Streich, Calico Commerce William K. Stumbo, Xerox Hoylen Sue, Distributed Systems Technology Centre (DSTC Pty Ltd) Ralph Swick, W3C John Tebbutt, NIST Ross Thompson, Contivo Matt Timmermans, Microstar Jim Trezzo, Oracle Corp. Steph Tryphonas, Microstar Scott Tsao, The Boeing Company Mark Tucker, Health Level Seven Asir S. Vedamuthu, webMethods, Inc Fabio Vitali, University of Bologna Scott Vorthmann, TIBCO Extensibility Priscilla Walmsley, XMLSolutions Norm Walsh, Sun Microsystems Cherry Washington, Defense Information Systems Agency (DISA) Aki Yoshida, SAP AG Stefano Zacchiroli, University of Bologna Mohamed Zergaoui, Innovimax Почему так упорно не хотите спуститься с Олимпа научных статей к людям (услышать их)? Вот создали конвертер uml2xsd (посмотрю повнимательней, как раз выходные) - ну Ок - хорошо, а мнение людей (простых людей) спросили, что им нужно в работе ? - Вот бесплатный совет (да хотелка), по развитию uml2xsd. Сделайте поддержку (для моделей) формата "Excel" (С возможностью выбора в качестве базового (тоесть создаем в нём) при "концептуальном" моделировании - в моём частном (больном) случае - выделение бизнес объектов/модели + связи) и предоставьте информацию или напишите "Readmi", как добавить/разработать конвертер - допустим в swagger (OpenAPI) - в части моделей (там всё просто до "нельзя" - хипстерский формат) - сейчас у меня собственное "поделие" на VBA/Excel, которые худо бедно позволяет переводить xml schema <--> swagger/openapi (data model) с хранением общей модели в Excel - которую можно частично загрузить допустим произвольного PDF файла с "табличками". Кстати да, кое где мы используем (исторически тащим) Data Transfer Object (DTO)/производства IBM. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 19:45 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
alex55555maytonУ кого есть какая-либо информация об этом прошу накидайте книжек и ссылок по ФЗ. Так с первых же ссылок в гугле: Фреймовая модель знаний Фрейм (инженерия знаний) Марвин Минский - Фреймы знаний. Это гуд. Буду искать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 20:17 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
BspleskЦБ - XBRL . Нужен ли UML если есть регулирующая организация? XBRL только для отчетности. Для национальной платежной системы они, например, внедряют стандарт ISO 20022 . Там внутри как-раз всё описывается в виде моделей, из которых генерятся документы, Excel, XSD, XSLT и отдаются пользователям НПС. BspleskСделайте поддержку (для моделей) ... Я ровно этим сейчас и занимаюсь :) Делаю нормальный инструмент моделирования, который позволяет генерить разные вещи из моделей (там дофига ещё разных идей на самом деле - я очень много пользовался разными инструментами и хорошо понимаю чего там не хватает). Но если учесть, что кроме этого проекта у меня ещё 3 работы, то идёт всё это очень не быстро. У меня уже запилена рисовалка моделей (JavaScript + d3.js), серверная часть на Spring (хранилище моделей, версионирование и т.п.), парсер и генератор SQL. Даже куплен прикольный домен и сервак стоит :) Для запуска первоначальной версии нужно по сути только довести немного до ума рисовалку моделей и исправить баги. Я вполне потянул бы этот проект один, если бы не 3 других работы. Сейчас ищу разные варианты не то, чтобы с инвесторами. Потому что деньги тут не нужны, больше нужны разработчики. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2019, 20:31 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekbуже 6 лет пишу всякие методики моделирования, научные статьи, выступаю на конференциях, пишу статьи для хабра, чтобы нести всё это для широкого круга людей, фигачу инструменты. Это всё занимательно, но суть-то отсутствует. Есть конторы, которые имеют право нагибать весь окружающий мир. Эти конторы выдают нагибательные приказы. И есть предложение в нагибательные приказы вставить некие модели. Звучит занимательно, но толку-то нет. Зачем при чтении неких данных модель? Только что бы понять, что очередной нагибатель от тебя хочет. И для этого достаточно простейших XSD с их ограничениями на длину полей и прочими комментариями. На основе XSD худо-бедно большинство что-то умеют делать. А что дадут некие более широкие модели? Ну что? Какую к чертям конвертацию, генерацию и прочее? Сначала это будет геморой по изучению предмета и сопутствующих инструментов, а потом будет ни на грамм не лучше обычной XSD. Ну и зачем? Ares_ekbхочется понять что люди вообще думают по поводу модельно-ориентированной разработки и т.п. Это перспективное направление. Но не у нас. Где-то внутри какого-то ведомства, возможно, при наличии кучи важных факторов, таких как поддержка начальства и наличие собственно реальной потребности (а не фантазии со стороны оналитегов), можно пытаться реализовывать внутренние задачи на основе такого подхода. Но снаружи - ну зачем? Просто нет никакого смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2019, 12:02 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
alex55555, ответ на вопрос "зачем?" очень простой. Как минимум 3 причины: 1) Лет 20-30 назад для обмена данными были очень популярны форматы семейства EDI (EDIFACT, ASC X12, HL7 и др.). Потом начал набирать популярность XML и на базе этих стандартов стали создавать аналогичные стандарты, но на основе XML. Например, UN/EDIFACT стал основой для UN/CCL, HL7, я могу ошибаться, но кажется в 3-ей версии в качестве альтернативы получил и XML-ый вариант. Американские ASC X12 я смотрел совсем немного, но на сколько я помню там тоже были какие-то рекомендации по преобразованию EDI<->XML и соответствующие инструменты. Именно в тот момент (лет 20 уже как) и начала развиваться вся эта тема с платформенно-независимыми моделями. Люди осознали, что 1) требования к структуре сообщения и 2) требования к формату передачи - это две разные вещи. Стандарт обмена данными должен описывать структуру сообщений в технически нейтральном виде, не нужно в стандарт тащить технические детали, детали реализации. И отдельно должны даваться рекомендации как эти структуры укладываться в EDI, XML или что угодно. Самый хороший пример - это стандарт ISO 20022. Он состоит из нескольких частей . В 1-ой части описывается метамодель, т.е. набор правил как вообще нужно проектировать сообщения и т.п. Во 2-ой части описывается как делать всё то же самое, но на языке UML. А, самое интересное - это 3 и 8 части. В 3-ей части описывается как на основе технически нейтральной структуры сообщений сформировать XML схему, если обмен будет в формате XML. А 8-ой части описывается как формировать ASN.1 схемы. На случай, если участники взаимодействия хотят использовать этот бинарный формат. Ну, вот, исторически там этот формат уже давно используется, написан софт, заточенный под ASN.1 и этот ваш XML им вообще невсрался. Ещё один пример - модель NIEM для межведомственного взаимодействия в штатах. Они уже изначально всё строили на XML, никакого ASN.1. Но так случилось, что некоторые участники больше не хотят использовать XML, подавай им теперь JSON. И что теперь? Перефигачивать все XSD в JSON схемы? Есть ещё куча не столь прогрессивных людей, которые всё ещё хотят XML и JSON им никак не всрался. В итоге NIEM теперь тоже уходит от XML схем, но не в JSON, а в технически нейтральные модели, из которых хош - получишь XSD, хошь - JSON схему. Короче, модели нужны чтобы отделить структуру сообщений от формата их передачи. Потому что структура - относительно стабильная вещь, она меняется вместе с изменением бизнес-требований. А форматы - это всё техника, от компании к компании реализация может меняться. Какой смысл всех заставлять использовать XML? Вы почему-то эту идею ставите с ног на голову: "зачем нам эти модел-наци, которые заставляют всех использовать какие-то модели, давайте лучше заставим всех использовать XML". 2) И вторая причина в том, что XSD, REST API и т.п. - это техническая реализация, понятная только разработчикам и абсолютно непонятная предметным специалистам. Никакой предметник не будет разрабатывать XSD и API и утверждать их какими-то документами. XSD - это в лучшем случае просто дополнение к нормативному документу. А в этом нормативном документе предметники для предметников на человеческом языке описывают состав сведений, различные правила. Здесь получается разрыв. С одной стороны, есть нормативка, которая пишется людьми для людей. Эта нормативка утверждается, имеет официальный статус. С другой стороны, есть реализация этой нормативки в XSD, API и т.п. Тот вариант, который уже неоднократно высказывался в этой теме, типа дайте нам XSD и API, а нормативку засуньте себе в ж..у, он не работает. Всё равно нормативка первична. Короче, проблема в том, что нет никакой гарантии, что нормативка и реализация соответствуют друг другу. Вполне возможно, что в нормативке описана одна структура и одни правила. А когда всё это переводили в XSD и API, то всё напутали, неправильно поняли и сделали какую-то хрень. Чтобы такого расхождения не было и используются модели. В модели мы, с одной стороны, на формальном, однозначном (в отличие от русского) языке, а с другой стороны без лишних технических деталей (в отличие от XSD, REST API и т.п.) описали структуру сообщений, правила обмена и т.п. И затем из этого эталона генерим всё что нужно: нормативный документ, XSD, API и остальное. Это гарантирует, что 1) в правилах обмена нет неоднозначностей и тупых ошибок 2) нормативка и реализация на 100% соответствуют друг другу, потому что сгенерены из одного источника без участия человека. 3) Ну, и 3 причина - это тупо экономия времени. Если бы вы попробовали написать технологические документы по какому-нибудь процессу, в котором только описание структуры сообщения - это страниц 200 текста и сверху ещё тыща правил заполнения этой структуры, а потом реализовать эту структуру в XSD и тыщу правил в коде, то сами захотели бы какой-нибудь инструмент для автоматизации всей этой тупой и рутинной работы. Так чтобы один раз описать структуру и правила (в виде модели, Excel файла или чего угодно), а всю эту жесть генерить автоматом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2019, 13:11 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekb, 1) "Короче, модели нужны чтобы отделить структуру сообщений от формата их передачи." - Это было бы прекрасно, если бы не одно "но". Закон Дырявых Абстракций 2) Классика же 3) Пока это только слова без подтверждения. Почему нельзя сразу описать модель в виде XSD. Это не сложнее чем UML. А т.к. XSD могут быть скомпилированы в классы, то заодно при "компиляции" (проебразовании), можно увидеть ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 08:41 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
mad_nazgul, 1) Я правильно понял из статьи, что SQL, TCP и остальное - это зло и без них лучше? С другой стороны, я кстати отчасти согласен с этой статьей. На примере одного своего проекта. Когда я писал клиентскую часть на HTML, CSS и JavaScript мне хватало Far в качестве текстового редактора и браузера. Что-то подправил - сразу обновил страничку - затестил. Из сторонних библиотек я использовал только d3.js. У меня 90% уходило на разработку, 10% - на какие-то необъяснимые баги в верстке и т.п. Потом начал писать серверную часть (Spring, Hibernate - все дела). Примерно 90% времени я тратил на гугление ошибок, которые выкидывает Hibernate, на чтение документации Spring и т.п. Причём, даже сами авторы Hibernate признают, что у них совершенно неадекватные исключения, вообще не указывающие на реальную причину ошибки, какие-то вещи из JPA не реализованы. В итоге я перешел на EclipseLink и всё стало проще, но всё равно сидела мысль зачем мне этот ад, когда легко и просто всё это делать на SQL. Gradle, Xtext - тоже отдельная история. 3) Потому что XSD описывает только структуру сообщений. Опишите мне на XSD процессы и правила ФЛК. Для ФЛК теоретически есть xs:assert в XSD 1.1, есть Schematron. Но XSD 1.1 очень мало где используется, нельзя заставить всех его использовать. Schematron - ещё более специфическая штука. А, во-вторых, не все используют для обмена XML. 2) Вот, вы ровно это и предлагаете. Использовать XML как универсальный формат для передачи данных на все случаи в жизни. И использовать XSD как универсальный язык моделирования. Хотя ни один, ни другой таковыми не являются. Не понимаю какое нужно подтверждение. Опишите мне всё это на XSD, особенно процессы и правила заполнения документов из регламента начиная с 40 страницы. Да, ещё так чтобы в перспективе можно было использовать JSON или любой другой формат для обмена. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 10:26 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekb, 1) Нет это значит, то что нельзя абстрагироваться полностью и надо знать на чем будет реализовываться та или иная модель. На примере того же SQL, для Oracle есть такие понятия как денормализация и хинты. Которые используют при реализации БД. Ну просто потому что абстрактная модель "разбивается" об конкретную реализацию. 2) Вообще-то через XSD можно полностью описать модель, вплоть до поведения. А если еще подключить и схемы. Баян большой, кнопок много. "Не все" много чего не используют. Мы же говорим об API, соответственно и диктуем и формат сообщения. 3) Нет. Я про другое. Полет наших фантазий ограничиваться конкретными реализациями. И чем меньше будет "переводов" с одного птичьего языка на другой. Тем лучше. Тот же БП лучше сразу хранить в "коде" на исполняемом ЯП. И при смене БП, безжалостно его выкидывать. Модель данных то же лучше сразу иметь в виде БД на СУРБД (например). А создание "универсального" справочника... Пока мой опыт говорит, что это фантастика и даже не научная. Если говорить о номенклатурном справочнике, который внедрен и даже работает. Посмотрите на библиотечные каталоги (ISBN, БИК и пр.). Кстати есть еще стандарт каталожных карточек. Который поддерживает любая библиотека, но у каждой есть свои "особенности" Реализовывал проект электронного каталога библиотеки. Есть куча международных стандартов. В общем большего бардака нигде не видел. Две библиотеки 3 системы каталогов (утрированно). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 11:55 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekbЛюди осознали, что 1) требования к структуре сообщения и 2) требования к формату передачи - это две разные вещи. И что? Как это осознание используется? По факту речь идёт о наличии информации вроде конкретного места нахождения данных, наименований тегов и форматов дат, чисел и т.д. Вот убрали мы всю эту информацию из приказа по очередному рейхскомиссариату для населения покорённой территории, и что произойдёт? Рейхскомиссар всё так же будет расстреливать за неверные форматы, просто потому, что он сам в любом случае будет делать для себя некую физическую реализацию, которую, собственно, и будет требовать от холопов. А информацию холопам (с вашей лёгкой руки) выдаст, естественно, без деталей реализации. Да, это круто в плане навара рейхскомиссара на штрафах с податного сословия, но с точки зрения нагибаемых - башку надо отрывать таким выдумщикам. Нет? Вы просто живёте на марсе и не знаете ситуацию на земле. Ares_ekbСамый хороший пример... Да нет хороших примеров. Взаимодействие с моделями появляется только при наличии всеобщей грамотности в этом вопросе. А нагибание всех приказами о расстрелах неправильно подающих челобитную - это к мазохистам (ну или к садистам, если вы с другой стороны). Ares_ekbКороче, модели нужны чтобы отделить структуру сообщений от формата их передачи. Потому что структура - относительно стабильная вещь, она меняется вместе с изменением бизнес-требований. А форматы - это всё техника, от компании к компании реализация может меняться. Какой смысл всех заставлять использовать XML? Массы необразованы. Поэтому им понятнее XML. А введение дополнительного уровня абстракции у нас всегда превращается в издевательство над населением. Вы же не думаете, что ваш рейхскомиссариат будет учить население? Так с чего вдруг польза будет? Ares_ekbВы почему-то эту идею ставите с ног на голову: "зачем нам эти модел-наци, которые заставляют всех использовать какие-то модели, давайте лучше заставим всех использовать XML". Что это за хрень - модел-наци? Я говорю, что выдернуть структуру из XSD - задачка для детского сада. И потому все ваши позывы что-то упростить всегда столкнутся с банальной проблемой - всё будет усложнено и кого-то из холопов обязательно расстреляют. Пока есть знакомые массам подходы - зачем вводить лишнее? Вы предлагаете сказать - а вот здесь у нас дерево, а вот здесь - дата. Ну и чем весь это текст лучше XSD, в которой всем сразу видно, что там действительно дерево и там действительно дата? И формат даты сразу есть. И не надо искать новый приказ по реийхскомиссариату с указанием на использование форматов дат с такого-то по такое-то число и с переходом на другой формат с ещё какого-то числа. Для всех будет только хуже . Вы почему такую тривиальную истину понять не способны? То есть я понимаю, что по детски вы там увлеклись рисованием моделек, вам это нравится, вы даже какие-то части этого рисования называете гениальными, но понять нужно одно - ваше детское увлечение есть именно ваш личный таракан. Вот вы его и кормите. А зачем другим навязывать? Зачем? Ради выделения структуры, которая и так очевидна? Ради одного мелкого преимущества создавать повод штрафовать всех, кто обязан сдавать подати рейхскомиссару? Одно мельчайшее преимущество. Одно. И сколько раз про это я должен написать? И сколько раз надо писать про огромные минусы в существующей системе? Ares_ekb2) И вторая причина в том, что XSD, REST API и т.п. - это техническая реализация, понятная только разработчикам и абсолютно непонятная предметным специалистам. А вот здесь не надо сочинять. Есть техническая реализация, ей всегда занимаются технические специалисты, и если специалистам что-то непонятно - пинок под зад и забыть про таких специалистов. И есть творчество по изданию приказов рейхскомиссара. Это как раз то, чем у вас там в рейхскомиссариате занимаются. Ну так и творите не выходя из своего рейхскомиссариата. Ваяйте модели, нагибайте рейхскомиссара их учить. Но наружу-то вы всё равно выставите REST-API и какой-нибудь XML. А что за титанические игрища с моделями будут в рейхскомиссариате - всем плевать (ну кроме сотрудников, которых тоже будут расстреливать). И со стороны населения покорённой территории всё давно налажено - есть технические специалисты, которые понимают, что такое XSD и всё прочее. Вот им и спустят задачу реализации взаимодействия. И они её, без сомнений, реализуют. Без всяких модных моделей. Так зачем же их всех нагибать на не нужное им обучение, на кучу ошибок, ну и на штрафы и расстрелы? Ares_ekbЗдесь получается разрыв. С одной стороны, есть нормативка, которая пишется людьми для людей. Эта нормативка утверждается, имеет официальный статус. С другой стороны, есть реализация этой нормативки в XSD, API и т.п. Тот вариант, который уже неоднократно высказывался в этой теме, типа дайте нам XSD и API, а нормативку засуньте себе в ж..у, он не работает. Всё равно нормативка первична. Сотый раз повторю - население безграмотно. Отсюда все разрывы. И в вашем рейхскомиссариате все поголовно безграмотны, потому что они тоже часть населения. То есть причина очевидна, но решение вы по прежнему ищете не в обучении, а в модном изподвыподверте. Вы тупо увлеклись своими модельками. И не замечаете реальность. Ares_ekbКороче, проблема в том, что нет никакой гарантии, что нормативка и реализация соответствуют друг другу. Вполне возможно, что в нормативке описана одна структура и одни правила. А когда всё это переводили в XSD и API, то всё напутали, неправильно поняли и сделали какую-то хрень. Так это же ответственность рейхскомиссариата. Или вы покрываете свою контору? Если у вас там дятлы не способны перевести священные изречения рейхскомиссара на технический язык, то кто-ж вам злобный буратино? Я что ли? Или всё остальное население? Вы опять не видите причину, вы опять рассуждаете о каких-то глупостях. Ares_ekbЧтобы такого расхождения не было и используются модели. Нет. Рейхскомиссар никогда не будет учиться. Он лишком толстый для этого. Поэтому он никогда не будет читать эти ваши модели. Ну и поэтому всегда будет проблема конвертации его священных изречений во что-то технически вменяемое. Ну и помимо рейхскомиссара - это всё внутреннее дело рейхскомиссариата. Зачем его выносить наружу? Плюс (микроскопический) один - будет чуть-чуть понятнее общая схема. Но минус огромный - у нас это всё тупо приведёт к расстрелам и штрафам. Ares_ekbЕсли бы вы попробовали написать технологические документы по какому-нибудь процессу, в котором только описание структуры сообщения - это страниц 200 текста и сверху ещё тыща правил заполнения этой структуры, а потом реализовать эту структуру в XSD и тыщу правил в коде, то сами захотели бы какой-нибудь инструмент для автоматизации всей этой тупой и рутинной работы. Я опять в очередной раз повторяю - внедряйте в своём рейхскомиссариате что угодно, но людей не расстреливайте из-за непонимания причин ваших проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 13:35 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
mad_nazgul, 1) Хорошо, совершенно конкретный пример из презентации : На 35-ом слайде описание правила на русском языке и его спецификация на формальном языке OCL (в UML модели). На 36-ом слайде - сгенеренный Java код. На 37-ом слайде - сгенеренный XSLT код. На самом деле там очень замороченное правило. Это связано с тем, что какие-то поля не уложились в стандарт ISO 20022 и эти данные передаются в расширенной секции и связываются с данными в основной секции по идентификатору. Это очень редкий случай. Обычно правила выглядят как-то так: Код: sql 1. 2.
Код: sql 1. 2. 3. 4. 5.
Тут описывается только содержательная составляющая правила. А когда оно реализуется в коде, то там добавляется очень много логики. Например, если проверяемая секция отсутствует в документе, то это не является ошибкой, но всё равно выдается предупреждение, что типа правило запускали, но подходящих под него элементов не нашли. Если для правила не выполнено предусловие, то аналогично - это не ошибка, но ещё один вид уведомления для пользователей. Ещё валидатор документов должен выдавать путь к XML элементам, которые проверялись. На Java это делается относительно просто, на XSLT - нужно генерить существенно больше кода. Скажем, если обязательный по ФЛК элемент отсутствует, то нужно пройти к этому элементу от корня и выдать путь до последнего присутствующего в документе элемента, и вывести ещё отдельно отсутствующий хвост этого пути. Короче, ФЛК в модели может занимать 1-2 строки. При реализации на Java - это будет строк 10. При реализации на XSLT - строк 200. Все эти дополнительные требования к реализации, которые я описал (что нужно выводить уведомления при невыполненном предусловии, что нужно определенным образом вычислять путь к провалидированным элементам и т.п.), возникали уже в процессе. Если внимательно посмотреть на примеры ФЛК выше, то видно, что там вообще нет ничего, связанного с выводом ошибок, с поддержкой разных видов сообщений (ошибка, успех, не проверялось, не найдено и т.п.), нет никакой логики по определению того есть в документе элементы для валидации или нет, нет проверки выполняется предусловие или нет, нет никакой логики поиска проверяемых элементов. Всё что там есть - это просто бизнесовая спецификация правила (если поле имеет такое-то значение, то другое поле должно быть таким-то). Если бы вся эта жесть, связанная с реализацией, тянулась в бизнесовые правила, то, во-первых, они были бы просто здоровенными и очень сложными. Во-вторых, при малейших изменениях в реализации (понадобилось вместо XML использовать JSON, понадобилось более точно выводить список провалидированных элементов) нужно переписывать все эти бизнесовые правила. Например, раньше мы выводили путь только к провалидированной секции документа, а какие поля сравниваются внутри мы не учитывали. Допилили немного генератор кода, теперь он более интеллектуально анализирует правила ФЛК и выдает более точный путь к элементам. Если бы эта логика определения элементов была сразу зашита в правилах, то пришлось бы переписывать все эти правила. Или, например, раньше были просто правила, мы не заморачивались с предусловиями. Было два исхода валидации: ошибка и успех. Но потом для удобства пользователей решили, давайте всё что в правиле идет до implies считать предусловием и генерить под это соответствующий код. Если бы эту логику зашили сразу на уровне бизнес правил, то опять-таки простым допиливанием генератора не смогли бы это реализовать, пришлось бы переписывать все правила. А правила переписывать очень долго, дорого и вообще невозможно. Потому что после утверждения считай они отлиты в граните и в них даже запятую изменить нельзя. То, что в SQL требуются хинты, совершенно не означает, что они требуются везде и что абстрагироваться от реализации невозможно. Конкретно в нашем случае это возможно. Я лично написал тыщи этих правил и лично занимался их реализацией (а не так, что берите модель и реализуйте как хотите). И ни разу потребности ни в каких хинтах не возникало. Если в реализации чего-то не хватает, то допиливается генератор. Хотя с другой стороны, иногда хинты конечно нужны и это ничему не противоречит. Тут может быть три вида условно "хинтов": 1) Хинты жестко реализованные в генераторе. Например, если мы из модели генерим схему реляционной БД, то можем всегда для каждого внешнего ключа генерить ещё и индекс. Или генерить его в зависимости от каких-то условий. Т.е. зашиваем разные эвристики прямо в генераторе. По мере необходимости правим их или добавляем новые. 2) Хинты как параметры генератора. Например, у нас генератор, который из UML модели генерит XSD. На этапе генерации мы можем задавать какой шаблон XSD должен использоваться (матрешка, райский сад, жалюзи, салями), можем задавать правила преобразования имен в модели в имена в XSD. Или в видео на предыдущей странице ( 21871782 ) при генерации схемы БД как-раз задаётся много параметров-хинтов, определяющих какая схема получится на выходе. 3) Хинты на уровне модели. Такое тоже бывает, но это самый крайний случай (если варианты 1 и 2 не подходят). И то даже в этом случае хинт должен быть максимально абстрактным. Хотя на самом деле это никакой не хинт. Просто модель изначально недостаточно адекватно описывала реализацию и мы эту модель немного расширили. mad_nazgul"Не все" много чего не используют. Мы же говорим об API, соответственно и диктуем и формат сообщения. mad_nazgulТот же БП лучше сразу хранить в "коде" на исполняемом ЯП. И при смене БП, безжалостно его выкидывать. Мы говорим о разных вещах. В проектах, про которые я говорю, есть регулирующая организация, которая определяет правила обмена. Ей запрещено диктовать API, формат сообщений, системы управления БП, языки программирования и т.п. Меня вообще это поражает. Представьте, что вам аналитик, собственник вашей фирмы (который сам допустим не является разработчиком) или вообще предметник со стороны заказчика будет диктовать какой код и как писать. Куда вы пошлете бухгалтера или кассира, который скажет "я тут набросал XSD и API и ещё реализовал несколько процессов в коде, бери их и используй"? Такое возможно вообще? Или сверху какая-то организация будет вам диктовать как что реализовывать. У вас уже написано куча всего. Кто приходит и говорит, так а теперь быстренько переписали всё под JSON. И передавать его будем в SOAP конвертах ( я видел такое :) ), пофиг, что он для XML, но мы считаем что так правильно. И вы пойдете всё переделывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 13:55 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
alex55555, для вас будет XSD, я вообще не понял с чего вы взяли что будет иначе ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2019, 14:15 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekb, 1) 20 лет прошло, ничего не поменялось. Опять маркетолухи втюхивают рисовалку, как решение всех проблем. Это дерьмо я вижу на каждой презентации. После которой наступает лютый п-ц. Т.к. эти картинки настолько же близки к реальности, как единороги к лошадям. 2) Денормализация и хинты платформориентированы. Т.е. то что подходит для Oracle, может быть вредно для MySQL 3) Правила обмена сейчас везде одинаковы - HTTP. Но без API нету никакого протокола обмена данными. Т.к. реализация (API) жестко задает доменную модель, в рамкой которой можно проводить интеграцию/обмен. Все остальное лирика, которая никому не интересна, а нужна для красоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.04.2019, 11:14 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekbBspleskЦБ - XBRL . Нужен ли UML если есть регулирующая организация? XBRL только для отчетности. Для национальной платежной системы они, например, внедряют стандарт ISO 20022 . Там внутри как-раз всё описывается в виде моделей, из которых генерятся документы, Excel, XSD, XSLT и отдаются пользователям НПС. BspleskСделайте поддержку (для моделей) ... Я ровно этим сейчас и занимаюсь :) Делаю нормальный инструмент моделирования, который позволяет генерить разные вещи из моделей (там дофига ещё разных идей на самом деле - я очень много пользовался разными инструментами и хорошо понимаю чего там не хватает). Но если учесть, что кроме этого проекта у меня ещё 3 работы, то идёт всё это очень не быстро. У меня уже запилена рисовалка моделей (JavaScript + d3.js), серверная часть на Spring (хранилище моделей, версионирование и т.п.), парсер и генератор SQL. Даже куплен прикольный домен и сервак стоит :) Для запуска первоначальной версии нужно по сути только довести немного до ума рисовалку моделей и исправить баги. Я вполне потянул бы этот проект один, если бы не 3 других работы. Сейчас ищу разные варианты не то, чтобы с инвесторами. Потому что деньги тут не нужны, больше нужны разработчики. Я думал, вы завязали с UML. Как человек, делавший инструменты моделирования 18 лет и не так давно завязавший с этим, скажу, что скорей всего у вас затея провалится :) 1. Хранилище моделей. Вы использовали EMFStore ? Или что-то свое сделали ? 2. Хранить модели в БД не совсем хорошая идея в плане интеграции моделей в процесс разработки. Т.к модели так или иначе связаны с внешними либами, кодом и так далее, то куда удобней хранить модели там же где и код. Разбивка по разным репозиториям усложняет все процессы. Мы в рамках Rational Design Manager-а делали единое хранилище для артефактов разного типа (на базе RTC), но там свои проблемы, это не Git, стоит дофига и в одиночку такое гарантировано не напишите. Помимо прочего, конкурентная работа над моделью в БД это геммор. 3. В любом случае, версионирование моделей подразумевает diff/merge. Diff/merge моделей это большая проблема для юзера с пониманием что именно поменялось. Особенно когда вовлечены диаграммы, а не только семантическая часть. Я этой темой много занимался и надо когда-нить написать статью, пока все не забыл :) 4. Сделать удобную рисовалку для моделей почти невозможно, если мы хотим использовать модели для генерации кода. В модели надо писать код. В итоге нам надо иметь и нормальный текстовой редактор (c content assist-ом и т.п) и рисовлку в одном флаконе. Т.к иначе писать код в operation-ах/transition-ах/guard-ах и т.д будет крайне не удобно. Отдельная проблема - бесплатных качественных библиотек с line routing-ом для диаграмм особо нет. Можно доводить Joint.js , но и он далеко не идеален. 5. Такие вещи как "Open Type" (из JDT) или поиск по проектам в контексте моделей становятся не удобны. Если с текстом мы можем показать кусок кода вокруг для обозначения контекста, то с моделями это сложно. 6. Однонаправленная генерация кода будет всех раздражать. Если нет roundtrip-а (aka code to model synchronization) т.е апдейт модели после изменения сгенеренного кода, то продукт гарантировано провалится. 7. Делая продукт для моделирования, стоит сразу делать так, чтоб его можно было юзать в headless env (т.е на серваках ) и легко интегрировать со всеми билд системами - make/ant/gradle/etc. В общем, у него должен быть command line API. В первую очередь он должен поддерживать генерацию кода из command line-а. 8. Если бываете в Москве, можете попробовать выступить тут http://sdat.ispras.ru/ . Я как раз в ИСП вернулся, наелся IBM-а и HCL-я. Будет интересно вас послушать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2019, 21:18 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
serge79y, 1. На моей основной работе мы делали несколько репозиториев для моделей. Я очень настаивал на каких-то готовых решениях для хранилища типа EMFStore. Но в итоге сделали своё хранилище в БД. Для внутренней работы мы используем RSA+Git, потом выгружаем модели в XMI и загружаем в хранилище. Для тех проектов такая схема вполне рабочая. Хотя именно для постоянной совместной работы над моделями это действительно очень не удобно. В своём проекте я тоже храню всё в БД. Но схема гораздо сложнее: Есть много разных видов моделей данных (я пока сосредоточился только на них) - UML, ER, IDEF1x, Anchor, Object-role model и др. Они конечно отличаются друг от друга, но в целом они похожи. Например, где-то есть наследование, где-то - нет. Где-то атрибуты упорядочены и не могут повторно использоваться, а где-то - не упорядочены и могут повторно использоваться. Там ещё куча интересных особенностей типа inner and outer multiplicity и т.п. Короче, в БД все эти виды моделей хранятся в виде некой унифицированной модели данных. Причём, хранятся в нормализованном виде (атрибуты, классы, отношения и т.п. - всё отдельно, а не одним XMI файлом или что-то подобное). Семантическая составляющая (сама модель) и визуальная (диаграммы) тоже хранятся отдельно. Чтобы отобразить в браузере, например, диаграмму классов UML происходит следующее: 1) Она достаётся из базы в объектную унифицированную JPAшную модель. 2) Преобразуется в Ecore'вскую унифицированную модель данных (она проще, без версионирования) 3) С помощью QVTo преобразований преобразуется в Ecore'вскую UML модель 4) Она преобразуется в DTO для UML моделей 5) Они сериализуются в JSON и передаются на клиент 6) На клиенте JSON преобразуется в экземпляры JavaScript классов Потом всё это преобразуется в обратном направлении. Честно говоря там просто огромное количество кода. Но метамодели для этой унифицированной/обобщенной модели данных, для UML моделей, для ER моделей и т.п. у меня описаны на Xcore. А большая часть кода генерится автоматом из Xcore: DTO, JavaScript классы, отображения из Ecore'вских моделей в DTO и обратно. Эта часть уже реализована и работает. 2. Я пока предполагал, что код будет просто выгружаться и копироваться руками в проект. С другой стороны, уже есть всякие облачные IDE типа Eclipse Orion. Может быть в будущем эта проблема решится сама собой. Я пока не очень об этом думаю. Насчет конкурентной работы. У меня сделано пока так. Версии моделей неизменяемые, при сохранении всегда создаётся новая версия модели. При одновременном редактировании возникнут параллельные ветки, которые потом придется объединять. Но на начальном этапе будет просто выдаваться предупреждение, что над моделью в данный момент кто-то уже работает. Ещё можно разбивать модели на кусочки, чтобы каждый редактировался и версионировался отдельно. В перспективе, конечно нужен инструмент слияния. Но реально по своему опыту, если модель нормально разбита на части, если за каждую часть отвечает один человек либо работа над моделью идёт поочередно, то конфликтов не возникает и объединять ничего не нужно. Для начала этого будет достаточно. 3. Версионирование у меня реализовано хитрым способом. Как я говорил, модели храняться в базе в нормализованном виде. При любом сохранении создается новая версия. Причём, если в модели переименовали какой-то один атрибут, то в базе создается только этот новый атрибут, а все остальные классы, атрибуты и отношения повторно используются из предыдущей версии модели. При таком подходе можно хоть после каждого изменения сохранять модель и создавать новую версию. Версии неизменяемые поэтому это работает. Это не то, чтобы хранение diff'ов для каждой последующей версии, но чем-то похоже. Я серьезно ещё не думал над diff/merge, но наверное если в двух версиях большая часть элементов - это физически одни и те же записи в базе, то сравнение и слияние должно упрощаться. Да, слияние диаграмм - отдельная жесть. К тому же, диаграммы у меня сейчас для каждой версии хранятся целиком, там нет такого повторного использования как для семантической части. 4. Я пока ограничиваюсь только моделями данных. Поэтому текстовая составляющая там не очень большая. Хотя она есть и это отдельная история. Короче у меня на Xtext сделаны парсер и сериализатор SQL. Там реализовано только нужное мне подмножество (CREATE TABLE, ALTER TABLE и всё, что с ними связано - типы данных, выражения, которые можно писать в ограничениях (это самая объёмная часть), индексы, ключи и т.п. - наверное порядка 70% от стандарта + немного нестандартных вещей из PostgreSQL и T-SQL). Получился такой усредненный SQL. Оно вполне нормально работает. Есть QVTo преобразования ER моделей в SQL модели. Причем редактор SQL вполне норм работает в браузере с автодополнением и т.п. - Xtext поддерживает это из коробки. SQL - немного отдельно отдельно от модели. А, вот, типы данных для атрибутов как-раз пишутся непосредственно на диаграмме и там тоже нужно автодополнение, нужно парсить выражения типа VARCHAR(42) и т.п. У меня это реализовано с помощью совершенно безумной схемы. Короче на Xtext описана грамматика SQL (в том числе для SQLных типов данных), из неё автоматом генерится Ecore'вская модель для абстрактных синтаксических деревьев (AST), парсер и сериализатор на Java. А я запилил кодогенератор, который из той же Xtext'овой грамматики генерит JavaScript классы для AST, парсер, сериализатор и автодополнятель(!) на JavaScript. Я смотрел всякие готовые либы на JavaScript для парсинга/сериализации. Ближе всего был peg.js, но там очень стремно делается автодополнение. И, вообще, все эти либы - это какие-то монстры, проще было написать своё. С типами данных кроме их редактирования есть ещё одна сложность. Мне хотелось хранить их в базе тоже в унифицированном виде (вместо varchar некий универсальный строковый тип). Есть даже ISOшный стандарт на эту тему и это отчасти у меня реализовано, но не до конца. Мапинг этих унифицированных типов в типы T-SQL, PgSQL, XSD, Java и в обратном направлении - большая отдельная тема. С рисовалками ровно та же история. Я посмотрел наверное абсолютно все готовые рисовалки на JavaScript. И это просто жесть. Чтобы сделать какие-то банальные вещи типа автодополнения для имен атрибутов или классов, нужно часами курить документацию, вникать в дурацкое API. В итоге всё равно ничего не получится. Сами по себе рисовалки очень не удобны. Во многих из них огромное количество legacy кода для поддержки IE 5.0 или чего-то подобного. Кстати в одном из репозиториев у нас используется joint.js, но как по мне полный отстой. Самая большая их проблема то, что это просто рисовалки картинок, а не моделей. Там куча лишнего типа шрифтов, цветов и т.п., а нужных вещей нет. Я посмотрел на всё это, плюнул и сделал свою рисовалку на d3.js. Она вполне работает, есть line routing, но пока там много багов. Но как по мне, это в 100 раз лучше и удобней любой существующей рисовалки. Например, между атрибутами класса там можно перемещаться с помощью стрелочек. Для удаления атрибута достаточно удалить его имя, для добавления нового - нажать Enter. В том же RSA - куча каких-то дополнительных окон со свойствами, контекстных меню, выпадающих списков, там нужно постоянно куда-то кликать. У меня класс можно полностью отредактировать с клавиатуры, никуда не кликая. 5. Я пока мало думаю о коде. Больше об аналитиках или разработчиках БД. 6. Об этом я конечно думал! Ровно для этого у меня и запилен парсер/сериализатор SQL на Xtext. Пока я рассматривал такой сценарий. Рисуем схему данных, генерим SQL, создаем базу, потом что-то с ней делают, теперь генерим измененный SQL для базы, загружаем его в рисовалку, преобразуем в модель, сравниваем с исходной моделью. В значительной степени это уже реализовано (за исключением сравнения, о котором я пока не думаю, хотя это самое сложное). Совершенно аналогично это будет работать для других языков типа Java и т.п. Кроме SQL я писал парсер/сериализатор XPath , генерил XSLT, Java - там схема везде одна. Эти парсеры и кодогенераторы относительно легко пилятся на Xtext. После парсера SQL мне кажется я смогу сделать любой. SQL - это лютая жесть, там на уровне грамматики описаны вещи, которые в большинстве языков выносятся в стандартную библиотеку, поэтому язык очень большой. Хотя, с другой стороны, при написании кодогенераторов это наоборот удобней. Единственное, по идее, это должны быть какие-то разовые операции. Например, у нас есть схема БД, мы её преобразовали в модель и затем меняем только модель, а схему перегенерируем на основе модели. Аналогично с кодом: должно быть четкое разделение между автогенерируемым и редактируемым кодом. 7. Тут я не вижу сложностей. Кодогенерация происходит на свервере. Причём, там используются готовые инструменты (Xtext, QVTo) и в принципе, они могут быть отчуждаемыми от рисовалки. Более того, они даже могут быть встроены в каждый проект, в котором используются. Например, в моей рисовалке уже используется несколько кодогенераторов. Это будет выглядеть примерно следующим образом. Рисуем модель, сохраняем её рядом с исходниками в проект. При сборке проекта генерятся нужные артефакты. Я ровно к этой схеме сейчас и стремлюсь. Чтобы, например, схему данных я описывал не в виде JPA классов, а рисовал бы её и JPA классы уже генерил автоматом. Также как у меня сейчас генерятся DTO, всякие мапинги или JavaScript классы. 8. Я кстати как-раз выступал на вашей конференции PSI 2017 :) рассказывал про один из наших репозиториев для моделей, в котором из OCL генерится XSLT и Java для валидации документов ( статья и презентация ). Эта штука используется в реальных проектах, о которых я не могу много писать. Например, упоминается в СТО БР НПС-1.0-2017 . Мне пока пришлось забить на рисовалку. Последний год занимался этой штукой . Оказалось, что там много чего не доделано, хочу доделать и вернуться к рисовалке. Хочется сначала запилить какую-то первую рабочую версию и потом уже её продвигать. Но, блин, там очень большой объём работы, хотя и сделано уже очень много. У меня есть ощущение, что я крякну раньше, чем доделаю её :) Спасибо за предложение! Разберусь с текущими проектами, попробую запустить первую рабочую версию, тогда будет повод для выступления у вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 00:28 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekb, 1. Понятно, слишком много конверсий данных. На больших моделях будут тормоза. В design manager-е EMF модели переводили в RDF вид и потом обратно. В рез-те перфоманс был далеко не ахти, а у вас конверсий еще больше. Советую бинарные протоколы (Protocol buffers + gRPC). В принципе, у меня была идея отмэпить модели на определенную структуру директорий и файлов и использовать просто Git (JGit если сервак на Java) для трэкинга изменений и версионирования. Только руки не дошли. Второй идеей была использовать operational transformation и хранить модели как цепочки операций их создающих.. 2. Вы оптимистичны и просто не сталкивались с ворохом проблем при мерже моделей. Мержить и сравнивать надо даже при одиночной работе (чтоб понять что менял, к примеру). Для нормального разбития модели на части нужно понимание как все внутри крутится. От рядового юзера такого ждать нельзя. Плюс черезмерная гранулированность приводит к своим проблемам при рефакторинге. EMF при сериализации кросс-ресурсные референсы сериализует в духе platform:/resource/<path>#<id>, т.е включает имя физического ресурса где лежит элемент. Тем самым любой cross-resource move требует обновления всех href(обратных ссылок). Можно, конечно, переопределить механизмы сериализации, но если исходная модель из RSA/Papyrus/etc то от platform:/resource URI-ев не убежать. Далее, подразумевать что продукт будет применяться лишь для небольших коллективов и одиночной работы, то там с большой долей вероятности можно вообще отказаться от визуального моделирования. MDA/MDD хотело решить проблему разработки больших систем, но так и не решило. 3. Попробуйте реализовать модель Git-а поверх своей системы хранения. Ну а проблему с диаграммами в общем виде вообще не решить. Для UML это 100%, т.к для полноценного сравнения диаграмм требуется загрузка всей модели (в случае 3-way merge это 4 копии - ancestor/left/right + result). Без полной загрузки мы не можем нормально отобразить те элементы диаграммы, которые автоматические синтезируются из parent-ов (такое есть в RSA и в большем обьеме в RSA-RTE) Я за текстовые DSL и диаграммы как средство визуализации. Т.е диаграмма должна генериться из текста для просмотра, а работа только с текстом. Текст мержить и версионировать куда проще :) 4. Ну я занимался исполняемыми моделями главным образом (генерили С++/Java). И в этом контексте без редактирования кода никуда. Вот презентация нашего продукта (после продажи нас HCL-ю RSA-RTE переименовался RTist) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 11:24 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
serge79yЯ за текстовые DSL и диаграммы как средство визуализации. Т.е диаграмма должна генериться из текста для просмотра, а работа только с текстом. Текст мержить и версионировать куда проще :) Работа только с текстом убьёт большие модели. Поэтому вашим уделом будет рисование примитивных презентаций вместо реально полезных моделей. Хотя да, некоторые склонны уверять, мол "мои модели страшно полезны!", но на самом деле выхлопа в виде полезных и реально работающих систем (сгенерированных или как-то частично отображённых с моделей) у таких авторов просто нет. И польза здесь не в умении сконвертировать модель в UML или в XSD, а в возможности ускорить разработку ПО. Примитивные модели разработку ПО только замедляют. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 12:42 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Интересно. А какие ЯП наиболее приближены к созданию DSL. Не на библиотечном а именно на языковом уровне. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 13:00 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
alex55555, Я так думаю что между DSL и моделью нужен некий слой биндинга. Чтобы разделять дизайн и контент. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 13:02 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
mayton, LINQ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 13:40 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
serge79y, спасибо за описание вашей системы! Мне немного напомнило Eclipse Sirius, на нём сделаны похожие инструменты (что-то на тему генерации кода для роботов, мобильных приложений и т.п.). Он хорош тем, что вместо UML там делаются свои специализированные языки моделирования под каждую задачу. Если в UML приходится постоянно применять стереотипы к элементам, заполнять на отдельной вкладке дополнительные атрибуты стереотипов, то в кастомных языках всё гораздо проще. Создаёшь сразу сущность нужного вида без всяких стереотипов, все дополнительные атрибуты можно вытащить сразу на диаграмму. Ну, и визуально для пользователей это гораздо наглядней , чем UML. Но в моих проектах специфика совсем другая. На самом деле, рисовалка моделей, версионирование, слияние и т.п. - это вещи достаточно технические и вторичные, изначально я хотел взять что-то готовое. Если бы у Eclipse Sirius была веб-версия, я бы просто взял её и не стал бы ничего делать сам. Основная идея в том, чтобы сделать нормальный инструмент моделирования данных. 1) В нём должны быть подсказки по классам, атрибутам, отношениям. Например, пользователь рисует сущность "Транспортное средство", рисовалка может сразу предложить ему на выбор атрибуты для ТС из словаря, связанные сущности (водитель, перевозчик и т.п.). Это основная идея рисовалки. С одной стороны, полно инструментов моделирования, в которых есть словари. Но тут всё немного сложнее чем просто словарь. Поэтому я уделял так много внимания тому, чтобы разные виды моделей данных хранились в нормализованном и унифицированном виде. И проблемы связанные с производительностью для меня совершенно вторичны, главное, что и UML, и ER, и остальные виды моделей укладываются в единую структуру. Если один человек описал какие-то структуры на UML, то все эти сущности, атрибуты и отношения могут повторно использоваться другим человеком, например, в ER модели. 2) Вторая идея - это поддержка разных нотаций для моделей данных. Например, для IDEF1x есть только какая-то древняя жесть. Для Anchor - один единственный редактор. Для Object-role моделей - я вообще не видел редакторов. Хочется собрать всё это в одном месте и чтобы было легко добавлять новые нотации. 3) Преобразования моделей данных из одной нотации в другую. Я хочу реализовать просто все мыслимые преобразования для моделей данных и чтобы они были максимально настраиваемыми. Начиная с банальных вещей типа схемы именования классов, атрибутов и т.п. 4) Поддержка разных платформ. Это разные кодогенераторы и парсеры для SQL, Java, XSD и т.п. И мапинг типов данных (xs:string, varchar, System.String и т.п.) 5) Разделение а) семантической составляющей модели б) представления модели (диаграмма или текст) и в) стилей. Хочется, чтобы модель можно было редактировать хоть в текстовом виде, хотя в виде диаграммы. Тут я совершенно согласен с вами, что для моделей данных текстовая нотация гораздо удобней. Поэтому в моём проекте все модели описаны на Xcore, а не Ecore. Но с другой стороны, диаграммы тоже иногда нужны для наглядности. Кстати, на моей основной работе нам модели данных нужны для проектирования структур документов - для них оптимальная нотация древовидная. На UML их очень неудобно рисовать. Текст тоже не очень подходит, потому что там здоровенные структуры на тысячи реквизитов, дерево удобней всего. Всё равно какой-то одной идеальной нотации нет. Кстати Eclipse Sirius на сколько я помню интегрируется с Xtext и там есть параллельное редактирование модели в виде диаграмм, деревьев, таблиц и текста. И ещё важная фишка, которой нет ни в одном инструменте моделирования - это отделение стилей. Мне совершенно не нужно раскрашивать и менять шрифты для каждого квадратика на диаграмме. Очень хочется задавать такие вещи через стили в одном месте. 6) Наконец, редактор должен быть максимально простым и удобным. Чтобы его не нужно было скачивать, устанавливать, чтобы там не было вообще никаких визардов, менюшек, вкладок и т.п. На столько минималистичный интерфейс на сколько это возможно. Если там не будет сложной функциональности по слиянию моделей или чего-то подобного, то в принципе и фиг с ним. Это вторичные вещи. На основной работе мы делали большие модели и данных, и процессов для межгосударственного взаимодействия - реально, слияние моделей - это одна из последних вещей, которая там нужна. Т.е. у меня не какой-то инструмент моделирования общего назначения, а достаточно узконаправленный. Но такой, чтобы в этом узком направлении всё было идеально. Насчет сравнения моделей. У нас запилен инструмент, который формирует лист изменений, этого было вполне достаточно. Зато у нас есть специфика, которой наверняка нет в ваших проектах :) Это валидация и оценка качества моделей. Для валидации порядка 200 OCL правил. И ещё с полсотни правил на оценку качества (типа отсутствие смысловых дублей, правильное выделение объектов, сохранение обратной совместимости и т.п.). Насчет применения MDD для больших систем. У нас системы достаточно большие :) Вопрос только для чего используется MDD. Если нужно полностью сгенерить какое-то приложение с нетиповой функциональностью то, да, это проблема. Но сгенерить правила ФЛК из модели - проще. Я бы не сказал, что это прям на столько просто, что школьник за пару вечеров запилит. Там очень много своих нюансов. Мы 5 с лишним лет назад сделали этот генератор, и всё равно до сих пор там находятся какие-то вещи для улучшения. ФЛК - это конечно очень узкое направление, но если учесть сколько этих правил ФЛК, какое количество участников взаимодействия, сколько аналитиков проектируют эти процессы, структуры и ФЛК и т.п. - то это вполне себе большая система. Если у вас модели ориентированы на реализацию. То у нас они более бизнесовые, в основном из моделей генерятся документы. А из технических вещей - только XSD и XSLT/Java для ФЛК. В принципе, можно было бы генерить и больше технических артефактов, но заказчикам это просто не нужно. В моём проекте кода генерится уже гораздо больше, но тоже всё это вертится вокруг моделей данных (схемы данных, валидация данных, мапинг данных и т.п.). Какой-то код общего назначения у меня вряд ли будет генериться. Насчет проблем с генерацией на серваке. Во-первых, у меня пока только модель данных и там не очень много кода и меняются модели медленно. Во-вторых, да, генератор будет отчуждаемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 14:54 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
mayton, классический пример - это Lisp. У него нет как такового синтаксиса, фактически ты пишешь код сразу в виде синтаксического дерева. Что это даёт... Например, в Java или C# уже из коробки определен синтаксис для классов, методов, интерфейсов и т.п. А в лиспах или схемах в ядре языка ничего этого нет, и объектная система пишется уже на самом лиспе - например CLOS или какой-то её аналог. Аспектно-ориентированное программирование тоже реализуется аналогично - не нужно придумывать какие-то аннотации, какие-то инструменты для их обработки. Лисп очень легко расширять подобными DSL для объектной системы и т.п. Ещё интересный пример - Isabelle HOL. Это не ЯП, а помощник для доказательства теорем. У него фишка в том, что в нём есть два синтаксиса - внешний и внутренний. Внешний достаточно фиксированный, а внутренний можешь определять как хочешь. Например, мне понадобился DSL для описания всё тех же объектных моделей и чтобы ещё методы у классов можно было писать на языке OCL. Кусок кода на Isabelle HOL на картинке ниже. Внешний синтаксис - это definition, nonterminal, syntax и т.п. А всё что внтури двойных кавычек - это внутренний синтаксис. Я запилил себе всякие конструкции - enum, class, association и т.п. (слева на картинке). А справа на картинке определение этого DSL. На первый взгляд ничего не понятно, но если вникнуть - это просто офигенная штука, там используются priority grammars. Короче, в Isabelle HOL очень легко встраивать разные DSL. Isabelle HOL используется для формальной верификации, для генерации верифицированного кода и т.п. А, вообще, очень прикольно писать DSL на Xtext . Если не стоит задача встраивать DSL в какой-то другой код, то Xtext - оптимальный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 15:36 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
Ares_ekbserge79y, Насчет сравнения моделей. У нас запилен инструмент, который формирует лист изменений, этого было вполне достаточно. Зато у нас есть специфика, которой наверняка нет в ваших проектах :) Это валидация и оценка качества моделей. Для валидации порядка 200 OCL правил. И ещё с полсотни правил на оценку качества (типа отсутствие смысловых дублей, правильное выделение объектов, сохранение обратной совместимости и т.п.). Ну продукт, какой мы в Telelogic-е делали имел под 500 правил. Причем ряд правил применялись автоматические когда юзер редактирует модель (скажем репорт unresolved имен и т.п, полноценный name resolution был), ряд когда нажимал кнопку check/check all (можно было чекать подмножество) и ряд когда генерация кода. Изначально, мы сделали генератор OCL -> C++ для написания правил, но оказалось, что императивно писать правила удобней. Я сделал моторчик для semantic checker-а, который так же имел Tcl API/COM/public C++ API и позволял группировать чеки в иерархии групп с динамическими зависимостями меж собой и возможностью включать и отключать в зависимости от разных событий. Так можно было пометить часть модели как informal и чеки ее игнорили. Минус OCL-я для чеков - не удобно репортить ошибки где в текст надо запихать ссылки на обьекты из контекста. Ну там "Тип Х не может быть использован в данном месте, возможные типы А, Б,С". OCL подразумевает, что если constraint не сработал, то репортим какой-то текст. А текст желательно информативным делать. Еще одна проблема - производительность. В императивном стиле проще оптимизировать, кэши добавить и т.п. Хотя для декларативных моделей OCL подойдет, где constraint-ы простые. Если constraint-ы приближаются по сложности к семантическому анализу и разрешению имен в С++-подобных языках, то OCL-ем не отделаешся. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 16:41 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
alex55555serge79yЯ за текстовые DSL и диаграммы как средство визуализации. Т.е диаграмма должна генериться из текста для просмотра, а работа только с текстом. Текст мержить и версионировать куда проще :) Работа только с текстом убьёт большие модели. Поэтому вашим уделом будет рисование примитивных презентаций вместо реально полезных моделей. Хотя да, некоторые склонны уверять, мол "мои модели страшно полезны!", но на самом деле выхлопа в виде полезных и реально работающих систем (сгенерированных или как-то частично отображённых с моделей) у таких авторов просто нет. И польза здесь не в умении сконвертировать модель в UML или в XSD, а в возможности ускорить разработку ПО. Примитивные модели разработку ПО только замедляют. Я сказал не просто так а исходя из опыта, где у нас были здоровые модели заточенные на генерацию кода. Наши customer-ы потихоньку все переходят либо напрямую на код, либо на некие аналоги текстовых DSL (или мета-программирования средствами языка, если С++ ) Так что текст круче чем визуальное моделирование (само собой в контексте софта, а не всяких САПР, схемотехники и т.п) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2019, 16:44 |
|
Просветите в UML. Вопрос.
|
|||
---|---|---|---|
#18+
serge79yТочнее так, UML плох во всех случаях, за исключением неформальных диаграмм для презентаций и визуализаций. Согласен с вашими тезисами. Что лучше из текста делать диаграмму, а не наоборот. Но если есть текст и те кто его могут читать, то зачем диаграммы? Текст можно сразу писать на нужном ЯП :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2019, 06:55 |
|
|
start [/forum/topic.php?fid=33&msg=39810000&tid=1547146]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 140ms |
0 / 0 |