О надёжности компьютерного программного обеспечения

топ 100 блогов stalinist16.06.2024 Программизм сейчас создаёт настолько сложные программные продукты, что в их надёжности уже невозможно быть уверенным. Программные дефекты Microsoft Windows стали притчей во языцех, но никакой сколько-нибудь серьёзный программный продукт не может гарантировать, что в нём нет дефектов. По этому поводу шуточная программистская аксиома гласит: "В каждой программе есть по крайней мере одна ошибка." Да и почти у всех приборов есть сзади дырочка, куда нужно засунуть шпильку и сбросить состояние прибора к исходному тогда, когда его программное обеспечение отчаялось выйти из тупика, куда его завели программные дефекты. По этой же причине производители выпускают "сырые" программные продукты с перспективой их периодического обновления, так как полностью их испытать в мириадах сценариев очень часто невозможно или, по крайней мере, непрактично, поскольку очень трудоёмко и никогда не даёт гарантии.

А сейчас я наткнулся на интересное, по существу, признание о том, что некоторые широко распространённые программистские практики считаются слишком рискованными, чтобы их можно было применять в системах, требующих высочайшей надежности:
Besides, I was trained to never use the heap/malloc in embedded systems. Most coding standards for critical aerospace systems http://www2.research.att.com/~bs/JSF-AV-rules.pdf 1 and motor vehicle coding standards like MISRA have statements like this:

MISRA C++ rule 18-4-1, dynamic heap memory allocation cannot be used.
Здесь, по существу, говорится, что динамическое выделение оперативной памяти (RAM) запрещено в аэрокосмических системах и в программном обеспечении автомобилей, а такое выделение -- краеугольный камень пресловутого объектно-ориентированного программирования, например, на языках вроде C++. Проблема с динамическим выделением памяти, то есть с ситуацией, когда программный код сам вычисляет, сколько дополнительной памяти ему требуется в данный момент, состоит в том, что невозможно оценить тот максимум потребной памяти, которая может быть запрошена в процессе исполнения программы, а этот максимум может превысить доступную память, что приведёт к аварийному -- неуправляемому и неисправляемому -- состоянию программы.

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

Оставить комментарий

Архив записей в блогах:
Василий Иванович Чапаев (28 января [9 февраля] 1887[5] — 5 сентября 1919) — участник Первой мировой и Гражданской войн, начальник дивизии в Красной армии. Одна из самых известных ...
Лет десять кряду я писал, что Путину невероятно везет. Ему и правда невероятно везло. И нефть перла вверх, что бы он ни делал, и противодействия ему почти никакого почти никто не оказывал, и Севпоток строился, и все было на мази.  Всё. Финита ля комедия.  Везение закончилось.  ...
Засолила сегодня впервые рыбу. Форель. Я тут нашла такой классный магазин местных продуктов, где владельцы - девочка и мальчик, которые сами фанаты качественных продуктов, закупают у крутых местных производителей и поставщиков. Ценник немного выше, чем в Перекрестке. Качество... ...
Ну здрасссссьте ... Я опять за вашими историями и поддержкой. У нас срок 39+. Ну то есть вот-вот ... Вчера была у врача - она сказала тоже что "вот-вот" и дала нам максимум неделю ... Скрипка и немножко нервно ... Вот хожу сейчас с ощущением, что кто-то ...
Весна, любовь, пора начинать наводить красоту. Хотите секрет? Нет лучше средства для кожи, чем оливковое масло. Ни один крем, хоть французский, хоть японский, хоть корейский с экскрементами улиток, хоть с чем еще, ни в какое сравнение не идет. А всего-то делов: налить в ладошку буквально ...