Здавалка
Главная | Обратная связь

Программные продукты как сложные системы. Признаки сложных систем. Декомпозиция сложных систем (алгоритмическая и объектно-ориентированная)



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

 

Примеры сложных систем:

· Структура персонального компьютера.

· Структура растений.

· Структура вещества.

· Структура социальных институтов.

 

Признаки сложной системы:

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

2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя.

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

4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных.

5. Любая работающая сложная система является результатом развития работавшей более простой системы... Сложная система, спроектированная "с нуля", никогда не заработает. Следует начинать с работающей простой системы.

 

Сложность ПО объясняется следующими причинами:

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

 

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

 

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

Способ управления сложными системами был известен еще в древности - divide et impera (разделяй и властвуй). При проектировании сложной программной системы необходимо разделять ее на все меньшие и меньшие подсистемы, каждую из которых можно разрабатывать и совершенствовать независимо, это и есть основной принцип декомпозиции.

 

В программировании существует два основных типа декомпозиции:

  • Алгоритмическая декомпозиция.
  • Объектно-ориентированная декомпозиция.

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

 

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

 

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

 

Объектная декомпозиция имеет несколько чрезвычайно важных преимуществ:

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

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.