Как практика моделирования предметной области может извлечь выгоду из метафизических идей?

В разработке программного обеспечения существует деятельность, называемая моделированием предметной области , с помощью которой разработчик создает представление предметной области, используя некоторый язык (в конечном счете, язык программирования). При моделировании конкретной области разработчикам приходится принимать, так сказать, некоторые «метафизические решения»*. В частности, необходимо решить:

  1. Должно ли определенное «существо» в домене быть представлено как сущность или как значение . Грубо говоря, сущность — это объект, который существует сам по себе, имеет идентичность и нить непрерывности во времени. Значение содержит атрибуты, но не имеет концептуальной идентичности. Это различие отражает различие между сущностью и акциденцией , соответственно, на аристотелевском жаргоне.

  2. Как представить течение времени для сущности (см. пункт 1): либо как серию изменений состояния, через которые проходит эфемерная сущность; или как ряд неизменяемых состояний, расположенных в последовательности. В последнем случае каждое из этих состояний существует вечно, связанное с моментом времени в жизни этой сущности.

Я не знаю ни одной философской работы, специально посвященной применению метафизических идей к моделированию программной области. В лучшем случае, насколько мне известно, пункт 1 был рассмотрен Эриком Эвансом , но лишь с небольшой ссылкой на метафизику; а пункт 2 был кратко упомянут Ричем Хики в связи с книгой Уайтхеда « Процесс и реальность ».

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

* Конечно, есть и другие проблемы, связанные с моделированием предметной области, более технического характера, которые нас здесь не касаются.

Ответы (2)

Я вижу две основные области, в которых моделирование предметной области может извлечь выгоду из метафизики.

Одним из них является работа, проводимая в фундаментальных онтологиях такими авторами, как Гиззарди и Вагнер. [Я знаю, что слово онтология здесь имеет другое значение, чем в философии; это печально]. Их работа над НЛО, например, подчеркивает, что такие конструкции, как сорталии, жесткие и нежесткие типы, моментные и вещественные индивиды и т. д., должны быть частью основ концептуального моделирования. Основные языки моделирования, такие как UML, используют конструкцию класса в качестве центрального строительного блока, и почти все, что вы добавляете в свою модель, является классом, потому что оно должно быть классом. Следовательно, фазы, роли и другие небазовые типы моделируются (часто плохо) как классы. Язык моделирования, основанный на иерархии основных типов НЛО, возможно, предложил бы более богатую палитру, из которой можно было бы выбирать, чтобы модели были более точными. Другие работы, такие как работы Партриджа , также подчеркивают, что онтологический выбор, такой как пердурантизм или эндюрантизм, имеет отношение к концептуальному моделированию.

Вторая область полезности заключается в улучшении способов моделирования за счет повышения осведомленности разработчиков моделей о метафизических проблемах. Мы с коллегами взяли это за основу и включили в различные направления работы. Например, мы с моими коллегами только что приняли на конференции ER 2013 доклад под названием «Являются ли концептуальные модели концептуальными моделями?», в котором мы обсуждаем, являются ли «концепты» в концептуальных моделях на самом деле зависимыми от разума представлениями, способностями (см. Dummet), или независимые от разума чувства Фреге. В зависимости от того, какие концепции используются в моделях или какими мы хотим их видеть, такие задачи, как проверка достоверности модели, возможно, придется пересмотреть.

Я могу привести вам еще один пример того, как метафизика (с помощью эпистемологии) помогла улучшить моделирование предметной области, повысив осведомленность разработчиков моделей об этих проблемах. В языке моделирования ConML (который мы совместно создали) существует особая семантика null/unknown, которая выходит за рамки обычной семантики null, встречающейся в большинстве языков моделирования, таких как UML: ключевое слово null ConML обозначает отсутствие информации, тогда как неизвестное ключевое слово обозначает наличие информации, но отсутствие знания о ней. Таким образом, p.Age , где p имеет тип Person , никогда не может быть нулевым ., поскольку это факт (ну, я не ожидаю, что кто-то будет его оспаривать), что у каждого человека есть возраст, независимо от того, знаем мы его или нет. Но p.Spouse может быть нулевым, поскольку у многих людей нет супруга. Разработчики моделей, использующие UML, например, склонны использовать null для обозначения либо отсутствия информации, либо отсутствия знаний об этом; введение этого онтологического и эпистемического различия в ConML через два отдельных ключевых слова делает модели более выразительными.

