Недокументированная функция — это непреднамеренная или недокументированная операция с оборудованием, например, недокументированная инструкция или функция программного обеспечения , обнаруженная в компьютерном оборудовании и программном обеспечении , которая считается полезной или полезной. Иногда документация опускается по недосмотру, но недокументированные функции иногда не предназначены для использования конечными пользователями , а остаются доступными для использования поставщиком для поддержки и разработки программного обеспечения. Кроме того, некоторая непреднамеренная работа аппаратного или программного обеспечения, которая в конечном итоге приносит пользу пользователям, является просто ошибкой , недостатком или причудой.
Поскольку поставщики программного обеспечения обычно считают, что документация по программному обеспечению представляет собой договор о поведении программного обеспечения, недокументированные функции обычно остаются неподдерживаемыми и могут быть удалены или изменены по желанию и без уведомления пользователей.
Недокументированные или неподдерживаемые функции иногда также называют «не поддерживаемыми производителем» (NOMAS) — термин, придуманный PPC Journal в начале 1980-х годов. [1] [2] [3] [4] Некоторые дефекты, о которых сообщают пользователи, рассматриваются разработчиками программного обеспечения как работающие должным образом, что приводит к появлению крылатой фразы « это не ошибка, это особенность » (INABIAF) и ее вариаций. [5]
Недокументированные инструкции, известные как незаконные коды операций , в MOS Technology 6502 и ее вариантах иногда используются программистами. Они были удалены в WDC 65C02 .
Программисты видеоигр и демосцены для Amiga воспользовались непреднамеренной работой ее сопроцессоров для создания новых эффектов или оптимизации. [ нужна цитата ]
В 2019 году исследователи обнаружили, что режим отладки производителя, известный как VISA, имеет недокументированную функцию в концентраторах контроллеров платформы Intel (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 —
компания PPC
выбрала списки системы
HP-41
, связанных с ним
ПЗУ
(
HP-IL
, […] и т. д.) и списки систем
HP-75
, доступные на условиях, НЕ ПОДДЕРЖИВАЕМЫХ ПРОИЗВОДИТЕЛЕМ. Эти списки были доступны сообществу пользователей при том понимании, что получатели списков не будут связываться с производителем по поводу них.