Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Принципы и методы создания надежного программного обеспечения АСУТП

Покупка
Основная коллекция
Артикул: 676521.02.99
Показана актуальность проблемы повышения надежности программного обеспечения. Приведены основные определения, перечислены факторы, влияющие на надежность ПО, рассмотрены принципы и методы проектирования, разработки и реализации надежного ПО, даны практические рекомендации с примерами из области АСУТП АЭС. Подробно раскрыты требования, которым должно отвечать надежное ПО. Для специалистов, занимающихся разработкой ПО для критически важных объектов. Издание может быть полезно студентам соответствующих специальностей.
Мякишев, Д. В. Принципы и методы создания надежного программного обеспечения АСУТП : учебное пособие / Д. В. Мякишев. - 2 -е изд. - Москва ; Вологда : Инфра-Инженерия, 2021. - 116 с. - ISBN 978-5-9729-0674-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/1832004 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Д. В. МЯКИШЕВ
ПРИНЦИПЫ И МЕТОДЫ СОЗДАНИЯ 
НАДЕЖНОГО ПРОГРАММНОГО  
ОБЕСПЕЧЕНИЯ АСУТП
Учебное пособие
2-е издание
Москва    Вологда
«Инфра-Инженерия»
2021


УДК 004.052004.5            
ББК 32.96532.97
М99 
Мякишев, Д. В.
М99     
Принципы  и  методы  создания  надежного  программного 
              обеспечения АСУТП : учебное пособие /  Д. В. Мякишев. - 2-е изд. -                   
              Москва ; Вологда : Инфра-Инженерия, 2021. - 116 с.
        ISBN 978-5-9729-0674-1
 
Показана актуальность проблемы повышения надежности программного обеспечения. Приведены основные определения, перечислены 
факторы, влияющие на надежность ПО, рассмотрены принципы и методы проектирования, разработки и реализации надежного ПО, даны практические рекомендации с примерами из области АСУТП АЭС. Подробно 
раскрыты требования, которым должно отвечать надежное ПО. 
Для специалистов, занимающихся разработкой ПО для критически 
важных объектов. Издание может быть полезно студентам соответствующих специальностей.
УДК 004.052004.5 
 
 
 
 
 
 
 
 
 
 
 
  
ББК 32.96532.97
 
 
ISBN 978-5-9729-0674-1 ‹ Д. В. Мякишев, 2021
 
‹ Издательство «Инфра-Инженерия», 2021
 
‹ Оформление. Издательство «Инфра-Инженерия», 2021


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


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


ВВЕДЕНИЕ
вень производительности, совместимость, удобство 
использования, надежность, защищенность, сопровождаемость, переносимость) главную роль играет надежность - основной критерий качества программного продукта и его субхарактеристики: завершенность, 
готовность, отказоустойчивость, восстанавливаемость. 
Если ПО прикладной системы не имеет требуемый 
уровень надежности, то все остальные характеристики просто теряют смысл. Кроме того, повышение надежности - самый выгодный путь снижения затрат при 
создании и сопровождении ПО. Высокая стоимость 
ПО - следствие его низкой надежности.
Вышесказанное звучит несколько парадоксально, 
но объясняется очень просто. По данным многочисленных источников, как отечественных, так и зарубежных, 
до 80  стоимости ПО приходится на сопровождение. 
В свою очередь, львиная доля издержек при сопровождении ПО - это затраты на выявление и исправление 
ошибок. Меньше ошибок - меньше затраты.
За последние годы мощность микропроцессоров 
возросла, они стали дешевыми, и как следствие возросла цена ошибки ПО относительно стоимости аппаратуры. Кроме того, за счет ПО благодаря присущей ему 
гибкости, принято исправлять ошибки других компонентов систем, а также промахи персонала.
В зависимости от сферы применения компьютерной системы требования к уровню (степени) надежности могут быть разными. Если у вас «завис» компьютер, 
на котором вы набирали текст курсовой работы, - это 
одно, а вот если «завис» или выдал неверный результат 
5


Принципы и методы создания надежного 
программного обеспечения АСУ ТП
Мякишев Д.В. 
процессор в составе САУ оружием или АСУТП энергоблоком, - это совсем другое.  Многолетняя история 
применения вычислительной техники, к сожалению, 
полна примеров тяжелых, а иногда и трагических последствий использования ПО ненадлежащего уровня 
надежности. В работах [2], [5], [23], приведены некоторые (далеко не все) «страшилки», которые тем не менее 
дают наглядное представление о проблеме.  Особенно 
важна надежность ПО в сфере управления критически 
важными объектами (КВО), такими как энергоблоки 
АЭС и ТС, военные объекты, медицинское оборудование и т. д. Для таких объектов ПО должно создаваться 
с максимальным использованием методов и средств из 
арсенала разработчика, направленных на повышение 
надежности. Это не означает, что программы, не относящиеся к указанной сфере можно делать, как говорится, «тяп-ляп». Надежность нужна всегда и везде, просто последствия несоблюдения принципов создания 
надежного ПО будут разными.
Дальнейший материал пособия посвящен принципам, методам и средствам разработки надежного ПО. 
При этом упор делается на «programming in the large´ 1 - 
создание программных систем, но многое будет полезно 
и разработчикам небольших программ.
1  Программирование в большом (англ.)
6


