Голые объекты
Голые объекты — это архитектурный шаблон, используемый в разработке программного обеспечения . Оно определяется тремя принципами:
- Вся бизнес-логика должна быть инкапсулирована в объекты предметной области . Этот принцип не уникален для обнаженных объектов; это твердая приверженность инкапсуляции .
- должен Пользовательский интерфейс быть прямым представлением объектов домена, при этом все действия пользователя включают создание, получение или вызов методов для объектов домена. Этот принцип не уникален для голых объектов: это интерпретация объектно -ориентированного пользовательского интерфейса .
Инновационная особенность паттерна обнаженного объекта возникает за счет объединения 1-го и 2-го принципов в третий принцип:
- Пользовательский интерфейс должен быть полностью автоматически создан на основе определений объектов предметной области. Это можно сделать с помощью отражения или генерации исходного кода .
Паттерн обнаженных объектов был впервые формально описан в докторской диссертации Ричарда Поусона. [1] который включает в себя исследование предшественников и источников вдохновения для шаблона, включая, например, морфический пользовательский интерфейс.
Первая полная платформа с открытым исходным кодом , реализовавшая этот шаблон, называлась Naked Objects. [2] В 2021 году Поусон объявил, что впоследствии он применил тот же шаблон к парадигме функционального программирования в качестве альтернативы парадигме объектно-ориентированного программирования , создав вариант структуры «Обнаженные объекты» под названием «Обнаженные функции». [3]
Преимущества
[ редактировать ]Диссертация Поусона [1] утверждает четыре преимущества этого шаблона:
- Более быстрый цикл разработки , поскольку требуется меньше слоев. В более традиционном проекте разработчик должен определить и реализовать три или более отдельных уровней: уровень объекта предметной области, уровень представления и сценарии задач или процессов, которые соединяют их. (Если шаблон голых объектов сочетается с объектно-реляционным сопоставлением или базой данных объектов , то можно создать все уровни системы только на основе определений объектов предметной области; однако это не является частью шаблона голых объектов как такового. .) Диссертация включает в себя тематическое исследование, сравнивающее две разные реализации одного и того же приложения: одна, основанная на традиционной «четырехуровневой» реализации; другой использует обнаженные предметы.
- Большая гибкость , подразумевающая легкость, с которой приложение может быть изменено в соответствии с будущими изменениями бизнес-требований. Частично это происходит из-за сокращения количества разрабатываемых слоев, которые необходимо поддерживать в синхронизации. Однако также утверждается, что принудительное соответствие 1:1 между пользовательским представлением и моделью предметной области обеспечивает более качественное моделирование объектов , что, в свою очередь, повышает гибкость.
- Более мощный стиль пользовательского интерфейса . Это преимущество на самом деле связано с получаемым в результате объектно-ориентированным пользовательским интерфейсом (OOUI), а не с голыми объектами как таковыми, хотя утверждается, что голые объекты значительно облегчают разработку и реализацию OOUI.
- Упрощенный анализ требований . Аргумент здесь заключается в том, что при использовании шаблона голых объектов объекты предметной области образуют общий язык между пользователями и разработчиками и что этот общий язык облегчает процесс обсуждения требований, поскольку нет других представлений для обсуждения. В сочетании с более быстрым циклом разработки становится возможным создавать прототипы функциональных приложений в реальном времени.
Использовать
[ редактировать ]Департамент социальной защиты (DSP) (ранее известный как Департамент по социальным и семейным вопросам) Ирландии создал набор корпоративных приложений с использованием шаблона обнаженных объектов. В рамках своей программы модернизации предоставления услуг (SDM) компания DSP разработала новую корпоративную архитектуру, которая отвечает как запланированным новым бизнес-требованиям, так и обеспечивает большую гибкость в долгосрочной перспективе. Шаблон «голые объекты» образует ключевой элемент архитектуры SDM. [4] В ноябре 2002 года DSP запустила новое приложение, призванное заменить существующую систему администрирования детских пособий. Считается, что это первое практическое применение паттерна обнаженных объектов где бы то ни было. Опыт DSP в создании этого первого приложения, включая реакцию пользователей на радикальный пользовательский интерфейс, подробно описан в диссертации Поусона: [1] и совсем недавно в презентации на QCon London 2011. [5]
Одним из наиболее поразительных аспектов опыта DSP было то, что техника «Обнаженные объекты» допускала очень активное повторное использование. Как только объект домена, такой как Клиент, был определен для одного «приложения», его можно было легко адаптировать (было) легко адаптировать с минимумом настроек и дополнений для использования в другом месте. Это говорит о том, что этот подход может стать фаворитом в правительственных кругах, где повторное использование рассматривается как мощный метод разрушения разрозненных систем. Политика «Трансформационного правительства» Великобритании особенно заинтересована в том, чтобы повторное использование стало стандартным требованием новых государственных систем, одновременно потребляя другие компоненты правительственной системы и делая новые доступными для использования другими. Такое повторное использование часто наблюдается с точки зрения сервисов, но объекты могут быть не менее эффективным подходом.
Первоначальная «Архитектура голых объектов» DSP была разработана внешним подрядчиком, [6] но впоследствии архитектура была переработана вокруг Naked Objects Framework , которая теперь формирует основу для будущей разработки приложений, что подтверждено в запросе на участие в тендерах на четырехлетнюю программу создания дополнительных приложений с использованием голых объектов. [7]
Связь с другими идеями
[ редактировать ]Паттерн обнаженных объектов имеет отношение к нескольким другим дисциплинам и/или тенденциям, в том числе:
- Механизмы хранения объектов
Объектно-реляционное сопоставление , базы данных объектов и сохранение объектов — все они направлены на устранение необходимости писать обычный уровень доступа к данным под объектами предметной области. Эти шаблоны дополняют и потенциально синергичны с шаблоном «голые объекты», который направлен на устранение необходимости писать слои над объектами предметной области.
- Гибкая разработка программного обеспечения
Голые объекты совместимы с тенденцией к гибким методологиям разработки во многих отношениях, но особенно с мелкозернистой итеративной разработкой. Опыт DSP (описанный выше), вероятно, также стал крупнейшим применением гибких методов разработки программного обеспечения в организациях государственного сектора во всем мире. [8]
- Доменно-ориентированный дизайн
Проектирование, управляемое предметной областью, — это идея, согласно которой развивающуюся модель предметной области (объекта) следует использовать в качестве механизма, помогающего исследовать требования, а не наоборот. Тот факт, что система голых объектов обеспечивает прямое соответствие между пользовательским интерфейсом и моделью предметной области, упрощает попытку проектирования на основе предметной области и делает преимущества более очевидными. [9]
- Модельно-ориентированная архитектура (MDA)
Хотя обнаженные объекты не соответствуют строгому определению MDA, они преследуют многие из тех же целей. Дэн Хейвуд утверждал, что обнаженные объекты — более эффективный подход к достижению этих целей. [10]
- Успокоительные объекты
Стандарт для создания интерфейса RESTful на основе объектной модели предметной области. Хотя в спецификации Restful Objects не указано, что интерфейс должен создаваться на основе модели предметной области, такая возможность существует.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б с Поусон, Ричард (июнь 2004 г.). Обнаженные объекты (PDF) (кандидатская диссертация). Тринити-колледж Дублина .
- ^ Платформа обнаженных объектов
- ^ От голых объектов к голым функциям
- ^ Департамент по социальным и семейным вопросам — Руководство по функциям и записям Департамента, веб-сайт DSFA — Свобода информации. Архивировано 19 октября 2012 г. на Wayback Machine.
- ^ Практический пример: крупномасштабный чистый объектно-ориентированный подход на QCon правительства Ирландии в Лондоне, 2011 г.
- ^ Департамента по социальным и семейным вопросам. Fujitsu, Практический пример: веб-сайт Fujitsu Архивировано 29 ноября 2007 г. на Wayback Machine.
- ^ Департамент по социальным вопросам и делам семьи, Постоянное развитие программы модернизации предоставления услуг Департамента, 2007 г., веб-сайт электронных тендеров.
- ^ Поусон, Ричард; Уэйд, Винсент (2003). «Гибкая разработка с использованием голых объектов». Экстремальное программирование и гибкие процессы в разработке программного обеспечения . XP'03. ЛНКС . Том. 2675. стр. 97–103. дои : 10.1007/3-540-44870-5_13 . ISSN 0302-9743 .
- ^ Хейвуд, Д., Доменно-ориентированный дизайн с использованием голых объектов , 2009, Прагматичные программисты.
- ^ Хейвуд, Д. (2004) MDA: Хорошая идея, стыдно за...