• Модель C4

    На момент написания статьи, модель С4 (C4 model) всё ещё является довольно популярным инструментом для описания архитектуры программных систем. Она состоит из намного меньшего количества элементов, если сравнивать с классическим языком моделирования — UML или новомодным ArchiMate, поэтому процесс изучения проходит намного проще и быстрее. Важно отметить, что модель C4 не является формальным языком моделирования. Чтобы таковым считаться, нужно соответствовать ряду требований — наличие спецификации, должны быть определены синтаксис и семантика. Хотя C4 нельзя ставить в один ряд с другими полноценными языками моделирования, у этой модели всё равно есть ряд преимуществ. Модель C4 была создана Саймоном Брауном в период с…

    Читать далее…

  • Про архитектуру ПО

    Решил написать ещё одну заметку про проектирование больших программных продуктов. Меня периодически спрашивают, как разработать качественную архитектуру. При этом программистов и менеджеров интересуют разные аспекты. Программисты больше фокусируются на технических вопросах (дизайн,технологический стек, язык программирования), а менеджмент — на бизнес-аспектах, например, как выбрать и нанять архитектора, как принятые решения повлияют на стоимость разработки и поддержки проекта. Есть такая книга «Thinking, Fast and Slow». На русский язык название почему-то перевели как «Думай медленно… решай быстро», хотя буквальный перевод означает «Быстрое и медленное мышление». Автор книги Даниэль Канеман — нобелевский лауреат по экономике, но книга не только про экономику. Я бы сказал,…

    Читать далее…

  • Запечатывание в Java

    Наконец-то нашёл время дописать статью в блоге, которая давно уже в черновиках лежит…. Итак, про запечатанные классы и немного про алгебраические типы данных. Запечатанные классы определяются с помощью ключевого слова sealed. Это нужно, чтобы ограничить в наследовании. Потенциальных наследников в таком случае нужно указать явно, через запятую после permits. Например: На самом деле, основной вопрос который мне задают, не как ограничить наследование, а зачем вообще запрещать или ограничивать наследование? Ведь наследование — один из столпов ООП, такой же, как инкапсуляция и полиморфизм… Если посмотреть официальные цели в JEP, то в них написано: 1. Allow the author of a class or…

    Читать далее…