Про информативность диаграмм и схем
Одна из ошибок проектирования - чрезмерное увлечение абстракциями. Смысл проектирования заключается не в том, чтобы сказать "я художник я так вижу", а в том, чтобы понять каким образом будет реализована будущая программа или автоматизированная система до ее фактической реализации.
Естественно, что в рамках проектирования не имеет смысла рассматривать все детали будущего кода, а нужно сосредоточиться на основных моментах, которые важны для реализации.
Обычно достаточно уточнять схему до момента когда можно по схеме определить семантику (смысловое значение) элементов указанных на схеме.
Давайте разберемся на примере. Как можно выразить семантику диаграммы под пунктом А на рисунке выше? Можно сказать, что это просто "класса А это генерализация класса Б". Но на инженерном языке это будет звучать как-то так "что-то является чем-то". Весьма размытая семантика и пример чрезмерной абстракции на диаграмме.
С другой стороны под пунктом Б в схему добавлен нужный смысл и уже можно прочитать, что "Машина является автобусом" или "Автобус - генерализация машины".
Второй пример явно более удачный с позиции семантики, так как появляется не только "смысл", но и коллизия, ведь данное решение на практике будет приносить много "боли" и его следует пересмотреть.
Вторая диаграмма позволяет выявить проблему до начала работ над кодом - это и есть польза проектирования.
Однако, бывают случаи, когда архитектор неправильно воспринимает семантику схемы и в результате в работу уходит проект, который не может быть реализован на практике. Но это уже другая история.
Нам же важно понять, что хорошая схема должна быть настолько информативной, чтобы ответить на следующие вопросы:
- назначение элементов на схеме (и связанные с ними ограничения);
- взаимосвязь (влияние) элементов друг на друга;
- может ли элемент быть исключен из схемы и какие последствия это будет иметь;
- может ли элемент быть заменен и какие последствия это будет иметь;
- можно ли на основе схемы построить истинные утверждения, а не просто сформулировать абстрактные догадки.
UPD. Примеры в данном случае оба показывают неудачные кейсы, первый пример показывает "отсутствие смысла", а второй имеет смысл, но при этом нарушена логика, так как наследовать машину от автобуса - неверно. Как раз наличие во втором примере семантики, позволяет нам увидить ошибку на этапе проектирования.
Реакции влияют на темы постов:
100 x 💡 - пост по архитектуре
100 х 🥷 - пост про код
100 х 👑 - пост про профессиональный рост
#знания #проектирование
SOER | PRO | Boosty
Одна из ошибок проектирования - чрезмерное увлечение абстракциями. Смысл проектирования заключается не в том, чтобы сказать "я художник я так вижу", а в том, чтобы понять каким образом будет реализована будущая программа или автоматизированная система до ее фактической реализации.
Естественно, что в рамках проектирования не имеет смысла рассматривать все детали будущего кода, а нужно сосредоточиться на основных моментах, которые важны для реализации.
Обычно достаточно уточнять схему до момента когда можно по схеме определить семантику (смысловое значение) элементов указанных на схеме.
Давайте разберемся на примере. Как можно выразить семантику диаграммы под пунктом А на рисунке выше? Можно сказать, что это просто "класса А это генерализация класса Б". Но на инженерном языке это будет звучать как-то так "что-то является чем-то". Весьма размытая семантика и пример чрезмерной абстракции на диаграмме.
С другой стороны под пунктом Б в схему добавлен нужный смысл и уже можно прочитать, что "Машина является автобусом" или "Автобус - генерализация машины".
Второй пример явно более удачный с позиции семантики, так как появляется не только "смысл", но и коллизия, ведь данное решение на практике будет приносить много "боли" и его следует пересмотреть.
Вторая диаграмма позволяет выявить проблему до начала работ над кодом - это и есть польза проектирования.
Однако, бывают случаи, когда архитектор неправильно воспринимает семантику схемы и в результате в работу уходит проект, который не может быть реализован на практике. Но это уже другая история.
Нам же важно понять, что хорошая схема должна быть настолько информативной, чтобы ответить на следующие вопросы:
- назначение элементов на схеме (и связанные с ними ограничения);
- взаимосвязь (влияние) элементов друг на друга;
- может ли элемент быть исключен из схемы и какие последствия это будет иметь;
- может ли элемент быть заменен и какие последствия это будет иметь;
- можно ли на основе схемы построить истинные утверждения, а не просто сформулировать абстрактные догадки.
UPD. Примеры в данном случае оба показывают неудачные кейсы, первый пример показывает "отсутствие смысла", а второй имеет смысл, но при этом нарушена логика, так как наследовать машину от автобуса - неверно. Как раз наличие во втором примере семантики, позволяет нам увидить ошибку на этапе проектирования.
100 x
100 х
100 х
#знания #проектирование
SOER | PRO | Boosty