OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 17 Июнь, 2025 23:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 11:11 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
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) код с первого дня разработки должен компилироваться без единого предупреждения, при этом уровень выдачи предупреждений устанавливается в максимальный. Необходимо ежедневное использование систем статического анализа, которые также должны отрабатывать без предупреждений и ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 11:50 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Упоминание макропроцессора наводит на мысли о том, что НАСА таки деградировали до Си?
Не припоминаю, чтобы в Ada были макросы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 11:57 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4722
Откуда: Россия, Орёл
Илья Ермаков писал(а):
Упоминание макропроцессора наводит на мысли о том, что НАСА таки деградировали до Си?
Не припоминаю, чтобы в Ada были макросы.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 12:08 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Не обязательно дочитывать до макропроцессора, чтобы это понять:
Цитата:
4) ... при этом для ... каждого объявления переменной отводится отдельная строка...


Последний раз редактировалось Valery Solovey Понедельник, 18 Февраль, 2008 15:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 13:57 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну всё. Теперь я за американскую космонавтику спокоен. :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Понедельник, 18 Февраль, 2008 17:52 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Интересно, что они там напрограммируют без указателей на функции...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Вторник, 19 Февраль, 2008 12:32 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Вторник, 19 Февраль, 2008 13:41 

Зарегистрирован: Среда, 31 Октябрь, 2007 18:58
Сообщения: 252
Откуда: Austria, Bruck
Хм. А ведь получается, что ООП они не любят, в том виде к которому все привыкли. Должна быть модульность, объекты в виде структур данных и связанных с ними функций (не виртуальных). Не более того.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Вторник, 19 Февраль, 2008 18:11 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Правила Хольцмана
СообщениеДобавлено: Вторник, 19 Февраль, 2008 18:45 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
Vlad писал(а):
Интересно, что они там напрограммируют без указателей на функции...

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


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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB