Скачиваний:
29
Добавлен:
01.05.2014
Размер:
186.88 Кб
Скачать

Комментарии к экзаменационным вопросам

[1] Определение и сущность основных характеристик качества программ: функциональности, корректности и надежности, эффективности, сложности, трудоемкости и ресурсоемкости, производительности.

Функциональность программного средства (ПС) - совокупность свойств ПС, определяемая наличием и конкретными особенностями набора функций, способных удовлетворять заданные или подразумеваемые потребности качества наряду с ее надежностью как технической системы. Корректность подразумевает соответствие проверяемого объекта некоторому эталонному объекту или совокупности формализованных эталонных характеристик и правил. Корректность программы наиболее полно определяется степенью ее соответствия предъявляемым к ней формализованным требованиям - программной спецификации. Надежность ПС - совокупность свойств, характеризующая способность ПС сохранять заданный уровень пригодности в заданных условиях в течение заданного интервала времени. Производительность ПС - совокупность свойств ПС, характеризующая аспекты его уровня пригодности, которые связаны с характером и временем использования ресурсов, необходимых при заданных условиях функционирования. Эффективность – тоже что и производительность но еще зависит от затрат на сознание и внедрения ПС. Ресурсоемкость – свойство ПС отражающие количество ресурсов для ее нормального функционирования. Сложность программ рассматривается в трех аспектах: сложность процесса разработки программ; сложность программы как объекта разработки (статическая); сложность выполнения программы (динамическая) – учитывает ресурсы, необходимые для ее выполнения. Трудоемкость - совокупные затраты труда на создание или использование программы. Различают трудоемкость на этапе проектирования программ и трудоемкость изучения и модификации программ при их сопровождении.

[2] Понятие метрики. Типы метрик и шкал. Понятие критерия оценки качества. Функциональные и конструктивные критерии оценки качества программ.

Критерии качества программ - являются показателями, позволяющими на основе количественных оценок группы характеристик программ устанавливать их пригодность в целом для той или иной цели. Изменение доминирующей цели в зависимости от этапов жизненного цикла программ приводит к изменению состава критериев качества программ и степени их важности при анализе. Используем метрики для количественной оценки показателей качества ПС. Под метрикой , заданной на некотором множестве элементов, понимают отношение, определяющее расстояние между элементами множества {x,y,z,…}, которое имеет следующие свойства: 1.Аксиома тождества: (x,y)≥0, if ((x,y)=0) then x≡y; 2. Аксиома коммутативности: (x,y)=(y,x); 3. Аксиома треугольника: (x,y) ≤ (x,z) + (z,y). Метрики бывают разными: Интервальная шкала (характеризуется реально измеряемыми физическими показателями: временем выполнения программы, числом маршрутов в программе и т.д.), Порядковая шкала (позволяет ранжировать некоторые характеристики путем сравнения с опорными значениями. Для объекта измерения устанавливается приоритетность признаков. Различают абсолютные (показывают больше или меньше значение данного параметра программы по сравнению с опорным) и относительные (во сколько раз больше или меньше опорного) порядковые метрики), Номинальная шкала (характеризует только наличие рассматриваемого свойства или признака у программы без учета градации по численным значениям).

Разнообразие критериев и факторов усложняет их использование, поэтому классифицируем их: Функциональные критерии (отражают специфику областей применения и степень соответствия функций, выполняемых программой, ее целевому назначению; характеризуют эффект от использования программ в конкретных целях с учетом затрат на их создание.) Конструктивные критерии (характеризуют общие свойства программ и позволяют сравнивать качество программ разного назначения. К ним относятся: • трудоемкость, сложность; • надежность функционирования; • степень использования ресурсов ЭВМ; • корректность и т.д.).

[3] Этапы жизненного цикла программ и обеспечение качества программ на различных этапах. Характеристика статических и динамических составляющих качества программ.

Конструктивные критерии зависят не от области применения, а от этапа жизненного цикла программы (ЖЦП). На различных этапах ЖЦП рекомендуется использовать разные критерии: Критерии этапа разработки (трудоемкость (статическая сложность); корректность (правильность) программы), Критерии этапа эксплуатации ПП (функциональность; производительность (ресурсоемкость); надежность), Критерии этапа сопровождения (трудоемкость, понимаемость программы; производительность программы; надежность).

