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

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

Геннадий Круглов
@GKruglov
Download Telegram
Определение Эмерджентности неплохо, на мой взгляд, сформулировано в Википедии.

«Эмерджентность (от англ. 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
#тизер #изкомьюнити

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

И что особенно важно.

Если система иерархична, есть чёткое разделение уровней, модули хорошо инкапсулированы, то уже не важно с какой скоростью изменяется дизайн модулей на нижних уровнях, на более высоких уровнях всё-равно решения принимать будет возможно.
1
Вернёмся к определению Системной инженерии. Это определение я скомпилировал из двух определений от INCOSE. Вместе они указывают на разные важные вещи. Мы всё это разберём в деталях. И я постараюсь затем всё подытожить простыми словами.
Системная инженерия — это междисциплинарный и интегративный подход, направляющий технические и управленческие усилия, необходимые для преобразования набора потребностей, ограничений и ожиданий клиентов в инженерную систему и поддержку этой системы на протяжении всего срока её службы

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

«Interdisciplinary approach governing the total technical and managerial effort required to transform a set of customer needs, expectations, and constraints into a solution and to support that solution throughout its life. (ISO/IEC/IEEE 2010)»

«A transdisiplinary and integrative approach to enable the successful realization, use, and retirement of engineered systems, using systems principles and concepts, and scientific, technological, and management methods. (INCOSE Fellows 2019)»

https://sebokwiki.org/wiki/Systems_Engineering_(glossary)

https://www.incose.org/about-systems-engineering/system-and-se-definitions