ГЛАВА 1. Теория
ГЛАВА 1. Теория
Знание некоторых принципов легко возмещает 
 
незнание некоторых фактов. 
Гельвеций
 1.1 Что такое надежность ПО
Впервые дискуссии о надежности программного обеспечения в нашей стране развернулись в начале 
80-х годов прошлого века после появления на прилавках
книжных магазинов перевода монографии известного
специалиста в области разработки ПО Гленфорда Майерса [2]. Нельзя сказать, что до этого момента проблема
надежности ПО не осознавалась. Просто в упомянутом
труде она была четко сформулирована, показана ее суть
и намечены основные пути решения. Через некоторое
время в свет вышла книга советского ученого Владимира Васильевича Липаева, посвященная той же теме [3], а
следом за ней - перевод руководства еще одного известного зарубежного специалиста Роберта Гласса [4]. Следует отметить, что несмотря на то, что с времени выхода
этих изданий прошло более 30 лет, вопросы, поднятые в
них, а также основные определения, принципы и предлагаемые методы актуальны до сих пор [6]. Несколько
устарели лишь приводимые в них примеры и технологические приемы. Наряду с упомянутыми изданиями при
составлении пособия были использованы современные
издания по тематике и актуальные международные стандарты, принятые в РФ.
7


Принципы и методы создания надежного 
программного обеспечения АСУ ТП
Мякишев Д.В. 
Современный международный стандарт, принятый 
в качестве государственного российского нормативного 
документа в 2015 году [1] дает следующее определение: 
«надежность (reliability): Степень выполнения системой, продуктом или компонентом определенных функций при указанных условиях в течение установленного 
периода времени.
Примечания
1 Это определение было адаптировано из (ИСО/
МЭК/ИИЕЕ 24765).
2 В программном обеспечении износа не происходит. Проблемы с надежностью возникают из-за недостатков в требованиях, при разработке и реализации или 
из-за изменений условий использования.
3 Характеристики функциональной надежности программного обеспечения включают в себя готовность и либо 
присущие ей, либо внешние влияющие факторы, такие как 
надежность и доступность (включая отказоустойчивость и 
восстанавливаемость), безопасность (включая обеспечение конфиденциальности и целостность), пригодность для 
обслуживания, долговечность и техническую поддержку.»
В данном пособии мы будем пользоваться определением из [2], которое по смыслу аналогично вышеприведенному, но больше соответствует нашим целям - получению практических навыков создания надежного ПО: 
«Надежность ПО есть вероятность его работы без 
отказов в течение определенного периода времени, 
рассчитанная с учетом стоимости для пользователя 
каждого отказа.»
8


ГЛАВА 1. Теория
Мы видим, что принимается во внимание серьезность ошибки, степень ее влияния на работу системы. 
Следовательно, надежность не является внутренним 
свойством программы, она во многом связана с тем, как 
программа используется. Термин «вероятность» играет 
в определении значительную роль, указывая на случайный характер проявления ошибки.
Существует большое количество математических 
моделей надежности ПО, которые мы в настоящем пособии рассматривать не будем. Причин две. Во-первых, 
до сих пор нет единой эталонной модели, которая являлась бы признаваемой абсолютно (скажем, как закон 
Ома). Во-вторых, излагаемый в пособии материал основан на качественном анализе причин ненадежности 
ПО и методов борьбы с ней. На наш взгляд, это является важным для практики.
Хотя определение надежности ПО сходно с определением надежности аппаратуры, эти понятия должны рассматриваться раздельно. В первую очередь, это 
определяется различной природой отказов аппаратуры 
и программ.
У аппаратуры возможны три причины отказа:
‡ дефект проектирования;
‡ дефект производства;
‡ физический износ (старение элементов).
Причина отказа ПО - исключительно следствие дефекта (ошибки) проектирования (разработки). Отказ программного обеспечения - это проявление ошибки в нем.
Ошибки в ПО не являются его внутренним свойством. Наличие ошибок ௅ функция как самого ПО, так 
9


Принципы и методы создания надежного 
программного обеспечения АСУ ТП
Мякишев Д.В. 
и ожиданий его пользователей. В ПО имеется ошибка, 
если оно не выполняет того, что пользователю разумно 
от него ожидать: предсказуемого поведения. В данном 
случае «разумно» означает действие, выполняемое в 
пределах назначения системы. Можно сказать, что синоним «надежности» ௅ «предсказуемость».
Ошибка ПО проявляется при изменении входных 
данных. Если подавать на вход ПО одни и те же данные, ошибка не проявится.
На рисунке 1 приведен примерный график зависимости частоты отказов аппаратуры и ПО от времени, 
иллюстрирующий их разную природу [2].
Рисунок 1.  График частоты отказов
График частоты отказов аппаратуры можно условно разделить на три области.
Первая область - область «приработки». В процессе 
опытной эксплуатации выявляются как дефекты проектирования, так и дефекты производства, включая примененные при изготовлении некачественные элементы.
10