Содержимое
На ЛАФ'2024 рассказывал про историю UML в контексте общей истории развития системного анализа. Такой философско-аналитический доклад-рассуждение. Что-то из этого вы уже могли читать в канале. Что я для себя понял: * В 70-е и 80-е системный аналитик — это было очень круто. Это был человек, который помогал программистам проектировать системы. В 70 произошел переход к структурному программированию (кто помнит проблему GOTO?..), и возник вопрос: как правильно разбивать программу на процедуры и модули, и появились методы структурного анализа — мы их используем до сих пор, оттуда, например, концепции coupling и cohesion. * В 90-х такая же задача возникла в связи с объектно-ориентированным проектированием: какие классы и объекты должны быть в программе, и как они друг с другом общаются? Тут появился единый графический язык — UML. * UML — это язык, он не диктует никакую методику работы. В отличие от методов структурного анализа, которые именно методы, а языки и диаграммы используют каждый свои — вспомните пятнадцать разных способов изображения кратности связи на ER-диаграмме. UML — универсальный язык, элементами которого можно показать любую методику — в частности, методику каждого из его создателей: у Буча была методика Буча, у Рамбо — OMT, у Якобсона — Objectory или OOSE. Буч и Рамбо предлагали начинать с выделения классов (неизвестно, по какому принципу), а Якобсен — выделить акторов, их варианты использования, потом расписать, какие для каждого варианта нужны интерфейсы, данные и логика, и уже это становилось классами. * Потом эти методики забылись, во многом благодаря тому, что оказался не востребован сам процесс проектирования: некогда проектировать по методике, нужно закодить, показать и переделать, если оказалось не то. Об этом Мартин Фаулер написал ещё в 2004 году, когда использование UML было на пике. После 2004 года идёт последовательное угасание интереса к UML. Все заговорили о смерти UML (Якобсон, как всегда, считает, что "вы всё врёти, UML жив, вы просто неправильно его используете". Он про всё так считает — и про Use Cases, и про Essence). * В 2023 году уже считается общим местом, что UML умер, но подарил нам Sequence Diagram — и это самое лучшее, что он мог сделать. * Если смотреть на UML сейчас в РФ, то он вполне себе используется: чаще, чем остальные графические языки. Конечно, на первом месте с большим отрывом — Sequence Diagram. При этом профессия системного аналитика опять востребована — видимо, как проектировщика интеграций. С языками в последнее время ничего кардинально нового не произошло (ООП перестало быть сакральным знанием, классы работают скорее как модули из старого структурного программирования, а функциональщина не требует перестройки подходов к проектированию), а вот на уровне архитектуры воздвиглись микросервисы, которые всё время между собой общаются, и это общение кто-то должен проектировать. Язык для этого новый не нужен — можно обойтись тем же UML (в виде SD) или C4. А вот появились ли методики проектирования? Как у трёх амиго или у ДеМарко с Йордоном: делай раз, делай два, делай три, вот тебе проект разбивки на микросервисы и интеграции? Открытый вопрос.