Спецификация метода — это строковое описание структуры его входных и выходных аргументов. Спецификация метода выполняет несколько важных функций:

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

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

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

Имя метода — это произвольный идентификатор, не содержащий пробелов.
Списки входных и выходных аргументов могут состоять из любого числа элементов, в том числе они могут быть пустыми. Разделитель -> опускать нельзя.
Если описание аргумента начинается знаком вопроса, то аргумент может быть опущен. При реализации функций вычисления 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.