Проблемы, возникающие при разработке сложных программных систем.



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

Дополнительными факторами, увеличивающими сложность разработки программных систем, являются:

· сложность формального определения требований к программным системам;

· отсутствие удовлетворительных средств описания поведения дискретных систем с большим числом состояний при недетерминированной последовательности входных воздействий;

· коллективная разработка;

· необходимость увеличения степени повторяемости кодов.

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

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

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

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

 

Блочно-иерархический подход к созданию сложных систем.

-подход предполагает сначала создавать части таких объектов (блоки, модули), а затем собирать из них сам объект.

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

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

Результат декомпозиции обычно представляют в виде схемы иерархии, на нижнем уровне которой располагают сравнительно простые блоки, а на верхнем – объект, подлежащий разработке. На каждом иерархическом уровне описание блоков выполняют с определенной степенью детализации, абстрагируясъ от несущественных деталей. «Чем больше блок, тем более абстрактным должно быть его описание».

При соблюдении этого принципа разработчик сохраняет возможность осмысления проекта и, следовательно, может принимать наиболее правильные решения на каждом этапе, что называют локальной оптимизацией (в отличие от глобальной оптимизации характеристик объектов, которая для действительно сложных объектов не всегда возможна).

В основе блочно-иерархического подхода лежат декомпозиция и иерархическое упорядочение. Важную роль играют также принципы:

· непротиворечивость - контроль согласованности элементов между собой;

· полнота - контроль на присутствие лишних элементов;

· формализация – строгость методического подхода;

· повторяемость – необходимость выделения одинаковых блоков для удешевления и ускорения разработки;

· локальная оптимизация – оптимизация в пределах уровня иерархии.

Помимо того, что использование блочно-иерархического подхода делает возможным создание сложных систем, он также:

· упрощает проверку работоспособности, как системы в целом, так и отдельных блоков;

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

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

 


Дата добавления: 2018-02-15; просмотров: 248; ЗАКАЗАТЬ РАБОТУ