벌거벗은 물체

Naked objects

네이키드 오브젝트는 소프트웨어 엔지니어링에서 사용되는 아키텍처 패턴입니다.이는 다음 3가지 원칙에 의해 정의됩니다.

  1. 모든 비즈니스 로직을 도메인 개체에 캡슐화해야 합니다.이 원칙은 나체 객체에만 있는 것이 아니라 캡슐화에 대한 강한 약속입니다.
  2. 사용자 인터페이스는 도메인 개체를 직접 나타내야 합니다.모든 사용자 작업은 도메인 개체에 대한 메서드의 작성, 취득 또는 호출로 구성됩니다.이 원리는 나체 객체에만 있는 것이 아니라 객체 지향 사용자 인터페이스를 해석한 것입니다.

나체 객체 패턴의 혁신적인 특징은 제1원칙과 제2원칙을 제3원칙으로 결합함으로써 발생한다.

  1. 사용자 인터페이스는 도메인 객체의 정의에서 완전히 자동으로 생성되어야 합니다.이는 반사 또는 소스 코드 생성사용하여 수행할 수 있습니다.

벌거벗은 물체 패턴은 예를 들어 Morphic 사용자 인터페이스를 포함한 패턴에 대한 선행 요소 및 영감의 조사를 포함하는 Richard Pawson의 박사 논문에서 공식적으로[1] 처음 설명되었습니다.

패턴을 구현한 최초의 완전한 오픈 소스 프레임워크는 Naked [2]Objects라고 명명되었습니다.2021년 포슨은 객체 지향 프로그래밍 패러다임의 대안으로 기능 프로그래밍 패러다임에 동일한 패턴을 적용하여 네이키드 [3]함수라고 불리는 네이키드 오브젝트 프레임워크의 변형을 만들었다고 발표했다.

혜택들

Pawson의 논문은[1] 이러한 패턴에 대해 4가지 이점을 제시하고 있습니다.

  1. 개발할 계층이 적기 때문에 개발 주기가 빨라집니다.좀 더 일반적인 설계에서는 개발자는 도메인 오브젝트층, 프레젠테이션층, 그리고 이 둘을 연결하는 태스크 또는 프로세스 스크립트 등 3개 이상의 레이어를 정의하고 구현해야 합니다.(네이키 오브젝트 패턴이 오브젝트 관계 매핑 또는 오브젝트 데이터베이스와 결합되어 있는 경우 모든 레이어를 작성할 수 있습니다.도메인 오브젝트 정의만으로 시스템을 구성할 수 있습니다.단, 이는 네이키드 오브젝트 패턴의 일부를 형성하지 않습니다.)이 논문은 동일한 애플리케이션의 두 가지 다른 구현을 비교하는 사례 연구를 포함하고 있다. 하나는 기존의 '4계층' 구현에 기초하고 다른 하나는 나체 객체를 사용한다.
  2. 민첩성 향상 - 향후 비즈니스 요구사항의 변화를 수용하기 위해 애플리케이션을 쉽게 변경할 수 있습니다.부분적으로 이는 동기화 상태를 유지해야 하는 개발 계층 수의 감소에서 발생한다.그러나 사용자 프레젠테이션과 도메인 모델 간의 1:1 대응이 강제적으로 더 높은 품질의 객체 모델링을 강요하고, 결과적으로 민첩성을 향상시킨다는 주장도 제기되었다.
  3. 보다 파워풀한 스타일의 사용자 인터페이스.이 이점은 실제로 개체 자체가 아닌 개체 지향 사용자 인터페이스(OOUI)에 기인하지만, 개체 자체가 노출되어 있기 때문에 개체 지향 사용자 인터페이스(OOOI)를 구현하기가 훨씬 쉽다는 주장이 제기됩니다.
  4. 요건 분석의 용이성.여기서의 주장은 나체의 오브젝트 패턴에서는 도메인 오브젝트가 사용자와 개발자 간에 공통 언어를 형성하고, 이 공통 언어가 요건을 논의하는 프로세스를 용이하게 한다는 것입니다.이는 논의할 다른 표현이 없기 때문입니다.개발 주기가 빨라짐에 따라 기능 애플리케이션을 실시간으로 프로토타입으로 제작할 수 있습니다.

사용하다

아일랜드의 사회보호부(DSP)(이전의 사회가족부)는 나체 객체 패턴을 사용하여 일련의 엔터프라이즈 애플리케이션을 구축했습니다.서비스 제공 현대화(SDM) 프로그램의 일환으로 DSP는 계획된 새로운 비즈니스 요구사항을 충족하는 동시에 장기적인 민첩성을 높이기 위해 새로운 엔터프라이즈 아키텍처를 설계했습니다.나체 객체 패턴은 SDM 아키텍처의 [4]주요 요소를 형성합니다.2002년 11월, DSP는 아동 수당 관리를 위한 기존 시스템을 대체하는 새로운 애플리케이션을 도입했습니다.이것은 어디서든 벌거벗은 물체 패턴의 첫 번째 작동 적용으로 여겨진다.급진적인 사용자 인터페이스에 대한 사용자의 반응을 포함한 이 첫 번째 애플리케이션을 구축한 DSP의 경험은 Pawson의 [1]논문과 최근 QCon London [5]2011 프레젠테이션에 광범위하게 문서화되어 있습니다.

DSP 경험의 가장 놀라운 측면 중 하나는 Naked Objects 기술이 매우 적극적으로 재사용할 수 있도록 한 방식입니다.고객 등의 도메인 오브젝트를 1개의 '어플리케이션'으로 정의하면 최소한의 조정과 다른 장소에서 사용할 수 있도록 추가함으로써 쉽게 조정할 수 있습니다.이는 정부기관에서 이 접근법이 선호될 수 있음을 시사하는 것으로, 정부기관에서는 재사용이 격리된 시스템을 분해하는 강력한 기술로 간주됩니다.영국의 '변혁 정부' 정책은 특히 재사용이 새로운 정부 시스템의 표준 요건이 되기를 간절히 바라고 있으며, 이는 다른 정부 시스템 구성요소를 소비하고 새로운 시스템을 다른 사람들이 사용할 수 있도록 하는 것이다.이러한 재사용은 서비스 측면에서 종종 볼 수 있지만 객체도 마찬가지로 강력한 접근 방식이 될 수 있습니다.

그 소속사 DSP의 초기 'Naked Object건축'외부 contractor,[6]지만 추가 응용 프로그램의 교과 프로그램의 입찰을 요청을 벌거벗고에 의해 만들어져야만이 건축 그 후에 네이키드 객체 Framework지금 미래의 애플리케이션 개발의 근거가 되, 재개발되었다 개발되었다.ob젝트[7]

다른 아이디어와의 관계

나체 객체 패턴은 다음을 포함한 여러 다른 분야 및/또는 동향과 관련이 있습니다.

Object storage mechanisms

오브젝트 관계 매핑, 오브젝트 데이터베이스 및 오브젝트 지속성은 모두 도메인 오브젝트 아래에 기존의 데이터 액세스레이어를 쓸 필요가 없는 것과 관련이 있습니다.이러한 패턴은 도메인 객체 위에 레이어를 쓸 필요가 없는 나체 객체 패턴과 보완적이며 잠재적으로 시너지 효과가 있습니다.

Agile software development

Naked 객체는 다양한 방식으로 민첩한 개발 방법론을 지향하는 추세와 양립할 수 있지만, 특히 세분화된 반복 개발과 양립할 수 있습니다.DSP 익스피리언스(상기 설명)는 아마도 전 [8]세계 공공부문 조직 내에서 신속한 변화를 위한 소프트웨어 개발 기법 중 가장 큰 응용 프로그램이었을 것입니다.

Domain-driven design

도메인 중심 설계는 진화하는 도메인(객체) 모델을 요구 사항 탐색을 지원하는 메커니즘으로 사용해야 한다는 개념입니다.네이키드 오브젝트 시스템이 사용자 인터페이스와 도메인 모델 간의 직접적인 대응을 강요하고 있다는 사실은 도메인 주도 설계를 시도하기 쉽게 하고 이점을 더 [9]잘 볼 수 있게 합니다.

Model-driven architecture (MDA)

비록 벌거벗은 물체는 MDA의 엄격한 정의에 부합하지 않지만, 많은 동일한 목표를 공유한다.댄 헤이우드는 벌거벗은 물체가 이러한 목표를 달성하는 데 [10]더 효과적인 접근법이라고 주장했습니다.

Restful Objects

도메인 객체모델에서 RESTful 인터페이스를 작성하기 위한 표준입니다.Restful Objects 사양에는 인터페이스가 도메인모델에서 리플렉티브로 생성되어야 한다고 기술되어 있지 않지만 이 가능성은 존재합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Pawson, Richard (June 2004). Naked objects (PDF) (Ph.D. thesis). Trinity College, University of Dublin.
  2. ^ Naked Objects 프레임워크
  3. ^ Naked Objects에서 Naked Functions로
  4. ^ 사회·가족부 - 부서 기능 및 기록 가이드, DSFA 웹사이트 - 2012-10-19년 웨이백 머신에 아카이브된 정보자유
  5. ^ 사례 연구: 아일랜드 정부 QCon London 2011의 대규모 순수 OO
  6. ^ Fujitsu, 도입 사례:후지쯔 사회·가족성 웹사이트 2007-11-29 Wayback Machine 아카이브
  7. ^ 사회 및 가족 관련 부서, 부서의 서비스 제공 현대화 프로그램의 진행 중인 개발, 2007, e-tender 웹 사이트
  8. ^ Pawson, Richard; Wade, Vincent (2003). "Agile Development Using Naked Objects". Extreme Programming and Agile Processes in Software Engineering. XP'03. LNCS. Vol. 2675. pp. 97–103. doi:10.1007/3-540-44870-5_13. ISSN 0302-9743.
  9. ^ Haywood, D., Naked Objects를 사용한 도메인 중심 설계, 2009, Pragmatic Programmers
  10. ^ Haywood, D (2004) MDA : 좋은 생각인데...