emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc. – Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
3.48K subscribers
119 photos
15 videos
22 files
1.14K links
Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, Extreme Programming, SDLC, Agile, etc.

Chat: https://news.1rj.ru/str/emacsway_chat

Persistence: https://dckms.github.io/system-architecture/
Download Telegram
Кратко о fitness functions. Любое приложение всегда стремится к энтропии. Как говорил известный в ИТ-индустрии Gregor Hohpe:

💬 It’s almost like enterprise IT is subject to the Second Law of Thermodynamics, which concludes that the entropy in an (isolated) system can never decrease - at best it can be constant, but usually it increases.
-- "Here’s why enterprise IT is so complex" by Gregor Hohpe

Технически невозможно контролировать качество работы каждого разработчика. Это побуждает индустрию искать способы поддержания качества архитектуры на принципиальном уровне. Одним из таких способов является Evolutionary Architecture.

Генетический механизм репродукции реализует адаптивный способ разрешения неопределенности.

Причина его существования заключается в том, что никто не знает какие условия обитания будут на планете завтра. Т.е. имеет место неопределенность условий существования. Вдруг завтра прилетит метеорит и изменится состав атмосферы?

В связи с этим, двуполое размножение обеспечивает постоянную генерацию новых генетических комбинаций. Мы просто не знаем какая именно генетическая комбинация окажется наиболее приспособленной к завтрашним условиям окружающей среды.

Те генетические комбинации, которые слабо приспособлены к текущим условиям окружающей среды, не должны препятствовать распространению более приспособленных комбинаций. Иными словами, если существует механизм формирования разнообразия генетических комбинаций, то должен существовать и механизм истребления слабо приспособленных генетических комбинаций. Именно поэтому двуполый механизм репродукции не может выполнять свои функции без хищников, назначение которых сводится к истреблению слабо приспособленных генетических комбинаций. Т.е. к селекции. Это как пропалывание грядки.

Зачастую проблема кодовой базы заключается в том, что никто и ничто не выполняет роль этого самого хищника, истребляющего несоответствующие решения. Поэтому больные решения хорошо размножаются.

Robert Martin говорил, что архитектура - это о том, как не надо делать. Иными словами, архитектурное решение - это сокращение количества возможных вариантов. Т.е. архитектура должна выполнять хищнические функции.

Чем отличаются собаки от волков? Волк имеет естественных врагов-хищников, а собаки - нет.

Вместо хищников, процесс селекции собак выполняют выставки и стандарты пород, которые фиксируют желаемые свойства пород.

Выводок, не соответствующий требованиям стандарта породы и допустимым пределам отклонения, отбраковывается и не получает сертификат соответствия. Его рыночная ценность падает, и он не используется заводчиками для репродукции.

По мере возникновения исторических изменений в породе, в стандарт вносятся изменения, требования ужесточаются, что обеспечивает прогресс породы.

Этот же принцип положен в основу Evolutionary Architecture. Архитектор выступает в роли автора стандарта породы, а разработчик - в роли заводчика, который выбирает (путём сравнения) для репродукции такой экземпляр породы из всех возможных, который наилучшим образом соответствует стандарту.

Роль стандарта породы выполняют fitness functions (функции соответствия, приспособленности). Они позволяют разработчикам измерить степень соответствия старого варианта системы и нового, и выбрать тот, который соответствует требованиям наилучшим образом.

Понимая, что требования fitness functions будут ужесточаться, разработчик всегда стремится увеличивать запас по требованиям , что вынуждает искать его новые решения и постоянно повышать собственный уровень знаний.

Хотя fitness functions выполняют охранные функции, препятствуя деградации свойств системы, главная их ценность заключается не в этом, а в создании благоприятных условий для постоянного развития уровня квалификации специалистов.

Наиболее важными я считаю fitness functions с нагрузочным и объемным тестированием, которые мгновенно выявляют костыльные запросы и побуждают разработчиков изначально закладывать в систему решения с дальним горизонтом развития, например, такие, как CQRS.

Пример реализации fitness functions.
👍10👏3🔥21🤔1🤩1
Заметки на полях. Системотехника в забугорьях

Я тут задремал, и пропустил обновление SEBoK!
А оказывается он тут обновился 20.11.2023!

В ближайшее время попробую построить diff между версиями 2.8 и 2.9!

Коротко, что нового:

✔️Добавили статью о реверс-инженерке с применением ажаля на примере беспилотной машинки. Мне кажется будет интересно почитать;
✔️ Заменили статью про безопасность в системотехнике на новую;
✔️Заменили статью с обзором руководства по программной инженерии;
✔️Обновили статью о "Системотехнике движимой потерями" про метод наблюдения за атрибутами качества.
✔️ Обновление статьи про "Самовосстановление" систем (System Resilience)
✔️ Набросали новых сценариев применения самого SEBoK для конечных пользователей. Говорят, что будет более дружелюбен к читателям.
✔️ Всякого по мелочи

Я щасливый! Есть, что почитать на досуге и куда закопаться.

#рабочее #системотехника #стандарты #SEBOK
👍2
Заметка на полях. Системотехника в забугорьях.

Откопал курс по основам системной инженерии в MIT. 10 лекций, про то, как в Масачусетсе понимают "Systems engeneering". Да, 2015-й год. Да, не такое свежее. Но вряд ли что-то там радикально меняется в основаниях.

В ближайшее время засяду пересмотреть, и возможно сворую к себе.
Хотелось бы иметь в своём запасе базовый курс по системотехнике, куда можно послать своих товарищей.

На всякий случай там же рядом лежат презентации с этого курса.

#рабочее #системотехника #MIT #учебное
👍3
Заметка на полях. Моделирование и типы моделей.

Интересная статья на habr-e. Где один из аналитиков рассуждает о типах моделей с которыми приходится сталкиваться и с их особенностями. Главные выводы:

1. Нужно различать когда мы моделируем реальный объект в мире, а когда моделируем представление о реальном объекте. Т.е. можно выделить модели "объектные" и "мнимые". Первое - про штуки, второе - про то, что мы об этих думаем в голове.

2. Моделирование одного и того же объекта, не важно реального или мнимого, можно делать разными способами. Через атрибутирование понятия, через выделения методов относящихся к объекту, через отношения между несколькими объектами. Важно понимать ограничения этих методов моделирования и цели моделирования. Мне кажется, что тут много про методы проектирования

3. Запоминаем как "Отче наш...", что модели предназначены для коммуникации, и важно не то, что мы напишем в модель, а то, что там прочитают. Поэтому писать надо не себе будущему, а "ему" прошлому =)

#идейное #моделирование #boro
👍2🔥1
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Вот эта картинка из главы "1.4.2.2 Relationship between Requirements Models and Design Models" справочника "Handbook of Requirements Modeling According to the IREB Standard", которая слегка модифицирует оригинальную картинку из известной статьи Twin Peak Model…
Оказывается, у Eric Evans это есть прямым текстом:

💬 MODEL-DRIVEN DESIGN discards the dichotomy of analysis model and design to search out a single model that serves both purposes.
-- "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans

Вот что такое DDD одним предложением.

P.S.: Моя благодарность всем участникам дискуссии в @ru_arc_chat
👍3🔥21
Коллеги, вы помните, как противоречия в чате канала привели к настолько детальному исследованию вопроса, что по мотивам диалогов возник доклад про SAGA.

Тогда мы непроизвольно использовали диалектический метод познания, известный еще со времен "Диалогов Платона" (и даже раньше). Тогда же родилась идея создать отдельную группу для практикования этого метода в поисках ответов на противоречивые вопросы. Как это модно говорить сегодня - для "баттлов".

Сегодня такая группа была создана: https://news.1rj.ru/str/ru_arc_dialogues

Добавляйтесь, аргументируйте, публикуйте свои противоречивые вопросы.
🔥3👍1
Приглашаю курящих коллег в свой телеграм-канал, посвященный трубкам:
https://news.1rj.ru/str/pipecastle
👍4🤯3
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Оказывается, у Eric Evans это есть прямым текстом: 💬 MODEL-DRIVEN DESIGN discards the dichotomy of analysis model and design to search out a single model that serves both purposes. -- "Domain-Driven Design: Tackling Complexity in the Heart of Software" by…
💬 "People's body language can be another source of information: not every dissent can be verbal. It's not infrequent to have people from different hierarchy levels to have different views on apparently the same problem. Shaking heads, or eyes rolling are a clue of conflicting perspectives that haven't been addressed.

Domain-Driven Design has a fantastic tool for resolving these conflicts: it's not "we need a model to solve these issues", it's "we need a model to solve your problem and we need a model to solve your boss’ problem", it would be up to software architects to find the perfect way to interact.

Once again: different needs mean different models."

