Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/l/GlassRob/03f48.shtml

ФАКТ 48

Факт 48
       Есть такие ошибки, к которым предрасположено большинство программистов.

Обсуждение
       Наверное, никого не должно удивлять, что какие-то ошибки в программных продуктах встречаются чаще, чем другие. Всякий, кто когда-либо принимал участие в инспекции исходного кода, наверное, помнит, как кто-то из проверяющих приговаривал: "Так-так, опять одна из этих пресловутых ошибок". Дело в том, что человек подвержен совершению ошибок определенного рода. Индексирование с ошибкой на единицу (off-by-one). Ссылка на переменную, предшествующая ее определению. Пропуск тонких деталей проектирования. Отсутствие инициализации совместно используемых переменных. Отсутствие важного условия в списке условий.
       Странно, но не многие исследователи удостоили этот предмет своим вниманием. Помимо собственного опыта, для меня источником явилась работа исследователя из Германии, опубликованная в материалах малоизвестной конференции в Бременхафене [Gramms, 1987]. Он назвал эти ошибки "систематическими" и сказал, что они проистекают из "ловушек мышления". Это не совсем понятно, поскольку можно ожидать, что эти ошибки попадут в число тех, на которых будут сосредоточены методы устранения ошибок Например, они могли бы быть внесены в контрольные списки инспекций. Можно было бы создать инструментальные средства, изолирующие и идентифицирующие эти ошибки. Можно было бы непосредственно организовать теста так, чтобы перехватывать их. Исследователи могли бы изучить дополнительные способы их обнаружения и предотвращения.
       У систематических, или общих, ошибок есть и еще одна грань. Среди понятий отказоустойчивого программирования (так называют создание программ, пытающихся перехватывать собственные ошибки, когда они случаются) есть так называемое N-вариаитное программирование. В основе последнего лежит предположение, что в N различных решениях задачи, выполненных N различными командами программистов, вряд ли будут повторяться одни и те же ошибки. Если они будут работать совместно друг с другом, то можно будет идентифицировать и отбросить как ошибочный любой результат, получаемый по одному из вариантов, если он не совпадет с результатами, полученными по остальным. Но гипотеза о систематических ошибках предполагает, что более чем в одном из N вариантов решения есть одна и та же ошибка, что снижает силу N-вариантного подхода. (И это серьезное препятствие в тех областях, где критически важные задачи должны иметь сверхнадежные решения, например в системах, обеспечивающих воздушное и железнодорожное сообщение.)

Полемика
       Феномен, описанный в этом факте, способен удивить не многих, имеющих отношение к индустрии ПО, но он не получил широкого признания и поэтому не может вызвать какую бы то ни было полемику.

Источник
       Я знаю только конференцию, которую проводило Германское компьютерное общество (German Computing Society), и которая упомянута в разделе "Ссылки". А вот моя работа, куда я включил некоторые из находок Граммза (Gramms):
       — Glass, Robert L. 1991. "Some Thoughts on Software Errors". In Software Conflict. Englewood Cliffs, NJ: Yourdon Press. Перепечатано с заметок, использованных при подготовке упомянутого выше выступления на конференции Германского компьютерного общества.

Ссылки
       — Gramms, Timm. 1987. В материалах обсуждаются "систематические ошибки" и "ловушки мышления". Заметки группы технических исследований отказоустойчивых вычислительных систем Германского компьютерного общества (German Computing Society Technical Interest Group on Fault-Tolerant Computing Systems, Bremerhaven, West Germany, Dec).


<<< Пред. Оглавление
Glass Robert L.
Начало раздела
След. >>>



<<< Пред. Оглавление
Начало раздела
След. >>>

Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/l/GlassRob/03f48.shtml