- •Надежность программного обеспечения
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Изучение теоретической темы.
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •1. Содержание дисциплины
- •1. Индивидуальные практические работы, их характеристика
- •2. Контрольные работы, их характеристика
- •3. Курсовая работа, ее характеристика
- •4. Литература
- •4.1.Основная
- •4.2. Дополнительная
- •5. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Теоретический раздел Введение
- •1. Основные понятия и определения в области надёжности аппаратного обеспечения компьютерных систем
- •2. Показатели надежности компьютерных систем
- •2.1. Общие сведения
- •2.2. Показатели надежности невосстанавливаемых объектов
- •2.2.1. Вероятность безотказной работы
- •2.2.2. Вероятность отказа
- •2.2.3. Плотность распределения наработки до отказа
- •2.2.4. Интенсивность отказов
- •2.2.5. Средняя наработка до отказа
- •2.3. Показатели надежности восстанавливаемых объектов
- •2.3.1. Коэффициент готовности
- •2.3.2. Стационарный коэффициент готовности
- •2.4. Основные модели, используемые в теории надежности
- •3. Основные понятия и определения в области надежности программного обеспечения компьютерных систем
- •3.1. Проблема надежности программного обеспечения и её актуальность
- •3.2. Понятие свойств, функций и требований к программному обеспечению. Критерии качества требований
- •Корректность (правильность) требований
- •Недвусмысленность требований
- •Полнота набора требований
- •Непротиворечивость требований
- •Упорядоченность по важности и/или стабильности
- •Проверяемость требований (верифицируемость)
- •Целостность
- •Модифицируемость
- •Трассируемость
- •3.3. Понятие ошибки и отказа программного обеспечения
- •3.4. Понятие надежности программного обеспечения
- •3.5. Особенности программ по сравнению с аппаратурой
- •4. Анализ причин появления ошибок в программном обеспечении
- •4.1. Процесс разработки программного обеспечения в соответствии со стандартом стб исо/мэк 12207-2003
- •4.2. Причины появления ошибок в программном обеспечении
- •5. Модели надежности программного обеспечения
- •5.1. Общие сведения
- •5.2. Модель Джелинского–Моранды
- •5.3. Модель Шика–Волвертона
- •5.4. Геометрическая модель
- •5.5. Статистическая модель Миллса
- •5.6. Модель Нельсона
- •5.7. Статистическое моделирование надёжности программ
- •6. Стандартизация оценки надежности программных средств в Республике Беларусь
- •6.1. Общие сведения о стандартах в области оценки качества программных средств
- •6.2. Оценка надежности программных средств по гост 28195–99
- •6.3. Оценка надежности программных средств по стб исо/мэк 9126–2003
- •1. Определение требований к надежности
- •2. Подготовка к оцениванию
- •3. Процедура оценивания
- •7. Оценка надежности программных средств в соответствии с международными стандартами iso/iec 9126-1-3:2001-2003 и iso/iec 14598-1:1999
- •7.1. Общие сведения о сериях стандартов iso/iec 9126-1-4:2001-2004 и iso/iec 14598-1-6:1998-2001
- •7.2. Модель надежности программных средств по стандарту iso/iec 9126-1:2001
- •7.3. Внутренние метрики надежности программных средств по стандарту iso/iec 9126-3:2003
- •7.4. Внешние метрики надежности программных средств по стандарту iso/iec 9126-2:2003
- •7.5. Метод оценки надежности программных средств по стандарту iso/iec 14598–1:1999
- •1. Установка требований к оценке надежности
- •1.1. Установка цели оценки
- •1.2. Идентификация типов продуктов
- •1.3. Определение модели надежности
- •2. Определение оценки надежности
- •2.1. Выбор метрик надежности
- •2.2. Установка уровней ранжирования метрик
- •2.3. Установка критериев для оценки
- •8. Тестирование программного обеспечения
- •8.1. Введение в тестирование по
- •8.2. Определение тестирования по
- •8.3. Объекты тестирования
- •8.4. Направления тестирования по
- •8.5. Принципы разработки тестов
- •8.6. Информационные потоки процесса тестирования
- •8.7. Принципы организации тестирования
- •8.8. Методы тестирования по
- •8.8.1. Общие сведения
- •8.8.2. Структурное тестирование
- •8.8.2.1. Понятие потокового графа, пути, цикломатической сложности
- •8.8.2.2. Тестирование по критерию путей
- •8.8.2.3. Тестирование по критерию ветвей
- •8.8.2.4. Метод тестирования базисных путей
- •8.8.2.5. Тестирование циклов
- •8.8.3. Функциональное тестирование программного обеспечения
- •8.8.3.1. Общие сведения
- •8.8.3.2. Пример иллюстрации сложности задачи разработки тестов
- •8.8.3.3. Метод эквивалентного разбиения
- •8.8.3.4. Метод анализа граничных условий
- •8.9. Документирование тестов
- •8.10. Методика тестирования программных средств
- •8.10.1. Общие сведения
- •8.10.2. Тестирование модулей
- •8.10.3. Тестирование сборки
- •8.10.3.1. Восходящее тестирование сборки
- •8.10.3.2. Нисходящее тестирование сборки
- •8.10.4. Тестирование правильности
- •8.10.5. Системное тестирование
- •8.11. Пример тестирования программы
- •1) Подготовка процесса
- •4) Анализ требований к программному средству
- •5) Проектирование программной архитектуры
- •6) Техническое проектирование программного средства
- •7) Программирование и тестирование модулей
- •Компонент пользовательского интерфейса:
- •Компонент математического расчёта:
- •8) Сборка программного средства
- •9) Квалификационные испытания программного средства
- •12) Ввод в действие программного средства
- •13) Обеспечение приёмки программного средства
- •8.12. Регрессионное тестирование
- •8.13. Документирование программных ошибок
- •8.14. Мутационное тестирование
- •8.15. Проектирование тестов, основанных на случайных наборах исходных данных
- •8.15.1. Анализ случайных векторов исходных данных
- •8.15.2. Генерация случайных векторов исходных данных
- •8.16. Оценка правильности результатов выполнения программы
- •9. Верификация программного обеспечения
- •9.1. Элементы математической логики Исчисление высказываний
- •Операции над высказываниями
- •(Если a, то b)
- •Исчисление предикатов
- •Операции над высказывательными формами
- •9.2. Метод индуктивных утверждений
- •9.2.1. Общие сведения
- •9.2.2. Последовательность шагов по доказательству корректности схем алгоритмов программ
- •9.3. Основные проблемы доказательства корректности программ
- •Экзаменационные вопросы по дисциплине «Надежность программного обеспечения»
- •1.2. Числовые константы и переменные
- •1.3. Операторы
- •1.4. Функции встроенные и задаваемые пользователем
- •1.5. Математические выражения
- •1.6. Присваивание переменным значений
- •1.7. Ранжированные переменные и таблицы вывода
- •1.8. Понятие о массивах и матрицах
- •1.8.1. Функции, определяемые пользователем, и массивы
- •1.8.2. Индексация элементов массивов
- •1.8.3. Матрицы
- •1.8.4. Нижние индексы и верхние индексы
- •1.8.5. Нижние индексы и элементы вектора
- •1.8.6. Нижние индексы и элементы матрицы
- •1.8.7. Верхние индексы и столбцы матрицы
- •1.8.8. Изменение значения системной переменной origin
- •2. Редактирование
- •2.1. Формульный редактор
- •2.1.1. Наборные панели и шаблоны
- •2.2. Текстовый редактор
- •3. Арифметические и логические операторы
- •3.1. Арифметические операторы
- •3.1.1. Расширенные арифметические операторы
- •3.2. Операторы отношения (логические операторы)
- •3.3. Функция условных выражений if
- •3.4. Задание функций пользователя
- •3.5. Типовые статистические функции
- •4. Решение уравнений
- •4.1. Решение одного уравнения
- •4.2. Решение уравнений с параметром
- •4.3. Системы уравнений
- •4.4. Многократное решение уравнений
- •4.5. Приближенные решения
- •5. Символьная математика
- •5.1. Настройка символьного знака равенства
- •6. Файлы данных
- •6.1. Функции доступа к файлам
- •6.2. Аргументы функций доступа к файлам
- •7. Графики
- •7.1. Создание графика
- •7.2. Вывод функции на график
- •7.3. Построение декартова графика
- •7.4. Графическое представление вектора
- •7.5. Графическое представление файлов данных
- •7.6. Размещение нескольких графиков на чертеже
- •7.7. Форматирование осей
- •7.8. Свойства графиков
- •7.9. Оформление графика
- •7.10. Заголовки графиков
- •7.11. Изменение представления графика
- •7.12. Изменение масштаба на графике
- •7.13. Считывание координат точек графика
- •Приложение 1. Основные законы распределения нсв
- •Приложение 2. Пример выполнения задания
- •Приложение 3. Математические функции
- •Приложение 4. Статистические функции
- •Литература
- •Автоматизация тестирования программного обеспечения. Работа в среде silktest. Теоретические и практические сведения к выполнению индивидуальных практических работ
- •Введение
- •1. Тестирование программного обеспечения
- •1.1. Задача и цели тестирования программного обеспечения
- •1.2. Классификация видов тестирования по
- •1.3. Этапы процесса тестирования по
- •1.4. Разработка тест-кейсов
- •1.5. Контрольные вопросы
- •2. Автоматизация тестирования по
- •2.1. Эффективность автоматизации тестирования
- •2.2. Технология Record&Playback
- •2.3. Язык скриптов
- •2.4. Структура автоматизации тестирования
- •2.5. Требования к автоматизированному тесту
- •2.6. Инструментальные средства автоматизации тестирования
- •2.7. Контрольные вопросы
- •3. Работа в среде SilkTest 8.0
- •3.1. Начало работы
- •3.1.3. Создание тест-кейсов
- •3.2. Реализация технологии Record/PlayBack в среде SilkTest
- •3.2.1. Создание библиотеки объектов
- •3.2.2. Создание тестового скрипта
- •3.2.3. Среда запуска скриптов
- •3.2.4. Средство распознавания объектов
- •3.3. Recovery-система
- •3.4. Создание тестплана (TestPlan)
- •3.4.1. Добавление тесткейса в тестплан
- •3.4.2. Подключение файлов в тестплане
- •3.4.3. Запуск тестплана (полный, выборочный)
- •3.5. Использование внешних данных (Data Driven Test)
- •3.6. Просмотр результатов исполнения тестовых сценариев
- •3.7. Пример разработки теста
- •3.7.1. Задание для тестирования
- •3.7.2. Создание фрейма приложения
- •3.7.3. Настройка Recovery System
- •3.7.4. Запись и воспроизведение скрипта
- •3.7.5. Создание Testcase с использованием Data Driven Test
- •3.7.6. Создание ТестПлана
- •3.8. Задания для лабораторных работ
- •Литература
- •Приложение 1. Описание языка 4test п1.1. Типы данных
- •П1.1.1. Синтаксис определения переменной
- •П1.1.2. Синтаксис определения константы
- •П1.1.3. Примеры определения и инициализации переменных
- •П1.1.4. Массивы данных
- •П1.2. Операторы языка 4Test п1.2.1. Арифметические операторы
- •П1.2.2. Логические операторы
- •П1.2.3. Операторы сравнения
- •П1.2.4. Условные операторы
- •П1.2.5. Операторы цикла
- •П1.2.6. Функции приведения типа
- •П1.2.7. Функции работы с массивами
- •П1.2.8. Функции работы со строками
- •П2.2.2. Функции для Menu (меню)
- •П2.2.3. Функции для ListBox/ComboBox (Раскрывающийся список/ Поле со списком)
- •П2.2.4. Функции для Button (кнопка)
- •П2.2.5. Функции для CheckBox/RadioButton (Флажок/Переключатель)
- •П2.2.6. Функции для EditBox (Поле ввода)
- •П2.2.7. Функция для Тab (Вкладка)
- •П2.3. Функции имитации клавиатурного ввода
- •П2.4. Функции имитации действий, выполняемых мышью
- •П2.5. Функции работы с системой
- •П2.6. Функции оповещения о результатах
- •П2.7. Функции синхронизации
- •П2.8. Функции проверки существования обьекта
- •П2.9. Функции работы с файлами
- •П2.10. Функции пользователя
- •Контрольные работы Контрольная работа № 1 Тема задания
- •Методические указания к выполнению контрольной работы № 1
- •Содержание отчета по контрольной работе № 1
- •Контрольная работа № 2 Тема задания
- •Методические указания к выполнению контрольной работы №2
- •Содержание отчета по контрольной работе № 2
- •Правила оформления отчетов по контрольным работам
- •Образец титульного листа
- •Содержание отчета по индивидуальной практической работе № 1
- •Правила оформления отчетов по индивидуальным практическим работам
- •Образец титульного листа
4.5. Приближенные решения
MathCAD11 содержит функцию, очень похожую на функцию Find. Она называется Minerr. Функция Minerr использует тот же самый алгоритм, что и функция Find. Различие состоит в следующем. Если в результате поиска решения не может быть получено дальнейшее уточнение текущего приближения к решению, Minerr возвращает это приближение. Функция Find, в отличие от функции Minerr возвращает в этом случае сообщение об ошибке “решение не найдено”. Правила использования функции Minerr такие же, как и функции Find. Однако Minerr не может проверить, реализует ли ответ абсолютный минимум для функционала невязки. Если функция Minerr используется в блоке решения уравнений, необходимо всегда включать дополнительную проверку достоверности получаемых результатов.
5. Символьная математика
При численном вычислении MathCAD11 возвращает после знака равенства одно или несколько чисел.
При использовании символьной математики, результатом вычисления выражения является другое выражение. При этом желаемая форма этого второго выражения может быть задана пользователем. Первоначальное выражение можно разложить на множители, проинтегрировать его, разложить в ряд, и так далее.
Символьный знак равенства позволяет MathCAD11 выйти за рамки численного вычисления выражений. В отличие от обычного знака равенства “=”, который всегда возвращает число, символьный знак равенства “→” возвращает выражение.
Символьный знак равенства является оператором, подобным любому оператору MathCAD11. Когда делаются изменения где-либо выше или левее от него, MathCAD11 модифицирует результат. Символ равенства знает предварительно определенные функции и переменные и использует их везде, где необходимо. Можно предписать символу равенства игнорировать предшествующие определения функций и переменных, используя ключевое слово assume, как показано на рис. 5.1. Следует обратить внимание, что знак “→” применяется только ко всему выражению. Нельзя, например, применить “→” ни к части выражения, ни к результату предыдущего действия “→”.
Рис. 5.1. Использование символьного знака равенства
5.1. Настройка символьного знака равенства
Символ “→” берет выражение с левой стороны и помещает его упрощенную версию с правой стороны. Процессом упрощения можно управлять, помещая одно из следующих ключевых слов (табл. 5.1) перед выражением, содержащим “→”.
Таблица 5.1
Ключевые слова символьных выражений
Ключевое слово |
Функция |
symplify |
Упрощает выражение, выполняя арифметические преобразования, сокращая общие множители и используя основные тождества для тригонометрических и обратных функций |
expand |
Разлагает все степени и произведения сумм в выражении |
series |
Разлагает выражение от одной или нескольких переменных в окрестности определенной точки. По умолчанию разложение имеет вид полинома шестого порядка |
factor |
Разлагает на множители выбранное выражение, если всё выражение может быть записано в виде произведения сомножителей |
Assume |
Предписывает MathCAD11 рассматривать переменную, которая следует после этой команды, в качестве неопределенной переменной, даже если ей присвоено определенное значение. Кроме этого, используется для определения ограничений, используемых для вычисления выражения |
float |
Предписывает MathCAD11 отображать число в формате с плавающей запятой всякий раз, когда это возможно |
literally |
Запрещает символьному процессору пытаться оптимизировать любое последующее выражение |
Ключевые слова чувствительны к регистру и поэтому должны печататься точно так, как показано в табл. 5.1. Зато они нечувствительны к шрифту.
Рис. 5.2 показывает некоторые примеры использования этих ключевых слов. Заметим, что ключевое слово действует только до следующего символа “→”. Когда символьный знак равенства используется для преобразования выражения, MathCAD11 просматривает все переменные и функции, проверяя, были ли они ранее определены в рабочем документе. Если MathCAD11 находит определения, он их использует. Любые другие переменные и функции участвуют в преобразовании в виде символов. Есть три исключения из этого правила, иллюстрируемые на рис. 5.3. При преобразовании выражения, использующего ранее определенные переменные и функции, MathCAD11 игнорирует предшествующие определения, если:
переменная определена как число, содержащее десятичную точку;
ключевое слово assume предшествует определению;
переменная была определена как дискретный аргумент.
Рис. 5.2. Использование ключевых слов с символьным знаком равенства
Можно также использовать ключевое слово assume, чтобы наложить ограничения на переменные в выражении. Пример на рис. 5.3 показывает, как заданием ограничений на параметр, интеграл может быть сделан сходящимся. Чтобы определить несколько условий, достаточно отделить их запятыми. Ключевое слово assume должно предшествовать любому другому ключевому слову, обращенному к выражению, поскольку ключевое слово будет применяться только к выражению, расположенному сразу после него.
Рис. 5.3. Ключевое слово assume определяет, заменит или нет MathCAD11 значения переменной и имена функций в выражении
Ключевое слово float обеспечивают дополнительный контроль над формой, в которой MathCAD11 отображает результаты символьных преобразований. Ключевое слово float предписывает отображать всякий раз, когда возможно, последующие символьные результаты в виде чисел с плавающей запятой. Можно управлять точностью этого числа, сопровождая float соответствующим целым числом.
Ключевое слово series используется, чтобы сопоставить выражению отрезок его ряда Тэйлора по определенной комбинации переменных. По умолчанию MathCAD11 разлагает в ряд относительно точки 0 и использует все члены ряда, у которых сумма показателей степени меньше шести. Можно, впрочем, определять точки, в которых необходимо получить разложение в ряд, как показано на рис. 5.4. Это особенно полезно, когда выражение имеет особенность в 0. Можно также определять порядок разложения, как показано в последнем примере на рис. 5.4.
Символьный процессор обрабатывает числа, содержащие десятичную точку, иначе, чем числа без десятичной точки. Общее правило следующее:
когда символьный процессор получает числа, содержащие десятичную точку, любые возвращаемые численные результаты будут десятичными аппроксимациями точного значения;
когда символьный процессор получает числа без десятичных точек, любые возвращаемые численные результаты будут выражены без десятичных точек всякий раз, когда это возможно.
Рис. 5.4. Использование ключевого слова series для разложения выражения в окрестности выбранной точки
Рис. 5.5 показывает некоторые примеры
того, как наличие десятичной точки
влияет на ответы, получаемые от символьного
процессора. В первом случае, число
возвращается
неизменённым, так как это число не
является рациональным. Но число
возвращается как десятичная аппроксимация
к иррациональному числу
.
Когда символьная операция дает приближенный ответ в виде десятичной дроби, этот ответ всегда отображается с 20 значащими цифрами. На это отображение не воздействует ни локальный, ни глобальный числовой формат MathCAD11.
Рис. 5.5. Численные ответы в символьных вычислениях
