Надежность программного обеспечения ас реферат

Обновлено: 02.07.2024

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

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

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

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

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

Обоснование проблемы

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

Цель настоящего реферата — привлечь внимание к указанному вопросу и, по мере возможности, внести в него ясность.

Причины сложившейся ситуации

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

Третья причина состоит в том, что проблему выбора единицы измерения надежности компьютерной программы невозможно решить в рамках промышленного подхода, который в настоящее время занимает в программировании все более доминирующее положение. Наиболее характерный пример — использование, по аналогии с аппаратурой, в качестве меры надежности программы среднего времени между двумя последовательными ошибочными срабатываниями. Рассуждения в обоснование аналогий такого рода В.Турский ([3]) довольно резко охарактеризовал как наукообразные; сама же характеристика плохо отражает суть дела и не получила широкого признания.

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

Вероятностный подход к проблеме надежности

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

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

Компьютерная программа как объект исследования

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

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

Надежность и правильность программы

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

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

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

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

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

Модель последовательности испытаний Бернулли

B(р,n,k) = C(n,k) * pk * (1-р)(n-k), (1)

где С(n,k) — число сочетаний. Вероятность р априори неизвестна, но по результатам запусков известны n и k. Величина В как функция р имеет максимум при

В качестве меры надежности программы можно принять величину

R = 1 — k/n = (n-k)/n, (3)

значения которой (от 0 до 1) согласуются с общепринятым смыслом термина надежность: например, если все запуски окончились с ошибочным результатом (k = n), то надежность — нулевая.

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

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

Некоторые следствия

Формула (3) позволяет оценить надежность программы по результатам ее запусков. Следует особо остановиться на двух предельных случаях: k = n (нулевая надежность) и k = 0 (абсолютная надежность). В обоих случаях результаты не следует интерпретировать буквально: нет никаких гарантий того, что очередной запуск приведет к тому же реультату, что и предыдущие. Однако с точки зрения пользователя эти случаи совершенно разные. Если нулевая надежность свидетельствует о том, что программа явно непригодна для эксплуатации, то показатель абсолютной надежности не должен вводить в заблуждение: такой вывод нельзя делать по результатам даже очень большого числа запусков. Следует подчеркнуть, что для оценки надежности в этом случае необходимо рассмотреть другие вероятностные модели.

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

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

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

Методы повышения надёжности программного обеспечения

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

В последние годы сформировалась комплексная система управления качеством продукции TQM (Totaly Quality Management), которая концептуально близка к предшествующей более общей системе на основе стандартов ИСО серии 9000. Система ориентирована на удовлетворение требований потребителя, на постоянное улучшение процессов производства или проектирования, на управление процессами со стороны руководства предприятия на основе фактического состояния проекта. Основные достижения TQM состоят в углублении и дифференциации требований потребителей по реализации процессов, их взаимодействию и обеспечению качества продукции. Системный подход поддержан рядом специализированных инструментальных средств, ориентированных на управление производством продукции. Поэтому эта система пока не находит применения в области обеспечения качества жизненного цикла программных средств.

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

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

— модульность и строгую иерархию в структурном построении программ;

— унификацию правил проектирования, структурного построения и взаимодействия компонент ПС;

— унификацию правил организации межмодульного интерфейса;

— поэтапный контроль полноты и качества решения функциональных задач.

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

В заключение можно подвести итог:

1. В соответствии с классической работой Г. Майерса:

· В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать;

· Отказ программного обеспечения — это появление в нем ошибки;

· Надежность программного обеспечения — есть вероятность его работы без отказов в течении определенного периода времени, рассчитанного с учетом стоимости для пользователя каждого отказа.

2. Из данных определений можно сделать важные выводы:

· Надежность программного обеспечения является не только внутренним свойством программы;

· Надежность программного обеспечения — это функция как самого ПО, так и ожиданий (действий) его пользователей.

3. Основными причинами ошибок программного обеспечения являются:

· Большая сложность ПО, например, по сравнению с аппаратурой ЭВМ;

· Неправильный перевод информации из одного представления в другое.

Библиография

[1] Г. Майерс. Надежность программного обеспечения. Москва, Мир, 1980 год.

[3] В. Турский. Методология программирования. Москва, Мир, 1981 год.

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

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

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

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

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

Обоснование проблемы

Проблема надежности программного обеспечения относится, похоже, к категории "вечных". В посвященной ей монографии Г.Майерса ([1]), выпущенной в 1980 году (американское издание - в 1976), отмечается, что, хотя этот вопрос рассматривался еще на заре применения вычислительных машин, в 1952 году, он не потерял актуальности до настоящего времени. Отношение к проблеме довольно выразительно сформулировано в книге Р.Гласса ([2]): "Надежность программного обеспечения - беспризорное дитя вычислительной техники". Следует далее отметить, что сама проблема надежности программного обеспечения имеет, по крайней мере, два аспекта: обеспечение и оценка (измерение) надежности. Практически вся имеющаяся литература на эту тему, включая упомянутые выше монографии, посвящена первому аспекту, а вопрос оценки надежности компьютерных программ оказывается еще более "беспризорным". Вместе с тем очевидно, что надежность программы гораздо важнее таких традиционных ее характеристик, как время исполнения или требуемый объем оперативной памяти, однако никакой общепринятой количественной меры надежности программ до сих пор не существует.

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

