Не возвращать null
, но использовать пустую коллекцию :
public IEnumerator<BVHNode<BoundingVolumeClass>> GetEnumerator()
{
return rootNode == null
? Enumerable.Empty<BVHNode<BoundingVolumeClass>>().GetEnumerator()
: rootNode.GetEnumerator();
}
Запустите здесь: http://www.aonix.com/safety_critical_overview.html
Чтение это: http://www.ghs.com/products/safety_critical/index.html
Слушайте это: http://www.podnova.com/channel/388090/episode/7/
Это - хорошо понятая тема. Вооруженные силы создавали критическое по отношению к безопасности программное обеспечение в течение многих лет.
Программное обеспечение никогда не должно выполнять систему, которая могла ранить кого-то. Единственное возможное (и все еще сомнительный) время, это могло бы быть ложью, при использовании безопасности надежный PLC, который специально разработан для безопасности.
Необходимо изучить:
MISRA является стандартом, сопровождаемым в автомобильной промышленности, но это - стандарт кодирования для обеспечения правильности операции и мобильности.
Необходимо читать на несчастных случаях Therac для понимания сложности этой проблемы.
Кроме того, НАСА и военные документы широко доступны и обсуждают стандарты для кодирования, которые позволяют определение безопасности системы.
- Adam
Не saftey стандарт, но читающий comp.risks некоторое время покажет вид проблем, которые необходимо будет упорно работать для предотвращения.
(Книга, "Связанные с компьютером Риски" очень хороши также.)
Различные отрасли промышленности имеют различные стандарты. Самолет и робототехника, например. Стандарты все еще развиваются в некоторых новых отраслях промышленности, таких как хирургические роботы. Все еще существуют некоторые общие элементы. Первым является дублирование. Я работаю с промышленными роботами. Для критических объектов, таких как регулировка скорости, мы используем три различных вычисления на двух различных контроллерах. Для систем аварийной остановки мы используем дуальные схемы, каждая красная кнопка кнопки аварийного отключения имеет два физических коммутатора позади него.
Я раньше работал над самолетом. На автопилотах самолета часто существуют два или даже три отдельных компьютера, делающие вычисления и сравнивающие результаты.
Цель состоит в том, чтобы препятствовать тому, чтобы любой одиночный отказ делал систему небезопасной.
Необходимо посмотреть на правила и нормы, которые управляют областью, в которой Вы работаете видеть, каковы законные требования, но необходимо сделать всю систему безопасной.
Ссылка на Aonix выше хороша для основных рассуждений. Если вам нужны примеры того, как работают определенные стандарты, вы можете найти в Google следующее:
Подходы различаются в зависимости от области. (извините, я оцениваю только 1 ссылку ...)
Авионика: DO-178B: (см. википедию)
Информационная безопасность Общие критерии {{ 1}} (см. Веб-сайт Common Criteria Portal)
FDA контролирует программное обеспечение для медицинских устройств (например, рентгеновские аппараты) http://www.fda.gov/medicaldevices/deviceregulationandguidance/ guidancedocuments / default.htm
Список рассылки по вопросам безопасности (Великобритания) в Университете Йорка в Великобритании является отличным ресурсом Недавно там обсуждалось, как применять SIL стандартов (см. википедию по стандартам SIL) программным системам.