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

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

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

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

Вторая концепция — иерархическая структура. Каждый уро­вень представляет собой совокупность структурных отношений между элементами нижних уровней. Концепция уровня позволя­ет понять систему, скрывая несущественные уровни детализации. Например, система, которую мы называем «человек», представ­ляется иерархией. Социолог может интересоваться взаимоотно­шениями людей, не заботясь об их внутреннем устройстве. Пси­холог работает на более низком уровне иерархии. Он может ис­следовать различные логические и физические процессы в мозге, не рассматривая внутреннего строения областей мозга. Еще ниже в этой иерархии находится нейролог — он имеет дело со структу­рой основных компонентов мозга. Однако он может изучать мозг на этом уровне, не заботясь о молекулярной структуре отдель­ных белков в нейроне. Химик-органик интересуется построени­ем сложных аминокислот из таких компонентов, как атомы угле­рода, водорода, кислорода и хлора. Физик-ядерщик изучает сис­тему на уровне элементарных частиц в атоме и взаимодействия между ними.

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

К этим двум концепциям сокращения сложности (независи­мость и иерархическая структура) можно добавить третью: про­явление связей всюду, где они возникают. Основная проблема многих больших программных систем — огромное количество независимых побочных эффектов, создаваемых компонентами системы. Из-за этих побочных эффектов систему невозможно понять. И можно быть уверенным, что систему, в которой нельзя разобраться, было очень трудно спроектировать хотя бы с ми­нимальной гарантией надежности.

 








Дата добавления: 2015-10-13; просмотров: 916;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.