Цель настоящего реферата - привлечь внимание к указанному вопросу и, по мере возможности, внести в него ясность.

Причины сложившейся ситуации

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

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

Третья причина состоит в том, что проблему выбора единицы измерения надежности компьютерной программы невозможно решить в рамках промышленного подхода, который в настоящее время занимает в программировании все более доминирующее положение. Наиболее характерный пример - использование, по аналогии с аппаратурой, в качестве меры надежности программы среднего времени между двумя последовательными ошибочными срабатываниями. Рассуждения в обоснование аналогий такого рода В.Турский ([3]) довольно резко охарактеризовал как наукообразные; сама же характеристика плохо отражает суть дела и не получила широкого признания.

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

Вероятностный подход к проблеме надежности

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

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 24.02.2015
Размер файла 132,3 K

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Федеральное агентство по образованию

Тверской государственный технический университет

ПО НАДЁЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Тверь 2014 г.

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

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

надежность программный обеспечение безаварийный

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

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

Модели надежности ПО

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

Модели надежности ПО подразделяются на аналитические и эмпирические.

Классификация аналитических моделей надежности ПО.

Другие модели в программном обеспечении:

Модель Шумана

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

Модель Шумана может быть использована при определенным образом организованной процедуре тестирования. Использование модели Шумана предполагает, что тестирование поводиться в несколько этапов. Каждый этап представляет собой выполнение на полном комплексе разработанных тестовых данных. Выявление ошибки регистрируется, но не исправляются. По завершении этапа на основе собранных данных о поведении АСОД на очередном этапе тестирования может быть использована модель Шумана для расчета количественных показателей надежности. При использовании модели Шумана предполагается, что исходное количество ошибок в программе постоянно, и в процессе тестирования может уменьшаться по мере того, как ошибки выявляются и исправляются. В этом методе вводится ряд условий.

Условия сводятся к следующему:

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

I - общее число машинных команд.

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

C - Коэффициент пропорциональности.

Тогда, если время работы системы t

отсчитывается от момента времени t0, а

остается фиксированным ( =const), то имеем показательное распределение, где случайная величина - время между двумя ближайшими отказами системы. Функция надежности или вероятность безотказной работы на интервале времени от 0 до t есть

Для нахождения С и Е используются принцип максимального правдоподобия (пропорция).

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

В заключение можно подвести итог:

1. В соответствии с классической работой Г. Майерса:

· В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать;

· Отказ программного обеспечения - это появление в нем ошибки;

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

2. Из данных определений можно сделать важные выводы:

· Надежность программного обеспечения является не только внутренним свойством программы;

· Надежность программного обеспечения - это функция как самого ПО, так и ожиданий (действий) его пользователей.

3. Основными причинами ошибок программного обеспечения являются:

· Большая сложность ПО, например, по сравнению с аппаратурой ЭВМ;

· Неправильный перевод информации из одного представления в другое.

Список Литературы

1. Б.В. Палюх, В.К. Кемайкин, А.Д. Дорожкин. Надежность программных средств экономических информационных систем. Тверь 2008г.

2. Г. Майерс. Надежность программного обеспечения. Москва, 1980г.

4. ^Goel, Amrit; Okumoto, Kazu 1979г. "Time-Dependent Error-Detection rate model for software reliability and other performance measures".

Подобные документы

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

курсовая работа [913,7 K], добавлен 02.07.2013

Запросы клиента по области возможных запросов к серверу. Программа для прогнозирования поведения надежности программного обеспечения на основе метода Монте-Карло. Влияние количества программ-клиентов на поведение программной системы клиент-сервера.

контрольная работа [705,3 K], добавлен 03.12.2010

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

презентация [379,5 K], добавлен 30.04.2014

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

реферат [24,8 K], добавлен 21.12.2010

Надежность как характеристика качества программного обеспечения (ПО). Методика расчета характеристик надежности ПО (таких как, время наработки до отказа, коэффициент готовности, вероятность отказа), особенности прогнозирования их изменений во времени.

Прежде чем говорить о надежности объекта, следует уточнить, что подразумевается под объектом. Как известно, компьютерная программа имеет несколько разных форм (или представлений): внешние спецификации, исходный текст, исполняемый код и т. д. Общепринятая точка зрения состоит в том, что программа представляет собой объект, инвариантный относительно форм его представления. Согласно этой точке… Читать ещё >

Надежность программного обеспечения ( реферат , курсовая , диплом , контрольная )

