Оценка качества программных комплексов

Оценка качества программных комплексов






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

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

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

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

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

Сложность комплекса программ включает структурную и статистическую сложность.

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

а) по степени отличия структуры от древовидной → С = А - G, где G – число связей, образующих древовидную структуру; А – реальное число связей между модулями комплекса;

б) сложностью связей по управлению







где  – управляющие связи i-го модуля, которые вызывают его для исполнения;  – связи, посредством которых i-й модуль вызывает другие модули;  - сложность управляющих связей i-го модуля;

в) сложностью связей по информации:







где  – количество имен переменных на входе i-го модуля, необходимых для его нормального функционирования;  – количество имен переменных, подготавливаемых i-м модулем; Фi –сложность информационных связей i-го модуля.

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

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

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





где  - количество условий, определяющих i-й маршрут j-го модуля; Мj - количество маршрутов j-го модуля.

Статистическая сложность программных модулей обычно определяется путем подсчета количества операторов N1j и операндов N2j – Ncj = N1j + N2j. Таким образом показатель сложности можно представить вектором







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

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

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

Избыточность программных модулей определяется количеством лишних операторов и тупиков в программах {И3j}; здесь j - индекс программного модуля.

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







Показатель физической реализуемости характеризует ресурсы вычислительной техники по памяти, необходимые для функционирования комплекса программ. Он включает: объемы оперативной памяти, необходимые комплексу программ при различных режимах его работы {Vm}; корректность вызова управляющей программой совокупностей программных модулей, соответствующих различным режимам работы {Рт}, объемы внешней памяти по различным типам запоминающих устройств {Wk}.

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







Таким образом, показатель физической реализуемости есть вектор:







Функциональная корректность комплекса программ есть вектор 







Компоненты которого характеризуют корректность программной реализации функций комплекса программ относительно требований спецификаций. Здесь Q – количество функций, выполняемых комплексом в соответствии с системными спецификациями. Компоненты вектора  могут быть представлены булевыми величинами и определяются следующим образом:








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

Показатель времени функционирования комплекса программ включает средние времена функционирования основных режимов работы комплекса {Тт} и средние времена функционирования отдельных программных модулей и их совокупностей







Согласованность по управлению включает согласованность по управлению комплекса программ и согласованность по управлению его программных модулей.

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





или





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

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

Согласованность по информации включает согласованность по информации комплекса программ и согласованность по информации программных модулей.

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

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

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







Показатель, характеризующий эффективность системы защиты, есть вектор







компонентами которого являются: Рн.д – вероятность несанкционированного доступа к модулям и информационным элементам комплекса программ; Сн.д – потери от "взлома" системы защиты.

Показатель, характеризующий эффективность средств восстановления, есть вектор







компонентами которого являются Кг – коэффициент готовности системы; σ – вероятность сохранности информации в системе; Tр.з – среднее время решения задачи; Pр.з – вероятность успешного решения задачи. Перечисленные компоненты используются для оценки эффективности оперативного (Кг, σ) и восстановительного (Тр.з, Рр.з) резервирования программных модулей и информационных массивов.

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






Компонентами которого являются: Спр – затраты на проектирование комплекса программ; Сп.о – затраты на программную отладку; Сс.о – затраты на системную отладку. В рамках разработанной методологии затраты на проведение системной отладки определятся выражением 







где Сj – затраты на проведение j-го этапа системной отладки; Сн.о(Рн.о) - потери от необнаруженных ошибок; Рн.о - вероятность появления необнаруженной ошибки после проведения системной отладки.





Рис. 1



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

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

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

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

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

На основании сравнения значений компонентов и показателей качества с требованиями спецификаций может быть оценена общая отлаженность комплекса программ:





где ni – количество компонентов i-го показателя качества; I – количество рассматриваемых показателей качества;







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

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

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

В соответствии с выше изложенным – процесс отладки сложных комплексов программ должен включать такую последовательность действий.

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

2. Составление плана отладки (выбор стратегии).

3. Автономная отладка программных модулей в соответствии с выбранной стратегией отладочных работ.

3.1. Проверка физической реализуемости исследуемой совокупности программных модулей:

а) оценка объемов оперативной и внешней памяти, необходимой для размещения комплекса программ (физической реализуемости); 

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

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

3.2. Проверка времени функционирования: 

а) оценка времени функционирования методами тестирования; 

б) исследование возможностей сокращения времени функционирования при превышении допустимых значений (распараллеливание процесса вычислений, организация параллельного выполнения операций ввода – вывода и вычислительных операций и т.п.); 

в) локализация и устранение обнаруженных ошибок.

3.3. Проверка правильности реализации основных функций, сопряжений программных модулей, информационных связей:

а) определение маршрутов обработки информации, характеризующих основные функции, сопряжения, информационные связи; 

б) генерация тестовых данных для полученного набора маршрутов; 

в) проверка правильности выполнения маршрутов по результатам тестирования и оценка компонентов функциональной корректности, согласованности по управлению и информации; 

г) локализация и устранение обнаруженных ошибок.

4. Связная (комплексная) отладка автономно отлаженных совокупностей программных модулей и всего комплекса программ.

4.1. Проверка физической реализуемости.

4.2. Проверка времени функционирования.

4.3. Проверка правильности реализации основных функций, сопряжений, информационных связей.

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

6. Оценка эффективности комплекса программ по затратам на его проектирование и отладку. Оформление программной документации.

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

1) спецификация, определяющая состав комплекса программ и документации;

2) общее описание комплекса программ, содержащее сведения о назначении программы, области применения, используемых методах, ограничениях на применение;

3) руководство программиста, содержащее описание используемых средств программирования (включая сведения об используемой версии ОС) и требования к конфигурации технических средств, описание интерфейсов, имен программных модулей, логической и физической структуры базы данных, описание используемых пакетов прикладных программ и средств диагностики и т.п.;

4) руководство оператора, содержащее описание внешних носителей, правила организации программ на внешних носителях, состав сообщений оператору, описание входного потока заданий и т.п.;

5) текст комплекса программ, содержащий тексты программных модулей с комментариями, данные контрольного примера, управляющие операторы подготовки и запуска контрольного примера, значения основных показателей качества комплекса программ;

6) описание контрольного примера, содержащее описание проверяемых функций и параметров, входной информации, результаты прогона по данным контрольного примера, управляющих операторов подготовки и запуска контрольного примера.

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