Большой! Это был именно тот ответ, который я искал. Я займу некоторое время, чтобы просмотреть ссылки, которые вы привели. Большое спасибо.
Пожалуйста. Дайте мне знать, если вам нужны дополнительные сведения или источники. Я буду рад обсудить.

Я думаю, что принятие метафизической терминологии сообществом моделирования предметной области является неудачным и приводит к путанице — наиболее заметным примером является злоупотребление термином «онтология».

Эта чрезмерная буквализация, конечно, не ограничивается злоупотреблением метафизикой — более общая проблема заключается в слишком серьезном отношении к метафорам. Например, в сообществе объектно-ориентированных разработчиков также существует известная путаница между «объектами» и физическими объектами. «Объект» в программной системе представляет собой контейнер для некоторого состояния системы (известного как «свойства») в сочетании с набором предопределенных действий, которые могут изменить это состояние (известных как «методы».) К сожалению, многие начинающие разработчики моделей начинают с создания объектной модели на основе физических объектов, что редко бывает оптимальным.

Решения, которые приходится принимать разработчику программного обеспечения, не имеют абсолютно никакого метафизического значения, и Аристотель или Уайтхед не могут предложить ничего полезного. Что лучше моделировать как Сущность или Значение — это прагматичное решение, основанное на том, как человек хочет отслеживать его поведение во времени, и не имеет ничего общего с аристотелевскими категориями или модальностями.

Короче говоря, это вовсе не философские вопросы, а чисто практические. Используйте любую модель, которая создаст более чистый код, и помните, что метафоры только в этом: не путайте карту с территорией.

Отличный ответ и +1. Я мог бы смягчить позицию, которую вы придерживаетесь в отношении потенциального метафизического значения программного обеспечения; в частности, я хотел бы задаться вопросом, с одной стороны, может ли код быть (или может стать) литературой, может ли он когда-нибудь потенциально «постичь» письмо, возможно, так же, как Деррида предполагает, что письмо в определенный момент пришло к пониманию языка; а с другой стороны, у меня были бы опасения по поводу интеграции частного и развернутого программного обеспечения в нашу повседневную жизнь, того, как критические части социального воспроизводства и коммуникации стали приватизированными.
Одна возможная связь — это связь между идеалами Платона и концепцией классов и объектов. Объекты — это одна отдельная версия класса с идентификатором.
-1 Хотя я полностью согласен с вами в отношении неудачного использования метафизической терминологии сообществом моделирования предметной области, я не согласен с остальной частью вашего ответа. :-) Вы можете быть правы, если мы возьмем самых прагматичных и не склонных к теории практиков в мире программного обеспечения, но моделирование предметной области гораздо шире. Проработав в индустрии программного обеспечения и академических кругах более 20 лет, я нахожу высказывание вроде «решения, которые должен принять разработчик программного обеспечения, не имеют абсолютно никакого метафизического смысла» совершенно неверно.
@CesarGon: Пожалуйста, объясните - я также работал в индустрии программного обеспечения и в академических кругах более 20 лет, и мне любопытно узнать, насколько отличается наш опыт. Какое метафизическое значение имеют решения, принятые одним из ваших разработчиков программного обеспечения?
Я попытался обозначить некоторые проблемы в своем ответе на ОП здесь. Хорошим примером является семантика null vs. unknown. Кроме того, через пару месяцев вы сможете получить копию нашего документа по скорой помощи, в котором это рассматривается гораздо глубже. Или напишите мне, и я вышлю вам препринт, если вы заинтересованы.