Голые объекты — это архитектурный шаблон , используемый в программной инженерии . Он определяется тремя принципами:
Инновационная особенность модели обнаженного объекта возникает путем объединения 1-го и 2-го принципов в 3-й принцип:
Паттерн «голые объекты» был впервые формально описан в докторской диссертации Ричарда Поусона [1] , которая включает исследование предшественников и источников вдохновения для этого паттерна, включая, например, пользовательский интерфейс Morphic .
Первая полная платформа с открытым исходным кодом , реализовавшая этот шаблон, была названа Naked Objects. [2] В 2021 году Поусон объявил, что впоследствии применил тот же шаблон к парадигме функционального программирования в качестве альтернативы парадигме объектно-ориентированного программирования , создав вариант платформы Naked Objects под названием Naked Functions. [3]
В своей диссертации [1] Поусон утверждает четыре преимущества этой модели:
Департамент социальной защиты (DSP) (ранее известный как Департамент по социальным и семейным вопросам) в Ирландии создал набор корпоративных приложений, использующих шаблон обнаженных объектов. В рамках своей программы модернизации предоставления услуг (SDM) DSP разработал новую корпоративную архитектуру как для удовлетворения запланированных новых бизнес-требований, так и для обеспечения большей гибкости в долгосрочной перспективе. Шаблон обнаженных объектов является ключевым элементом архитектуры SDM. [4] В ноябре 2002 года DSP запустил новое приложение для замены существующей системы администрирования детских пособий. Считается, что это первое операционное применение шаблона обнаженных объектов где-либо. Опыт DSP в создании этого первого приложения, включая реакцию пользователей на радикальный пользовательский интерфейс, подробно описан в диссертации Поусона [1] и совсем недавно в презентации на QCon London 2011. [5]
Одним из наиболее поразительных аспектов опыта DSP был способ, которым техника Naked Objects допускала очень активное повторное использование. После того, как объект домена, такой как Customer, был определен для одного «приложения», он мог быть (был) легко адаптирован с минимальными изменениями и дополнениями для использования в другом месте. Это говорит о том, что подход может стать фаворитом в правительственных кругах, где повторное использование рассматривается как мощный метод для разрушения изолированных систем. Политика «Трансформационного правительства» Великобритании особенно стремится к тому, чтобы повторное использование стало стандартным требованием новых правительственных систем, как потребляя другие компоненты правительственной системы, так и делая новые доступны для использования другими. Это повторное использование часто рассматривается с точки зрения услуг, но объекты могли бы быть столь же мощным подходом.
Первоначальная архитектура «голых объектов» DSP была разработана внешним подрядчиком [6] , но впоследствии архитектура была переработана вокруг Naked Objects Framework, которая теперь составляет основу для будущей разработки приложений, как подтверждено в запросе на тендеры на четырехлетнюю программу создания дополнительных приложений с использованием голых объектов [7] .
Паттерн обнаженных объектов имеет отношение к нескольким другим дисциплинам и/или тенденциям, включая:
Объектно-реляционное отображение , объектные базы данных и сохранение объектов — все это связано с устранением необходимости писать обычный слой доступа к данным под объектами домена. Эти шаблоны являются дополнительными и потенциально синергетическими с шаблоном голых объектов, который связан с устранением необходимости писать слои над объектами домена.
Naked objects совместим с тенденцией к agile-методологиям разработки во многих отношениях, но особенно с мелкозернистой итеративной разработкой. Опыт DSP (описанный выше) был, вероятно, также крупнейшим применением agile-методов разработки программного обеспечения в организации государственного сектора во всем мире. [8]
Проектирование на основе домена — это идея, что развивающаяся модель домена (объекта) должна использоваться как механизм для помощи в исследовании требований, а не наоборот. Тот факт, что система голых объектов заставляет прямое соответствие между пользовательским интерфейсом и моделью домена, упрощает попытку проектирования на основе домена и делает преимущества более заметными. [9]
Хотя обнаженные объекты не соответствуют строгому определению MDA, они разделяют многие из тех же целей. Дэн Хейвуд утверждал, что обнаженные объекты являются более эффективным подходом к достижению этих целей. [10]
Стандарт для создания интерфейса RESTful из модели объекта домена. Хотя спецификация объектов Restful не утверждает, что интерфейс должен быть сгенерирован отражающим из модели домена, такая возможность существует.