Intelligent Systems Architecture – Telegram
Intelligent Systems Architecture
1.06K subscribers
29 photos
6 files
54 links
Про архитектуру и принципы построения систем на основе искусственного интеллекта — от моделей до AI-платформ.

Контент в канале защищён авторским правом.

Геннадий Круглов
@GKruglov
Download Telegram
Мы немного разобрались с общими чертами Промышленной архитектуры в строительстве и нашли сходство с Промышленной архитектурой программных систем.

Теперь стоит погрузиться во вторую часть названия нового в программной инженерии архитектурного стиля и дать определение «Системы».

А заодно, и без этого дальше системно двигаться невозможно, нам следует дать определение «Инженерии», «Системной инженерии» и «Программной инженерии». И конечно увязать эти понятия между собой.
Мы также рассмотрим, какие системы обладают наибольшей живучестью и умеют адаптироваться к изменениям, коснемся вопросов иерархичности и затронем основы системного мышления.

В добавок кратко освежим в памяти некоторые аспекты Теории Решения Изобретательских Задач (ТРИЗ).
Понятие Системы перегружено и трактуется очень широко.

Из множества определений системы я предпочитаю использовать то, которое приводит Владимир Петров в книге «Талантливое мышление. ТРИЗ».

«Система (от латинского «systēma», от греческого «σύστημα» —«составленный», целое, составленное из частей, соединение) – это множество элементов, взаимосвязанных и взаимодействующих между собой, которые образуют единое целое, обладающее свойствами, не присущими составляющим его элементам, взятым в отдельности.

Такое свойство называют системным эффектом или эмерджентностью.»

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

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

«Эмерджентность (от англ. emergent «возникающий, неожиданно появляющийся») — в теории систем — наличие у системы свойств, не присущих её компонентам по отдельности; несводимость свойств системы к сумме свойств её компонентов.»

https://ru.wikipedia.org/wiki/%D0%AD%D0%BC%D0%B5%D1%80%D0%B4%D0%B6%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C
Приведу примеры системных эффектов.

Компьютер позволяет выполнять программы. Ни один из элементов компьютера в отдельности не даёт такой эффект. Компьютер - это система и как система он создаёт системный эффект - выполняет программы.

Кредитный конвейер позволяет обрабатывать заявки на кредиты. Ни один из элементов кредитного конвейера в отдельности не даёт такой эффект. Кредитный конвейер - система и как система он создаёт системный эффект - обрабатывает заявки на кредиты.
#чтопочитать #цитаты

Некрасов С.И., Некрасова Н.А. Философия науки и техники: тематический словарь справочник.

«ТЕХНИЧЕСКАЯ СИСТЕМА:

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

Техническая система существует в трёх модусах (проявлениях): 1) как изделие производства, 2) как устройство, потенциально готовое совершить полезный эффект, 3) как процесс взаимодействия с компонентами окружающей среды (источником внеш. энергии, потребителем и т.д.), в результате которого и происходит эксплуатация (функционирование) технических систем и образуется полезный эффект.

2. Устройство, предназначенное для удовлетворения определенной потребности. К техническим системам относятся отдельные машины, аппараты, приборы, сооружения, ручные орудия труда, а также их элементы: детали, блоки, агрегаты и другие сборочные единицы. К техническим системам относятся также сложные комплексы взаимосвязанных машин, аппаратов, сооружений и т.п.»
Кредитный конвейер — это программная система, на что стоит обратить внимание.

Программные системы по всем признакам являются техническими. Мы относим программные системы к техническим.

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

Чтобы дать определение инженерной системы, нужно сначала разобраться с тем, что такое инженерия.

И этим мы займёмся в следующих постах.
👍2
Перед тем, как продолжить, сформулируем несколько утверждений на основе сказанного.

Программные системы, выполненные в стиле Промышленной архитектуры:
1. имеют потребительские качества
2. создают системный эффект
3. многократно изменяют своё состояние
4. многоэлементны
5. обладают множеством связей между элементами
6. иерархичны
7. их элементы выполняют полезные функции

