KR101624005B1 - 소프트웨어 컴포넌트 상태에 대한 접근 제어 - Google Patents

소프트웨어 컴포넌트 상태에 대한 접근 제어 Download PDF

Info

Publication number
KR101624005B1
KR101624005B1 KR1020117029378A KR20117029378A KR101624005B1 KR 101624005 B1 KR101624005 B1 KR 101624005B1 KR 1020117029378 A KR1020117029378 A KR 1020117029378A KR 20117029378 A KR20117029378 A KR 20117029378A KR 101624005 B1 KR101624005 B1 KR 101624005B1
Authority
KR
South Korea
Prior art keywords
software component
value
setting
values
request
Prior art date
Application number
KR1020117029378A
Other languages
English (en)
Other versions
KR20120037381A (ko
Inventor
크리스토퍼 디 루셀
에릭 피 트라우트
라비산카르 푸디페디
아담 디 스트리첼
스야쉬 신하
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20120037381A publication Critical patent/KR20120037381A/ko
Application granted granted Critical
Publication of KR101624005B1 publication Critical patent/KR101624005B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

소프트웨어 제품의 소프트웨어 컴포넌트로부터 소프트웨어 컴포넌트의 공개 설정의 값에 접근하기 위한 요청이 수신된다. 요청이 공개 설정에 대한 적절한 포맷을 따르는지 여부에 대한 점검이 수행된다. 요청이 적절한 포맷을 따르면, 요청된 접근이 수행된다. 그러나, 요청이 적절한 포맷을 따르지 않으면, 요청된 접근이 거부된다. 공개 설정에 대한 복수의 값이 동시에 수신될 수 있고 유지될 수 있다.

Description

소프트웨어 컴포넌트 상태에 대한 접근 제어{CONTROLLING ACCESS TO SOFTWARE COMPONENT STATE}
컴퓨터는 전형적으로 다른 애플리케이션이 컴퓨터 상에 설치되어 구동되게 하는 것을 포함하는 다양한 기능을 제공하는 운영 체제(operating system)를 구동시킨다. 이러한 운영 체제는 애플리케이션이 애플리케이션의 복수의 실행에 걸쳐 지속되는 다양한 유형의 정보를 저장할 수 있는 위치를 종종 제공한다. 이러한 위치는 예를 들어 운영 체제 레지스트리(registry)일 수 있다. 이러한 정보를 유지하는 것이 애플리케이션에 유익할 수 있는 반면, 현재의 스토리지(storage) 메카니즘은 그들에 대한 문제점 없이 존재하지 않는다. 하나의 이러한 문제점은 상이한 애플리케이션이 동일한 위치에서 대체로 상호작용하여 하나의 애플리케이션에 의해 저장된 정보가 또 다른 애플리케이션에 의해 삭제되거나 중첩 기록되거나 또는 변질되는 상황이 발생하게 된다는 것이다. 이러한 상황은 애플리케이션이 의도된 대로 실행되지 않거나 심지어 전혀 실행되지 않는 것을 초래할 수 있다.
본 요약은 발명을 실시하기 위한 구체적인 내용에서 추가로 후술되는 개념의 단순화된 형태로의 선택을 소개하기 위해 제공된다. 본 요약은 청구된 본 발명의 중요한 특징 또는 필수적인 특징을 식별하도록 의도되지 않으며 청구된 본 발명의 범위를 제한하기 위해 사용되도록 의도되지도 않는다.
하나 이상의 양태에 따라, 소프트웨어 제품의 소프트웨어 컴포넌트로부터 소프트웨어 컴포넌트의 설정의 값에 접근하기 위한 요청이 수신된다. 이러한 설정은 예를 들어 소프트웨어의 이후의 활성화가 지속적인 정보를 판독하고 구성을 재설정할 수 있도록 소프트웨어의 실행 시간(runtime)을 지나서도 지속하는 방식으로 소프트웨어 컴포넌트가 저장하기를 원하는 구성 정보이다. 요청이 설정에 대한 적절한 포맷을 따르는지 여부에 대한 점검이 수행된다. 요청이 적절한 포맷을 따르면, 요청된 접근이 수행된다. 그러나, 요청이 적절한 포맷을 따르지 않으면, 요청된 접근이 거부된다.
하나 이상의 양태에 따라, 소프트웨어 컴포넌트에 대한 설정 선언서(setting declaration)가 수신된다. 설정 선언서는 선언된 설정에 접근하기 위한 적절한 포맷을 식별한다. 설정 선언서의 기록이 유지된다. 선언된 설정에 대한 복수의 값이 또한 수신되며, 복수의 값은 동시에 유지된다.
유사한 특징을 지칭하기 위해 동일한 참조번호가 도면 전반에 걸쳐 사용된다.
도 1은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것을 구현하는 예시적인 컴퓨팅 장치를 도시한다.
도 2는 하나 이상의 실시예에 따른 예시적인 소프트웨어 컴포넌트를 도시한다.
도 3은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 것을 구현하는 예시적인 컴퓨팅 장치를 도시한다.
도 4는 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태를 저장하기 위한 예시적인 파일 시스템 계층을 도시하는 블록 다이어그램이다.
도 5는 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 장치에 대한 예시적인 프로세스를 도시하는 흐름도이다.
도 6은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 장치에 대한 또 다른 예시적인 프로세스를 도시하는 흐름도이다.
도 7은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시한다.
소프트웨어 컴포넌트 지속적 설정에 대한 접근을 제어하는 것이 본 명세서에서 설명된다. 이러한 설정은 소프트웨어 컴포넌트의 상이한 실행에 걸쳐 지속된다. 소프트웨어 제품은 하나 이상의 소프트웨어 컴포넌트로 구성되며, 각각의 소프트웨어 컴포넌트는 설정 스토리지 제어 모듈과 통신할 수 있다. 설정 스토리지 제어 모듈은 소프트웨어 컴포넌트에 연관된 지속 상태의 적어도 일부에 대한 접근을 제어한다. 소프트웨어 컴포넌트는 설정 스토리지 제어 모듈이 접근을 제어하는 하나의 유형의 지속적 설정(공개 설정(public settings)으로 지칭됨)을 저장할 수 있다. 소프트웨어 컴포넌트는 또한 다른 유형의 지속적 설정 또는 정보(비공개 상태(private state)로 지칭됨)를 저장할 수 있다. 공개 설정 및 비공개 상태인 경우에, 소프트웨어 컴포넌트의 지속적 상태 데이터가 저장되는 위치가 제어된다. 공개 설정인 경우에, 데이터의 구조 및 유형은 소프트웨어 컴포넌트의 선언된 설정 스키마에 의해 부과된 제약에 대하여 스토리지 제어 모듈에 의해 제약된다. 비공개 상태인 경우에, 소프트웨어 컴포넌트는 스스로 데이터의 구조 및 유형을 결정하지만 데이터가 실제로 저장되는 위치를 결정하지는 않는다.
특정 소프트웨어 컴포넌트에 의해 접근될 수 있는 특정 공개 설정은 소프트웨어 컴포넌트의 변경 불가능한 매니페스트(immutable manifest)의 일부인 설정 스키마(settings schema)에서 선언된다. 설정 스토리지 제어 모듈은 각각의 소프트웨어 컴포넌트가 설정 스키마 내에서 소프트웨어 컴포넌트가 선언했던 공개 설정에만 접근하도록 제약하는데, 소프트웨어 컴포넌트로부터 공개 설정에 접근하기 위한 다른 요청은 설정 스토리지 제어 모듈에 의해 거절된다.
또한, 설정 스토리지 제어 모듈은 각각의 설정에 대해 복수의 상이한 값에 대한 접근을 유지하고 허용할 수 있다. 설정 값이 기록될 때, 설정 값이 저장되는 위치는 그 값의 기록자의 아이덴터티(identity)에 따라 달라질 수 있다. 또한, 상이한 컴포넌트, 모듈, 장치 등은 동일한 설정에 대해 동시에 저장되고 지속된 상이한 설정 값을 가질 수 있다. 특정 설정의 값에 대한 요청에 응답하여 그들 상이한 설정 값 중 어떤 설정 값이 반환되는지를 식별하기 위해, 알고리즘 또는 규칙 세트가 사용될 수 있다.
도 1은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것을 구현하는 예시적인 컴퓨팅 장치(100)를 도시한다. 컴퓨팅 장치(100)는 애플리케이션을 실행시킬 수 있는 다양한 상이한 장치일 수 있다. 예를 들어, 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 서버 컴퓨터, 랩탑 컴퓨터, 이동국(mobile station), 오락 기기(entertainment appliance), 디스플레이 장치에 통신 방식으로 결합된 셋탑 박스, 셀룰러 또는 다른 무선 전화기, 게임 콘솔, 자동차 컴퓨터 등일 수 있다. 따라서, 컴퓨팅 장치(100)는 상당한 메모리 및 프로세서 리소스를 갖는 풀 리소스 장치(full resource device)(예를 들어, 퍼스널 컴퓨터, 게임 콘솔)로부터 제한된 메모리 및/또는 프로세싱 리소스를 갖는 낮은 리소스 장치(low resource device)(예를 들어, 전통적인 셋탑 박스, 휴대용 게임 콘솔)를 포괄할 수 있다.
컴퓨팅 장치(100)는 소프트웨어 컴포넌트 설정 스토리지 제어 모듈(102) 및 소프트웨어 컴포넌트 상태 저장소(104)를 포함한다. 소프트웨어 애플리케이션으로도 또한 지칭되는 두 개의 소프트웨어 제품(106 및 108)이 컴퓨팅 장치(100) 내에 포함되는 것으로 도시된다. 비록 두 개의 소프트웨어 제품(106 및 108)이 도 1의 예에 도시되어 있지만, 대안적으로 두 개 미만의 또는 두 개 초과의 소프트웨어 제품이 컴퓨팅 장치(100) 내에 포함될 수 있다. 각각의 소프트웨어 제품(106 및 108)은 하나 이상의 소프트웨어 컴포넌트를 포함한다. 도 1의 예에서, 소프트웨어 제품(106)은 소프트웨어 컴포넌트(112), 소프트웨어 컴포넌트(114) 및 소프트웨어 컴포넌트(116)를 포함하는 반면, 소프트웨어 제품(108)은 소프트웨어 컴포넌트(116) 및 소프트웨어 컴포넌트(118)를 포함한다. 도 1에서 알 수 있는 바와 같이, 복수의 상이한 소프트웨어 제품은 하나의 소프트웨어 컴포넌트(예를 들어, 소프트웨어 컴포넌트(116))를 공유할 수 있다.
소프트웨어 컴포넌트 설정 스토리지 제어 모듈(102)은 소프트웨어 컴포넌트(112 내지 118)에 대해 소프트웨어 컴포넌트 상태 저장소(104) 내의 적어도 일부 설정의 스토리지 및 적어도 일부 설정에 대한 접근을 관리한다. 이들 설정은 소프트웨어 컴포넌트(112 내지 118)의 상이한 실행에 걸쳐 제어 모듈(102)에 의해 지속되는 소프트웨어 컴포넌트(112 내지 118)에 대한 구성 정보이다. 각각의 소프트웨어 컴포넌트(112 내지 118)에 대해 복수의 상이한 설정이 제어 모듈(102)에 의해 관리될 수 있다. 이들 상이한 설정은 각각 보다 상세하게 후술되는 바와 같이 하나의 설정 아이덴터티 및 하나 이상의 설정 값을 갖는다. 명시하는 설정은 소프트웨어 컴포넌트(112 내지 118)에 의해 저장되며, 소프트웨어 컴포넌트(112 내지 118)가 이들 설정을 어떻게 사용할지는 개별 소프트웨어 컴포넌트(112 내지 118)의 개발자에 의해 결정된다. 그러나, 설정의 값 또는 값들의 스토리지는 제어 모듈(102)에 의해 제어되고 관리된다.
도 1에서 알 수 있는 바와 같이, 각각의 소프트웨어 제품은 하나 이상의 소프트웨어 컴포넌트로 구성된다. 소프트웨어 제품의 소프트웨어 컴포넌트는 컴퓨팅 장치(100) 상에 실행될 수 있는 명령어 및 데이터를 포함하며, 소프트웨어 컴포넌트는 소프트웨어 제품의 기능도 함께 제공한다. 제어 모듈(102)에 대한 접근은 소프트웨어 제품에 의해 전체로서 수행되기보다는 실행할 때 소프트웨어 컴포넌트에 의해 수행된다.
도 2는 하나 이상의 실시예에 따른 예시적인 소프트웨어 컴포넌트(200)를 도시한다. 소프트웨어 컴포넌트는 하나 이상의 파일 및 소프트웨어 컴포넌트를 설명하는 메타데이터의 컬렉션이다. 소프트웨어 컴포넌트(200)는 하나 이상의 리소스 파일(202)을 포함하며, 각각의 리소스 파일은 소프트웨어 컴포넌트(200)에 대해 다양한 명령어 및/또는 데이터를 저장한다. 소프트웨어 컴포넌트(200)에 포함되는 특정 리소스 파일(202)은 소프트웨어 컴포넌트(200)의 개발자가 바라는 대로 변할 수 있다.
매니페스트(204)는 소프트웨어 컴포넌트(200)를 설명하는 메타데이터를 저장한다. 하나 이상의 실시예에서, 매니페스트(204)는 소프트웨어 컴포넌트(200)의 식별자(identifier), 소프트웨어 컴포넌트(200)의 하나 이상의 버전(version) 번호, 및 소프트웨어 컴포넌트(200)에 대한 하나 이상의 공개 설정 선언서(집합적으로 "설정 스키마(settings schema)"로 지칭됨)를 포함한다. 소프트웨어 컴포넌트(200)의 식별자는 소프트웨어 컴포넌트(200)가 장치 상에 설치된 다른 소프트웨어 컴포넌트로부터 구별되게 한다. 식별자는 소프트웨어 컴포넌트(200)의 개발자에 의해 할당된 명칭, 소프트웨어 컴포넌트(200)의 개발자의 식별자, 소프트웨어 컴포넌트(200)의 발행자 또는 분배자의 식별자, 소프트웨어 컴포넌트(200)의 버전 번호 등과 같은 다양한 상이한 방식으로 생성될 수 있다.
소프트웨어 컴포넌트(200)의 버전 번호는 소프트웨어 컴포넌트(200)의 상이한 버전이 쉽게 식별되게 한다. 하나 이상의 실시예에서, 두 개의 상이한 버전 번호, 즉, 계약 버전 번호 및 서비스 버전 번호가 매니페스트(204) 내에 포함될 수 있다. 대안적으로, 계약 버전 번호 및 서비스 버전 번호는 계약 버전 번호인 하나 이상의 엘리먼트(element) 및 서비스 버전 번호인 하나 이상의 엘리먼트와 함께 다중 엘리먼트 번호로 서로 조합될 수 있다. 이들 버전 번호는 보다 상세하게 후술되는 바와 같이 특정 상황에서 이전의 상태 설정을 유지하면서 소프트웨어 컴포넌트(200)의 업그레이드를 용이하게 하기 위해 사용될 수 있다.
매니페스트(204) 내에 선언된 공개 설정 스키마는 소프트웨어 컴포넌트에 의해 활용되는 하나 이상의 공개 설정의 각각의 공개 설정의 명칭, 데이터 유형 및 디폴트 값(default value)을 한정한다. 스키마 내의 각각의 공개 설정 선언서는 그러한 명시하는 설정에 대한 소프트웨어 컴포넌트 런타임 접근이 정확한 포맷으로 존재한다(정확한 포맷의 검증은 도 1의 스토리지 제어 모듈(102)의 책임 중 하나임)는 것을 보증하기 위해 스토리지 제어 매니저에 의해 활용된다. 각각의 선언된 공개 설정에 연관된 값(예를 들어, 보다 상세하게 후술되는, 디폴트 값, 소프트웨어 컴포넌트에 의해 기록된 소프트웨어 값, 및 정책 오버라이드 값(policy override value))은 소프트웨어 컴포넌트(200)의 상이한 실행을 통해 지속된다. 예를 들어, 소프트웨어 컴포넌트(200)의 실행은 종료되고 이후에 재시작될 수 있으며, 재시작될 때, 소프트웨어 컴포넌트(200)의 설정에 대한 저장된 값이 검색될 수 있어서, 소프트웨어 컴포넌트(200)가 실행이 종료되기 전과 같은 동일한 설정 값을 갖는 동일한 설정을 갖게 할 수 있다.
설정 스키마 내에 선언된 명시하는 설정은 정수, 스트링(string), 불린(Boolean) 등과 같은 몇 개의 운영 체제 한정형 저 레벨 데이터 유형(operating system-defined low-level data type) 중 하나의 저 레벨 데이터 유형을 이용하여 선언된다. 보다 복잡한 데이터 유형을 이러한 프리미티브 데이터 유형(primitive data type) 세트의 합성물로서 나타내기 위해, 복수의 설정이 설정 스키마 내에 선언될 수 있다. 예를 들어, (예를 들어, 사용자 인터페이스의 부분들이 어느 곳에 디스플레이되어야 하는지를 식별하는) 스크린 위치, 폰트 크기 및/또는 활자체(typeface), 언어 선호, 디폴트 스토리지 위치, 볼륨 레벨 선호, 특정 입력 장치의 인에이블링(enabling) 또는 디스에이블링(disabling) 등과 같은 정보를 나타내기 위해 공개 설정이 선언될 수 있다.
어떤 값이 소프트웨어 컴포넌트(200)에 의해 저장되는지에 대한 설정은 사용자 데이터보다는 소프트웨어 상태를 지칭한다는 것이 주목되어야 한다. 비록 소프트웨어 상태의 값이 사용자 요청에 응답하여 변경될 수 있기는 하지만, 소프트웨어 상태는 운영 체제에 의해(또는 대안적으로 또 다른 애플리케이션에 의해) 관리되는 위치 및 수명을 갖는 데이터를 지칭한다. 반면에, 사용자 데이터는 사용자에 의해 명시적으로 관리되는 위치 및 수명을 갖는 데이터 파일(예를 들어, 특정 문서 파일, 그림 파일, 음악 파일 등)을 지칭한다.
소프트웨어 컴포넌트(200)는 공개 설정 및/또는 비공개 상태를 저장할 수 있다. 비공개 상태는 소프트웨어 컴포넌트의 구현에 의해 구조 및 데이터 유형이 결정되는 스키마 처리되지 않은 정보(unschematized information)를 지칭한다(즉, 비공개 상태는 설정 선언서 내에 스키마 처리되지 않는다). 비공개 상태 및 그 스토리지는 보다 상세하게 후술된다.
반면에, 공개 설정은 (도 1의 제어 모듈(102)과 같은) 소프트웨어 컴포넌트 설정 스토리지 제어 모듈에 의해 관리되는 상태를 지칭한다. 매니페스트(204)는 설정 아이덴터티, 설정에 대해 저장된 정보의 유형, 및 선택적으로는 설정에 대한 디폴트 값을 식별하는, 각각의 공개 설정에 대한 설정 선언서를 포함한다.
하나 이상의 실시예에서, 매니페스트(204) 내의 공개 설정 선언서는 세 개의 엘리먼트, 즉, 명칭, 유형 및 디폴트 값을 포함한다. 명칭은 공개 설정을 식별하는 모니커(moniker)를 명시하여, 그 공개 설정을 소프트웨어 컴포넌트(200)에 의해 사용된 다른 공개 설정으로부터 구별한다. 유형은 공개 설정에 대한 데이터 유형(예를 들어, 명시하는 값을 저장하기 위해 사용된 크기, 포맷 및 의미(semantics))을 식별한다. 정수, 불린 값(Boolean value), 문자 스트링, 날짜 및/또는 시간 값, 파일 또는 디렉토리에 대한 참조 등과 같은 다양한 상이한 설정 유형이 지원될 수 있다. 디폴트 값은 소프트웨어 컴포넌트(200)의 개발자에 의해 한정된 바와 같은 공개 설정에 대한 디폴트 값을 식별한다. 비록 설정의 값이 보다 상세하게 후술되는 바와 같이 이후에 변경될 수 있기는 하지만, 이러한 디폴트 값은 유지된다. 하나 이상의 실시예에서, 비어 있는 스트링의 디폴트 값, "널(null)" 또는 영의 값, 등이 사용될 수 있기는 하지만, 각각의 설정은 디폴트 값을 갖는다. 다른 실시예에서, 어떠한 디폴트 값도 개발자에 의해 제공되지 않을 수 있다.
도 1을 다시 참조하면, 각각의 소프트웨어 컴포넌트(112 내지 118)는 비공개 상태 및/또는 공개 설정을 유지할 수 있다. 각각의 소프트웨어 컴포넌트(112 내지 118)는 요구되는 모든 데이터 또는 정보를 저장할 수 있으며, 그의 비공개 상태를 제어 모듈(102)로 사전 선언하도록 제약되지 않는다. 그러나, 비공개 상태 데이터의 위치는 운영 체제에 의해 제어된다. 스토리지 제어 모듈(102)은 또는 대안적으로 컴퓨팅 장치(100)의 운영 체제의 또 다른 컴포넌트 또는 모듈은 각각의 소프트웨어 컴포넌트에게 각각의 소프트웨어 컴포넌트가 그의 비공개 상태를 저장할 수 있는 파일 시스템 계층 또는 다른 등록 저장소(registration store) 내의 하나 이상의 위치를 제공한다.
반면에, 공개 설정은 스토리지 제어 모듈(102)에 의해 관리되는 설정을 지칭한다. 각각의 소프트웨어 컴포넌트(112 내지 118)는 제어 모듈(102)이 공개 설정으로서 유지하게 하기 위해 요구되는 특정 설정을 사전 선언한다. 이러한 사전 선언은 예를 들어 전술된 바와 같이 매니페스트의 공개 설정 선언서를 사용하여 수행된다. 공개 설정 선언서는 실행 중인 소프트웨어 컴포넌트가 공개 설정에 접근하려고 하기 전에 제어 모듈(102)로 사전 선언된다.
공개 설정의 사전 선언은 제어 모듈(102)에게 그들 설정에 대한 적절한 포맷의 정확한 명시를 제공한다. 그 공개 설정을 사전 선언함으로써, 소프트웨어 컴포넌트는 사전 선언된 공개 설정에만 접근하도록 제약된다. 예를 들어, 상태는 제어 모듈(102)에 의해 사전 선언된 바와 같은 명칭을 가지며, 사전 선언된 바와 같은 설정 유형을 갖고, 사전 선언된 바와 같은 디폴트 값을 갖도록 제약된다.
도 3은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 것을 구현하는 예시적인 컴퓨팅 장치(300)를 도시한다. 컴퓨팅 장치(300)는 예를 들어 도 1의 컴퓨팅 장치(100)일 수 있다. 설명을 용이하게 하기 위해, 단일 소프트웨어 컴포넌트(304)를 갖는 소프트웨어 제품(302)이 도 3에 도시된다. 그러나 전술된 바와 같이 소프트웨어 제품 내에 복수의 소프트웨어 컴포넌트가 포함될 수 있다는 것이 이해되어야 한다.
소프트웨어 컴포넌트(304)는 소프트웨어 컴포넌트 상태 저장소(306) 내에 공개 설정 값 및/또는 비공개 상태를 저장할 수 있다. 소프트웨어 컴포넌트 상태 저장소(306)는 예를 들어 도 1의 저장소(104)일 수 있다. 저장소(306)의 비공개 상태부(308)는 컴퓨팅 장치(300)의 운영 체제에 의해 결정된 위치에 소프트웨어 컴포넌트 개발자의 재량으로 임의의 정보를 저장하는 반면, 저장소(306)의 공개 설정부(310)는 공개 설정 값을 저장한다. 소프트웨어 컴포넌트(304)는 비공개 상태부(308)에 직접 접근할 수 있어서, 컴퓨팅 장치(300)의 운영 체제에 의해 명시된 위치에 요구된 대로 비공개 상태를 저장하고, 검색하며 그리고 그와 달리 그 비공개 상태에 접근할 수 있다. 소프트웨어 컴포넌트(304)는 운영 체제에 의해 이러한 위치를 알게 될 수 있거나, 또는 대안적으로 그 위치는 운영 체제에 의해 추출될 수 있으며, 소프트웨어 컴포넌트는 운영 체제에 의해 노출된 하나 이상의 애플리케이션 프로그래밍 인터페이스(application programming interface(API)) 메소드를 통해 비공개 상태부(308)에 접근할 수 있다.
그러나, 소프트웨어 컴포넌트(304)는 소프트웨어 컴포넌트 설정 스토리지 제어 모듈(312)을 통해 공개 설정부(310)에 접근한다. 비록 제어 모듈(312)이 별개의 모듈 또는 컴포넌트로서 대안적으로 구현될 수 있기는 하지만, 제어 모듈(312)은 대체로 컴퓨팅 장치(300) 상에서 실행하는 운영 체제의 일부로서 구현된다. 따라서, 공개 설정부(310)를 저장하고, 검색하며 그리고 그와 달리 그 공개 설정부(310)에 접근하기 위한 소프트웨어 컴포넌트(304)로부터의 요청은 소프트웨어 컴포넌트(304)에 의해 직접적으로 수행되는 대신에 제어 모듈(312)에 의해 저장소(306)로 수행된다. 제어 모듈(312)은 예를 들어 도 1의 제어 모듈(102)일 수 있다.
소프트웨어 컴포넌트(304)에 의해 사용된 공개 설정의 명칭은 스토리지 제어 모듈(312)에 대한 공개 설정을 식별하며, 제어 모듈(312)이 그 공개 설정을 소프트웨어 컴포넌트(304)에 의해 사용된 다른 공개 설정으로부터 구별하게 한다. 제어 모듈(312)은 전술된 바와 같이 명칭 부여된 공개 설정을 승인하기 위해 설정 스키마를 활용한다. 소프트웨어 컴포넌트(304)에 의해 사용된 공개 설정의 이러한 명칭은 설정 스키마 내에 선언된 바와 같은 설정의 명칭일 수 있거나, 또는 대안적으로 설정 스키마 내에 선언된 바와 같은 설정의 명칭에 연관된 또 다른 명칭이며/이거나 공개 설정에 대해 보다 복잡한 유형 시스템을 수용하기 위한 보다 복잡한 모니커일 수 있다.
비공개 상태부(308)는 또한 폐기 가능한 상태부(314)를 선택적으로 포함한다. 폐기 가능한 상태부(314)는 낮은 값이라고 간주되어 삭제될 수 있는 비공개 상태를 저장하면서 소프트웨어 컴포넌트(304)의 적절한 동작을 유지한다. 하나 이상의 실시예에서, 폐기 가능한 상태부(314)는 저장소(306)로부터 삭제된 후에 쉽게 재결정될 수 있는 비공개 상태를 저장한다. 예를 들어, 소프트웨어 컴포넌트(304)는 하나의 유형의 성능 캐시(performance cache)로서 폐기 가능한 상태부(314)를 사용할 수 있어서, 소프트웨어 컴포넌트(304)가 일부 다른 소프트웨어 컴포넌트로부터 계산하거나 획득할 수 있는 정보(예를 들어, 긴 계산의 중간 결과)를 저장할 수 있다. 소프트웨어 컴포넌트(304)가 정보를 사용하기를 요구할 때마다 정보를 재계산하거나 재획득하기 보다는 폐기 가능한 상태부(314)로부터 정보를 검색함으로써 소프트웨어 컴포넌트(304)의 성능이 향상될 수 있다. 그러나, 폐기 가능한 상태부(314)가 삭제되면, 정보가 여전히 재계산되거나 재획득될 수 있어서, 소프트웨어 컴포넌트(304)의 적절한 동작을 유지할 수 있다.
폐기 가능한 상태부(314)를 가지면, 다양한 상이한 사용 시나리오가 용이해질 수 있다. 예를 들어, 보다 상세하게 후술되는 바와 같이, 복수의 상이한 리셋 레벨이 이용될 수 있는데, 그 중 하나의 리셋 레벨은 폐기 가능한 상태부(314) 내의 비공개 상태의 삭제일 수 있다. 또 다른 예로서, 스토리지 공간의 재생이 요구될 때, 폐기 가능한 상태부(314) 내의 정보는 삭제될 수 있으며, 폐기 가능한 상태부(314)는 다른 사용을 위해 재생될 수 있다.
소프트웨어 컴포넌트 설정 스토리지 제어 모듈(312) 또는 컴퓨팅 장치(300)의 운영 체제의 또 다른 컴포넌트 또는 모듈은 소프트웨어 컴포넌트 상태 저장소(306)를 제어한다. 이러한 제어는 저장소(306)가 (예를 들어, 파일 시스템 계층, 표, 리스트 등을 이용하여) 조직되는 방식은 물론 저장소(306)의 위치(예를 들어, 특정 스토리지 장치 또는 장치들, 특정 파일 시스템 경로 등)를 포함한다.
소프트웨어 컴포넌트 상태 저장소(306)는 다양한 상이한 방식으로 구현될 수 있다. 예를 들어, 저장소(306)는 (예를 들어, 도 4에 따라 보다 상세하게 후술되는 바와 같이) 파일 시스템 계층을 사용하여, 하나 이상의 표, 하나 이상의 데이터베이스, 하나 이상의 리스트, 다른 기록 등을 사용하여 구현될 수 있다.
하나 이상의 실시예에서, 소프트웨어 컴포넌트 상태 저장소(306)는 컴퓨팅 장치(300)의 상이한 사용자 및 상이한 소프트웨어 컴포넌트(304)에 대해 상이한 폴더가 사용되는 상태에서 파일 시스템 계층 내에서 구현된다. 파일 시스템 계층의 일 부분은 비공개 상태부(308)에 연관될 수 있는 반면, 파일 시스템 계층의 다른 부분은 공개 설정부(310)에 연관될 수 있다.
도 4는 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태를 저장하기 위한 예시적인 파일 시스템 계층을 도시하는 블록 다이어그램이다. 도 4는 소프트웨어 컴포넌트 상태 저장소(400)를 도시하며, 소프트웨어 컴포넌트 상태 저장소(400)는 예를 들어 도 3의 저장소(306) 또는 도 1의 저장소(104)일 수 있다.
도 4에 도시된 바와 같이, 저장소(400)는 상부 또는 제 1 레벨(404), 제 2 레벨(406), 제 3 레벨(408) 및 제 4 레벨(410)을 갖도록 조직된다. 제 1 레벨(404)은 사용자에 대한 디렉토리 또는 폴더를 저장한다. 컴퓨팅 장치 상의 상이한 사용자에게 이용 가능한 특정 소프트웨어 컴포넌트는 변할 수 있으며, 상이한 사용자에 의해 사용된 동일한 소프트웨어 컴포넌트는 상이한 공개 설정 및/또는 비공개 상태를 가질 수 있다. 비록 대안적으로 상부 레벨(404)이 컴퓨팅 장치 상의 각각의 추가 사용자에 대한 추가 디렉토리 또는 폴더를 포함할 수 있기는 하지만, 도 4의 예에서는 단일 사용자(사용자 A)가 존재한다.
제 2 레벨(406)은 소프트웨어 컴포넌트에 대한 디렉토리 또는 폴더를 저장한다. 상이한 소프트웨어 컴포넌트에 대한 설정은 상이한 위치에 저장된다. 각각의 소프트웨어 컴포넌트는 상부 레벨(404) 내의 폴더 아래에 그 자신의 서브-디렉토리 또는 서브-폴더를 갖는다. 비록 대안적으로 제 2 레벨(406)이 추가 소프트웨어 컴포넌트에 대한 추가 디렉토리 또는 폴더를 포함할 수 있거나 또는 대안적으로 단일 소프트웨어 컴포넌트에 대한 하나의 디렉토리 또는 폴더를 포함할 수 있기는 하지만, 도 4의 예에서는 두 개의 소프트웨어 컴포넌트가 존재한다.
제 3 레벨(408)은 공개 설정 및 비공개 상태에 대한 디렉토리 또는 폴더를 저장한다. 각각의 소프트웨어 컴포넌트는 공개 설정 및 비공개 상태를 가질 수 있으며, 공개 설정 및 비공개 상태를 저장하기 위해 별개의 디렉토리 또는 폴더가 제 3 레벨(408) 내에 포함된다. 공개 서브-디렉토리 또는 서브-폴더 및 비공개 서브-디렉토리 또는 서브-폴더가 제 2 레벨(406) 내의 각각의 소프트웨어 컴포넌트 디렉토리 또는 폴더 아래에 포함된다. 하나의 소프트웨어 컴포넌트에 대한 공개 설정을 저장하는 하나 이상의 파일이 소프트웨어 컴포넌트에 대한 폴더 아래에 공개 서브-폴더 내에 포함될 수 있다. 별개의 파일이 각각의 공개 설정에 대한 공개 서브-폴더 내에 포함될 수 있거나, 또는 대안적으로 복수의 공개 설정이 공개 서브-폴더 내의 파일 내에 포함될 수 있다.
제 4 레벨(410)은 폐기 가능한 비공개 상태를 위한 디렉토리 또는 폴더를 저장한다. 비공개 상태는 전술된 바와 같이 폐기 가능한 상태를 포함할 수 있다. 폐기 가능한 비공개 상태에 대한 정보는 제 4 레벨(410) 내의 폐기 가능한 서브-폴더 내에 하나 이상의 파일로서 저장되는 반면, 다른 비공개 상태에 대한 정보는 제 3 레벨(408) 내의 비공개 서브-폴더 내의 하나 이상의 파일로서 저장된다.
도 3을 다시 참조하면, 소프트웨어 컴포넌트 설정 스토리지 제어 모듈(312)은 하나 이상의 공개 설정 선언서(320)를 획득한다. 각각의 공개 설정 선언서(320)는 전술된 바와 같이 소프트웨어 컴포넌트(304)에 대한 하나의 사전 선언된 설정(pre-declared setting)이다. 하나 이상의 실시예에서, 공개 설정 선언서(320)는 소프트웨어 컴포넌트(304)가 컴퓨팅 장치(300) 상에 설치될 때 설치 컴포넌트 또는 모듈에 의해 제어 모듈(312)로 제공된다. 대안적으로, 제어 모듈(312)은 공개 설정 선언서(320)를 상이한 방식으로 획득할 수 있다. 예를 들어, 공개 설정 선언서(320)는 원격 서비스로부터 (예를 들어, 인터넷 또는 또 다른 네트워크를 통해), 컴퓨팅 장치(300)의 또 다른 로컬 저장소(제거 가능한 또는 고정식 컴퓨터 스토리지 매체)로부터, 또 다른 원격 서비스 또는 소스로부터, 또 다른 컴퓨팅 장치로부터 등등 제어 모듈(312)에 의해 검색될 수 있다.
일단 획득되면, 제어 모듈(312)은 공개 설정 선언서(320)를 집행한다. 실행 중에, 제어 모듈(312)은 소프트웨어 컴포넌트로부터 공개 설정부(310) 내의 공개 설정에 접근하기 위한 요청을 수신한다. 제어 모듈(312)은 요청이 공개 설정 선언서(320)를 따르는 것을 검증하기 위해 접근을 점검한다. 예를 들어, 제어 모듈(312)은 하나의 접근의 설정 아이덴터티 및 유형이 공개 설정 선언서(320) 내에 선언된 설정 아이덴터티 및 유형을 따르는지를 검증한다.
제어 모듈(312)은 또한 애플리케이션 프로그래밍 인터페이스(application programming interface(API))(326)를 노출시켜서, 소프트웨어 컴포넌트(304)가 소프트웨어 컴포넌트(304)의 공개 설정에 대한 접근을 요청하게 한다. 공개 설정에 대한 소프트웨어 값을 기록하는 것, 공개 설정에 대한 유효 값을 판독하는 것, 공개 설정 스키마를 열거하는 것, 설정의 유효 값을 소프트웨어 컴포넌트(304)에 대한 디폴트 값으로 다시 되돌리기 위해 공개 설정에 대한 이전에 기록된 소프트웨어 값을 제거하는 것 등과 같은 다양한 상이한 접근이 허용된다.
공개 설정에 대한 소프트웨어 값이 기록되는 것을 요청하기 위해, 소프트웨어 컴포넌트(304)는 설정의 명칭과 요구된 값을 제공한다. 공개 설정에 대한 소프트웨어 값을 기록함으로써, 소프트웨어 컴포넌트(304)는 설정의 사전 선언서의 일부로서 개발자에 의해 설정되었던 디폴트 값을 오버라이드(override)할 수 있다.
공개 설정에 대한 소프트웨어 값이 기록되어야 하는 요청에 응답하여, 제어 모듈(312)은 요청이 설정의 사전 선언된 포맷을 따르는지를 검증한다. 이러한 검증은 요청 내에 포함된 설정의 명칭이 사전 선언되었는지를 검증하는 것 및 요구된 값의 유형이 설정에 대해 사전 선언되었던 것과 동일한지를 검증하는 것을 포함한다. 요청이 설정의 사전 선언된 포맷을 따르면, 요청은 공개 설정부(310) 내의 제공된 명칭에 대한 제공된 값을 저장함으로써 수행된다. 그러나, 요청이 설정의 사전 선언된 포맷을 따르지 않으면, 요청은 거부된다.
예를 들어, 소프트웨어 컴포넌트(304)가 특정 값이 특정 설정에 대한 값으로서 기록되는 것을 요청한다고 가정하자. 특정 설정의 명칭이 소프트웨어 컴포넌트(304)에 대해 사전 선언되었던 설정의 명칭이 아니면, 제어 모듈(312)은 요청을 거부한다. 특정 설정의 명칭이 소프트웨어 컴포넌트(304)에 대해 사전 선언되었던 설정의 명칭에는 부합하지만(그 명칭과 동일하지만) 설정 유형이 상이하면(예를 들어, 명칭 부여된 설정에 대한 설정 유형은 불린 값으로서 사전 선언되었지만, 기록되려고 하는 값은 스트링 값이면), 제어 모듈(312)은 요청을 거부한다. 그러나, 특정 설정의 명칭이 소프트웨어 컴포넌트(304)에 대해 사전 선언되었던 설정의 명칭에 부합하고(그 명칭과 동일하고) 설정 유형이 사전 선언된 설정 명칭에 대해 사전 선언되었던 설정 유형에 부합하면(그 설정 유형과 동일하면), 제어 모듈(312)은 요청을 수행한다.
설정에 대한 값이 판독되어야 하는 요청에 응답하여, 제어 모듈(312)은 요청이 설정의 사전 선언된 포맷을 따르는지를 검증한다. 이러한 검증은 요청 내에 포함되는 설정의 명칭이 사전 선언되었는지를 검증하는 것을 포함한다. 요청이 설정의 사전 선언된 포맷을 따르면, 요청은 요청 내에 명칭 부여된 설정에 대한 값을 공개 설정부(310)로부터 검색함으로써 수행된다. 요청 내의 명칭 부여된 설정에 대해 복수의 값이 저장되어 있으면, 보다 상세하게 후술되는 바와 같이 다양한 알고리즘 또는 규칙에 따라, 검색된 복수의 값 중 특정된 하나의 값이 결정될 수 있다. 그러나, 요청이 설정의 사전 선언된 포맷을 따르지 않으면, 요청은 거부된다.
제어 모듈(312)이 공개 설정부(310)에 대한 접근을 관리하므로, 제어 모듈(312)은 소프트웨어 컴포넌트(304)가 또 다른 설정에 대한 값을 부주의로 중첩 기록하지 못하게 할 수 있는 것을 물론 설정에 대한 부정확한 값 유형을 기록하지 못하게 할 수 있다는 것이 이해되어야 한다. 소프트웨어 컴포넌트(304)는 공개 설정부(310)에 직접 접근하지 않는다. 대신에, 제어 모듈(312)은 소프트웨어 컴포넌트(304)로부터의 요청에 응답하여 공개 설정부(310)에 접근하며, 공개 설정부(310) 내의 적절한 위치에 값을 기록한다. 제어 모듈(312)에 의한 이러한 제어는 소프트웨어 컴포넌트(304)가 또 다른 소프트웨어 컴포넌트의 설정에 대한 값을 부주의로 중첩 기록하지 못하게 하는 것이 또한 주목되어야 한다. 예를 들어, 상이한 소프트웨어 컴포넌트에 대한 공개 설정 값은 정의에 의해 상이한 저장소 내에 유지된다(그에 대한 예시적인 예가 도 4를 참조하여 설명된다). 저장소들이 별개로 유지되므로, 상이한 소프트웨어 컴포넌트들이 관련될 필요가 없어서, 그들의 선언된 설정에 대한 소프트웨어 값을 변경하는 것은 임의의 다른 컴포넌트에 연관된 소프트웨어 값을 변경시킬 것이다. 또한, 전술된 바와 같이, 제어 모듈(312)은 상이한 사용자에 대한 공개 설정을 공개 설정부(310)의 상이한 부분 내에 저장할 수 있다. 컴퓨팅 장치(300)의 현재 사용자는 컴퓨팅 장치(300)로 현재 로그인되는 특정 사용자를 식별하기 위해, 컴퓨팅 장치(300)의 프로세서를 사용하도록 현재 할당되는 특정 사용자를 식별하기 위해 등등 또 다른 컴포넌트 또는 모듈과 통신하는 것과 같은 다양한 상이한 방식으로 결정될 수 있다. 따라서, 비록 상이한 사용자가 동일한 소프트웨어 컴포넌트를 사용할 수 있기는 하지만, 상이한 사용자에 대해 상이한 공개 설정이 저장된다.
또한, 소프트웨어 컴포넌트(304)를 실행하는 것은 어떤 것이 생성되고 있는 소프트웨어 컴포넌트(304)의 경우로서 대체로 지칭되는지를 초래한다. 하나 이상의 실시예에서, 동일한 현재 사용자에 대해 소프트웨어 컴포넌트(304)의 복수의 상이한 경우가 동시에 실행될 수 있다. 예를 들어, 동일한 소프트웨어 컴포넌트(304)를 동시에 여러 번 실행하기 위한 요청들이 하나의 사용자로부터 그리고/또는 또 다른 컴포넌트 또는 모듈로부터 수신될 수 있다. 이러한 상황에서, 이들 복수의 상이한 경우는 공개 설정부(310)의 동일한 부분을 공유한다. 따라서, (제어 모듈(312)을 통해) 소프트웨어 컴포넌트(304)의 하나의 경우에 의해 공개 설정부(310)에 기록된 설정 값은 (제어 모듈(312)을 통해) 소프트웨어 컴포넌트(304)의 다른 경우에 의해 이후에 판독될 수 있다. 마찬가지로, 이들 복수의 상이한 경우는 또한 비공개 상태부(306)의 동일한 부분을 공유한다.
예를 들어, 소프트웨어 컴포넌트(304)가 스크래치패드(scratchpad) 기능을 제공하여 사용자가 텍스트 노트를 생성하고 저장하게 한다고 가정하자. 소프트웨어 컴포넌트(304)의 상이한 경우가 동일한 공개 설정을 공유하여, 요구된 언어, 폰트 크기, 활자체 등의 변경과 같은 설정 변경이 소프트웨어 컴포넌트(304)의 복수의 경우에 대해 동일하게 된다.
본 명세서에서 설명된 바와 같이, 제어 모듈(312)이 공개 설정에 대한 접근을 소프트웨어 컴포넌트 기반으로 관리한다는 것이 주목되어야 한다. 공개 설정에 대한 접근을 요청하는 소프트웨어 제품 대신에, 소프트웨어 제품을 이루는 개별 소프트웨어 컴포넌트가 공개 설정에 대한 접근을 요청한다. 따라서, 하나의 소프트웨어 제품의 일부로서 실행될 때 소프트웨어 컴포넌트에 의해 공개 설정에 수행된 변경은 또 다른 소프트웨어 제품의 일부로서 실행될 때 그 소프트웨어 컴포넌트에 의해 이후에 검색될 수 있다는 것이 이해되어야 한다.
하나 이상의 실시예에서, 소프트웨어 컴포넌트 설정 스토리지 제어 모듈(312)은 동일한 설정에 대해 복수의 상이한 값을 유지한다. 이들 상이한 값은 (디폴트 값을 제공하는) 개발자, 소프트웨어 컴포넌트(304), 컴퓨팅 장치(300)의 관리자(administrator), 컴퓨팅 장치(300)가 결합되는 네트워크의 관리자 등과 같은 상이한 개체(entity)에 의해 제공될 수 있다. 개발자로부터의 디폴트 값을 오버라이드하는 관리자 오버라이드 값(administrator override value), 소프트웨어 컴포넌트(304)에 의해 설정된 값을 오버라이드하는 관리자 오버라이드 값 등과 같은 특정 다른 값을 오버라이드하기 위해, 이들 상이한 값이 제공된다. 관리자 오버라이드 값은 또한 정책 오버라이드 값으로 지칭될 수 있다. 이들 상이한 값은 공개 설정부(310)의 상이한 부분 내에서와 같이 상이한 방식으로 유지될 수 있다. 예를 들어, (예를 들어, 도 4의 레벨(408) 내의) 공개 폴더는 복수의 서브-폴더를 가질 수 있는데, 각각의 서브-폴더는 상이한 개체에 상응한다. 또 다른 예로서, 소프트웨어 컴포넌트(304)로부터의 값이 (예를 들어, 도 4의 레벨(408) 내의) 공개 폴더 내에 유지될 수 있는 반면, 다른 개체로부터의 값은 다른 폴더, 표, 리스트 등 내에 유지된다. 제어 모듈(312) 또는 또 다른 컴포넌트 또는 모듈은 이러한 폴더, 표, 리스트 등에 대한 접근 권리를 집행할 수 있어서, 제어 모듈(312)이 이러한 폴더, 표, 리스트 등에 접근하게 하지만 소프트웨어 컴포넌트(304)는 이러한 폴더, 표, 리스트 등에 접근하지 못하게 할 수 있다.
이들 상이한 개체는 설정에 대한 그들 각각의 값을 다양한 상이한 방식으로 제공할 수 있다. 개발자로부터의 디폴트 값은 전술된 바와 같이 공개 설정 선언서(320) 내에 제공될 수 있다. 소프트웨어 컴포넌트(304)로부터의 값은 API(326)를 통해 기록 요청 내에 포함될 수 있다. 관리자로부터의 값은 API(326)를 통해 기록 요청 내에 포함될 수 있으며, 또 다른 인터페이스를 통해 제어 모듈(312)로 제공될 수 있고, 관리자 또는 또 다른 컴포넌트 또는 모듈에 의해 저장소(306)의 (또는 또 다른 저장소의) (관리자 및 제어 모듈(312) 양자에 공지된) 공지된 위치 내에 저장될 수 있으며, 등등이다.
하나 이상의 실시예에서, 값을 기록하거나 그와 달리 그 값을 저장하는 개체는 기록 또는 저장이 발생하는 방식에 기반하여 내재적으로 주어진다. 예를 들어, 공개 설정 선언서(320) 내의 값은 개발자로부터의 디폴트 값이며, API(326)를 통해 수신된 값은 소프트웨어 컴포넌트(304)로부터의 값이고, 등등이다. 대안적으로, 값을 기록하거나 그와 달리 그 값을 저장하는 개체는 다른 방식으로 식별될 수 있다. 예를 들어, 개체는 기록 요청을 수행하기 전에 그 자체의 식별자를 제공할 수 있으며, 개체는 기록 요청의 일부로서 그 자체의 식별자를 제공할 수 있고, 등등이다.
소프트웨어 컴포넌트(304)가 설정에 대한 값을 판독하는 것을 요청할 때, 소프트웨어 컴포넌트(304)는 설정에 대한 복수의 값 중 자신이 요청하는 값을 식별할 수 있다. 예를 들어, 소프트웨어 컴포넌트(304)는 자신이 디폴트 값, 소프트웨어 컴포넌트(304)에 의해 설정된 값, 등을 요청하는지를 식별할 수 있다. 하나 이상의 실시예에서, 소프트웨어 컴포넌트(304)는 설정에 대한 복수의 값 중 자신이 요청하는 값의 식별자를 요청에 포함시킴으로써 설정에 대한 복수의 값 중 자신이 요청하는 값을 식별할 수 있다. 대안적으로, 소프트웨어 컴포넌트(304)는, 상이한 값에 대해 API(326)의 상이한 메소드(예를 들어, 디폴트 값을 판독하는 하나의 메소드, 소프트웨어 컴포넌트(304)에 의해 이전에 설정된 값을 판독하는 또 다른 메소드 등)를 작동시키는 등과 같은 다른 방식으로 설정에 대한 복수의 값 중 자신이 요청하는 값을 식별할 수 있다.
하나 이상의 실시예에서, 소프트웨어 컴포넌트(304)는 그것이 설정에 대한 "유효 값"을 판독하는 것을 요청하는지를 식별할 수 있다. 이러한 요청에 응답하여, 제어 모듈(312)은 (판독 요청이 설정의 사전 선언된 포맷을 따르는 것으로서 검증된다는 가정하면서) 설정에 대한 유효 값을 결정하며, 유효 값을 소프트웨어 컴포넌트(304)로 반환한다. 유효 값은 특정 값이 특정 알고리즘 또는 규칙 세트에 따라 결정된 상태에서 설정에 대해 저장된 값들 중 하나의 값이다. 이러한 알고리즘 또는 규칙 세트는 복수의 값 중 어떤 값이 복수의 값 중 나머지 값에 대한 우선권을 가지며 따라서 설정 값에 대한 요청에 응답하여 반환되어야 하는 값인지를 설명한다.
하나 이상의 실시예에서, 제어 모듈(312)은 이하의 규칙에 따라 유효 값을 결정한다. 관리자에 의해 설정된 설정에 대한 값이 존재하면, 그 값이 유효 값이 된다. 그렇지 않고, 소프트웨어 컴포넌트(304)에 의해 설정된 설정에 대한 값이 존재하면, 그 값이 유효 값이 된다. 그렇지 않으면, 디폴트 값이 유효 값이 된다.
하나 이상의 실시예에서, 제어 모듈(312)은 이하의 규칙에 따라 유효 값을 결정한다. 소프트웨어 컴포넌트(304)에 의해 설정된 값을 오버라이드하는 관리자 오버라이드 값이 존재하면, 그 값이 유효 값이 된다. 그렇지 않고, 소프트웨어 컴포넌트(304)에 의해 설정된 설정에 대한 값이 존재하면, 그 값이 유효 값이 된다. 그렇지 않고, 디폴트 값 세트를 오버라이드하는 관리자 오버라이드 값이 존재하면, 그 값이 유효 값이 된다. 그렇지 않으면, 디폴트 값이 유효 값이 된다.
또한, 하나 이상의 실시예에서, 공개 설정들이 서로 그룹핑(grouping)되어 원자 유닛(atomic unit)을 형성할 수 있다. 복수의 공개 설정이 서로 그룹핑될 때, 제어 모듈(312)은 서로 그룹핑된 설정들을 그룹으로서 공개 설정부(310)에 기록한다. 비록 요구된다면 소프트웨어 컴포넌트(304)(또는 그에 대한 상이한 경우)가 이들 서로 그룹핑된 공개 설정 중 개별 공개 설정을 접근하여 판독하며/하거나 기록할 수 있기는 하지만, 제어 모듈(312)은 그들이 그룹으로서 공개 설정부(310)에 기록되는 것을 보장한다.
예를 들어, 디스플레이되는 직사각형의 위치를 식별하기 위해 네 개의 값(예를 들어, "x" 차원 내의 좌측 상단 값, "y" 차원 내의 좌측 상단 값, "x" 차원 내의 우측 하단 값, 및 "y" 차원 내의 우측 하단 값)이 사용될 수 있다. 이들 네 개의 값 중 각각의 값은 상이한 공개 설정일 수 있으며, 이들 네 개의 공개 설정은 서로 그룹핑되는 것으로 선언될 수 있다. 따라서, 제어 모듈(312)이 이들 네 개의 값 중 하나 이상의 값을 기록하기 위한 요청을 소프트웨어 컴포넌트(304)로부터 수신하면, 제어 모듈(312)은 네 개의 값을 모두 공개 설정부(310)에 기록한다. 따라서, 제어 모듈(312)은 소프트웨어 컴포넌트의 하나의 경우가 공개 설정부(310) 내에 저장되는 네 개의 값 중 하나의 값을 기록하는 상황(이러한 예에서 저장된 좌표가 무의미하게 되는 것을 초래할 수 있는 상황)이 발생하지 못하게 한다.
또한, 하나 이상의 실시예에서, API(326)는 소프트웨어 컴포넌트(304)가 그 자신의 공개 설정 값에 접근하게 하는 하나 이상의 메소드를 노출시킨다. 상이한 유형의 접근(예를 들어, 판독 접근, 기록 접근, 열거 접근 등)을 허용하기 위해 상이한 메소드가 노출될 수 있다. 이하의 표 1은 소프트웨어 컴포넌트(304)에 의해 작동될 수 있는 이러한 메소드의 예를 설명한다.
Figure 112011097540742-pct00001
도 5는 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 장치에 대한 예시적인 프로세스(500)를 도시하는 흐름도이다. 프로세스(500)는 도 1의 컴퓨팅 장치(100) 또는 도 3의 컴퓨팅 장치(300)와 같은 장치에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합으로 구현될 수 있다. 프로세스(500)는 소프트웨어 컴포넌트 설정에 대한 접근을 제어하기 위한 예시적인 프로세스이며, 소프트웨어 컴포넌트 설정에 대한 접근을 제어하는 추가 설명은 상이한 도면을 참조하여 본 명세서 내에 포함된다.
프로세스(500)에서, 소프트웨어 컴포넌트에 대한 하나 이상의 설정 선언서가 수신된다(단계 502). 각각의 설정 선언서는 선언된 설정에 접근하기 위한 적절한 포맷을 표시한다. 설정 선언서는 전술된 바와 같이 다양한 상이한 방식으로 수신될 수 있다.
설정 선언서의 변경 불가능한 기록이 유지된다(단계 504). 이러한 기록을 유지하는 것은 예를 들어 선언된 설정에 대한 접근이 적절한 포맷을 따르는지에 대한 이후의 검증을 허용한다. 이렇게 유지하는 것은 예를 들어 단계 502에서 수신되는 매니페스트를 저장하는 것 및/또는 단계 502에서 수신되는 매니페스트로부터 획득된 디폴트 값을 포함하는 설정을 저장하는 것일 수 있다. 이러한 정보는 소프트웨어 컴포넌트의 공개된 매니페스트 계약의 변경 불가능한 부분이므로, 소프트웨어 컴포넌트 구현을 실행하는 것은 설정 스키마를 변경시킬 수 없다.
선언된 설정 중 하나 이상의 설정 각각에 대해, 복수의 값이 수신된다(단계 506). 이들 복수의 값은 전술된 바와 같이 다양한 상이한 개체 등으로부터의 값을 포함할 수 있다.
수신된 복수의 값 각각은 동시에 유지된다(단계 508). 복수의 값 각각이 저장되므로, 복수의 값의 상이한 값은 전술된 바와 같이 상이한 요청에 대한 응답으로 반환될 수 있다.
도 6은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 설정 값에 대한 접근을 제어하는 장치에 대한 또 다른 예시적인 프로세스(600)를 도시하는 흐름도이다. 프로세스(600)는 도 1의 컴퓨팅 장치(100) 또는 도 3의 컴퓨팅 장치(300)와 같은 장치에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어 또는 그들의 조합으로 구현될 수 있다. 프로세스(600)는 소프트웨어 컴포넌트 설정에 대한 접근을 제어하기 위한 예시적인 프로세스이며, 소프트웨어 컴포넌트 설정에 대한 접근을 제어하는 추가 설명은 상이한 도면을 참조하여 본 명세서 내에 포함된다.
프로세스(600)에서, 설정의 값에 접근하기 위한 요청이 소프트웨어 컴포넌트로부터 수신된다(단계 602). 이러한 요청은 예를 들어 전술된 바와 같이 소프트웨어 컴포넌트 설정 스토리지 제어 모듈에 의해 노출된 API를 통해 수신될 수 있다.
요청은 설정에 대한 선언된 포맷과 비교되며(단계 604), 요청이 설정에 대한 적절한 포맷을 따르는지 여부에 대한 점검이 수행된다(단계 606). 이러한 점검은 전술된 바와 같이 설정 명칭, 설정 유형, 원자성(automicity)이 유지되는지 여부 등을 점검하는 것과 같은 다양한 동작을 포함할 수 있다.
요청이 설정에 대한 적절한 포맷을 따르면, 요청된 접근이 수행된다(단계 608). 그러나, 요청이 설정에 대한 적절한 포맷을 따르지 않으면, 요청된 접근이 거부되며(단계 610) 따라서 수행되지 않는다.
본 명세서에서 설명된 소프트웨어 컴포넌트 상태 기법에 대한 접근을 제어하는 것은 소프트웨어 컴포넌트에 대한 공개 설정에 대한 제어를 제공하여, 개발자가 활용하는 보다 일관된 설정 모델을 제공하는 것은 물론 설정 값의 부주의한 중첩 기록(overwriting)를 방지하게 한다. 또한, 본 명세서에서 설명된 소프트웨어 컴포넌트 상태 기법에 대한 접근을 제어하는 것은 다양한 사용 시나리오를 제공한다.
하나 이상의 실시예에서, 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것은 소프트웨어 컴포넌트에 대한 복수의 레벨의 리셋(reset)을 허용한다. 상이한 리셋 레벨이 이용될 수 있는데, 각각의 상이한 리셋 레벨은 소프트웨어 컴포넌트에 대한 비공개 상태 및/또는 공개 설정을 변경시킨다. 예를 들어, 하나의 리셋 레벨은 비공개 상태부의 폐기 가능한 상태부 내의 모든 상태를 삭제할 수 있지만, 비공개 상태부의 잔류 부분 및 공개 설정부를 변경되지 않은 상태로 남겨둘 수 있다. 이러한 리셋 이후에, (폐기 가능한 상태부 내를 제외한) 비공개 상태부 및 공개 설정부 내에 유지된 소프트웨어 컴포넌트의 값은 소프트웨어 컴포넌트에 여전히 접근 가능할 것이다. 또 다른 예로서, 또 다른 리셋 레벨은 (정보가 폐기 가능한 상태부 내에 있는지 여부에 무관하게) 비공개 상태부 내의 상태 모두를 삭제할 수 있지만, 공개 설정부를 변경되지 않은 상태로 남겨둘 수 있다. 이러한 리셋 이후에, 공개 설정부 내에 유지된 소프트웨어 컴포넌트의 설정은 소프트웨어 컴포넌트에 여전히 접근 가능할 것이다. 또 다른 예로서, 또 다른 리셋 레벨은 소프트웨어 컴포넌트에 의해 설정된 값 모두를 삭제할 수 있어서, 소프트웨어 컴포넌트의 설정을 그들의 디폴트 레벨(공개 설정 선언서 내에 제공된 디폴트 값)로 실질적으로 반환할 수 있다. 이러한 리셋 이후에, 소프트웨어 컴포넌트의 디폴트 값은 소프트웨어 컴포넌트에 여전히 접근 가능할 것이다.
또한, 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것은 소프트웨어 컴포넌트가 이전의 비공개 상태 및 공개 설정 값을 유지하면서 새로운 버전으로 업그레이드되게 한다. 전술된 바와 같이, 버전 번호는 계약 버전 번호 및 서비스 버전 번호를 포함할 수 있다. 하나 이상의 실시예에서, 비록 서비스 버전 번호가 상이하기는 하지만, 소프트웨어 컴포넌트 설정 스토리지 제어 모듈은 동일한 계약 버전 번호를 갖는 소프트웨어 컴포넌트를 동일한 소프트웨어 컴포넌트로서 식별한다. 그러나, 소프트웨어 컴포넌트 설정 스토리지 제어 모듈은 상이한 계약 버전 번호를 갖는 소프트웨어 컴포넌트를 상이한 소프트웨어 컴포넌트로서 식별한다. 따라서, 개발자는 동일한 계약 버전 번호를 갖지만 새로운 서비스 버전 번호를 갖는 소프트웨어 컴포넌트의 새로운 버전을 발표할 수 있으며, 소프트웨어 컴포넌트가 소프트웨어 컴포넌트의 이전 버전에 저장된 비공개 상태 및 공개 설정 값에 여전히 접근하게 할 수 있다.
또한, 하나 이상의 실시예에서, 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것은 소프트웨어 컴포넌트의 이동을 용이하게 한다. 이러한 이동은 하나의 컴퓨팅 장치로부터 또 다른 컴퓨팅 장치로의 소프트웨어 컴포넌트의 전달, 또는 소프트웨어 컴포넌트가 설치되는 컴퓨팅 장치에 의해 사용되는 운영 체제의 변경을 지칭할 수 있다. 이동의 유형에 무관하게, 소프트웨어 컴포넌트에 대한 공개 설정 및 비공개 상태 값은 소프트웨어 컴포넌트 설정 저장소의 특정부 내에 유지된다. 이들 특정부는 공지되어 있으며, 이들 공지는 공개 설정 및 비공개 상태 값이 소프트웨어 컴포넌트와 함께 (상이한 컴퓨팅 장치 및/또는 상이한 운영 체제로) 이동되게 하기 위해 이동 중에 활용될 수 있다.
도 7은 하나 이상의 실시예에 따른 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 것을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(700)를 도시한다. 컴퓨팅 장치(700)는 예를 들어 도 1의 컴퓨팅 장치(100) 또는 도 3의 컴퓨팅 장치(300)일 수 있다.
컴퓨팅 장치(700)는 하나 이상의 프로세서 또는 프로세싱 유닛(702), 하나 이상의 메모리 및/또는 스토리지 컴포넌트(706)를 포함할 수 있는 하나 이상의 컴퓨터 판독 가능한 매체(704), 하나 이상의 입력/출력(input/output(I/O)) 장치(708), 및 다양한 컴포넌트 및 장치가 서로 통신하게 하는 버스(710)를 포함한다. 컴퓨터 판독 가능한 매체(704) 및/또는 하나 이상의 I/O 장치(708)는 컴퓨팅 장치(700)의 부분으로서 포함될 수 있거나 또는 대안적으로 컴퓨팅 장치(700)에 결합될 수 있다. 버스(710)는 다양한 상이한 버스 아키텍처를 사용하는 메모리 버스 또는 메모리 제어기, 주변 장치 버스(peripheral bus), 가속 그래픽 포트(accelerated graphics port), 프로세서 또는 로컬 버스 등을 포함하는 몇 가지 유형의 버스 구조 중 하나 이상의 유형의 버스 구조를 나타낸다. 버스(710)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/스토리지 컴포넌트(706)는 하나 이상의 컴퓨터 스토리지 매체를 나타낸다. 컴포넌트(706)는 (RAM(random access memory)과 같은) 휘발성 매체 및/또는 (ROM(read only memory), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 컴포넌트(706)는 제거 가능한 매체(예를 들어, 플래시 메모리 드라이브, 제거 가능한 하드 드라이브, 광 디스크 등)은 물론 고정식 매체(예를 들어, RAM, ROM, 고정식 하드 드라이브 등)을 포함할 수 있다.
본 명세서에서 논의된 기법은 하나 이상의 프로세싱 유닛(702)에 의해 실행되는 명령어를 이용하여 소프트웨어로 구현될 수 있다. 프로세싱 유닛(702) 내에, 프로세싱 유닛(702)의 다양한 캐시 메모리 내에, 장치(700)의 다른 캐시 메모리(도시되지 않음) 내에, 다른 컴퓨터 판독 가능한 매체 상에 등과 같이 컴퓨팅 장치(700)의 상이한 컴포넌트 내에 상이한 명령어가 저장될 수 있다는 것이 이해되어야 한다. 또한, 컴퓨팅 장치(700) 내에 명령어가 저장되는 위치가 시간에 따라 변경될 수 있다는 것이 이해되어야 한다.
하나 이상의 I/O 장치(708)는 사용자가 명령 및 정보를 컴퓨팅 장치(700)로 입력하게 하며, 또한 정보가 사용자 및/또는 다른 컴포넌트 또는 장치로 제시되게 한다. 입력 장치의 예는 키보드, 커서(cursor) 제어 장치(예를 들어, 마우스), 마이크, 스캐너 등을 포함한다. 출력 장치의 예는 디스플레이 장치(예를 들어, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서는 소프트웨어 또는 프로그램 모듈의 일반적인 맥락에서의 다양한 기법이 설명될 수 있다. 일반적으로, 소프트웨어는 특정 임무를 수행하거나 특정 추상적 데이터 유형(abstract date type)을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 이들 모듈 및 기법의 구현은 일부 형태의 컴퓨터 판독 가능한 매체 상에 저장될 수 있거나 일부 형태의 컴퓨터 판독 가능한 매체를 거쳐 전달될 수 있다. 컴퓨터 판독 가능한 매체는 컴퓨팅 장치에 의해 접근될 수 있는 임의의 이용 가능한 매체 또는 매체들일 수 있다. 예를 들어, 컴퓨터 판독 가능한 매체는 "컴퓨터 스토리지 매체" 및 "통신 매체"를 포함할 수 있지만 이에 제한되지 않는다.
"컴퓨터 스토리지 매체"는 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 스토리지를 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성인 제거 가능한 그리고 제거 가능하지 않은 매체를 포함한다. 컴퓨터 스토리지 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치, 또는 요구된 정보를 저장하기 하기 위해 사용될 수 있으며 컴퓨터에 의해 접근될 수 있는 임의의 다른 매체를 포함하지만 이에 제한되지 않는다.
"통신 매체"는 전형적으로 컴퓨터 판독 가능한 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파 또는 다른 전송 메카니즘과 같은 변조된 데이터 신호 내에 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는, 그의 특성 세트 중 하나 이상의 특성 세트를 갖거나 정보를 그 신호 내에 부호화하기 위한 방식으로 변경된 신호를 의미한다. 예를 들어, 통신 매체는 유선 네트워크 또는 다이렉트-와이어드 접속(direct-wired connection)과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되지 않는다. 전술된 것의 임의의 조합도 또한 컴퓨터 판독 가능한 매체의 범위 내에 포함된다.
일반적으로, 본 명세서에 설명된 임의의 기능 또는 기법은 소프트웨어, 펌웨어, 하드웨어 (예를 들어, 고정식 논리 회로), 수동 프로세싱, 또는 이들 구현의 조합을 사용하여 구현될 수 있다. 본 명세서에서 사용되는 용어 "모듈" 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현인 경우에, 모듈 또는 컴포넌트는 프로세서(예를 들어, CPU 또는 복수의 CPU) 상에서 실행될 때 명시된 임무를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능한 메모리 장치 내에 저장될 수 있으며, 그에 대한 추가 설명은 도 7를 참조하여 발견될 수 있다. 본 명세서에서 설명된 소프트웨어 컴포넌트 상태에 대한 접근을 제어하는 기법의 특징은 플랫폼에 무관하며(platform-independent), 이는 그 기법이 다양한 프로세서를 갖는 다양한 상업적인 컴퓨팅 플랫폼 상에서 구현될 수 있다는 것을 의미한다.
비록 본 발명이 구조 특징 및/또는 방법론적인 역할에 특유한 언어로 설명되었지만, 첨부된 특허청구범위에서 한정된 본 발명이 전술된 특유한 특징 또는 역할에 반드시 제한되지 않는다는 것이 이해되어야 한다. 대신에, 전술된 특유의 특징 또는 역할은 특허청구범위를 구현하는 예시적인 형태로서 개시된다.

Claims (20)

  1. 복수의 명령어를 저장하고 있는 하나 이상의 컴퓨터 저장 매체로서,
    상기 명령어는 장치의 하나 이상의 프로세서에 의해 실행될 경우 상기 프로세서로 하여금,
    소프트웨어 제품의 소프트웨어 컴포넌트로부터 상기 소프트웨어 컴포넌트의 공개 설정의 값에 접근(access)하기 위한 요청을 수신하게 하고,
    상기 요청이 상기 공개 설정에 대한 적합한 포맷을 따르는지 여부를 검사하게 하며,
    상기 요청이 상기 적합한 포맷을 따르면 상기 요청된 접근을 수행하고 그렇지 않으면 상기 요청된 접근을 거부하게 하는
    컴퓨터 저장 매체.
  2. 제 1 항에 있어서,
    상기 공개 설정의 값에 접근하기 위한 요청은 상기 공개 설정의 값을 저장소의 공개 설정부에 기록하기 위한 요청인
    컴퓨터 저장 매체.
  3. 제 1 항에 있어서,
    상기 공개 설정의 값에 접근하기 위한 요청은 저장소의 공개 설정부로부터 상기 공개 설정의 값을 판독하기 위한 요청인
    컴퓨터 저장 매체.
  4. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상기 소프트웨어 컴포넌트가 상기 장치 상에 설치될 때 상기 적합한 포맷을 상기 소프트웨어 컴포넌트를 기술하는 메타데이터를 저장하는 매니페스트(manifest)의 공개 설정 선언서로서 수신하게 하는
    컴퓨터 저장 매체.
  5. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상기 공개 설정에 대한 복수의 값을 유지하게 하며,
    상기 요청된 접근을 수행하는 것은 상기 공개 설정에 대한 상기 복수의 값 중 어떤 값이 상기 소프트웨어 컴포넌트로 반환되어야 하는지를 판단하는 것인
    컴퓨터 저장 매체.
  6. 제 5 항에 있어서,
    상기 요청은 상기 공개 설정에 대한 유효 값에 대한 요청이며,
    상기 요청된 접근을 수행하는 것은
    하나 이상의 규칙에 기반하여, 상기 복수의 값 중 어떤 값이 상기 유효 값인지를 결정하는 것과,
    상기 복수의 값 중 상기 유효 값으로 결정된 하나의 값을 상기 소프트웨어 컴포넌트로 반환하는 것인
    컴퓨터 저장 매체.
  7. 제 6 항에 있어서,
    상기 하나 이상의 규칙은 상기 복수의 값 중 어떤 값이 우선권을 갖는지를 기술하며,
    상기 하나 이상의 규칙은
    상기 복수의 값이 관리자에 의해 설정된 제 1 값을 포함하면, 상기 제 1 값이 상기 유효 값이라고 표시하는 제 1 규칙과,
    상기 복수의 값이 상기 제 1 값을 포함하지 않지만 상기 소프트웨어 컴포넌트에 의해 설정된 제 2 값을 포함하면, 상기 제 2 값이 상기 유효 값이라고 표시하는 제 2 규칙과,
    상기 복수의 값이 상기 제 1 값 또는 상기 제 2 값을 포함하지 않으면, 디폴트 값이 상기 유효 값이라고 표시하는 제 3 규칙
    을 포함하는 컴퓨터 저장 매체.
  8. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금,
    상기 공개 설정에 대한 복수의 값을 유지하게 하고,
    상기 소프트웨어 컴포넌트의 리셋을 수행하기 위한 요청을 수신하게 하며,
    상기 리셋을 수행하기 위한 상기 요청에 응답하여, 상기 복수의 값 중 적어도 하나를 유지하면서 상기 복수의 값 중 하나 이상의 값을 삭제하게 하는
    컴퓨터 저장 매체.
  9. 제 1 항에 있어서,
    상기 소프트웨어 컴포넌트의 복수의 인스턴스가 상기 장치 상에서 실행되고, 상기 소프트웨어 컴포넌트의 각각의 인스턴스는 상이한 소프트웨어 제품의 일부분인
    컴퓨터 저장 매체.
  10. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금, 복수의 상이한 유형의 접근을 요청하기 위해 상기 소프트웨어 컴포넌트에 의해 호출될 수 있는 복수의 메소드를 갖는 애플리케이션 프로그래밍 인터페이스를 노출시키게 하며,
    상기 요청을 수신하는 것은 상기 소프트웨어 컴포넌트에 의해 호출된 상기 복수의 메소드 중 하나의 메소드를 갖는 것인
    컴퓨터 저장 매체.
  11. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금, 상기 소프트웨어 컴포넌트의 비공개 상태에 대한 상기 소프트웨어 컴포넌트의 접근을 상기 접근이 상기 비공개 상태에 대한 적합한 포맷을 따르는지 여부를 검사하지 않으면서 허용하게 하는
    컴퓨터 저장 매체.
  12. 제 1 항에 있어서,
    상기 명령어는 또한 상기 하나 이상의 프로세서로 하여금 상이한 소프트웨어 컴포넌트의 공개 설정에 대한 값을 소프트웨어 컴포넌트 상태 저장소의 상이한 폴더 내에 유지하게 하는
    컴퓨터 저장 매체.
  13. 장치의 하나 이상의 프로세서에 의해 구현된 방법으로서,
    선언된 설정에 접근하기 위한 적합한 포맷을 식별하는 소프트웨어 컴포넌트에 대한 설정 선언서(setting declaration)를 수신하는 단계와,
    상기 선언된 설정에 대해, 복수의 값을 수신하는 단계와,
    상기 복수의 값을 동시에 유지하는 단계
    를 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 설정 선언서를 수신하는 단계는 상기 소프트웨어 컴포넌트를 기술하는 메타데이터를 저장하는 매니페스트(manifest)의 일부로서 상기 설정 선언서를 수신하는 것을 포함하는
    방법.
  15. 제 14 항에 있어서,
    상기 설정 선언서는 상기 복수의 값 중 하나의 값을 포함하는
    방법.
  16. 제 13 항에 있어서,
    상기 소프트웨어 컴포넌트는 복수의 소프트웨어 제품의 일부로서 실행되는
    방법.
  17. 제 13 항에 있어서,
    상기 선언된 설정에 대한 유효 값에 대한 요청을 상기 소프트웨어 컴포넌트로부터 수신하는 단계와,
    하나 이상의 규칙에 기반하여, 상기 복수의 값 중 어떤 값이 상기 유효 값인지를 결정하는 단계와,
    상기 복수의 값 중 상기 유효 값이라고 결정된 하나의 값을 상기 소프트웨어 컴포넌트로 반환하는 단계
    를 더 포함하는 방법.
  18. 제 17 항에 있어서,
    상기 하나 이상의 규칙은
    상기 복수의 값이 상기 소프트웨어 컴포넌트에 의해 설정된 값에 대한 관리자 오버라이드(administrator override)인 제 1 값을 포함하면, 상기 제 1 값이 상기 유효 값이고,
    상기 복수의 값이 상기 소프트웨어 컴포넌트에 의해 설정된 상기 값을 포함하면, 상기 소프트웨어 컴포넌트에 의해 설정된 상기 값이 상기 유효 값이고,
    상기 복수의 값이 디폴트 값에 대한 관리자 오버라이드인 제 2 값을 포함하면, 상기 제 2 값이 상기 유효 값이며,
    상기 디폴트 값이 상기 유효 값임
    을 표시하는 규칙을 포함하는 방법.
  19. 장치의 하나 이상의 프로세서에 의해 구현된 방법으로서,
    소프트웨어 제품의 소프트웨어 컴포넌트에 대한 설정 선언서를 수신하는 단계 -상기 설정 선언서는 선언된 설정에 접근하기 위한 적합한 포맷을 식별하고 상기 선언된 설정에 대한 디폴트 값을 포함하며, 상기 설정 선언서는 상기 소프트웨어 컴포넌트를 기술하는 메타데이터를 저장하는 매니페스트의 일부로서 수신됨- 와,
    상기 소프트웨어 컴포넌트로부터 상기 선언된 설정에 대한 부가적인 값을 기록하라는 요청을 수신하는 단계와,
    상기 부가적인 값을 기록하라는 요청이 상기 선언된 설정에 대한 적합한 포맷을 따르는지 여부를 검사하는 단계 -상기 검사하는 단계는 상기 요청에서 식별된 이름과 상기 선언된 설정의 이름이 동일한지 및 상기 요청 내의 부가적인 값에 대한 설정 유형과 상기 선언된 설정의 설정 유형이 동일한지를 모두 검사하는 단계를 포함함- 와,
    상기 요청이 상기 선언된 설정에 대한 적합한 포맷을 따르면, 상기 디폴트 값을 유지하면서 상기 부가적인 값을 저장함으로써 상기 요청을 수행하고, 상기 요청이 상기 선언된 설정에 대한 적합한 포맷을 따르지 않으면 상기 요청을 거부하는 단계
    를 포함하는 방법.
  20. 제 19 항에 있어서,
    상기 선언된 설정에 대한 유효 값에 대한 요청을 상기 소프트웨어 컴포넌트로부터 수신하는 단계와,
    하나 이상의 규칙에 기반하여, 상기 선언된 설정에 대한 값 중 어떤 값이 상기 유효 값인 지를 결정하는 단계와,
    상기 선언된 설정에 대한 값 중 상기 유효 값이라고 결정된 하나의 값을 상기 소프트웨어 컴포넌트로 반환하는 단계
    를 더 포함하는 방법.
KR1020117029378A 2009-06-12 2010-06-11 소프트웨어 컴포넌트 상태에 대한 접근 제어 KR101624005B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/483,465 2009-06-12
US12/483,465 US8429395B2 (en) 2009-06-12 2009-06-12 Controlling access to software component state

Publications (2)

Publication Number Publication Date
KR20120037381A KR20120037381A (ko) 2012-04-19
KR101624005B1 true KR101624005B1 (ko) 2016-05-24

Family

ID=43307576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117029378A KR101624005B1 (ko) 2009-06-12 2010-06-11 소프트웨어 컴포넌트 상태에 대한 접근 제어

Country Status (6)

Country Link
US (2) US8429395B2 (ko)
EP (1) EP2440998A2 (ko)
JP (1) JP2012530297A (ko)
KR (1) KR101624005B1 (ko)
CN (1) CN102804137B (ko)
WO (1) WO2010144828A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state
US8869112B2 (en) * 2010-11-30 2014-10-21 Sap Se System and method for modular business applications
US8554797B2 (en) 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
US8181254B1 (en) * 2011-10-28 2012-05-15 Google Inc. Setting default security features for use with web applications and extensions
KR102192198B1 (ko) 2014-02-24 2020-12-17 삼성전자주식회사 전자 장치 및 그것의 통신 방법
RU2666645C1 (ru) * 2017-08-10 2018-09-11 Акционерное общество "Лаборатория Касперского" Система и способ обеспечения безопасного изменения конфигурации систем
US11349961B2 (en) * 2020-10-08 2022-05-31 Sage Intacct, Inc. Chained adapters for multiple versions of application programming interface

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119131A (en) 1998-06-12 2000-09-12 Microsoft Corporation Persistent volume mount points
US6359634B1 (en) 1998-08-25 2002-03-19 International Business Machines Corporation Method and computer program product for graphical user interface (GUI) organization control for extending GUI applications
US6161176A (en) * 1998-11-20 2000-12-12 Microsoft Corporation System and method for storing configuration settings for transfer from a first system to a second system
US6538668B1 (en) * 1999-04-09 2003-03-25 Sun Microsystems, Inc. Distributed settings control protocol
EP1173809B1 (en) * 1999-04-28 2003-04-02 Tranxition Corporation Method and system for automatically transitioning of configuration settings among computer systems
US6560699B1 (en) * 1999-10-20 2003-05-06 Cisco Technology, Inc. Constraint-based language configuration files for updating and verifying system constraints
US6735691B1 (en) * 2000-01-27 2004-05-11 Microsoft Corporation System and method for the automated migration of configuration information
JP5010068B2 (ja) * 2001-01-16 2012-08-29 セイコーエプソン株式会社 デバイス環境設定システム、デバイス環境設定処理方法及び情報記録媒体
US6941546B2 (en) 2001-08-01 2005-09-06 International Business Machines Corporation Method and apparatus for testing a software component using an abstraction matrix
US7698713B2 (en) 2001-09-20 2010-04-13 Google Inc. Altered states of software component behavior
WO2003065179A2 (en) * 2002-02-01 2003-08-07 John Fairweather A system and method for mining data
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
US7353502B2 (en) * 2002-07-03 2008-04-01 The Mathworks, Inc. System and method for creation of software components
US7346634B2 (en) * 2003-06-23 2008-03-18 Microsoft Corporation Application configuration change log
US7334119B2 (en) * 2003-07-23 2008-02-19 Cisco Technology, Inc. Method, system, apparatus, and program product for temporary personalization of a computer terminal
KR100871778B1 (ko) * 2003-10-23 2008-12-05 이노패스 소프트웨어, 아이엔시. 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
US8140475B1 (en) * 2004-02-26 2012-03-20 Netapp, Inc. Dynamic configuration archival and retrieval
US7386556B2 (en) 2004-06-14 2008-06-10 Lucent Technologies Inc. Substitute manager component that obtains state information of one or more software components upon failure of a first manager component
US20060069909A1 (en) * 2004-09-23 2006-03-30 Roth Steven T Kernel registry write operations
US7681226B2 (en) * 2005-01-28 2010-03-16 Cisco Technology, Inc. Methods and apparatus providing security for multiple operational states of a computerized device
US7949995B2 (en) * 2005-09-14 2011-05-24 Sadlek James M Visual programming method
US7716461B2 (en) * 2006-01-12 2010-05-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
US7934207B2 (en) * 2006-12-19 2011-04-26 Microsoft Corporation Data schemata in programming language contracts
US7386885B1 (en) 2007-07-03 2008-06-10 Kaspersky Lab, Zao Constraint-based and attribute-based security system for controlling software component interaction
EP2227741A4 (en) * 2007-12-31 2011-10-05 Datalogic Mobile Inc SYSTEMS AND METHODS FOR CONFIGURING, UPDATING AND STARTING AN ALTERNATIVE OPERATING SYSTEM ON A PORTABLE DATA READER
US8024732B2 (en) * 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state

Also Published As

Publication number Publication date
JP2012530297A (ja) 2012-11-29
CN102804137B (zh) 2015-04-29
WO2010144828A3 (en) 2011-02-24
US8949590B2 (en) 2015-02-03
CN102804137A (zh) 2012-11-28
US20100319050A1 (en) 2010-12-16
US20140019954A1 (en) 2014-01-16
KR20120037381A (ko) 2012-04-19
WO2010144828A2 (en) 2010-12-16
US8429395B2 (en) 2013-04-23
EP2440998A2 (en) 2012-04-18

Similar Documents

Publication Publication Date Title
US10540173B2 (en) Version control of applications
KR101643022B1 (ko) 카탈로그-기반 소프트웨어 컴포넌트 관리
KR101624005B1 (ko) 소프트웨어 컴포넌트 상태에 대한 접근 제어
US20240048631A1 (en) Demand resources
US9235589B2 (en) Optimizing storage allocation in a virtual desktop environment
US9880824B2 (en) On demand resources
JP4234086B2 (ja) ファイル・リクエストを処理するための方法、システム、およびプログラム
JP4931255B2 (ja) 仮想化されたファイル・システム
US10656845B2 (en) System and method for managing container image
JP4855714B2 (ja) コンピュータオペレーティングシステムに渡ってコンピュータファイルへのアクセスを行うシステムおよび方法
US10353636B2 (en) Write filter with dynamically expandable overlay
KR20090079933A (ko) 제한된 네임스페이스 환경에서의 역 네임 맵핑을 위한, 자원으로의 액세스를 제한하는 시스템 및 파일 시스템의 구성요소로의 액세스를 제한하는 방법 및 컴퓨터-판독가능 매체
US20130091562A1 (en) Computer
US8909875B1 (en) Methods and apparatus for storing a new version of an object on a content addressable storage system
CN107667343B (zh) 用于加载按需加载资源的***和方法
US20190179803A1 (en) Apparatus and method for file sharing between applications
JP2006215665A (ja) データ管理装置、データ管理システム、データ処理装置、データ管理方法、プログラム、及び記憶媒体
CN117056027A (zh) 文件***布局方法及装置、介质、设备
US8010741B1 (en) Methods and apparatus for controlling migration of content

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 4