OberonCore
https://forum.oberoncore.ru/

Правила Хольцмана
https://forum.oberoncore.ru/viewtopic.php?f=26&t=882
Страница 1 из 1

Автор:  Иван Кузьмицкий [ Понедельник, 18 Февраль, 2008 11:11 ]
Заголовок сообщения:  Правила Хольцмана

http://www.pcweek.ru/spheres/detail_pri ... 73&print=Y

Цитата:
Менеджеры НАСА обеспокоены качеством эксплуатируемого ПО и намерены существенно повысить надежность критически важных программных модулей, устанавливаемых на космические аппараты. Ведь, согласно многолетней статистике, одна ошибка присутствует в каждых 10-100 строках кода. НАСА выделило 600 тыс. долл. фирме GrammaTech на создание коммерческого варианта технологии статистического анализа исходного кода, которая исходно была разработана в подразделении надежного ПО LaRS лаборатории реактивных двигателей НАСА. В 2006 г. её ведущий специалист Герард Хольцманн сформулировал 10 правил создания надежного софта, которые выработались в многолетней практики подготовки лабораторией критически важного ПО. Эти правила, сильно напоминающие классические принципы структурного программирования, придуманные ещё полвека назад, ориентированы на формирование кодировщиком исходного кода, который затем хорошо подвергается автоматическому анализу. Вкратце перечислим правила Хольцмана:

1) код формируется простыми управляющими конструкциями и единым потоком (без операторов перехода);

2) все циклы должны иметь фиксированную верхнюю границу;

3) не допускается динамическое выделение памяти, за исключением команд инициализации нового объекта;

4) любая функция или метод после распечатки должны умещаться на стандартном листе бумаги, при этом для каждого оператора и каждого объявления переменной отводится отдельная строка. Таким образом, размер функции не превысит 50-60 операторов;

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

6) видимость объектов из других модулей должна быть минимизирована;

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

8) использование макропроцессора ограничивается инструкциями подключения внешних файлов и простыми макрорасширениями. Использование инструкций условной компиляции нежелательно;

9) использование указателей максимально ограничивается. В любом случае допускается не более одного уровня ссылок (не разрешены ссылки на ссылки). Указатели на функции запрещены;

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

Автор:  Илья Ермаков [ Понедельник, 18 Февраль, 2008 11:50 ]
Заголовок сообщения:  Re: Правила Хольцмана

Упоминание макропроцессора наводит на мысли о том, что НАСА таки деградировали до Си?
Не припоминаю, чтобы в Ada были макросы.

Автор:  Борис Рюмшин [ Понедельник, 18 Февраль, 2008 11:57 ]
Заголовок сообщения:  Re: Правила Хольцмана

Илья Ермаков писал(а):
Упоминание макропроцессора наводит на мысли о том, что НАСА таки деградировали до Си?
Не припоминаю, чтобы в Ada были макросы.

В НАСА сейчас писуют на всём, что компилируется... :D

Типа: "пьём всё что горит". :mrgreen:

Автор:  Valery Solovey [ Понедельник, 18 Февраль, 2008 12:08 ]
Заголовок сообщения:  Re: Правила Хольцмана

Не обязательно дочитывать до макропроцессора, чтобы это понять:
Цитата:
4) ... при этом для ... каждого объявления переменной отводится отдельная строка...

Автор:  Илья Ермаков [ Понедельник, 18 Февраль, 2008 13:57 ]
Заголовок сообщения:  Re: Правила Хольцмана

Ну всё. Теперь я за американскую космонавтику спокоен. :-)

Автор:  Vlad [ Понедельник, 18 Февраль, 2008 17:52 ]
Заголовок сообщения:  Re: Правила Хольцмана

Интересно, что они там напрограммируют без указателей на функции...

Автор:  batyrmastyr [ Вторник, 19 Февраль, 2008 12:32 ]
Заголовок сообщения:  Re: Правила Хольцмана

Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

Объявят забастовку, в связи с нечеловеческими условиями работы :roll:

Автор:  hothing [ Вторник, 19 Февраль, 2008 13:41 ]
Заголовок сообщения:  Re: Правила Хольцмана

Хм. А ведь получается, что ООП они не любят, в том виде к которому все привыкли. Должна быть модульность, объекты в виде структур данных и связанных с ними функций (не виртуальных). Не более того.

И сразу вспоминатеся "Дракон" о котором говорил Илья Ермаков. Покоже наши таки на два шага опережают (-ли) америкосов. Правда грустно, что бабло победит все :(

Автор:  Сергей Губанов [ Вторник, 19 Февраль, 2008 18:11 ]
Заголовок сообщения:  Re: Правила Хольцмана

Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

Видимо они пишут на С++ и вместо указателей на функции используют виртуальные.

Автор:  Vlad [ Вторник, 19 Февраль, 2008 18:45 ]
Заголовок сообщения:  Re: Правила Хольцмана

Сергей Губанов писал(а):
Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

Видимо они пишут на С++ и вместо указателей на функции используют виртуальные.


Может. Только это менее "надежно и безопасно" по сравнению с обычным сишным указателем на функцию.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/