Составляющие качество ПО (3 основные): 1) Качество процесса разработки программных продуктов (исп. метрики процесса): трудоемкость (план., факт.); повторное использование; коэффициент риска; факт. длительность недели; обзор продуктов; ошибки и дефекты; отслеживания; завершения. 2) Качество ПП на стадии разработки (исп. метрики качества ПП): В статике (сложность, корректность, удобство использования, надежность); в динамике (корректность, производительность, мобильность, надежность). 3) Качество ПП на стадии исполнения (исп. метрики производительности[время-емкость, ресурсоемкость, сопровождаемость] и надежности[отказоустойчивость, восстанавливаемость]).

[4] Классификация видов сложности программных продуктов и их краткая характеристика.

Сложность ПП (2 вида): 1) Статическая - трудоемкость разработки программных продуктов: 1.1 Интегральные характеристики сложности [определяются по внешним параметрам программы, не учитывающим ее внутреннюю структуру] (размер программы, метрики Холстеда); 1.2 Структурные характеристики сложности [учитывают внутреннюю структуру программы] (по маршрутам выполнения, по признакам графа управления, по потокам данных). 2) Динамическая - сложность выполнения программных продуктов [характеризует процесс выполнения программы] имеет три взаимосвязанных составляющих: 2.1 Программная [определяется составом и способом взаимодействия процедур или модулей, образующих программу, а также возможностью их размещения в кеш-памяти, основной памяти или на диске или даже в сетях]; 2.2 Временная [определяется временем выполнения программы или временем ее реакции на запрос пользователя]; 2.3 Информационная [определяется сложностью организации данных и доступа к ним, а также особенностями их размещения в кеш-памяти, основной памяти, на диске или на сетевом сервере].

Для получения достаточно полного представления о сложности ПП, статические и динамические характеристики сложности следует рассматривать в совокупности.

[5] Система метрик Холстеда для оценивания характеристик программ. Измеримые параметры программ. Оценки длины и объема программы. Потенциальный объем программы. Причины несоответствия оценок теоретическим значениям.

Весь текст программы разбивается на две сущности: операторы и операнды. Для программы измеряются величины N1 – общее количество операторов, N2 – общее количество операндов, n1 – количество уникальных операторов, n2 – количество уникальных операндов. Определим n = n1 + n2 – словарь программы, N = N1 + N – экспериментальная длина программы. Получим оценку длины: очевидно N > n, кроме того N < nn+1. По теории информации, количество использований каждого элемента пропорционально логарифму количества их уникальных значений, таким образом получаем: NT = n1lg(n1) + n2lg(n2). Объёмом программы назовём величину V = N lg(n). Существует гипотетическая возможность записать программу на «суперязыке» таком, где все необходимые функции уже реализованы. Объём программы на этом языке называется потенциальным: V* = (N1* + N2*) lg(n1* + n2*). В суперязыке N1* = n1* и N2* = n2*, так как повторений не требуется. Кроме того, n1* = 2 – всего два оператора (вызов функции и присваивание), таким образом V* зависит только от количества операндов. Причины расхождения теоретических и экспериментальных оценок очевидны: во-первых N > n, во-вторых оценки носят статистический характер, в-третьих суперязык в принципе невозможен.

[6] Понятие уровня программы. Вывод уравнения уровня. Интеллектуальное содержание программы. Несовершенства в программах.