Каждый из этих пунктов крайне важен. Мы всё это разберём в деталях. Путь предстоит долгий.
#оффтоп #ИМХО #дляайтишников

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

Наступило время больших и сложных трансформаций и программ, а опереться решительно не на что. Эджайл и микросервисная архитектура наплодили хаос.

Знания о микросервисной архитектуре невозможно тиражировать, она у каждого архитектора/тренера своя.
#оффтоп #ИМХО #дляайтишников

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

И что важно, эти знания можно тиражировать. Для этого и задуман новый архитектурный стиль – «Промышленная архитектура программных систем».

Как главный архитектор крупной ИТ-программы и тренер, проведший десятки тренингов по Микросервисной архитектуре, считаю, что могу с уверенностью так утверждать.
👍5
Так что же такое «Инженерия»?

Есть и генетическая инженерия, и экологическая инженерия, и социальная инженерия… Как и многие другие понятия, Инженерия перегружена.

Нам необходимо определение, наиболее близкое к нашей области, а именно к программным системам.

Да, конечно, существует и программная инженерия. Но её определение мы оставим на десерт.
В русскоязычных словарях можно встретить упоминания Инженерии, как инженерного дела, как творческой технической деятельности.

Как мне кажется, в контексте Промышленной архитектуры программных систем, наиболее релевантным будет определение, близкое именно к творческой технической деятельности.
Подходящее для нас определение инженерии, достаточно ёмкое и полное, приводит American Engineers' Council for Professional Development (ECPD):

Творческое применение научных принципов для проектирования или конструирования машин, аппаратов или производственных процессов или эксплуатации их с полным пониманием их устройства; или прогнозирования их поведение в конкретных условиях эксплуатации; и всё это в согласованности с предполагаемой функцией, экономической эффективностью и безопасностью для жизни и имущества людей.”
https://www.britannica.com/technology/engineering
👍6
#оффтоп #ИМХО

Об этом не спросят на собеседовании при приёме на работу. Об этом ничего не говорится на страницах книг по подготовке к интервью по системному дизайну, и на курсах по архитектуре этому тоже едва ли учат.

Возможно, поэтому наши системы зачастую трудно предсказуемы, не очень-то экономичны и недостаточно безопасны.

А наши разработчики вряд ли смогут внятно объяснить устройство своих систем, и мозговые штурмы по реверс-инженерингу бизнес-процессов лишь подчеркнут степень этого незнания.
👍4
Итак

Мы, как инженеры, при проектировании программных систем, по определению, должны:
1. Руководствоваться принципами
2. Понимать устройство
3. Прогнозировать поведение
4. Обеспечивать согласованность с функциями
5. Учитывать экономику и безопасность
👍1
С определением Системной инженерии всё оказалось непросто.

Вроде бы мы уже знаем, что такое Инженерия и Система, и, может быть, стоило бы дать такое определение: «Системная инженерия — это инженерия применительно к Системам». Потом можно было бы скомпилировать определения Инженерии и Системы и получить некое их объединение.

Однако, Системная инженерия, это нечто большее, чем объединение Инженерии и Системы. А почему именно, мы увидим, когда разберём детально определения от Incose.
#FYI

INCOSE - Международный совет по системной инженерии. Это организация, которая развивает и продвигает Системную инженерию.

Официальный сайт:
https://www.incose.org/
#тизер #изкомьюнити

Любую систему, какой бы сложной она ни была, можно разложить на взрыв-схему до последнего «болтика».

Взрыв-схемами сложных систем, однако, пользоваться невозможно. Они слишком детальны.

Но если система хорошо спроектирована, если она иерархична и в её архитектуре явно присутствует уровни, которые достаточно чётко отделены, конструкция модульная на всех уровнях, то можно эффективно использовать приёмы системного мышления.

Можно быстро менять фокус, перемещаться между уровнями, проваливаться в детали или наоборот, повышать уровень абстракции
1
#тизер #изкомьюнити

Для этого, правда, нужны адекватные модели и соответствующий инструментарий