Спецификация метода — это строковое описание структуры его входных и выходных аргументов. Спецификация метода выполняет несколько важных функций: Синтаксис строки описания метода в форме Бэкуса-Наура. Знак ::= обозначает определение элемента, многоточие обозначает повторение элемента любое число раз, необязательные элементы заключаются в квадратные скобки []:

ОписаниеМетода ::= ИмяМетода СписокВходов -> СписокВыходов [; Комментарий]
СписокВходов   ::= Аргумент,...,Аргумент
СписокВыходов  ::= Аргумент,...,Аргумент
Аргумент       ::= [?] [ИмяАргумента=] Координата | ... | Координата
Координата     ::= ИмяРазмерности
Координата     ::= {ИмяЭлемента,...,[?]ИмяЭлемента,...,ИмяЭлемента}

Имя метода — это произвольный идентификатор, не содержащий пробелов.

Списки входных и выходных аргументов могут состоять из любого числа элементов, в том числе они могут быть пустыми. Разделитель -> опускать нельзя.

Если описание аргумента начинается знаком вопроса, то аргумент может быть опущен. При реализации функций вычисления CalcDef и CalcCellDef следует учитывать, что в этом случае аргумент метода представляется нулевым указателем на ImaMatrix.

Далее в описании аргумента может следовать имя и знак равенства. Если они не указаны, то имя аргумента по умолчанию совпадает с описанием аргумента, и может содержать спецсимволы { , } |.

Каждый аргумент описывается перечислением координат многомерной матрицы. Число координат равно размерности матрицы. Символ вертикальной черты служит разделителем координат. Координата может описываться двумя способами: идентификатором или списком элементов.

Если координата матрицы задана идентификатором, то размер матрицы по данной координате может быть любым. Однако если в описании какой-либо матрицы в любом из методов данного алгоритма встречается координата с таким же именем, то размеры матриц по соответствующим координатам обязаны совпадать.

Если размерность задана списком идентификаторов в фигурных скобках, то размер матрицы по данной координате должен быть равен числу элементов в списке. Если в списке есть элемент, перед которым стоит символ вопроса ?, то этот элемент и все последующие за ним необязательны. В этом случае размер матрицы может варьироваться в пределах от числа обязательных элементов до полного числа элементов в списке.

Строка описания может содержать концевой комментарий, отделяемый от неё символом точки с запятой. Комментарий может иметь произвольную длину и содержать произвольные символы, включая табуляции и переводы строки. С помощью комментария разработчик метода может включить в исходный код краткие пояснения к некоторым элементам описания.

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

HRESULT CLsmTune:: Description (maString* descr) {
  *descr = "Tune St|F, St|{goal} ->;\n"
    "St - обучающая выборка;\n"
    "F - набор признаков;\n"
    "goal - целевой признак.\n");
   return S_OK;
}

HRESULT CLsmCalc::Description (maString* descr) {
  *descr = "Calc Sc|F -> Sc|{y};\n"
    "Sc - рабочая выборка;\n"
    "F - набор признаков;\n"
    "y - результат аппроксимации.\n");
  return S_OK;
}
Здесь описаны два метода алгоритма наименьших квадратом LSM. Метод настройки CLsmTune имеет два обязательных входных аргумента размером St×F и St×1 и ни одного выходного. Метод вычисления CLsmСalc имеет входную матрицу размером Sc×F и выходной вектор размером Sc×1.