주제 지향 프로그래밍
Subject-oriented programming프로그래밍 패러다임 |
---|
컴퓨팅에서 주체 지향 프로그래밍은 대상 자체의 상태(필드)와 행동(방법)이 본질적으로 보이지 않고 대상의 다양한 주관적 인식("주체")에 의해 제공되는 객체 지향 소프트웨어 패러다임이다.이 용어와 개념은 1993년 9월 회의 논문으로[1] 처음 발표되었는데, 이후 1986년과 1996년 사이에 이 회의에서 발표된 세 가지 가장 영향력 있는 논문 중 하나로 인식되었다.[2]그 논문에서 예시된 바와 같이, 「실제」 사물의 특성에 관한 플라톤과 칸트의 철학관의 대조와 유추하지만, 소프트웨어에 적용되고 있다.예를 들어, 우리 모두는 나무의 높이, 무게, 잎 질량 등을 측정할 수 있는 것으로 인식할 수 있지만, 새의 관점에서 나무는 또한 음식이나 보금자리 목적의 상대적 가치의 측정치를 가질 수도 있고, 과세 평가자의 관점에서 볼 때, 주어진 해에 일정한 과세 가치를 가질 수도 있다.새도, 세금 사정인의 추가 국가 정보도 나무의 본질적인 것으로 볼 필요는 없지만, 새와 세금 사정인의 인식에 의해 추가되며, 칸트의 분석에서는 우리가 본질적인 것으로 생각하는 특성에서도 마찬가지일 수 있다.
주제 지향 프로그래밍은 대상을 "주체"로 기술하는 클래스의 구성을 옹호하며, 더 큰 주제를 구성하기 위해 구성될 수 있다.분야 또는 방법에 대한 접근 지점에서 여러 과목의 기여도를 구성할 수 있다.이러한 점들은 피험자의 결합점으로[3] 특징지어졌다.예를 들어, 나무가 잘려나간다면, 관련된 방법들은 새의 행동과 세무사의 대상과 나무 자체의 대상과 결합할 필요가 있을 수 있다.그러므로 그것은 근본적으로 알고리즘(절차적)이나 표현-지향적(객체적) 성격과는 반대로 소프트웨어 개발의 구성적 성격을 보는 관점이다.
관계들
측면 지향 프로그래밍과의 관계
1997년[4] 양면 위주의 프로그래밍이 도입되면서 주제 중심 프로그래밍과의 관계, 주제와 측면의 차이에 대한 의문이 제기되었다.이러한 질문은 한동안 답변이 없었으나, 1999년에[5] 제출된 측면 지향 프로그래밍에 관한 특허에서 다루어졌다. 이 특허에서는 두 가지 점이 초기 예술과 특징적인 차이로 나타난다.
- 측면 프로그램은 a) 교차 절단 동작이 포함될 실행 지점을 구성하는 교차 절단 작업과 b) 교차 절단 동작을 구현하는 컴퓨터 판독 가능한 프로그램 코드로 구성된 구현 작업으로 구성된다.
- 객체 클래스 및 기타 소프트웨어 엔터티에 교차 커팅 동작을 투명하게 강제하는 측면
주제 지향적 관점에서는 크로스 컷을 측면(대상)과 별도로 배치할 수 있으며, 행동은 측면에 의해 강요되는 것이 아니라 구성 규칙에 의해 지배된다.사후판단은[6] 또한 일반적인 방법으로 양면이 사용하는 결합점을 외부에 부과하기 위해 질의와 같은 포인트컷의 개념을 도입하고 활용함으로써 양면 중심의 프로그래밍을 구별할 수 있게 한다.
주제 지향 프로그래밍의 발표에서, 잘 설계된 프레임워크가 기능 확장을 인정하도록 설계된 지점이라는 이유로 의도적으로 현장 접근과 메서드 호출을 제한하였다.외부적으로 부과된 포인트 컷의 사용은 중요한 언어 능력이지만, 측면 지향 프로그래밍의 가장 논란이 많은 특징 중 하나로 남아 있다.[7]
측면 지향 소프트웨어 개발과의 관계
천년이 바뀔 무렵, 많은 연구 단체들이 각각 따로 포장된 상태와 기능의 구성이나 부착을 이용하여 사물을 형성하는 다른 기술을 추구하고 있는 것이 분명했다.[8]Aspect-Oriented 프로그래밍에서 특별한 특허 정의에 및 소프트웨어 개발의 코딩 단계보다 더 되고 그 구성 요소의 기술 거래를 강조하기 위해 관심의 공통 구역란을 구별하기 위해서, 이 기술이 그 용어 Aspect-Oriented 소프트웨어 Development,[9]고 organizat 아래에 정리된 있었다.하와이 말똥가리n과 국제 회의에 관한 시리즈가 그 주제에 대해 시작되었다.측면 지향 프로그래밍과 마찬가지로 주제 지향 프로그래밍, 구성 필터, 형상 지향 프로그래밍 및 적응 방법은 측면 지향 소프트웨어 개발 접근방식으로 간주된다.
치수
우려사항, Hyper/J 및 우려사항 조작 환경 다차원 분리
주제 지향 프로그래밍의 원래 공식화에서는 의도적으로 그것을 포장 기술로서 구상하였다 – 기능과 데이터 유형의 공간이 어느 한 차원에서도 확장될 수 있게 했다.첫 번째 구현은 C++[10]와 Smalltalk를 위한 것이었다.[11]이러한 구현은 소프트웨어 라벨과 구성 규칙의 개념을 이용하여 피험자의 결합을 기술했다.
소프트웨어의 패키징 측면뿐만 아니라 이러한 패키지가 다루는 다양한 우려 측면에서 소프트웨어의 분석과 구성을 위해 더 나은 토대가 제공되어야 한다는 우려를 해소하기 위해, 소프트와 관련된 우려가 있는 다차원 "매트릭스" 측면에서 소재의 명시적인 조직을 개발했다.이를 구현하는 유닛.이 기구를 다차원적인 우려의 분리라고 하는데, 이를[12] 기술한 논문은 ICSE 1999년 회의의 가장 영향력 있는 논문으로 인정받고 있다.[13]
이 새로운 개념은 Java 소프트웨어를 구성하기 위해 구현되었으며, 툴에 Hyper/J라는 이름을 사용했다.[14]
요건 명세서나 문서와 같이 실행 가능한 의미론이 없는 소프트웨어 아티팩트에 구성과 주제의 개념을 적용할 수 있다.Eclipse의 연구 차량인 CME(Clean Manufaction Environment, CME)는 적절한 플러그인 어댑터를 사용하여 표현을 조작함으로써 어떤 언어 또는 표현에서든 아티팩트에 질의, 분석, 모델링 [16]및 구성을 위한 도구를 적용하는 것으로 설명되어[15] 왔다.
Hyper/J 컴포지션 엔진의[17] 후속 모델은 컴포지션 엔진의 몇 가지 요소에 대해 일반적인 접근방식을 사용하는 CME의 일부로 개발되었다.
- 결합 지점을 식별하기 위한 통일된 질의 언어,
- 유연한 구조-구조 모델,
- 식별된 원소를 주문하기 위한 내포그래프 사양,
- 충돌하는 규칙 간의 충돌을 해결하기 위한 우선순위 순서 지정.
하이퍼/J와 CME는 알파웍스[18] 또는 소스포지에서 각각 사용할 수 있지만 둘 다 적극적으로 지원되지 않는다.[19]
"제3차원"으로서의 주제 지향 프로그래밍
객체 지향 프로그래밍에서 메서드 디스패치는 실행된 코드가 메서드 이름과 해당 객체에 모두 의존한다는 의미에서 "이차원"이라고 생각할 수 있다.이는 절차 이름이 서브루틴에 직접 또는 한 차원 단위로 결정되는 절차 프로그래밍과 대조될[20] 수 있으며, 송신자 또는 피사체가 제3차원을 구성하는 디스패치와도 관련이 있는 주제 지향 프로그래밍과도 대조될 수 있다.
참고 항목
참조
- ^ William Harrison and Harold Ossher, 주제 지향 프로그래밍 - 순수한 오브젝트에 대한 비판, 1993년 9월 객체 지향 프로그래밍 시스템, 언어 및 응용에 관한 회의 진행, 1993년 9월
- ^ "Most Influential OOPSLA Paper Award".
- ^ 해롤드 오셔, 페리 타르.운영 수준 구성: ECOOP '98 워크샵 리더, 406–409의 (조인) 포인트 사례
- ^ Kiczales, G.; Lamping, J.; Mendhekar, A.; Maeda, C.; Lopes, C.; Loingtier, J. M.; Irwin, J. (1997). Aspect-oriented programming (PDF). ECOOP'97. Proceedings of the 11th European Conference on Object-Oriented Programming. LNCS. Vol. 1241. pp. 220–242. CiteSeerX 10.1.1.115.8660. doi:10.1007/BFb0053381. ISBN 3-540-63089-9.
- ^ 키잘레스, 그레고르 J, 램핑, 존 O, 로페스, 크리스티나 5세;후구닌; 제임스 J;힐스데일; 에릭 A;;보야파티; Chandrasekhar, 측면 지향 프로그래밍, 미국 특허 6,467,086, 2002년 10월 15일
- ^ 윌리엄 해리슨.2008년 4월 1일 벨기에 브뤼셀에서 열린 제7회 측면 언어 기초 워크숍에서 Gary T에 의해 편집된 측면 지향성 해체 및 재구성.리븐스 , ACM 디지털 라이브러리, 2008, 페이지 43-50
- ^ 프리드리히 스티만측면 지향 프로그래밍의 역설적 성공, 오브젝트 지향 프로그래밍 시스템, 언어 및 애플리케이션에 관한 제21차 연례 ACM SIGLAN 회의의 진행, 2006년 미국 포틀랜드, 오리건, 페이지 481 - 497
- ^ ACM 통신, 제44권, 제10호, 1994년 10월, 페이지 28-95
- ^ http://aosd.net/
- ^ Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz 및 Vincent Kruskal, 주제 중심 구성 규칙, 1995년 10월 객체 지향 프로그래밍 시스템, 언어 및 응용에 관한 회의, 1995년 10월
- ^ Hafedh Mili, William Harrison, Harold Ossher, Smalltalk에서 주제 지향 프로그래밍 지원, Tools USA 96, 1996년 8월
- ^ Harold Ossher, Peri Tarr, William Harrison, Stanley Sutton, N Department of Separation:1999년 5월 소프트웨어 엔지니어링 국제회의 개최, 다차원적 우려의 분리
- ^ "SIGSOFT - ACM Special Interest Group on Software Engineering".
- ^ 해롤드 오셔, 페리 타르.Hyper/J: Java에 대한 우려의 다차원적 분리, 토론토, 온타리오, 캐나다, 온타리오, 제23회 소프트웨어 엔지니어링 국제 회의의 진행, 2001, 페이지: 821 - 822
- ^ 윌리엄 청, 윌리엄 해리슨, 빈센트 크러스칼, 해롤드 오셔, 스탠리 M.서튼 주니어, 페리 타르, 매튜 채프먼, 앤드류 클레멘트, 헬렌 호킨스, 시안 1월.우려 조작 환경, 제27회 소프트웨어 엔지니어링 목차에 관한 국제 회의의 진행, 세인트 루이스, MO, 2005년
- ^ 윌리엄 해리슨, 해롤드 오셔, 스탠리 서튼, 페리 타르불만사항 조작 환경의 불만사항 모델링, 2005년 워크숍 진행, 소프트웨어 문제 모델링 및 분석, 미주리 주 세인트루이스, 2005
- ^ 윌리엄 해리슨, 해롤드 오셔, 페리 타르소프트웨어 아티팩트의 일반 구성, 소프트웨어 구성 워크샵 2006년 3월, Springer-Verlag, LNCS 4089, 페이지 194-210
- ^ "Legacy Communities - IBM Community".
- ^ "Concern Manipulation Environment (CME)".
- ^ 객체 기술 저널:컨텍스트 지향 프로그래밍