- •Надежность программного обеспечения
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Изучение теоретической темы.
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •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
- •Правила оформления отчетов по индивидуальным практическим работам
- •Образец титульного листа
3.5. Особенности программ по сравнению с аппаратурой
Можно выделить следующие особенности программного обеспечения по сравнению с аппаратным обеспечением компьютеров.
Ошибки в программах проявляются при их выполнении на некоторых наборах исходных данных (в аппаратуре – из-за сбоев и отказов аппаратуры).
Компонентам программ не присущи старение и износ.
Коррекция ошибок в программе приводит к изменению её конфигурации и обычно устраняет саму возможность повторного проявления данной ошибки.
Тщательный анализ типа отказа и его влияние непрактичны в сложных программах.
4. Анализ причин появления ошибок в программном обеспечении
4.1. Процесс разработки программного обеспечения в соответствии со стандартом стб исо/мэк 12207-2003
Жизненный цикл (ЖЦ) – это структура, состоящая из процессов, работ и задач, включающая в себя разработку, эксплуатацию и сопровождение ПС.
Процесс представляет собой набор взаимосвязанных работ, которые преобразуют исходные данные в выходные результаты.
В соответствии с данным стандартом, каждый процесс ЖЦ разделен на набор работ, а каждая работа – на набор задач.
Данный стандарт описывает архитектуру процессов жизненного цикла ПС. При этом он не определяет детали реализации или выполнения работ и задач, входящих в данные процессы. Стандарт не предопределяет конкретную модель ЖЦ или метод разработки ПС.
Пользователи, использующие данный стандарт, должны сами:
- выбирать модель ЖЦ применительно к разрабатываемому ПС;
- распределять процессы, работы и задачи, выбранные из данного стандарта, на данной модели;
- выбирать и применять методы разработки программных средств и выполнять работы и задачи, соответствующие разрабатываемому ПС.
Все процессы ЖЦ делятся на следующие группы:
- основные процессы ЖЦ;
- вспомогательные процессы ЖЦ;
- организационные процессы ЖЦ.
Основные процессы ЖЦ:
- процесс заказа;
- процесс поставки;
- процесс разработки;
- процесс эксплуатации;
- процесс сопровождения.
Процесс заказа. Содержит работы и задачи, выполненные заказчиком, и состоит из определения потребностей заказчика к системе подготовки и выпуска заявки на подряд, выбор поставщика.
Процесс поставки. Состоит из работ и задач, выполняемых поставщиком, начиная с решения о подготовке предложения в ответ заявки на подряд, присланной заказчиком или с подписания договора и вступления с заказчиком в договорные отношения по поставке системы.
Процесс разработки содержит 13 работ. Состоит из работ и задач, выполняемых разработчиком и включает в себя работы:
- по анализу требований;
- по проектированию;
- по программированию;
- по сборке;
- по тестированию;
- по вводу в действие;
- по приёмке программных средств.
В данный процесс могут быть включены работы, связанные с разработкой системы, если это оговорено в договоре.
1-я работа – подготовка процесса. Должны быть выбраны и адаптированы стандарты, инструментарии и языки программирования для выполнения работ в процессе разработки, так же должна быть выбрана модель ЖЦ.
2-я работа – анализ требований к системе. Система включает в себя объекты технических и программных средств. Должны быть разработаны требования к системе. Требования к системе должны охватывать:
- функции и возможности системы;
- коммерческие и организационные требования;
- требования пользователя;
- требования безопасности и защиты;
- эргономические требования;
- требования к интерфейсам;
- эксплуатационные требования;
- требования к сопровождению.
Результатом данной работы должна быть документально оформленная спецификация требований к системе (System Requirement Specification).
3-я работа – проектирование системной архитектуры. Должна быть определена общая архитектура всей системы, должны быть указаны объекты технических и программных средств и ручных операций. Ручные операции представляют собой те операции, которые пользователь системы выполняет вручную, так как, в основном, все разрабатываемые системы являются автоматизированными, а не автоматическими. Должно быть обеспечено распределение всех требований между объектами архитектуры системы. Затем на основе указанных объектов архитектуры должны быть определены объекты конфигурации технических и программных средств и ручных операций. Должна быть документально оформлена привязка системной архитектуры и требований к системе относительно установленных требований.
4-я работа – анализ требований к программным средствам (ПС). Применительно к каждому программному объекту архитектуры должна быть разработана спецификация требований. Должны быть установлены и документально оформлены следующие требования к программным средствам:
- функциональные требования;
- технические требования, включая производительность, физические характеристики и окружающие условия, под которые должен быть создан программный объект;
- требования к внешним интерфейсам программного объекта;
- квалификационные требования;
- требования безопасности и защиты;
- эргономические требования, включая требования, относящиеся к ручным операциям;
- требования к определению данных и базе данных;
- требования по вводу в действие и приёмке поставляемого ПС на объектах эксплуатации и сопровождения;
- требования к документации пользователя;
- требования к эксплуатации объекта пользователем;
- требования к обслуживанию пользователя.
Результатом данной работы должна быть спецификация требований к ПС (Software Requirement Specification).
5-я работа – проектирование программной архитектуры. Требования к программному объекту должны быть преобразованы в программную архитектуру, которая описывает общую структуру программного объекта и определяет компоненты объекта. Затем должно быть обеспечено распределение всех требований к программному объекту между его компонентами. Должны быть разработаны и документально оформлены:
- общий (эскизный) проект внешних интерфейсов программного объекта и интерфейсов между компонентами объекта;
- общий (эскизный) проект базы данных;
- предварительные версии документации пользователя;
- общие требования к тестированию программного объекта.
6-я работа – техническое проектирование ПС. Должен быть разработан технический проект для каждого компонента программного объекта. Компоненты программного объекта должны быть уточнены на уровне программных модулей. Должно быть обеспечено распределение технических требований к компонентам между программными модулями. Технический проект должен быть документально оформлен. Кроме того, должен быть разработан и документально оформлен технический проект внешнего интерфейса программного объекта, интерфейса между компонентами и интерфейса между программными модулями. Должны быть разработаны и документально оформлены:
- технический проект базы данных;
- требования к тестированию и программе испытаний программных модулей.
7-я работа – программирование и тестирование ПС. Должен быть разработан и документально оформлен каждый программный модуль и база данных. Кроме того, должен быть протестирован каждый модуль и база данных на соответствие заданным требованиям. Результаты тестирования должны быть документально оформлены.
8-я работа – сборка ПС. Все модули и компоненты должны быть собраны в единый программный объект и протестированы. Результаты сборки и тестирования должны быть документально оформлены.
9-я работа – квалификационные испытания ПС. Должны быть проведены испытания (тестирование) на соответствие квалификационных требований программному объекту. При тестировании должна быть проверена правильность выполнения каждого требования. Ошибки фиксируются и документально оформляются.
10-я работа – сборка системы. Программные объекты конфигурации должны быть собраны в единую систему вместе с объектами технической конфигурации и при необходимости с другими системами.
11-я работа – квалификационное испытание системы. Должны быть проведены в соответствии с требованиями, установленными к системе (эталон – спецификация требований к системе). Результаты квалификационных испытаний документально оформляются.
12-я работа – ввод ПС в действие.
13-я работа – обеспечение приемки ПС.
Процесс эксплуатации. Данный процесс состоит из следующих работ:
- подготовка процесса;
- эксплуатационные испытания;
- эксплуатация системы;
- поддержка пользователя.
Процесс сопровождения. Выполняется персоналом сопровождения и реализуется при модификациях ПС. Целью данного процесса является изменение существующего ПС при сохранении целостности. Так же процесс охватывает вопрос снятия ПС с эксплуатации.
Вспомогательные процессы ЖЦ ПС:
- документирование;
- управление конфигурацией;
- обеспечение качества;
- верификация;
- аттестация;
- совместный анализ;
- аудит;
- решение проблем;
Документирование – процесс формализованного описания информации, созданной в процессе или работе ЖЦ ПС.
Управление конфигурацией – процесс применения административных и технических процедур на всем протяжении ЖЦ программных средств.
Обеспечение качества – процесс обеспечения соответствующих гарантий того, что программные средства и процессы в ЖЦ проекта соответствуют установленным требованиям и утвержденным планам.
Верификация – процесс определения того, что программное средство функционирует в полном соответствии с требованиями или условиями, реализованными в предшествующих работах. Верификация может применяться не только к ПС, но и к любым другим результатам работы. Например, верификации могут подвергаться документация, программная архитектура и т.д.
Аттестация – процесс аттестации является процессом определения полноты соответствия установленных требований созданной системы или ПС их функциональному назначению. Аттестации могут подвергаться любые промежуточные продукты процесса обработки, но чаще аттестации подвергаются продукты на завершающей стадии обработки.
Совместный анализ – процесс оценки состояний и результатов работ по всему проекту. Совместные анализы проводятся в течении всего ЖЦ договора и применяются как на уровне управления проектом, так и на уровне его технической реализации.
Аудит – процесс определения соответствия требованиям, планам и условиям договора.
Решение проблем – процесс анализа и решения проблем, которые обнаружены в ходе выполнения разработки, эксплуатации, сопровождения или других процессов.
Организационные процессы ЖЦ:
- управления;
- создания инфраструктуры;
- усовершенствования;
- обучения.
Процесс управления состоит из работ и задач, которые могут быть использованы любой стороной, управляющей соответствующим процессом (планирование, выполнение, контроль, оценки).
Процесс создания инфраструктуры является процессом установления и обеспечения (сопровождения) инфраструктуры, необходимой для любого другого процесса. Инфраструктура может содержать технические и программные средства, методики, стандарты и условия для разработки, эксплуатации и сопровождения.
Процесс усовершенствования является процессом установления оценки измерения, контроля и улучшения любого процесса жизненного цикла ПС.
Обучение – процесс обеспечения первоначального и продолженного обучения персонала работам по заказу, поставке, разработке, эксплуатации или сопровождению ПС.
