Принципы и методы создания надежного программного обеспечения АСУТП
Покупка
Основная коллекция
Тематика:
Системы автоматического проектирования
Издательство:
Инфра-Инженерия
Автор:
Мякишев Дмитрий Владимирович
Год издания: 2025
Кол-во страниц: 116
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9729-2599-5
Артикул: 676521.03.99
Показана актуальность проблемы повышения надежности программного обеспечения. Приведены основные определения, перечислены факторы, влияющие на надежность ПО, рассмотрены принципы и методы проектирования, разработки и реализации надежного ПО, даны практические рекомендации с примерами из области АСУТП АЭС. Подробно раскрыты требования, которым должно отвечать надежное ПО. Для студентов соответствующих специальностей, а также специалистов, занимающихся разработкой ПО для критически важных объектов.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.04: Программная инженерия
- 11.03.04: Электроника и наноэлектроника
- 15.03.04: Автоматизация технологических процессов и производств
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Д. В. МЯКИШЕВ ПРИНЦИПЫ И МЕТОДЫ СОЗДАНИЯ НАДЕЖНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ АСУТП Москва Вологда «Инфра-Инженерия» 2025 Учебное пособие 3-е издание
УДК 004.052 ББК 32.965 М99 Мякишев, Д. В. М99 Принципы и методы создания надежного программного обеспечения АСУТП : учебное пособие / Д. В. Мякишев. – 3-е изд. – Москва ; Вологда : Инфра-Инженерия, 2025. – 116 с. : ил., табл. ISBN 978-5-9729-2599-5 Показана актуальность проблемы повышения надежности программного обеспечения. Приведены основные определения, перечислены факторы, влияющие на надежность ПО, рассмотрены принципы и методы проектирования, разработки и реализации надежного ПО, даны практические рекомендации с примерами из области АСУТП АЭС. Подробно раскрыты требования, которым должно отвечать надежное ПО. Для студентов соответствующих специальностей, а также специалистов, занимающихся разработкой ПО для критически важных объектов. УДК 004.052 ББК 32.965 ISBN 978-5-9729-2599-5 © Мякишев Д. В., 2025 © Издательство «Инфра-Инженерия», 2025 © Оформление. Издательство «Инфра-Инженерия», 2025
ВВЕДЕНИЕ 3 ВВЕДЕНИЕ (постановка проблемы) Имейте в виду, если вы сделаете быстро и плохо, то люди забудут, что вы сделали быстро, и запомнят, что вы сделали плохо. Если вы сделаете медленно и хорошо, то люди забудут, что вы сделали медленно, и запомнят, что вы сделали хорошо!» С. П. Королев Компьютеры прочно вошли в нашу жизнь. Если еще в 70-х годах прошлого века искусство (именно искусство) пользоваться компьютером (тогда в ходу был термин «Электронная Вычислительная Машина», сокращенно ЭВМ) было уделом немногих профессионалов, то сейчас компьютер стал чем-то вроде авторучки. Правда, как и для того, чтобы писать авторучкой грамотные осмысленные тексты нужно учиться, так и для того, чтобы эффективно пользоваться компьютером, нужны специальные знания, но это уже иная тема. Другая, может быть, более важная тенденция – тотальное внедрение компьютеров в технические устройства и системы. Сейчас трудно себе представить более или менее сложный технический объект (автомобиль, стиральную машину, телевизор и т. п.) без автоматической системы управления на базе микропроцессора или микроконтроллера. Что же касается таких областей как атомная и тепловая энергетика, вооружение и военная техника, добыча и транспортировка энергоносителей,
Принципы и методы создания надежного программного обеспечения АСУ ТП Мякишев Д.В. 4 гражданская и военная авиация, космонавтика, здравоохранение и многие другие отрасли, то в них использование автоматизированных систем управления (АСУ) и систем автоматического управления (САУ) на базе десятков, сотен а то и тысяч единиц компьютерной техники – жизненная необходимость, поскольку человек без их помощи физически не может справиться с задачами управления сложными техническими объектами. В этой ситуации существенно возрастает роль программного обеспечения (ПО) компьютеров. Во времена молодости автора в ходу было изречение «ЭВМ без программы все равно что самолет без бензина» и это и сейчас актуально! Несмотря на бурное развитие компьютерной техники и обилие разнообразных архитектурных и технических решений, без программ, как и прежде обойтись нельзя. Именно ПО привносит в компьютерную или компьютеризированную системы практическую ценность, реализуя те функции, которые нужны пользователю и ради реализации, которых эти системы и создаются. В области разработки ПО также наблюдается значительный прогресс. Появились новые языки программирования, операционные системы, инструментальные средства. К сожалению, старые проблемы остались и эти проблемы связаны с качеством ПО – степенью соответствия свойств (характеристик) продукта требованиям (ожиданиям) пользователей. Очевидно, что требования к качеству тем выше, чем ответственней сфера применения продукта, в нашем случае ПО. Среди определенных стандартом [1] восьми характеристик качества (функциональная пригодность, уро
ВВЕДЕНИЕ 5 вень производительности, совместимость, удобство использования, надежность, защищенность, сопровождаемость, переносимость) главную роль играет надежность – основной критерий качества программного продукта и его субхарактеристики: завершенность, готовность, отказоустойчивость, восстанавливаемость. Если ПО прикладной системы не имеет требуемый уровень надежности, то все остальные характеристики просто теряют смысл. Кроме того, повышение надежности – самый выгодный путь снижения затрат при создании и сопровождении ПО. Высокая стоимость ПО – следствие его низкой надежности. Вышесказанное звучит несколько парадоксально, но объясняется очень просто. По данным многочисленных источников, как отечественных, так и зарубежных, до 80 % стоимости ПО приходится на сопровождение. В свою очередь, львиная доля издержек при сопровождении ПО – это затраты на выявление и исправление ошибок. Меньше ошибок – меньше затраты. За последние годы мощность микропроцессоров возросла, они стали дешевыми, и как следствие возросла цена ошибки ПО относительно стоимости аппаратуры. Кроме того, за счет ПО благодаря присущей ему гибкости, принято исправлять ошибки других компонентов систем, а также промахи персонала. В зависимости от сферы применения компьютерной системы требования к уровню (степени) надежности могут быть разными. Если у вас «завис» компьютер, на котором вы набирали текст курсовой работы, – это одно, а вот если «завис» или выдал неверный результат
Принципы и методы создания надежного программного обеспечения АСУ ТП Мякишев Д.В. 6 процессор в составе САУ оружием или АСУТП энергоблоком, – это совсем другое. Многолетняя история применения вычислительной техники, к сожалению, полна примеров тяжелых, а иногда и трагических последствий использования ПО ненадлежащего уровня надежности. В работах [2], [5], [23], приведены некоторые (далеко не все) «страшилки», которые тем не менее дают наглядное представление о проблеме. Особенно важна надежность ПО в сфере управления критически важными объектами (КВО), такими как энергоблоки АЭС и ТС, военные объекты, медицинское оборудование и т. д. Для таких объектов ПО должно создаваться с максимальным использованием методов и средств из арсенала разработчика, направленных на повышение надежности. Это не означает, что программы, не относящиеся к указанной сфере можно делать, как говорится, «тяп-ляп». Надежность нужна всегда и везде, просто последствия несоблюдения принципов создания надежного ПО будут разными. Дальнейший материал пособия посвящен принципам, методам и средствам разработки надежного ПО. При этом упор делается на «programming in the large»1 – создание программных систем, но многое будет полезно и разработчикам небольших программ. 1 Программирование в большом (англ.)
ГЛАВА 1. Теория 7 ГЛАВА 1. Теория Знание некоторых принципов легко возмещает незнание некоторых фактов. Гельвеций 1.1 Что такое надежность ПО Впервые дискуссии о надежности программного обеспечения в нашей стране развернулись в начале 80-х годов прошлого века после появления на прилавках книжных магазинов перевода монографии известного специалиста в области разработки ПО Гленфорда Майерса [2]. Нельзя сказать, что до этого момента проблема надежности ПО не осознавалась. Просто в упомянутом труде она была четко сформулирована, показана ее суть и намечены основные пути решения. Через некоторое время в свет вышла книга советского ученого Владимира Васильевича Липаева, посвященная той же теме [3], а следом за ней – перевод руководства еще одного известного зарубежного специалиста Роберта Гласса [4]. Следует отметить, что несмотря на то, что с времени выхода этих изданий прошло более 30 лет, вопросы, поднятые в них, а также основные определения, принципы и предлагаемые методы актуальны до сих пор [6]. Несколько устарели лишь приводимые в них примеры и технологические приемы. Наряду с упомянутыми изданиями при составлении пособия были использованы современные издания по тематике и актуальные международные стандарты, принятые в РФ.
Принципы и методы создания надежного программного обеспечения АСУ ТП Мякишев Д.В. 8 Современный международный стандарт, принятый в качестве государственного российского нормативного документа в 2015 году [1] дает следующее определение: «надежность (reliability): Степень выполнения системой, продуктом или компонентом определенных функций при указанных условиях в течение установленного периода времени. Примечания 1 Это определение было адаптировано из (ИСО/ МЭК/ИИЕЕ 24765). 2 В программном обеспечении износа не происходит. Проблемы с надежностью возникают из-за недостатков в требованиях, при разработке и реализации или из-за изменений условий использования. 3 Характеристики функциональной надежности программного обеспечения включают в себя готовность и либо присущие ей, либо внешние влияющие факторы, такие как надежность и доступность (включая отказоустойчивость и восстанавливаемость), безопасность (включая обеспечение конфиденциальности и целостность), пригодность для обслуживания, долговечность и техническую поддержку.» В данном пособии мы будем пользоваться определением из [2], которое по смыслу аналогично вышеприведенному, но больше соответствует нашим целям – получению практических навыков создания надежного ПО: «Надежность ПО есть вероятность его работы без отказов в течение определенного периода времени, рассчитанная с учетом стоимости для пользователя каждого отказа.»
ГЛАВА 1. Теория 9 Мы видим, что принимается во внимание серьезность ошибки, степень ее влияния на работу системы. Следовательно, надежность не является внутренним свойством программы, она во многом связана с тем, как программа используется. Термин «вероятность» играет в определении значительную роль, указывая на случайный характер проявления ошибки. Существует большое количество математических моделей надежности ПО, которые мы в настоящем пособии рассматривать не будем. Причин две. Во-первых, до сих пор нет единой эталонной модели, которая являлась бы признаваемой абсолютно (скажем, как закон Ома). Во-вторых, излагаемый в пособии материал основан на качественном анализе причин ненадежности ПО и методов борьбы с ней. На наш взгляд, это является важным для практики. Хотя определение надежности ПО сходно с определением надежности аппаратуры, эти понятия должны рассматриваться раздельно. В первую очередь, это определяется различной природой отказов аппаратуры и программ. У аппаратуры возможны три причины отказа: • дефект проектирования; • дефект производства; • физический износ (старение элементов). Причина отказа ПО – исключительно следствие дефекта (ошибки) проектирования (разработки). Отказ программного обеспечения – это проявление ошибки в нем. Ошибки в ПО не являются его внутренним свойством. Наличие ошибок ‒ функция как самого ПО, так
Принципы и методы создания надежного программного обеспечения АСУ ТП Мякишев Д.В. 10 и ожиданий его пользователей. В ПО имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать: предсказуемого поведения. В данном случае «разумно» означает действие, выполняемое в пределах назначения системы. Можно сказать, что синоним «надежности» ‒ «предсказуемость». Ошибка ПО проявляется при изменении входных данных. Если подавать на вход ПО одни и те же данные, ошибка не проявится. На рисунке 1 приведен примерный график зависимости частоты отказов аппаратуры и ПО от времени, иллюстрирующий их разную природу [2]. Рисунок 1. График частоты отказов График частоты отказов аппаратуры можно условно разделить на три области. Первая область – область «приработки». В процессе опытной эксплуатации выявляются как дефекты проектирования, так и дефекты производства, включая примененные при изготовлении некачественные элементы.