Определим уровень программы как L = V*/V. Очевидно, L < 1, причём L = 1 только для суперязыка. Преобразовав выражение, получим: L . V = V* = const, т.е. с ростом объёма уменьшается уровень. Если уровень высок, то элементы программы очень ёмкие по смыслу, зато их мало (хорошо для специалистов). Если уровень низок, то действия элементарны, зато их много (разжёвывают для дебилов). Дадим оценку уровня программы. Логично, что L ~ n1* / n1 поскольку n1 > n1* = 2 и чем больше разных операторов тем ниже уровень. Логично, что L ~ n2 / N2 поскольку уровень тем ниже чем больше в среднем встречается каждый операнд. Объединяя оценки получаем LТ = k.(2/n1).(n2/N2), причём k = 1, поскольку уровень суперязыка должен равняться 1. Определим интеллектуальное содержание программы как I = LT . V. Желающие могут раскрыть выражение: I = (2/n1).(n2/N2).(N1+N2).lg(n1+n2). Легко заметить, что I очень похоже на V* и не зависит от языка. Теперь попробуем вычислить R=(P+Q)2. Примеры несовершенств: 1) дополняющие операции (T=P+Q; R=T*T+T–T), 2) повторное использование имён (R=P+Q; R=R*R), 3) синонимы (T1=P+Q; T2=P+Q; R=T1*T2), 4) лишние присваивания (T=P+Q; R=T^2). Лучший вариант: T=P+Q; R=T*T. Ни хера не понимаете? Я тоже не понимаю…

[7] Работа в программировании. Уравнение работы. Расчет времени программирования.

А знаете, что такое работа программиста? На самом деле это N-кратный выбор из словаря, размером n (справедливо). Самый быстрый способ выбора – двоичный поиск, выбирает элемент за lg(n) сравнений. Итого получается N lg(n) сравнений, то есть объём программы. Учтём также сложность программы, обратно пропорциональную её уровню (1/L – число элементарных разделений, входящих в мысленное сравнение). Таким образом, определим работу как E = V / L – количество элементарных мысленных разделений. Можно вспомнить определение L и получить E = V2 / V* - работа пропорциональна квадрату объёма. Д.Страуд вычислил, что человек может за секунду выполнить от 5 до 20 элементарных различений. Обозначим это число за S и получим время программирования T = E / S = V / LS. Можно также исчислить ожидание времени, подставив LT вместо L: TT = N.lg(n).((2/n1).(n2/N2).S)-1. А для полного счастья можно длину программы N заменить ожиданием NT = n1lg(n1) + n2lg(n2).

[8] Уровень языка программирования. Прогнозирование числа ошибок в программах.

Припоминаем, что L . V = const = V*. При изменении языка реализации объём меняется, следовательно меняется и уровень. Характерно, что для каждого языка выполняется похожее соотношение: L . V* = const. Величина a = L . V* называется уровнем языка. Уровень некоторых языков: английский = 2.16, Паскаль = 1.53, Алгол = 1.21, Фортран = 1.14, Ассемблер = 0.88. Нехитрыми преобразованиями получаем: a = V*2/V, след. V = V*2 / a, след. E = V / L = V*3 / a2 – работа (и, соответственно, время) обратно пропорциональна квадрату уровня языка. Д.Миллер изобрёл закон, согласно которому человек может держать в своей памяти 5-6 объектов одновременно. Попробуем посчитать потенциальный объём с 6 операндами: Vкрит = (2+6)lg(2+6) = 24. Тогда, пользуясь уровнем английского языка a = 2.16, получим значение критической работы: Eкрит = (24)3 / (2.16)2 = 3000. Определим уровень ошибок в программе как B = L . E / E0, где Е0 – среднее число различений между ошибками. Раскрыв всё, что можно в этом выражении получим: B = V / E0 (заменим Е0 на Екрит) = V / 3000 (зная a = V*2/V) = V*2/3000 a. Таким образом, зная потенциальный объём мы можем прикинуть уровень ошибок для любого языка программирования.

[9] Методы и средства измерения характеристик программ. Схема проведения измерений. Способы регистрации измеряемых параметров. Типы измерительных мониторов и требования к ним.

Назначение измерительных методов 1. Измерение параметров потребления программами ресурсов вычислительной системы с целью устранения дефектов производительности; 2. Предварительное измерение параметров системы для имитационных или аналитических моделей программ перед их последующим использованием. 3. Проверка адекватности имитационных или аналитических моделей и методов расчета характеристик выполнения программ по результатам моделирования. Необходимые условия применения измерительных методов 1. Наличие готовой программы, подлежащей измерительному исследованию;2. Наличие реальной вычислительной системы (а не её модели) для прогона программы 3. Наличие аппаратных или программных средств проведения измерений 4. Создание условий снижения искажений, вносимых в функционирование системы в процессе проведения измерений, до приемлемого уровня. Схема проведения измерений:

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