Введение

Причины сложившейся ситуации;

Вероятностный подход к проблеме надежности;

Компьютерная программа как объект исследования;

Надежность и правильность программы;

Модель последовательности испытаний Бернулли;

Методы повышения надёжности программного обеспечения;

Заключение

Программное обеспечение — согласно ГОСТ 19 781–90 — совокупность программ системы обработки информации и программных документов, необходимых для их эксплуатации.

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

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

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

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

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

Обоснование проблемы

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

Цель настоящего реферата — привлечь внимание к указанному вопросу и, по мере возможности, внести в него ясность.

Причины сложившейся ситуации

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

Третья причина состоит в том, что проблему выбора единицы измерения надежности компьютерной программы невозможно решить в рамках промышленного подхода, который в настоящее время занимает в программировании все более доминирующее положение. Наиболее характерный пример — использование, по аналогии с аппаратурой, в качестве меры надежности программы среднего времени между двумя последовательными ошибочными срабатываниями. Рассуждения в обоснование аналогий такого рода В. Турский ([3]) довольно резко охарактеризовал как наукообразные; сама же характеристика плохо отражает суть дела и не получила широкого признания.

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

Вероятностный подход к проблеме надежности

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

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

Компьютерная программа как объект исследования

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

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

Надежность и правильность программы

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

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

Следует также отметить, что если число ошибок рассматривать как меру надежности, то в терминологии теории вероятностей это число есть случайная величина, однако самый главный вопрос — на каком пространстве элементарных событий она задана — нигде не затрагивался ("https://referat.bookap.info", 11).

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

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

Модель последовательности испытаний Бернулли

B (р, n, k) = C (n, k) * p k * (1-р) (n-k) , (1)

где С (n, k) — число сочетаний. Вероятность р априори неизвестна, но по результатам запусков известны n и k. Величина В как функция р имеет максимум при р = k/n. (2)

В качестве меры надежности программы можно принять величину

R = 1 — k/n = (n-k)/n, (3)

значения которой (от 0 до 1) согласуются с общепринятым смыслом термина надежность: например, если все запуски окончились с ошибочным результатом (k = n), то надежность — нулевая.

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

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

Некоторые следствия

Формула (3) позволяет оценить надежность программы по результатам ее запусков. Следует особо остановиться на двух предельных случаях: k = n (нулевая надежность) и k = 0 (абсолютная надежность). В обоих случаях результаты не следует интерпретировать буквально: нет никаких гарантий того, что очередной запуск приведет к тому же реультату, что и предыдущие. Однако с точки зрения пользователя эти случаи совершенно разные. Если нулевая надежность свидетельствует о том, что программа явно непригодна для эксплуатации, то показатель абсолютной надежности не должен вводить в заблуждение: такой вывод нельзя делать по результатам даже очень большого числа запусков. Следует подчеркнуть, что для оценки надежности в этом случае необходимо рассмотреть другие вероятностные модели.

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

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

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

Методы повышения надёжности программного обеспечения

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

В последние годы сформировалась комплексная система управления качеством продукции TQM (Totaly Quality Management), которая концептуально близка к предшествующей более общей системе на основе стандартов ИСО серии 9000. Система ориентирована на удовлетворение требований потребителя, на постоянное улучшение процессов производства или проектирования, на управление процессами со стороны руководства предприятия на основе фактического состояния проекта. Основные достижения TQM состоят в углублении и дифференциации требований потребителей по реализации процессов, их взаимодействию и обеспечению качества продукции. Системный подход поддержан рядом специализированных инструментальных средств, ориентированных на управление производством продукции. Поэтому эта система пока не находит применения в области обеспечения качества жизненного цикла программных средств.

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

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

— модульность и строгую иерархию в структурном построении программ;

— унификацию правил проектирования, структурного построения и взаимодействия компонент ПС;

— унификацию правил организации межмодульного интерфейса;

— поэтапный контроль полноты и качества решения функциональных задач.

Заключение

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

В заключение можно подвести итог:

1. В соответствии с классической работой Г. Майерса:

· В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать;

· Отказ программного обеспечения — это появление в нем ошибки;

· Надежность программного обеспечения — есть вероятность его работы без отказов в течении определенного периода времени, рассчитанного с учетом стоимости для пользователя каждого отказа.

2. Из данных определений можно сделать важные выводы:

· Надежность программного обеспечения является не только внутренним свойством программы;

· Надежность программного обеспечения — это функция как самого ПО, так и ожиданий (действий) его пользователей.

3. Основными причинами ошибок программного обеспечения являются:

· Большая сложность ПО, например, по сравнению с аппаратурой ЭВМ;

· Неправильный перевод информации из одного представления в другое.

Библиография

[1] Г. Майерс. Надежность программного обеспечения. Москва, Мир, 1980 год.

[3] В. Турский. Методология программирования. Москва, Мир, 1981 год.

Введение

Читайте также: