104981 (Базовые сведения о надежности информационных технологий управления), страница 8

2016-08-01СтудИзба

Описание файла

Документ из архива "Базовые сведения о надежности информационных технологий управления", который расположен в категории "". Всё это находится в предмете "менеджмент" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "менеджмент" в общих файлах.

Онлайн просмотр документа "104981"

Текст 8 страницы из документа "104981"

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

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

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

Обычно программа разделяется "географически", т.е. модуль создается из операторов, компактно расположенных в программе. Однако, если привлечь технику получения остаточных программ и методы вертикального слоения, можно создавать модули и по другим (более функциональным) принципам.

Разделение на модули предполагает максимальную независимость модулей путем усиления внутренних связей в каждом модуле (повышения прочности модулей) и ослабления связей между модулями (и по данным и по управлению), применяя формализованный механизм передачи параметров. Вот какую цель формулирует академик А.П.Ершов: "Нам надо научиться очень тщательно и доказательно писать небольшие программы и в то же время уметь быстро, уверенно и безошибочно монтировать огромное комплексы программ из полуфабрикатов”.

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

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

Программа, построенная таким образом, является модульной в строгом смысле слова. Потому что, основное в модульном программировании - это возможность замены отдельного модуля его эквивалентом без последствий в остальной части программы.

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

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

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

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

Непроцедурность программ позволяет уйти от подобного (а значит, чреватого ошибками) расписывания последовательности действий для выполнения того или иного фрагмента программы. Непроцедурное программирование фрагмента означает задание спецификаций входа и выхода этого фрагмента без указания алгоритма преобразования. Иначе говоря, программист оговаривает, ЧТО НАДО СДЕЛАТЬ, не указывая КАК НАДО СДЕЛАТЬ. Реализация фрагмента по его спецификациям выполняется автоматически. Сама программа при этом не меняется. Примером метода повышения непроцедурности может служить использование макросредств - механизма получения открытых подпрограмм, настроенных на значения параметров. Другой пример - использование объектно-ориентированных языков. Предварительная и независимая отлаженность стандартных алгоритмов, привлекаемых для расшифровки спецификаций, позволяет повысить безошибочность подготовленной программы.

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

Технологии отладка программ

Одна из аксиом программирования гласит: Любая нетривиальная программа содержит хотя бы одну ошибку. Практика показывает справедливость этой аксиомы. Как бы хорошо ни была подготовлена программа, какие бы методы ни применялись при построении программы, следует исходить из "презумпции виновности".

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

Цель отладки - изменить программу таким образом, чтобы она была в состоянии решить запланированную задачу.

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

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

Само тестирование разделяют на три фазы: составление (генерация) тестовых наборов, выполнение программы на этих наборах, оценка результатов выполнения программы. Для простых случаев все три фазы выполняются "вручную", без машины. Но серьезное тестирование должно, конечно, включать в себя работу на машине. К сожалению, в общем случае полную систему тестовых наборов построить автоматически невозможно.

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

Представим отладку программы в виде контура управления, в котором объектом управления является отлаживаемая программа Р. Целью такой системы является повышение уровня безошибочности программы.

На схеме, представленной на рис. 4.12, субъект управления представляет собой отладочные средства, включают кроме программ еще и человека, выполняющего многие неформализованные действия.


Рис. 4.12. Схема отладки

Т- это задание на тестирование, включающее, естественно, и тестовый набор. Блок М определяет корректность выполнения тестового задания, блок А определяет причину некорректности, блок С осуществляет целенаправленное изменение. Изменение может быть направлено на программу Р, (с тем, чтобы добиться корректного выполнения тестового задания или включить в программу инструментальные вставки - счетчики, команды печати, команды прерываний и т.п. - для облегчения последующего анализа) или на само тестовое задание (если ошибка обнаружена в задании), или на порядок выполнения тестовых заданий (если задание уже выполнилось корректно или полученных результатов недостаточно для определения причины некорректности).

Таким образом, блоки М и А олицетворяют анализ, а блок С - внесение изменений.

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

В традиционных методах отладки объектом управления является сама программа Р или ее инструментированная модификация. С появлением аппарата смешанных вычислений можно рассматривать и такие методы отладки, где объект управления - остаточная программа.

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

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

Использование остаточных программ и остатков по заданным операторам может упростить анализ и уменьшить объем тестирования. Методика отладки с помощью остаточных программ и остатков по заданным операторам опирается на предположение, что более простой объект легче анализировать.

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

Технологии повышения помехоустойчивости программ

Помехой будем называть некорректное значение внешнего воздействия или входной величины. Ранее мы уже определили, что такое корректное внешнее воздействие: его значение должно принадлежать ареалу и поступать оно в программу должно в оговоренное время (можно, по-видимому, рассматривать внешнее воздействие как пару - значение и время появления; тогда и ареал должен состоять из двух компонентов, один из которых оговаривает допустимые значения, размеры воздействия, а другой - допустимые моменты времени).

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

Помехоустойчивость программы может быть повышена при использовании различных видов резервирования, т.е. введением избыточности.

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

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

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

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее