-
Модель 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…
android (11) blog (2) coworking (3) database (5) dce vm (1) design (2) design pattern (2) excel (1) gradle (1) groovy (1) gwt (3) gwt-ext (2) hibernate (2) image (3) Jar (1) Java (79) JavaScript (4) json (1) lambda (1) linux (6) maven (6) multimedia (2) mustache (1) mysql (4) netbeans (10) pdf (1) rdf (2) rmi (1) Scala (17) security (1) svg (1) svn (4) template system (1) Tomcat (4) tv (1) uml (9) web (1) xml (1) архитектор (3) дизайн (1) комикс (1) компьютер (1) места (2) программирование (59) работа (7)