Читая Рамбо и Блаха "UML 2.0 Объектно-ориентировнное моделирование и разработка" и составляя лекции студентам по объектно-ориентированному анализу, столкнулся с проблемой терминологического характера.
Авторы (использую только русский перевод) выделяют две стадии этапа анализа: анализ предметной области и анализ приложения.
Насчет анализа приложения Денис-Майевтик как-то высказался в том смысле, что не понятно, как можно анализировать то, чего нет.
Внимательное прочтение трудов великих авторов дает пояснение этому вопросу.
Приведу полную цитату стр. 204
Этап анализа делится на две стадии. Сначала осуществляется анализ предметной области, а затем — анализ приложения. Анализ предметной области применяется к объектам реального мира, семантику которых охватывает приложение. Например, рейс самолета — это объект реального мира, который должна отражать система бронирования билетов. Объекты предметной области существуют независимо от приложений и имеют смысл для бизнес-экспертов. Эти объекты выявляются во время анализа предметной области или исходя из априорных соображений. Объекты предметной области в модели несут информацию об объектах реального мира и обычно являются пассивными. Анализ предметной области выделяет понятия и отношения, а функциональность при этом неявным образом содержится в модели классов. Конструирование модели предметной области сводится, главным образом, к принятию решений о том, какую информацию следует отразить в модели и как ее нужно представить.
За анализом предметной области следует анализ приложения, который относится к компьютерным аспектам приложения, видимым пользователям. Например, меню бронирования билета является частью системы бронирования авиабилетов. Объекты приложения существуют не в предметной области. Они имеют смысл только в контексте приложения. Однако эти объекты не являются чем-то внутренним по отношению к проекту, потому что их видят пользователи. Объекты приложения должны полностью удовлетворять пользователей. Модель приложения не предписывает конкретной реализации системы. Она описывает внешний вид приложения, которое воспринимается как черный ящик. Классы приложения нельзя определить на этапе анализа, но их часто можно взять из предыдущих приложений. В противном случае объекты приложения приходится придумывать на этапе анализа, как часть интерфейса с другими системами и с пользователями.
Из нее я делаю вывод, что анализ приложения есть суть анализа входов выходов системы, при рассмотрении ее как черного ящика. Т.е. мы по сути анализируем возможные интерфейсы системы к другим системам и интерфейсы, видимые пользователям при выполнении ими своих функциональных задач. Если вспомнить Лармана, то это очень похоже на системные диаграммы последовательностей (по сути), которые предназначены для выявления системных событий и операций и определения интерфейсов к системе.
При этом, если слово "
приложение" заменить на "
система", то получим
анализ системы или
системный анализ.
Последнее словосочетание не слишком однозначно для русского и несет особую историческо-философскую нагрузку.
Цель этап анализа является построение аналитической модели и уточнение и утверждение требований к системе.
Может не имеет смысла делить этап анализа на анализ предметной области и анализ приложения (системы)?
Кто тогда видит это иначе и может предложить для обсуждения?