SPUP(소프트웨어)

SCOOP (software)

SPUP(Simple Concurrent Object Oriented Programming)는 에펠의 크리에이터 겸 디자이너 베르트랑 마이어가 고안한 에펠 프로그래밍 언어용 동시성 모델이다.

SPUP는 스레드, 잠금장치 또는 기타 일반적인 멀티프로그래밍 방법의 개념 없이 객체 지향 프로그램을 작성하는 방법을 정의한다.이를 통해 컴파일러 또는 런타임 환경이 동시성의 양을 최적화할 수 있을 뿐 아니라 교착 상태와 같은 전형적인 설계 결함을 제거할 수 있다.

이 모델은 1990년대 초반에 처음 설계되었고 1993년에 ACM[1] 통신에 발표되었다. 업데이트된 버전은 Object-Oriented Software Construction 30장에 설명되었다.[2]프로토타입 구현은 1995년에 에펠 소프트웨어에 의해 개발되었다.콤프턴과 워커의[3] 기사는 SPUP의 개요를 제공하며 또 다른 초기 구현에 대해 설명한다.Nienaltowski, Arslan, Meyer는 2003년 현재 이 모델에 대한 설명을 발표했다.[4]SPUP에 대한 작업은 ETH 취리히의 소프트웨어 엔지니어링 위원장에서 진행되었다.[5]SPUP는 2011년 초 에펠스튜디오의 표준 부품으로 출시되었다.[6]

기술 개요

SPUP는 특정 객체에 대한 참조를 별도로 선언할 수 있도록 하는 방식으로 작동한다.아래 코드에서 엔티티local_inventory에펠 언어 키워드를 지정하여 별도의 유형으로 선언됨separate선언에 의하면

    local_message: 분리된 재고 

별도의 개체는 참조 객체를 취급하는 프로세서와 다른 SPUP 프로세서에 의해 처리될 수 있다.SPUP 프로세서는 하나 이상의 개체에 대한 작업 실행을 처리하는 제어의 자율 스레드의 추상적인 개념이다.SPUP 프로세서는 프로세서 스레드, 다중 프로세서 코어, 분산 컴퓨터 시스템과 같은 기본적인 동시성 메커니즘과 독립적이다.

SPUP는 분리성의 개념 외에도, 공유된 개별 자원에 대한 접근을 동기화하기 위한 SPUP 전략의 일환으로 계약에 의한 설계의 원리를 활용한다.예를 들어, 위 재고 예제의 품목에 접근하고자 하는 소비자의 전제조건은 그러한 품목이 현재 존재한다는 것일 수 있다.이것은 수업의 특성에 관한 계약과 함께 표현될 것이다.INVENTORY그리고 그 아이템을 돌려준다.

    항목: 제품         --현재품목     요구하다         재고_has_message: has_message 

전통적인 순차적 처리에서, 전화를 걸려는 고객local_inventory.item그 전제조건이 반드시local_inventory.has_item통화하기 전에 보류하십시오.호출할 경우item의 상태로 만들어졌다.has_item전화를 건 사람은 위반 예외를 받을 수 있다.

SPUP의 존재와 분리성을 부여했다.local_inventory, 확인중has_item전화하기 전에item믿을 수 없을 겁니다의 상태 때문이다.local_inventory체크한 시간과 체크한 시간 사이에 다른 SPUP 프로세서의 요청에 의해 변경될 수 있었다.item호출할 수 있다.

그 결과 SPUP가 활성화되었을 때 전제조건은has_item위반 시 예외를 발생시키는 정확성 조건으로부터 대기 조건으로 변환된다.대기 조건으로 인해item다음과 같은 시간까지 지연되다has_item에펠 소프트웨어 구현에서 SPUP가 활성화되지 않으면separate키워드는 무시되고 순차 처리가 가정된다.

참고 항목

참조

  1. ^ Bertrand Meyer: Communications of ACM, 36, 9, 1993년 9월, 페이지 56-80도 온라인에서 이용할 수 있다.
  2. ^ Bertrand Meyer: 객체 지향 소프트웨어 구축, 제2판, 프렌티스 홀, 1997
  3. ^ Compton, Michael; Walker, Richard (2002). "A Run-time System for SCOOP". Journal of Object Technology. 1 (3): 119–157. doi:10.5381/jot.2002.1.3.a8.
  4. ^ Nienaltowski, P.; Arslan, V.; Meyer, B. (2003). "Concurrent object-oriented programming on .NET" (PDF). IEE Proceedings - Software. 150 (5): 308. doi:10.1049/ip-sen:20030992.
  5. ^ ETH 취리히, 소프트웨어 엔지니어링 회장: SPUP 프로젝트 페이지
  6. ^ 에펠 소프트웨어: SPUP: 에펠을 위한 동시성

외부 링크