- PVSM.RU - https://www.pvsm.ru -
Основная задача бизнес-аналитика при разработке нового ПО – изучение предметной области и формальное описание полученных сведений в виде модели (Domain Model). Аналитик должен петь то, что он видит и то, что он хочет увидеть. Для этого у него должен быть язык, на котором он исполнит свою песню. Однако, аналитик не всегда знаком с подходящим языком, и потому часто пользуется другими языками. Отчасти это происходит по причине того, что управление проектом ведется не с точки зрения предметной области, а с точки зрения реализации. И тогда с аналитиком может произойти несчастье: он может перестать видеть то, что надо петь и начать видеть лишь то, для чего есть слова в словарном запасе используемого им языка. Все остальное перестает для него существовать. Тогда, вместо того, чтобы петь, что он видит, аналитик начинает видеть то, что поет. Должен сразу заметить, я не против языков, я против сужения области анализа, которое возникает по причине недостаточности этих языков.

Для изучения и описания предметной области аналитик должен знать:
Поскольку, для записи результатов у аналитика не всегда есть возможность использовать ФМ, то аналитик должен знать еще и это:
Следствие:
Принято считать, что языки UML, а также ER –модели можно использовать для моделирования предметных областей без ограничений. Поэтому аналитики пытаются моделировать предметную область в UML, или ER даже тогда, когда ограничения, накладываемые языком моделирования, не позволяют сделать это корректно.
Для тех же аналитиков, которые понимают озвученную проблему, Святым Граалем стал бы инструмент, позволяющий одновременно моделировать и предметную область и реализацию в программном коде. Поэтому ученые продолжают двигаться по кругу, создавая новые онтологические стандарты, и, одновременно, создавая языки программирования, которые поддерживали бы эти онтологии. Но пока еще разрыв велик.
В Европе первым, кто попытался дать ответ на вопрос о том, как мы структурируем результаты нашего
Если вы видите пустую таблицу, значит перед вами тип и его описание, видите заполненную таблицу, то, помимо типа и его описания, — описание конкретных экземпляров этого типа. Такая картина приведена в начале статьи.
Также мы встречаем такие таблицы:

Что изображено на этой таблице? Ответ на вопрос можно дать двумя способами. И оба будут верны. Я дам вам самим подумать над вопросом: что моделирует эта таблица? И что значат данные в этой таблице?
В итоге Аристотель подарил нам термины: тип объектов и экземпляр типа объектов. Как только вы слышите термин экземпляр, значит, речь идет о типах. Например, пусть есть высказывание: «я держу экземпляр книги «Три мушкетера». Оно интерпретируется следующим образом: есть тип книг «Три мушкетера», и есть конкретный экземпляр этого типа объектов – конкретная книга. Данное высказывание может быть сокращено до: «Я держу книгу «Три мушкетера». Это высказывание может интерпретироваться уже двумя способами:
В представлении Аристотеля мы работаем только в интенсиональном контексте, где все объекты имеют определенные свойства. Данный класс представлений зафиксирован в онтологическом стандарте MOF [2]. На этом стандарте строится и ER-модели, и ООП. Вопрос: действительно ли данный метод типизации объектов дает нам представление о том, как мы мыслим и о том, как структурируем свои знания? Для того чтобы разобраться так ли это, нам понадобится провести эксперимент.
Пусть есть группа сотрудников лаборатории экспериментальной физики, и серия экспериментов, которые проводят сотрудники лаборатории. Зададимся вопросом: как смоделировать в терминах Аристотелевской логики эту предметную область? Первое, что приходит на ум, — это у каждого сотрудника завести признак «Эксперимент», дата начала и дата конца, в которых будет прописано, с какое время по какое и в каком эксперименте занят сотрудник. То есть, в логике Аристотеля эксперимент стал бы признаком сотрудника. Это значит, что на вопрос «Это какой сотрудник?» можно ответить: «Занятый в эксперименте».

Ровно до тех пор, пока сотрудник не станет работать над двумя экспериментами сразу. Тогда мы не сможем завести параметр «Эксперимент», потому что отношения между сотрудниками и экспериментами сразу становятся многие ко многим.
Моделировать эту связь в терминах признаков уже не удается. Придется создавать новый тип сущности «Связь», который хранит ссылку на сотрудника и на эксперимент, но сам по себе ничего не значит. Таких объектов просто нет в природе!

Кроме того, мы получили некий скачок в модели. До некоторого момента мы обходились двумя типами сущностей, но в момент, когда оказалось, что сотрудники могут работать над несколькими экспериментами сразу, оказалось, что этих сущностей мало. Наш
Возможно, ООП даст нам ответ на вопрос о том, как моделировать мир? Для этого рассмотрим другой пример. Попробуем смоделировать яблони, сорта яблонь и ареалы их произрастания.
Пусть у нас есть яблони и необходимо смоделировать ареал их произрастания. Напомню, что конкретные яблони не могут знать об ареале ничего. Они знают только координаты своего места произрастания. Ареал определяется на классе яблонь и только на классе. Вопрос: какой объект в модели ООП будет хранить значение параметра «Ареал»? ООП позволяет сделать это множеством способов.
Можно создать статическую переменную у класса «Яблони». Что значит эта переменная? Эта переменная создается для объектов данного класса одна на всех. Вопрос: эта переменная класса, или объектов класса? Логически мы можем сделать вывод: если значение переменной доступно объектам класса, то это переменная объектов класса, а не класса объектов! То есть, создание статической переменной не решит задачу создания переменной класса. Таким образом, мы приходим ко второму способу реализации задачи.
Создаем класс «Подклассы яблонь», у которого объявим параметр «Ареал». Объект «Класс яблонь», являющийся объектом класса «Подклассы яблонь», будет содержать значение параметра «Ареал». Добавим у класса «Подклассы яблонь» параметр «Список яблонь». Тогда у объекта «Класс яблонь» появится список ссылок на объекты класса «Яблони». Что мы можем делать теперь, благодаря новой структуре? Мы заведем новый объект класса «Подклассы яблонь» под названием «Грушовка» и свяжем с этим объектом список объектов класса «Яблони», которые нам надо отметить как грушовки. Таким образом, мы сможем спроектировать подкласс яблонь – класс грушовок, а, добавив нужные операции над списками, сможем оперировать классами, а не только объектами классов. Это даст нам возможность изучать пересечения ареалов произрастания разных сортов яблонь, а также их объединение. Что же не так в этом подходе?
Давайте посмотрим, как теория множеств справляется с этими задачами (Продолжение следует).
P.S. Можно подумать, что я против моделирования предметной области в классических нотациях. Нет, я лишь хочу, чтобы мы умели мыслить, умели эти мысли доносить и отражать их в модели корректным способом.
Автор: maxstroy
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/upravlenie-proektami/76657
Ссылки в тексте:
[1] мышления: http://www.braintools.ru
[2] MOF: http://www.omg.org/spec/MOF/2.0/
[3] Источник: http://habrahabr.ru/post/245241/
Нажмите здесь для печати.