ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
«Нижегородский государственный университет им. Н.И. Лобачевского»
Физический факультет
Кафедра физики полупроводников и оптоэлектроники
Дипломная работа
Разработка программно–алгоритмических средствдля определения надёжности программного обеспечения на основании моделирования работы системы типа "клиент–сервер"
студента 5–го курса
«Допустить к защите»
зав. каф. ФПО,
д.ф.–м.н., проф.
ПАВЛОВ Д.А.
Научный руководитель,
доцент каф. ФПО, к.ф.–м.н.
Рецензент:
доцент каф. ЭТТ, к.ф.–м.н.
Москва 2008 г.
Оглавление
Сокращения..................................................................................................... 4
Введение........................................................................................................... 5
1. Аналитический обзор литературы............................................................. 7
1.1 Надежность как характеристика качества ПО......................................... 7
1.2 Текущее состояние вопроса...................................................................... 9
1.3 Выводы.................................................................................................... 19
2. Теоретическая часть.................................................................................. 21
2.1 Существующие модели надежности ПО................................................. 21
2.2 Содержательная постановка задачи....................................................... 24
2.3 Разработка модели надежности ПО типа клиент–сервер...................... 29
2.3.1 Модель надежности клиентских программ......................................... 29
2.3.2 Модель с заменой вероятностей состояний на средние численности состояний........................................................................................................................ 34
2.3.3 Модель для случая N модулей–клиентов............................................ 37
2.3.4 Модель для случая l ¹ const............................................................... 42
2.4 Разработка обобщенной модели надежности ПО типа клиент–сервер 46
3. Экспериментальная часть.......................................................................... 52
3.1 Обоснование выбранного метода реализации....................................... 52
3.2 Алгоритм функционирования программы............................................ 52
3.3 Практические результаты моделирования............................................. 55
3.3.1 Оценка времени, необходимого для уменьшения количества ошибок до расчетного уровня......................................................................................... 55
3.3.2 Влияние количества клиентов на надежность ПО............................... 57
3.3.3 Влияние количества программистов на надежность ПО.................... 59
3.3.4 Влияние интенсивности обращений клиентов к серверу.................... 61
3.3.5 Определение начального количества ошибок в ПО........................... 62
3.3.6 Поиск начального количества ошибок в программе по начальной и конечной интенсивностям отказов................................................................................ 65
Выводы.......................................................................................................... 68
Список использованных источников............................................................ 70
Приложение А. Примеры моделей надежности ПО.................................... 73
ВС – вычислительное средство
ВТ – вычислительная техника
ЖЦ – жизненный цикл
КИС – корпоративная информационная система
ММП – метод максимального правдоподобия
МНК – метод наименьших квадратов
ООД – область определения данных
ОС – операционная система
ПИ – программное изделие
ПК – программный комплекс
ПО – программное обеспечение
ПТС – программно–техническое средство
СВМО – среднее время между отказами
СМО – система массового обслуживания
СПО – системное программное обеспечение
ТЗ – техническое задание
ТУ – технические условия
ЭП – экстремальное программирование
Архитектура современных корпоративных информационных систем (КИС) является, как правило, функционально распределенной. Она характеризуется многопотоковой организацией вычислений, при которой запросы реализуются параллельно и распределяются по нескольким процессорам (серверам). Основным средством реализации функций обработки информации и управления в таких системах является программное обеспечение (ПО). Существенной особенностью КИС является непрерывность процессов ввода и обработки информации, цикличный характер вычислительных процессов. В связи с этим важнейшей проблемой, возникающей при создании КИС, является обеспечение высокого уровня надежности их функционирования. В распределенных системах, архитектура которых обеспечивает возможность полного или частичного резервирования аппаратных средств, основным фактором, определяющим надежность функционирования, является программное обеспечение.
Многочисленные научные публикации [1-4] и накопленный опыт разработки программных систем в России и за рубежом свидетельствуют о том, что достаточно уверенно прогнозировать уровень надежности функционирования ПО весьма трудно. Проблема заключается в том, что существующие методы и модели прогнозирования надежности ПО не в полной мере пригодны для практического применения.
В настоящее время в области машинной обработки информации существуют две взаимосвязанные проблемы: стоимость обработки информации и ненадежность программного обеспечения, организующего и выполняющего процесс обработки информации. При этом первая проблема находится в зависимости от второй, так как высокая стоимость проектирования, тестирования и сопровождения программ обработки информации определяется прежде всего ненадежностью ПО [5].
Необходимость повышения надежности программного обеспечения обусловлена еще и тем, что в настоящее время ПО несет значительно большую функциональную нагрузку в решении задач управления, чем технические средства.
Поэтому целью данной дипломной работы разработка программно–алгоритмических средств для проведения оценки надежности программного обеспечения на основе построения модели надежности ПО, позволяющей проводить расчет характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа) и на основе этой модели прогнозировать изменение этих характеристик во времени.
В качестве теоретической основы использованы: теория массового обслуживания, теория вероятностей, теория линейного программирования, методы разработки программного обеспечения, международные и отечественные стандарты по программному обеспечению. В качестве метода исследования выбран метод Монте–Карло.
В качестве информационных источников в работе использовались научные данные и сведения из книг, журнальных статей, а также международные и отечественные стандарты по разработке и применению программного обеспечения, результаты собственных расчетов и проведенных экспериментов.
1. Аналитический обзор литературы
1.1 Надежность как характеристика качества ПО
В работах [6-9] дается определение основных характеристик качества ПО, а также приводятся рекомендации по их измерению, даются метрики и критерии. В частности, дается номенклатура показателей надежности ПО. В стандарте [10] вводится шесть характеристик качества, в том числе для оценки надежности: завершенность, устойчивость к ошибкам, восстанавливаемость, согласованность, правильность работы, своевременность. Основные показатели качества ПО отображены в таблице 1.
Таблица 1 – Показатели качества ПО
Показатель | Описание |
Удобство сопровождения | ПО должно быть таким, чтобы существовала возможность его усовершенствования в ответ на изменения требований заказчика или пользователя |
Надежность | Определяется рядом характеристик, таких как безотказность, защищенность и безопасность |
Эффективность | ПО должно разумно расходовать ресурсы и обладать достаточными скоростными и временными характеристиками |
Удобство в использовании | ПО должно быть удобным в эксплуатации и быть рассчитанным на технический уровень эксплуатирующего персонала, обладать соответствующим пользовательским интерфейсом и документацией |
Данные показатели не вытекают непосредственно из того, какие действия может выполнять программный продукт. Они характеризуют поведение программы при выполнении этих действий.
Надежность — один из важнейших факторов, определяющих общую производительность и эффективность систем. В связи с этим уже на стадии проектирования системы вопросам надежности должно уделяться пристальное внимание. В этот период, когда устанавливается первоначальная взаимозависимость между характеристиками системы, затратами и графиком выполнения работ, должны быть сформулированы и требования к надежности, так как именно они в значительной мере определяют реализуемость проекта и стоимость будущей системы.
В КИС компьютер, как часть системы, обычно выполняет функции управления и должен работать в режиме реального времени. Поэтому при разработке ПО необходимо учитывать аппаратные средства, средства взаимодействия с пользователем и среду окружения [8]. Поскольку многие свойства ПО сложной системы проявляют себя только тогда, когда она собрана целиком и запущена в рабочий режим, то не учет этих факторов в совокупности может привести к построению ненадежного ПО. График соотношения надежности ПО и аппаратуры показан на рис. 1.