Измерительные мониторы – средства обеспечивающие регистрацию измерений. Измерительные мониторы бывают: 1. Аппаратные «АИМ» [Встроенные (с фиксированной программой, Автономные (с фиксированной или изменяемой программой)]; 2. Гибридные; 3. Программные «ПИМ» [Встроенные, Автономные]. Требования к ним: 1. Минимальные искажения в системе при выполнении программы. 2. Достаточная точность измерений; 3. Достаточно высокая разрешающая способность (по интервалам времени фиксации событий); 4. Независимость от измеряемой системы; 5. Низкая стоимость; 6. Простота использования.

[10] Виды измеряемых характеристик программ. Детерминированные и статистические характеристики. Трассировочные записи, временные и частотные профили. Классификация измерительных мониторов. Сущность и особенности каждого класса мониторов.

Виды характеристик: 1. Трассировочная запись – множество пар {ri(параметр)  j(время регистрации) }. Наиболее полная характеристика, может быть 10-ки тысяч записей. [+] хронология последовательности выполнения программы. 2. Профиль(динамический) 2 вида: 2.1. Частотный - определяет количественное распределение потребления рассматриваемых ресурсных параметров; 2.2. Временной - задает распределение времён потребления ресурсов в абсолютном или относительных масштабах. [+] Выявление узких мест программы в монопольном режиме, для дальнейшего усовершенствования. [-] Не содержит хронологии потребления ресурсов программой, не провести анализ конвейерных систем или взаимодействующих процессов.

АИМ подразделяются на: 1. Встроенные АИМ - включаются в аппаратуру системы заводом изготовителем, как правило, для выполнения тестовых измерений в фиксированном наборе внутренних точек устройств системы. Основное назначение встроенного АИМ - для проверки, контроля и настройки ВС. Но т.к. в его составе могут находиться триггеры состояний схемы, счетчики и некоторые другие устройства, то они могут использоваться и ддя измерения параметров программ; 2. Автономные АИМ - подключаются к измерительным точкам извне системы через специальные разъемы и могут задавать любые точки доступные для измерений. Автономные АИМ наиболее общий случай.

11. Аппаратные измерительные мониторы (АИМ). Общая структура. АИМ с фиксированной программой. Достоинства и недостатки.

Пример АИМ с фиксированной программой и параллельным входом для снятия частотного профиля операций процессора, используемых при выполнении программы. Каждому коду операции процессора ставится в соответствие ячейка таблицы, размещаемой в памяти прямого доступа (ППД), подключаемой в инкрементном режиме. За одно обращение к ячейке ППД с заданным адресом читается ее содержимое, инкрементируется и возвращается в ту же ячейку. Смещение адреса ячейки задается выходом фильтра событий, фиксирующего операцию исполняемой команды программы. В результате ячейки таблицы работают как счетчики количества использования каждой операции процессора и формируют частотный профиль программы.

[+] легко регистрируют события в аппаратных средствах. [-] менее ориентированы на измерения параметров, характеризующих выполнение программ.

[12] Аппаратные измерительные мониторы (АИМ) с изменяемой программой (гибридные). Достоинства и недостатки.

Пример ГИМ для оценки распределения частот использования нерезидентных и резидентных модулей программы (например, при настройке конфигурации ОС) показан на рисунке. При ограниченном ресурсе основной памяти часть модулей резидентно располагается в памяти с произвольным доступом RAM, другие же модули загружаются в память по мере необходимости из дисковой памяти и после их использования память очищается. Так как нерезидентные модули загружаются в свободные сегменты памяти, их размещение может быть произвольным и поэтому на основе фиксации участков памяти, используемых ЭВМ в данный момент, трудно определить, какой модуль занимает процессорное время в данный момент (за исключением резидентных модулей). Место загрузки нерезидентного модуля в RAM можно выяснить из управляющих таблиц ОС измеряемой ЭВМ - но для этого надо использовать дополнительную измерительную ЭВМ, которая может программно получить доступ к управляющим таблицам ОС измеряемой ЭВМ и соответствующим образом настроить компараторы фильтра событий.

RAM - память с произвольным доступом управляющие таблицы ОС хранят адреса загрузки и размеры модулей программы в RAM; Контроллер диска с триггером состояния «занято» позволяет фиксировать моменты выполнения операций чтения - записи информации на диск, изменяющих размещение нерезидентных модулей; Фильтр событий (включающий счетчики и компараторы с установками адресов размещения модулей), управляемый измерительной ЭВМ, позволяет отслеживать, с какими модулями работает программа и как часто к ним идет обращение Через ШВВ (шину ввода - вывода) измерительная ЭВМ связана с управляющими таблицами RAM измеряемой ЭВМ, что позволяет ей определять, какой модуль программы размещен в заданных адресах ОЗУ.

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

[13] Назначение и принцип действия программных измерительных мониторов (ПИМ). Классификация ПИМ. Общие принципы работы ПИМ. Краткая характеристика стандартных ПИМ

Программные измерительные мониторы (ПИМ) - это совокупность команд или программ, выполняемых исключительно с целью проведения измерений. Обычно ПИМ – это специальные программные средства, под управлением которых производится выполнение программы на той же ЭВМ, на которой измеряемая программа и должна выполняться. При этом ПИМ собирает данные о ходе выполнения программ и накапливает их в памяти. ПИМ бывают серийными и уникальными (turbo profiler и sampler), встроенными и автономными (внутренний модуль программы и внешняя программа), универсальными и специальными. Принцип работы: ПИМ выполняется на той же машине, что и измеряемая программа. Выполнение программы контролируется путём сбора информации. Дополнительно в монитор может входить модуль наглядного представления собранной информации. В итоге формируется профиль работы программы, содержащий характеристики хода её работы. Наиболее известные ПИМ: turbo profiler от borland, VTune от IBM, IPM от калифорнийского университета.

[14] ПИМ Turbo Profiler как серийный монитор для ПК Intel80X86 для ОС MSDOS. Назначение и возможности. Организация измерений. Достоинства и недостатки.

Разработан фирмой Borland для снятия профилей программ, скомпонованных в средах Borland Pascal или Borland C++. Организация вычислений: Программа компилируется в среде с включением отладочной информации и без оптимизации. После этого, текст программы вместе с исполняемым модулем загружается в профилировщик. В тексте программы пользователь определяет области, для которых он хочет собрать статистические данные и запускает программу под управлением профилировщика. Принцип работы: С каждой областью профилировщик связывает переменные для подсчёта времени выполнения и количества вызовов. Определена текущая область программы, она изменяется при переходе через маркеры областей. По каждому прерыванию таймера увеличиваются значения переменных, соответствующих текущей области. Возможности: снятие различных статистических характеристик, контроль обращения к файлам, отслеживание путей вызова подпрограмм, контроль прерываний. Достоинства: широкие возможности настроек, чёртова туча возможностей, интерактивность профилирования, наглядное представление результатов. Недостатки: низкая точность профилирования, большие накладные расходы, слабая достоверность результатов, зависимость точности от стиля программирования.

[15] ПИМ Vtune как серийный монитор для ПК Intel80X86 для ОС WINDOWS. Назначение и возможности. Организация измерений. Достоинства и недостатки.

Разработан фирмой Intel для профилирования программ под ОС Windows на машинах с процессорами от Intel. Организация вычислений: Подготавливается проект Vtune: настраиваются пути к рабочим директориям программы, путь к рабочему модулю, параметры командной строки, режим работы профилировщика. Запускается исследуемая программа (вручную). Начинается профилирование (данные снимаются со всех активных во время профилирования процессов, включая системные). Принцип работы (режим выборки по времени): при запуске профилировщик записывает положение в памяти всех процессов. По истечении начального промежутка времени Vtune периодически прерывает выполнение программы и обновляет данные об адресах инструкций. Данные сохраняются в буфере и по факту его заполнения пишутся на диск. После окончания работы приложения данные отображаются в наглядном виде (графики, гистограммы). Возможности: профилирование в различных режимах (выборка по времени, событийно-управляемое, статический анализ кода), построение графа вызовов, анализ производительности на уровне инструкций процессора, получение советов по оптимизации. Достоинства: windows-интерфейс, большое количество настроек, много возможностей, независимость от стилистики кода. Недостатки: необходимость включения в программу отладочной информации, сложность освоения, зависимость профиля от типа Pentium-процессора.

[16] Пример ПИМ "Sampler" как монитор уникального типа для ПК семейства Intel 80X86. Обоснование методики измерений. Временная диаграмма снятия отсчета. Способ коррекции измерений

Разработан кафедрой МОЭВМ для перетрахивания мозгов студентам. Организация вычислений: к программе на языке Паскаль или Си++ подключается модуль sampler. В тексте программы расставляются т.н. контрольные точки (фактически – вызовы функций sampler’а). Программа компилируется и запускается под управлением профилировщика, который по результатам выполнения формирует файл отчёта, где показано время на прохождение между соседними точками. Принцип работы: работает в двух режимах: измерение через нуль-канал таймера (системный таймер имеет 16 битный регистр и с частотой 1,19 МГц /минитик/ уменьшает его на 1. При переполнении происходит т.н. тик – основной синхронизирующий сигнал /INT 8/. Читая данные области BIOS, совместно с содержимым внутреннего регистра таймера, можно точно измерять время. Только сам процесс этот очень долгий, т.к. идёт работа с портами), измерение по Time Stamp Counter (TSC – внутренний регистр Pentium. Содержимое доступно по команде RTSC /Read TSC/. Проблема в том, что эта команда доступна только на уровне 0 привилегий /а в Windows DOS-приложения имеют уровень 3/). Основной геморрой – калибровка sampler’а. Идея в том, что функция SAMPLE замеряет время дважды: сразу после входа в неё и сразу перед выходом. Таким образом, можно пренебречь временем на выполнение самой функции. Достоинства: очень быстро и точно. Недостатки: требуется вносить изменения в текст программы, нет интерфейса вообще, результаты не наглядны.

17. Надежность программ. Основные понятия: отказ, сбой, ошибки и восстановление - применительно к программам. Количественные оценки(показатели) надежности.

Надежность – принципиально динамическая характеристика, а корректность может быть оценена без выполнения программы. Программная ошибка – всякое не выполнение программой функций, которые ожидает от нее пользователь и которые предусматриваются в текущем задании или спецификации. Несоответствие ожиданиям пользователя, 2 причины: 1. Нарушена спецификация; 2. Спецификация составлена не верно. Признаки проявления ошибок: 1. Появление ошибочной операции или обращение к ошибочным операндам при выполнении программы; 2. Затирание областей памяти, с которыми работает программа. 3. Ошибки интерфейса с пользователем. 4. Вычислительные ошибки (деление на 0, зацикливание …); 5. Ошибка из-за некорректного задания исходных данных. Отказ выполнения программы: 1. Невозможность дальнейшего выполнения программы; 2. Отличие полученного результата от ожидаемого.

Основные показатели надежности: 1. Количество оставшихся ошибок «B». Этот параметр меняется от стадии жизненного цикла программы, на котором находится программа; 2. Вероятность безотказной работы программы на интервале от [0,t] об. P(t); 3. Вероятность проявления хотя бы одного отказа на интервале от [0,t] об. Q(t)=1-P(t); 4. Плотность интервала появления отказов об. q(t)=dQ(t)/dt=-dP(t)/dt; 5. Функция риска, определяется как условная плотность отказов в программе, при условии, что до t отказов не было. Распределения с возрастающей функцией риска соответствуют тем ситуациям, когда статистические характеристики надежности ухудшаются со временем. И наоборот, распределения с убывающей функцией риска соответствуют обратной ситуации, когда надежность улучшается со временем в результате процесса обнаружения и коррекции ошибок.