ЗАКЛЮЧЕНИЕ

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

В настоящее время основные результаты этих подходов представлены методом функциональных точек, предложенным А. Альбрехтом, и метрической теорией программ М. Холстеда. В перспективе потенциальные возможности первого метода наиболее целесообразно использовать при экспресс-оценке объема и трудоемкости разработки ПО больших ИС; второго - при уточненном расчете тех же параметров программного обеспечения на этапе постановок задач. При таком способе верификации проектных решений риски крупных ошибок практически устраняются. Однако широкое использование подобной технологии ограничивается недостаточной формализацией метода БР, заключающейся в большом количестве в нем «экспертных входов».

2. Для предложенного М. Холстедом варианта метрической теории программ характерны глубокое содержание и полнота системы базовых понятий, а также опытное доказательство полученных соотношений.

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

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

. Таким образом, чем больше словарь, тем меньше их отклонение от эталонных значений.

Но роль и область приложения этой теории гораздо шире, чем декларировано в предисловии. Дело в том, что закономерность, выявленная в текстах больших программ, наблюдается в таких далеких друг от друга сферах, как распределение: городов - по численности населения; социальных групп - по величине доходов (на одного человека); родов каких-либо биологических объектов - по численности или ареалу обитания; слов - по количеству их вхождения в текст; журналов - по числу публикаций в них статей по данной тематике и т. д. [6]. Фактически - это одна и та же закономерность, которая называется: в лингвистике и географии - законом Ципфа; в биологии - законом Уилкса; в социологии - законом Парето; в информатике - законом Брэдфорда. В каждой из этих областей она позволяет диагностировать системность и целостность исследуемых объектов. Например, распределение Ципфа хорошо выполняется для индивидуальных текстов и плохо - для их конгломератов. Так, на основе распределения рефератов по разным журналам была выявлена возможность проверить, насколько данная область науки или техники обладает присущей ей целостностью или она - случайное объединение разнородных областей [6].

Эта же закономерность была использована для механического разбиения ранее написанных программ на отдельные осмысленные части [4].

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

Приложения

Приложение 1

Итак, каждая полная серия испытаний Ь разбивается на частные серии, описываемые биномиальным распределением с вероятностью успеха

и, соответственно, вероятностью неудачи Таблица этого распределения имеет следующий вид:

Ьг

1

2

3

1

р

р

Р<1

2

РЯ

РЧ

Поэтому математическое ожидание будет

Найдем сумму ряда Представим его общий член в виде Тогда

так как есть бесконечно убывающая геометрическая прогрессия.

Подставив последнее выражение в М(ЬГ), получим Так как у нас , то

Приложение 2

Из определения дисперсии имеем

(для биномиального распределения).

Используя результаты Приложения 1, умножим обе части равенства

на д. Получим Ясно, что тогда

Выполнив дифференцирование и подставив результат в выражение для В(ЬГ), будем иметь:

так как

Таким образом,

Сумма членов последнего ряда взята из справочника «Основные математические формулы» (Минск: ВШ, 1980).

Приложение 3

Уточненная сумма г| первых членов гармонического ряда где С = 0,577... - постоянная Эйлера. Таким образом,

При переходе к двоичным логарифмам

Представим выражение под знаком логарифма в виде где х подлежит определению. Решив это уравнение, получим

В диапазоне 8 < г| < 256 средняя величина х » 0,9. Поэтому и

Приложение 4

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

Из 1-го и 3-го уравнений следует, что

т. е. все словари модулей равны, а значит, равны и сами модули. Из 1 -го и 2-го уравнений и следует

откуда, после элементарных преобразований, или

Решение аналогичного уравнения дано в Приложении 5.

Приложение 5

Перепишем уравнение в виде

Покажем, что последовательность приближений при п -> оо

имеет конечный предел, являющийся корнем нашего уравнения. Для этого необходимо выполнение условия Липшица

где а < 1. Понятно, что min к = 1, а Следовательно,

а

Отсюда

Итак, условие Липшица выполняется во всем диапазоне изменения к. Последовательность приближений будет иметь вид

ит. д.

Так как всегда причем , то в качестве ре

шения можно принять

Приложение 6

Воспользовавшись формулой Стирлинга для логарифма от факториала, перепишем

в виде

Взяв производную от F по т(г) (памятуя при этом, что - обратная функция), получим систему уравнений

Из первого уравнения следует

Подстановка этого выражения во второе уравнение дает Из последнего и предпоследнего равенств получаем откуда

Приложение 7

А. Пусть Кт и ^ - объем и, соответственно, потенциальный объем модуля, а к- кратность их распределения по / уровням иерархии.

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

Тогда работа программирования на реальном алгоритмическом языке согласно закону Хика будет

(заметим, что выражение в квадратных скобках - это бесконечно убывающая геометрическая прогрессия).

Аналогично для потенциального языка Таким образом

Неравенство (согласно табл. 2 в п. 2.7.1) исключает вы-

рожение этой зависимости. Примем Хт = 1,13 , откуда

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

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

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

фактическому. Ее словарь образуют, очевидно, имена всех Хиер модулей. Поэтому

Потенциальный объем примем равным Тогда

Работу программирования /Сиер автономных модулей определим как

где Ук и ?к - соответственно объем и потенциальный объем стандартного модуля |г|2Ус =

Поэтому

так как

Объем стандартного модуля , откуда

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

лей. Покажем, что подход М. Холстеда [4], основанный на инженерной психологии, приводит к аналогичным результатам.

Рассчитаем для этого число ошибок В (в одном модуле) при

комплексной отладке. Пусть г2=6 (как и в [4]). Тогда

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

Итак,

Теперь, считая, как и выше, что основная масса ошибок при комплексной отладке выявляется в управляющих модулях, найдем

- количество ошибок в одном модуле. В данном случае т «1000) В§т «2, что соответствует в среднем двум ошибкам на

_2

100... 150 слов, или фактически наблюдаемой их вероятности р »10 [25].

Приложение 8

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >