Недокументированная функция — это непреднамеренная или недокументированная операция оборудования, например, недокументированная инструкция или функция программного обеспечения , обнаруженная в компьютерном оборудовании и программном обеспечении , которая считается полезной или выгодной. Иногда документация опускается по недосмотру, но недокументированные функции иногда не предназначены для использования конечными пользователями , но оставлены поставщиком для использования в целях поддержки и разработки программного обеспечения. Кроме того, некоторая непреднамеренная операция оборудования или программного обеспечения, которая в конечном итоге оказывается полезной для пользователей, является просто ошибкой , недостатком или странностью.
Поскольку поставщики программного обеспечения обычно рассматривают документацию к программному обеспечению как договор о поведении программного обеспечения, недокументированные функции, как правило, остаются неподдерживаемыми и могут быть удалены или изменены по желанию и без уведомления пользователей.
Недокументированные или неподдерживаемые функции иногда также называют «не поддерживаемыми производителем» (NOMAS), термин, введенный журналом PPC Journal в начале 1980-х годов. [1] [2] [3] [4] Некоторые дефекты, о которых сообщают пользователи, рассматриваются разработчиками программного обеспечения как работающие так, как и ожидалось, что привело к появлению крылатой фразы « это не ошибка, это функция » (INABIAF) и ее вариаций. [5]
Недокументированные инструкции, известные как незаконные коды операций , на MOS Technology 6502 и его вариантах иногда используются программистами. Они были удалены в WDC 65C02 .
Программисты видеоигр и демосцены воспользовались непреднамеренной работой компьютерного оборудования для создания новых эффектов или оптимизаций. [ необходима цитата ]
В 2019 году исследователи обнаружили, что режим отладки производителя, известный как VISA, имел недокументированную функцию на Intel Platform Controller Hubs (PCH), чипсетах, входящих в состав большинства материнских плат на базе Intel, что делало этот режим доступным с помощью обычной материнской платы. [6] Поскольку чипсет имеет прямой доступ к памяти, это проблематично по соображениям безопасности.
Недокументированные функции (например, возможность изменить символ переключения в MS-DOS , обычно на дефис ) могут быть включены в целях совместимости (в данном случае с утилитами Unix ) или в целях будущего расширения. Однако, если поставщик программного обеспечения меняет свою стратегию программного обеспечения, чтобы лучше соответствовать бизнесу, отсутствие документации упрощает оправдание удаления функции.
В новых версиях программного обеспечения старые (возможно, замененные) функции могут не упоминаться в документации, но при этом они должны быть реализованы для пользователей, которые к ним привыкли. [7]
В некоторых случаях программные ошибки упоминаются разработчиками либо в шутку, либо для удобства как недокументированные функции. [5] [8] Такое использование могло быть популяризировано в некоторых ответах Microsoft на сообщения об ошибках для ее первого продукта Word для Windows , [9] но не берет свое начало там. Самое старое сохранившееся упоминание в Usenet датируется 5 марта 1984 года . [10] Между 1969 и 1972 годами Сэнди Мэтес, системный программист программного обеспечения PDP-8 в Digital Equipment Corporation (DEC) в Мейнарде, штат Массачусетс, использовала термины «ошибка» и «функция» в своих отчетах о результатах испытаний, чтобы различать недокументированные действия поставляемых программных продуктов, которые были неприемлемыми и терпимыми соответственно. Такое использование могло быть увековечено. [11]
Недокументированные функции сами по себе стали важной особенностью компьютерных игр . Разработчики часто включают различные читы и другие специальные функции (« пасхальные яйца »), которые не объясняются в упакованном материале, но стали частью «шумихи» об игре в Интернете и среди геймеров. Недокументированные функции иностранных игр часто являются элементами, которые не были локализованы с их родного языка.
API с закрытым исходным кодом также могут иметь недокументированные функции, которые не являются общеизвестными. Иногда они используются для получения коммерческого преимущества над сторонним программным обеспечением путем предоставления дополнительной информации или лучшей производительности поставщику приложения.
Информация, содержащаяся в этом документе, предоставляется с пониманием того, что она не поддерживается Hewlett-Packard . […] Когда вы читаете этот документ, вы быстро заметите, что нет никаких усилий, чтобы объяснить не членам команды разработчиков, как или что происходит. Во время [разработки] не было никаких планов делать это. Хотя этот документ может вызвать больше вопросов, чем ответов, эту ситуацию следует принять « как есть ». См. заявление NOMAS, отмеченное ниже. Этот материал предоставляется сообществу пользователей через PPC, поскольку мы считаем, что информация в такой форме лучше, чем вообще ничего. PPC предлагает эту информацию в качестве услуги для сообщества. […] NOMAS — НЕ поддерживается производителем — получатель соглашается НЕ связываться с производителем […](710 страниц)
NOMAS Listings -
PPC
выбрала листинги системы
HP-41
, связанных
ПЗУ
(
HP-IL
, […] и т. д.) и листинги системы
HP-75
, доступные на условиях НЕподдерживаемых производителем. Эти листинги были предоставлены сообществу пользователей с пониманием того, что те, кто получает листинги, не связываются с производителем по поводу них.