Введение

Метод Шлеера-Меллора, также известный как объектно-ориентированный анализ систем (OOSA) или объектно-ориентированный анализ (OOA), — это объектно-ориентированная методология разработки программного обеспечения, представленная Салли Шлеер и Стивеном Меллором в 1988 году. Этот метод обеспечивает такую точность документированного анализа, что модель анализа можно непосредственно реализовать путем преобразования в целевую архитектуру, а не путем детализации изменений модели через ряд моделей, более специфичных для конкретной платформы. В новом тысячелетии метод Шлеера-Меллора был адаптирован к нотации UML и стал Executable UML.

Перевод и разработка

Цель метода Шлаера-Меллора состоит в том, чтобы сделать документированный анализ настолько точным, что можно будет реализовать модель анализа непосредственно путем трансляции, а не проработки. В терминологии Шлаера-Меллора это называется рекурсивным проектированием. В современной (2011) терминологии мы бы сказали, что метод Шлаера-Меллора использует форму архитектуры, управляемой моделью (MDA), обычно ассоциируемую с унифицированным языком моделирования (UML). Используя этот транслятивный подход, реализация всегда генерируется (вручную или, как правило, автоматически) непосредственно из анализа. Это не означает, что в методе Шлаера-Меллора отсутствует проектирование, скорее, предполагается наличие виртуальной машины, способной выполнять любую модель анализа Шлаера-Меллора для любой конкретной комбинации аппаратных и программных платформ. Это концептуально схоже с виртуальными машинами, лежащими в основе языков программирования Java и Ada, но существующими на уровне анализа, а не на уровне программирования. После проектирования и реализации такую виртуальную машину можно повторно использовать в широком спектре приложений. Виртуальные машины Шлаера-Меллора доступны в коммерческом доступе у ряда поставщиков инструментов, в частности Abstract Solutions, Mentor Graphics и Pathfinder Solutions.

Семантическое разложение

Шлейер–Меллор предлагает семантическое разложение в различных (проблемных) областях. Разделение между моделями анализа и проектирования: область анализа точно определяет, что система должна делать, а область проектирования – это модель работы виртуальной машины Шлейер–Меллор на конкретной аппаратной и программной платформе. Эти модели не пересекаются, единственная связь между ними – нотация, используемая для их представления. Разложение внутри области анализа, где системные требования моделируются и группируются вокруг отдельных, не пересекающихся предметных областей. Вернемся к примеру с пассажирским поездом: можно создать отдельные семантические модели для дверных приводов, управления двигателем и тормозных систем. Каждая группировка рассматривается и моделируется независимо. Единственная определенная связь между группировками – это зависимости, например, приложение для пассажирского поезда может зависеть как от управления дверями, так и от управления двигателем. Тормозные системы могут зависеть от управления двигателем. Модели дверных приводов, управления двигателем и тормозных систем обычно рассматриваются как универсальные, многократно используемые сервисные области, в то время как область управления пассажирским поездом, скорее всего, будет очень специфичной для конкретного продукта. Конкретная система состоит из областей и определенных связей между ними. Связь описывается в терминах предположений, которые делает область, выступающая в роли клиента, при взаимодействии с областью, выступающей в роли сервера.

Точный язык действия

Одним из требований к автоматизированному генерированию кода является точное моделирование действий внутри конечных автоматов, используемых для описания динамического поведения объектов Шлаер-Меллор. Шлаер-Меллор уникален среди методов объектно-ориентированного анализа тем, что представляет такое последовательное поведение графически в виде диаграмм потоков данных действий (ADFD). На практике инструменты, поддерживавшие Шлаер-Меллор, предоставляли точный язык действий. Языки действий вытеснили подход ADFD, поэтому все действия записываются в текстовой форме.

Испытания и моделирование

Транслятивный подход метода Шлаер-Меллора хорошо подходит для автоматизированных сред тестирования и моделирования (путем переключения целевой платформы в процессе генерации кода), и это может частично объяснять популярность Шлаер-Меллора и других методов, основанных на MDA, при разработке встраиваемых систем, где тестирование на целевых системах, таких как мобильные телефоны или системы управления двигателем, особенно затруднено. Полезность и эффективность такого тестирования обеспечиваются концепцией виртуальной машины Шлаер-Меллора. Как и большинство методов OOA/OOD, Шлаер-Меллор представляет собой среду, управляемую событиями и основанную на передаче сообщений. В рамках этого общего подхода виртуальная машина Шлаер-Меллора требует наличия механизма приоритезации событий, основанного на моделях состояний, что позволяет параллельно выполнять действия в различных конечных автоматах. Поскольку любая реализация Шлаер-Меллора требует полной поддержки данной модели, тестирование в среде моделирования может быть очень близким к тестированию на целевой платформе. Хотя тестирование функциональности, сильно зависящей от временных ограничений, может быть сложным, большая часть поведения системы отличается высокой предсказуемостью благодаря приоритетной модели выполнения.

Критика

Никогда не существовало единого, общепринятого текстового языка для описания действий в сообществе Шлеера–Меллора. Разработчики инструментов определяли собственные языки действий, защищенные авторским правом и находящиеся под контролем. Грэм (1994) описал метод Шлеера–Меллора как ранний пример объектно-ориентированного анализа, который, строго говоря, нельзя считать объектно-ориентированным. По мнению Грэма, методу не хватает "понятия наследования. Как указано в их книге, он представлял собой не более чем объектно-ориентированное расширение моделирования данных". В согласии с этим замечанием, Капрец (1996) утверждает, что метод Шлеера–Меллора "не охватывает подавляющее большинство объектно-ориентированных концепций и предписывает использование обычной графической нотации", которая в основном заимствована "из диаграмм «сущность-связь» и диаграмм потоков данных, встречающихся в других структурированных методологиях".