-- "DDD First 15 years", chapter "Discovering Bounded Contexts with EventStorming — Alberto Brandolini"

Напомню, что границей модели является Bounded Context.
👍5🔥1
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
В 2022 году я думал, как хорошо, что в РФ есть такая компания как Яндекс, которая обеспечивает технологическую независимость страны. Как я тогда ошибался. Нет ничего хуже монополии в условиях безальтернативности, которая приводит к полной зависимости от прихоти…
Следом за Яндекс.Плюс, расстаюсь с ВТБ. Причины три:

1. Из-за дефекта в их антифрод-системе, несколько месяцев назад я оказался без доступа к собственным средствам в самый неподходящий момент, когда нужно было срочно перевести средства человеку, который на них рассчитывал. Естественно, в нерабочее время. Естественно, "приходите в офис, когда он откроется, с паспортом и докажите, что Вы - не мошенник", даже если впереди неделя праздников. Причем, никаких подозрительных операций не было - система сработала на ежемесячный перевод за аренду недвижимости.

2. Полгода назад имел неосторожность поинтересоваться в ВТБ кредитом. Такое чувство, будто разместил объявление на самой популярной доске объявлений, - кредитные спамеры одолевают до сих пор, обращаясь ко мне по имени-отчеству. Это все, что нужно знать о дееспособности СБ банков. В принципе, чего еще можно ожидать от несостоявшихся на службе силовиков? Будучи неспособными противостоять на службе равному противнику, они уходят в СБ гражданских компаний выискивать себе противника из числа мирных соискателей, совершая доблестные подвиги по защите своего работодателя от любых проявлений квалификации, путем выискивания в соискателе угроз в виде наличия у него ИП, или второго гражданства, или недостаточно долгой работы на каком-то месте, или в отказе пройти полиграф, или что-то еще им померещиться.

3. Окончательным пределом терпения стало то, что ВТБ самостоятельно, без моего ведома и против моей воли, сменил мне тарифный пакет на Привилегию. При этом поддержка ссылалась на п.4.15 правил комплексного обслуживания, который, если внимательно почитать, был нарушен банком дважды. Я и так этим банком не пользовался, т.к. он малопригоден для ежедневных операций, но ВТБ, видимо, решил, что я должен за такое качество сервиса еще и платить по 5000 руб./месяц, оправдываясь тем, что "есть же акционный период".

Про всякие мелочи в виде дефектов из-за очевидных архитектурных косяков я промолчу.

Поведение монополистов на российском рынке все больше вызывает отторжение.

Все больше хочется пользоваться услугами компаний, которые еще "не зажрались" и борятся за клиента, например, банк БКС.

Альфа остается моим основным банком уже несколько лет. Да, были косяки, были даунтаймы, но с этикой они дружат и не позволяют себе принимать решения вместо меня.

Все больше начинаю осознавать, что конкуренцию на рынке нужно оздоравливать, что нужны меры поддержки малых и средных компаний, что нужно способствовать перетоку с трудового на коммерческий рынок квалифицированных специалистов. Все больше возвращаюсь к идеям, которые я изложил в свое время в этом черновике своего доклада, но пока отложил в долгий ящик.
👏21👍5💯4🤣2🔥1
Еще в октябре вышла новая книжка автора экстремального программирования Кента Бека Tidy First?: A Personal Exercise in Empirical Software Design
Книжка маленькая – 125 страниц. Практически, это набор из 33 небольших заметок, разбитых на три группы: tidyings, managing, theory. Но писал её Бек 3,5 года. А в прошлогоднем выступлении на QCon plus он рассказал, что это первая книга в серии из трех. Еще не вышедшие книжки расскажут о взаимодействии внутри разработчиков и разработчиков с заказчиками
👍6
Коллеги, нужна помощь. Прямо сейчас ложу свою девушку в больницу - сломаны кости лица в двух местах. Купила 2/3 квартиры и просто пыталась пройти в свою законную собственность. Владельцы оставшейся части ей воспрепятствовали насильственным образом, в результате чего я держу сейчас в руках рентгеновской снимок. Сожалею, что меня не было рядом.

В провосудие без надлежащей поддержки сверху я верю с трудом. Если у кого есть связи в полиции, в силовых ведомствах, среди журналистов и телевизионщиков, среди медиков, или даже среди бандитов, напишите мне, пожалуйста в личку: @emacsway .

Спасибо. Простите за оффтоп.
😱80😢254