Введение
Руководство по проектированию программного обеспечения. В информатике принцип устойчивости — это руководство по проектированию программного обеспечения, которое гласит: "будьте консервативны в своих действиях, будьте снисходительны к тому, что получаете от других". Его часто перефразируют как: "будьте консервативны в отправляемых данных, будьте снисходительны в принимаемых данных". Принцип также известен как закон Постеля, по имени Джона Постеля, который использовал эту формулировку в ранней спецификации TCP. Иными словами, программы, отправляющие сообщения другим машинам (или другим программам на той же машине), должны строго соответствовать спецификациям, а программы, принимающие сообщения, должны принимать некорректные входные данные, если их смысл понятен. Среди программистов, для создания совместимых функций, принцип также известен в форме: быть контравариантным по входному типу и ковариантным по выходному типу.
In computing, the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It is often reworded as: "be conservative in what you send, be liberal in what you accept". The principle is also known as Postel's law, after Jon Postel, who used the wording in an early specification of TCP. In other words, programs that send messages to other machines (or to other programs on the same machine) should conform completely to the specifications, but programs that receive messages should accept non conformant input as long as the meaning is clear. Among programmers, to produce compatible functions, the principle is also known in the form: be contravariant in the input type and covariant in the output type.
Интерпретация
RFC 1122 (1989) развил принцип Постела, рекомендовав программистам "исходить из того, что сеть наполнена злонамеренными сущностями, которые будут отправлять пакеты, разработанные для достижения наихудшего возможного эффекта". Протоколы должны предусматривать возможность добавления новых кодов для существующих полей в будущих версиях протоколов, принимая сообщения с неизвестными кодами (с возможной регистрацией таких сообщений). Программисты должны избегать отправки сообщений, использующих "легальные, но малоизвестные возможности протокола", которые могут выявить уязвимости в приемниках, и разрабатывать свой код "не только для устойчивости к некорректно работающим узлам, но и для сотрудничества в целях ограничения ущерба, который такие узлы могут нанести общему каналу связи".