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