Загрузка...

Сложность ПО


Существенной чертой индустриально организованных программных систем является их большая сложность. Фактически невозможно охватить все тонкости системы одним человеком. Сложность таких систем превышает возможности человеческого интеллекта. 
Сложность ПО определяется четырьмя основными причинами:
1.Сложность проблемы.
А) Трудность понимания.
Б) Дополнительные требования. (Удобство,Цена,Надежность)
В) Несовместимость областей знания.
Г) Изменение требований.
Д) Эволюция системы.
2.Сложность управления процессом разработки.
А) Рост числа строк программного кода.
Б) Необходимость в коллективной разработке.
В) Необходимость в координации и согласовании работ отдельных исполнителей.
Г) Целостность основной идеи.
3.Сложность обеспечения гибкости программному продукту.
4.Сложность описания поведения отдельных подсистем.
А) Предсказуемость поведения аналоговых систем.
Б) Дискретность программных систем.
В) Большое количество переменных, их значений, адресов, стеков.
Г) Комбинаторный взрыв.
Д) Стремление к независимости подсистем.
Е) Тестирование.
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
3) Гибкость ПО – в программировании разработчик может сам себя обеспечивать всеми необходимыми элементами, относящихся к любому уровню абстракции. В отличии от остальной индустрии здесь очень мало стандартов, поэтому П-разработки остаются очень кропотливым делом.
4) Сложность описания поведения отдельных подсистем.
Внутри большой прикладной программы могут существовать 100 и 1000 переменных, полный список этих переменных, их текущее значение, регистров и стеков описывает состояние прикладной программы в каждый момент времени. Т.к. исполнение нашей программы осуществляется на цифровом компьютере, мы имеем систему с дискретными состояниями.
Дискретные системы имеют по определению конечное число возможных состояний, но в очень больших системах это число в соответствии с правилами комбинаторики достигает громадных значений, поэтому нужно стараться проектировать систему так, чтобы поведение одной части системы оказывало минимальное воздействие на поведение другой.
Пути ограничения сложности.
1) Декомпозиция – способ управления сложными системами был известен еще в древности (разделяй и властвуй).
При проектировании сложной П-системы необходимо составить ее из небольших подсистем, каждую из которых можно отладить независимо от другой.
-алгоритмическая декомпозиция используется структурное проектирование по методу сверху-вниз. Мы разделяем алгоритм, каждый из которых выполняет один из важных этапов общего процесса.
-О О Декомпозиция. В этом случае мир представлен списком автономных действующих лиц, которые взаимодействуют др.с другом, чтобы обеспечить поведение системы, соответствующей более высокому уровню.
-Алгоритмическая и О О Декомпозиция. П-систему можно разбивать как по алгоритмам, так и по объектам. Разделение по алгоритмам концентрирует вникание на порядке происходящих событий, а разделение по объектам придает особое значение факторам, либо вызывающим действие, либо являющихся объектами приложения этих действий. Мы не можем сконструировать систему одновременно двумя способами. Опыт показывает, что полезнее сначала применить объектный подход. Для ограничения сложности системы так же используются абстракции и иерархический подход.

Объектный подход.
Поколения языков программирования.
Если проследить историю развития языков программирования можно выделить две основные концепции.
1)Перемещение акцентов от программирования отдельных деталей к программированию более крупных компонент.
2)Развитие и совершенствование языков программирования высокого уровня.
В каждом последующем поколении языков программирования механизмы абстракций претерпевали изменения.
Языки первого поколения ориентировались на научно-инженерное применение и словарь предметной области был максимально математическим. Таким образом первое поколение языков было шагом в направлении предметной области и отвлечением от особенности компьютеров. В первом поколении основной тенденцией оказалось развитие алгоритмических абстракций. Это был еще один шаг в направлении предметной области.
Следующим шагом явилась возможность обработки абстрактных данных. Суть абстрагирования, достигаемого посредством использования процедур достаточно для описания абстрактных действий, но недостаточна для описания абстрактных объектов. Это серьезный недостаток, т.к. во многих практических ситуациях сложность объектов, являющихся предметом управления составляет основную часть сложности всей задачи.
Из сказанного вытекает:
-возникают методы проектирования управляемые данными
-появляется теория типирования, которая воплощается в языках типа Pascal.
Существенным завершением реализации рассмотренных идей явилось появление объектных и ОО языков типа Object Pascal, С++, ADA. Именно эти языки получили название ОО.
Рассмотрим 3 соответствующих ОО подхода:
1)ООП – это методология программирования, которая основана на представлении программы в виде совокупностей объектов, каждый из которых является реализацией определенного класса. А классы образуют иерархию на принципах наследованyости.
2)ООПроектирование – это методология программирования, соединяющая в себе процесс объектной декомпозиции и приемы представления как логической и физической, так статической и динамической модели проектируемой системы.
3) ОО анализ – направлен на создание моделей более близких к реальности, с использованием ОО подхода. Это методология, при которой требования формируются на основе понятий, классов и объектов, составляющих словарь предметной области.

Загрузка...