Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы_АСОИУ 2011г Специалист 3 ответы 2 сокр...docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.01 Mб
Скачать
  1. Проектирование асоиу и программного обеспечения как сложной системы. Понятие простых и сложных систем, признаки сложной системы. Способы борьбы со сложностью.

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

Сложность вызывается четырьмя основными причинами:

  • сложностью реальной предметной области, из которой исходит заказ на разработку;

  • трудностью управления процессом разработки;

  • необходимостью обеспечить достаточную гибкость программы;

  • неудовлетворительными способами описания поведения больших дискретных систем.

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

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

  • Сложные системы состоит из элементарных компонентов. Выбор, какие компоненты в данной системе считаются элементарными, определяет исследователь.

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

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

  • Любая работающая сложная система является результатом развития работавшей более простой системы.

Способы борьбы со сложностью:

  • Иерархия

  • Алгоритмическая декомпозиция.

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

  • Абстракция.

Выводы

  • Программам присуща сложность, которая нередко превосходит возможности человеческого разума.

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

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

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

  1. Методы проектирования программного продукта как сложной системы: структурный, объектный, потоковый.

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

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

Методы важны по нескольким причинам:

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

  • они позволяют менеджерам в процессе разработки оценить степень продвижения и риск.

Методы делят на три основные группы:

  • метод структурного проектирования сверху вниз;

  • метод потоков данных;

  • объектно-ориентированное проектирование.

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

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

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

Объектно-ориентированное проектирование (object-oriented design, OOD). В основе OOП лежит представление о том, что программную систему необходимо проектировать как совокупность взаимодействующих друг с другом объектов, рассматривая каждый объект как экземпляр определенного класса, причем классы образуют иерархию. Объектно-ориентированный подход отражает топологию новейших языков высокого уровня, таких как Smalltalk, Object Pascal, C++, CLOS и Ada.

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