Среди таких методов следует отметить разработку Мичиганского университета ISDOS, в состав которой входят две базовые составляющие:
1) язык описания задач PSL, предназначенный для отображения функциональных требований и требований к ресурсам. Этот язык содержит набор средств объявлений, позволяющих пользователю определять объекты системы, их свойства, а также соединять объекты посредством взаимосвязи;
2) анализатор определения задач PSA, представляющий собой процессор, с помощью которого осуществляется испытание предложений, написанных на языке PSL. Анализатор генерирует базу данных, отображающую системные требования, и осуществляет проверку последовательности и анализ полноты данных. Он также поддерживает ряд выходных документов, содержащих сведения о выборке данных, а также об ошибках, объектах, имеющихся в базе данных, взаимосвязи между ними.
Язык PSL имеет простой синтаксис и ориентирован на использование ключевых слов. Основными операторами этого языка являются:
PROCESS <имя>
<имя> определяется как новый процесс;
DESCRIPTION <текст>
<текст> представляет описание функции, реализуемой процессом, средствами английского языка;
SUBPARTS ARE <имя>
процесс <имя> связан с текущим процессом и расположен ниже его на дереве иерархии;
PART OF <имя>
процесс <имя> вызывает текущий процесс;
DERIVE <файл>
файл <файл> является выходным для текущего процесса;
USING <файл>
файл <файл> является входным для текущего процесса;
PROCEDURE <текст>
<текст> представляет описание на языке PDL алгоритма, реализуемого процессом.
Пример: если процесс Y содержит предложение PART OF X; то процесс X должен включать предложение SUBPARTS ARE Y;.
Система PSL/PSA обладает следующими характеристиками:
1) позволяет пользователю получить формализованное представление проблемы;
2) осуществляет документирование системных требований в единообразной форме;
3) способствует выявлению условий возникновения некоторых видов ошибок, обусловленных, в первую очередь, неполнотой информации и нарушением последовательности ее ввода.
Третья составляющая часть ISDOS — язык проектирования программ PDL. Язык включает две категории структур. Имеется внешний синтаксис, построенный на основных типах операторов (if-then-else, sequence и др.). Внешний синтаксис предназначен для соединения отдельных компонент в программы. Кроме того, существует внутренний синтаксис, соответствующий конкретному применению. Внутренний синтаксис выражается предложениями на естественном языке, которые раскрываются последовательно, пока алгоритм не окажется описанным компонентами внешнего синтаксиса.
Пример:
Max: procedure (list);
/* Поиск наибольшего элемента в списке */
declare (maxmin, next) целое;
declare list последовательность целых чисел;
maxmin = первый элемент list;
do while (имеются элементы в list)
next = следующий элемент в list;
maxmin = наибольший из next и maxmin;
end;
return (maxmin);
end Max;
Естественно, что рассматриваемая система не лишена недостатков. В первую очередь, это тот факт, что для многих спецификаций она излишне универсальна. Однако, учитывая, что эта система автоматизирована, выполняет достаточно большой объем документирования разработок, ее применение оправдано.
Тем не менее на этапе проектирования используется ряд других подходов, некоторые из которых мы рассмотрим.