На этом шаге рассмотрим признаки сложной системы.
Признаки сложной системы:
Часто сложность проявляется в виде иерархии, при этом сложные системы состоят из взаимозависимых подсистем, имеющих, в свою очередь, собственные подсистемы, и т.д., вплоть до самого низкого уровня, образованного элементарными компонентами. Архитектура сложных систем зависит как от компонентов, так и от иерархических отношений между ними.
Как правило, наблюдатель произвольно решает, какие компоненты в данной системе считать элементарными. Элементарный компонент с точки зрения одного наблюдателя может оказаться на гораздо более высоком уровне абстракции с точки зрения другого.
Иерархические системы могут быть разложимыми, поскольку их можно разделить на идентифицируемые части, и почти разложимыми, так как их составляющие не являются абсолютно независимыми друг от друга. Это приводит нас к следующему общему свойству всех сложных систем:
Связи внутри компонентов обычно сильнее, чем связи между компонентами.
Это обстоятельство позволяет отделить "высокочастотную" динамику компонентов, — относящуюся к их внутренней структуре, — от "низкочастотной" динамики, — относящейся к взаимодействию между компонентами.
Это различие между внутри- и межкомпонентными взаимодействиями позволяет провести разделение функций между частями системы и изучать их по отдельности.
Многие сложные системы реализуются с помощью экономных средств выражения. Иначе говоря, сложные системы имеют общую структуру. Это может проявляться в виде повторного использования как мелких компонентов, так и более крупных структур.
Сложные системы эволюционируют во времени. В частности, считается, что "сложные системы развиваются из простых гораздо быстрее, если они имеют устойчивые промежуточные формы". Проектирование следует начинать с простой работоспособной системы. В процессе эволюции системы объекты, первоначально считавшиеся сложными, становятся элементарными компонентами, из которых создаются еще более сложные системы. Более того, правильные элементарные объекты невозможно создать сразу: сначала с ними необходимо поработать, получше изучить реальное поведение системы и лишь затем усовершенствовать.
На следующем шаге рассмотрим декомпозицию сложной системы.