В программировании применяются два основных метода абстрагирования.
Параметризация обобщает процесс вычислений для различных наборов данных. Параметрами могут быть не только наборы данных, но также количество значений в них и их типы (для шаблонов функций).
Спецификация позволяет абстрагироваться от процесса вычислений, описанных в теле процедуры. Смысл обращения к данной процедуре становится ясным через анализ спецификации, а не самого тела процедуры.
Для этого необходимо связать с процедурой комментарий, достаточно информативный, чтобы иметь возможность работы с ней без анализа тела процедуры. Обычно указывается пара утверждений.
Пример: double sqrt(x)
Требования: x>0
Действие: возвращает приближенное значение квадратного корня из x.
В C# используется библиотека System.Diagnostics.Contracts для выполнения таких проверок.
В "C++ syntax 2" Г. Саттера после заголовка функции можно указать условия, проверяемые во время выполнения.
vec: std::vector<int> = ();
insert_at: (where: int, val: int)
pre( 0 <= where && where <= vec.size() )
post( vec.size() == vec.size()$ + 1 )
= {
vec.push_back(val);
}