Опубликован: 28.11.2007 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 15:

Методы разработки устойчивого кода

< Лекция 14 || Лекция 15: 1234 || Лекция 16 >
Аннотация: Лекция посвящена методам разработки устойчивого программного кода. Проводится классификация проблем, возникающих при работе программных систем, рассмотрено три метода разработки устойчивого кода: допущения, обработка исключений, сбор информации о сбоях. Цель данной лекции: дать представление о методах разработки устойчивого кода

25.1. Классификация проблем, возникающих при работе программных систем

Данная лекция посвящена внешним эффектам, проявляющимся в результате наличия дефектов в работающей программной системе. Эти эффекты различаются, в первую очередь, по степени серьезности последствий от проявления дефекта и по времени нахождения системы в неработоспособном состоянии.

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

Отказ - более серьезное проявление дефекта в системе, при котором вся система или ее часть выходят из строя, выходя при этом из работоспособного состояния, т.е. состояния, в котором все аспекты функционирования системы соответствуют требованиям. В случае отказа системы для ее возврата к нормальному функционированию требуется вмешательство оператора. Для программных систем причиной отказа может служить скрытый дефект, проявляющийся только с течением большого промежутка времени (переполнение внутреннего счетчика времени, переполнение данных и т.п.).

Авария - отказ системы, при котором система выходит из строя таким образом, что восстановление ее работоспособного состояния либо невозможно, либо занимает весьма значительное время. В случае программных систем можно избежать возникновения аварийных ситуаций при помощи полного дублирования системы как по выполняемому программному коду, так и по данным.

Сбои и отказы являются причиной отказных ситуаций, т.е. ситуаций, в которых работоспособное состояние системы нарушается временно. Аварии являются причиной аварийных ситуаций, т.е. ситуаций, в которых работоспособное состояние системы нарушается навсегда или на длительный срок.

25.1.1. Сбои

Можно выделить следующие три вида сбоев, вызывающих отказные ситуации.

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

Для классификации сбоев по категориям выделим следующие параметры сбоя.

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

Информационное окружение системы в момент сбоя - состояние системы в момент сбоя. К информационному окружению в данном случае относятся данные, которые могут помочь в анализе причины сбоя и его устранении - например, состояние стека, значение переменных окружения, пользовательской сессии и т.п. Данный набор параметров позволяет проследить ход выполнения программы, который привел к ее сбою, и оценить несоответствия в данных, которые могли привести к сбою.

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

В табл. 25.1 приведена классификация типов сбоев по указанным выше признакам.

Таблица 25.1. Классификация типов сбоев системы
Параметры сбоя Тип сбоя
Сбой в системном ПО Сбой в прикладном ПО Сбой из-за неверной технологии
Точка возникновения сбоя Системные библиотеки или Приложение Приложение Неприменимо
Информационное окружение Ненормальное Ненормальное Нормальное
Сообщение о сбое Пользовательское или автоматическое Автоматическое Пользовательское
< Лекция 14 || Лекция 15: 1234 || Лекция 16 >
Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия