KR20060044361A - 런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법 - Google Patents

런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법 Download PDF

Info

Publication number
KR20060044361A
KR20060044361A KR1020050022360A KR20050022360A KR20060044361A KR 20060044361 A KR20060044361 A KR 20060044361A KR 1020050022360 A KR1020050022360 A KR 1020050022360A KR 20050022360 A KR20050022360 A KR 20050022360A KR 20060044361 A KR20060044361 A KR 20060044361A
Authority
KR
South Korea
Prior art keywords
resource
developer
providing
string
tool
Prior art date
Application number
KR1020050022360A
Other languages
English (en)
Other versions
KR101114038B1 (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 KR20060044361A publication Critical patent/KR20060044361A/ko
Application granted granted Critical
Publication of KR101114038B1 publication Critical patent/KR101114038B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Digital Computer Display Output (AREA)
  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)
  • Debugging And Monitoring (AREA)

Abstract

관리되는 코드 실행 환경에서 런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법이 개시된다. 본 방법은 개발자에게 복수의 관리되는 코드 리소스에 접근할 수 있는 권한을 제공하는 것을 포함한다. 또, 본 방법은 개발자가 입력한 리소스 식별자가 복수의 관리되는 코드 리소스 중 어느 하나에 대응하는 것을 검증하는 것을 포함한다.
프로그래밍 툴, 관리되는 코드, 공통 언어 런타임, 코드 리소스, 리소스 식별자

Description

런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법{ADDRESS SUPPORT FOR RESOURCES IN COMMON-LANGUAGE RUNTIME LANGUAGES}
도 1은 본 발명이 실시될 수 있는 컴퓨팅 환경의 블록도,
도 2는 코드 개발 환경을 나타낸 개략 블록도,
도 3은 예시적인 스크린샷을 나타낸 도면,
도 4는 예시적인 스크린샷을 나타낸 도면,
도 5는 CLS-컴플라이언트 리소스에 속하는 정보에 직접적으로 접근하는 것에 연관된 단계들을 나타낸 플로우 차트.
<도면의 주요부분에 대한 부호의 설명>
120: 중앙 처리 장치
130: 시스템 메모리
160: 사용자 입력 인터페이스
170: 네트워크 인터페이스
본 발명은 일반적으로 소프트웨어 개발자에게 제공되는 프로그래밍 툴에 관 한 것으로, 특히 공통 언어 명세에 따르는 리소스(resource)의 어드레스를 지정하기 위한 프로그래밍 툴에 관한 것이다.
관리되는 코드 실행 환경에서의 프로그래밍은 당업계에 공지되어 있다. 그와 같은 환경의 한 가지 공지예로는 공통 언어 런타임(Common Language Runtime: CLR)을 포함하는 환경을 들 수 있다. 컴파일러와 툴은 런타임의 기능을 밝혀냄으로써 개발자가 관리되는 코드 실행으로부터 덕을 보는 코드를 쓸 수 있게 해 준다. 런타임을 목표로 하는 언어 컴파일러로 개발되는 코드를 관리되는 코드(managed code)라고 한다. 관리되는 코드는 언어간 통합(cross-language integration), 언어간 예외 처리(cross-language exception handling), 강화된 보안, 버저닝 및 배치 지원(versioning and depolyment support), 컴포넌트 상호작용(component interaction)의 단순 모델, 및 디버깅 및 프로파일링 서비스(debugging and profiling service)와 같은 특성들로부터 덕을 본다.
객체(object)의 구현 언어에 상관없이 어떤 객체가 다른 객체와 완전하게 상호작용하기 위해서는 객체들은 객체들이 상호운용될 언어들에 공통되는 객체특성을 호출자들에게 나타내어 주어야 한다는 것은 주지의 이론이다. 이 이론을 염두에 두고 여러 애플리케이션들 간에 공통되는 기본 언어 특성들의 집합인 공통 언어 명세(Common Language Specification: CLS)가 정의되었다. CLR을 목표로 하는 언어들은 일반적으로 CLS 특성을 지원하고 또 컴파일러쪽으로 지시된 CLS 규칙을 따르고 있다. CLR을 목표로 하는 언어를 위한 컴파일러는 CLS 데이터 타입과 특성을 컴포넌트를 생성하는데 이용함으로써 CLS 컴플라언스(compliance)를 단순화시켜왔 다. 만일 어떤 컴포넌트가 이 컴포넌트가 다른 코드(유도된 클래스를 포함함)에게 노출시키는 API에서 CLS 특성만을 이용한다면, 이 컴포넌트는 기본적으로 CLS를 지원하는 어떠한 프로그래밍 언어로부터도 액세스될 수 있도록 보장된다. CLS 규칙에 충실하면서 CLS에 포함되어 있는 특성만을 이용하는 컴포넌트를 CLS 컴플라이언트 컴포넌트라고 한다.
일반적으로 말해서, 현재의 개발 환경은 설계 시에 리소스, 특히 CLS 컴플라이언트 리소스를 관리하기 위한 대강 수준(cursory-level)의 지원만을 제공한다. 어떤 리소스를 코드 내에 삽입하기 위해서, 개발자는 통상적으로 (예컨대, 메모리로부터의) 참조 식별자(reference identifier)를 애써 부호화하여야 한다. 아니면, 그 대신으로, 개발자는 참조 파일로부터 참조 식별자를 카피한다(따라서, 예컨대, 개발자는 코딩 프로그램과 참조 파일 간에 왔다 갔다해야 한다).
리소스를 위한 참조 식별자는 대개는 키 네임(key name)과 스트링(string)으로 구성된다. 현재의 리소스 관리 지원 수준으로는 개발자가 키 네임이나 스트링을 잘못 타이핑할 위험이 크다. 키 네임이나 스트링을 얻기 위해 참조 파일을 조사하는 프로세스는 이론적으로는 오류를 줄일 수 있겠지만, 개발자에게는 불필요하고 지루한 노력이 들게 되고, 따라서 개발자는 어쩌면 어림짐작으로 바른 값을 추론해 버릴지도 모른다. 물론 추론 과정에는 오류가 생기기 쉽다.
부정확하게 어드레스 지정된 리소스에서 일어나는 버그는 빌드 타임 에러(build-time error)를 발생시키지 않으며 통상적으로 런타임에서만 발견될 수 있다고 알려져 있다. 이것은 어떤 제품이 테스트 중에 그 잘못되게 어드레스 지정된 리소스를 실제로 활동시키는 코드 경로가 적중(hit)되어야 함을 의미한다. 또한, 이러한 테스팅 상황에서 어드레스를 정정하려면, 그 제품을 테스트하는 자가 어드레스 지정 오류를 정확하게 판단해 내어야 하는데, 이는 항상 쉽고 간단한 일만이 아니다.
본 발명의 실시예들은 관리되는 코드 실행 환경에서 런타임 전에 코딩 에러를 감소시키는 컴퓨터 구현 방법에 관한 것이다. 본 방법은 개발자에게 복수의 관리되는 코드 리소스에 접근할 수 있는 권한을 제공하는 것을 포함한다. 또, 본 방법은 개발자가 입력한 리소스 식별자가 복수의 관리되는 코드 리소스 중 어느 하나에 대응하는 것을 검증하는 것을 포함한다.
도 1은 본 발명의 실시예들이 구현될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 일례를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례일 뿐, 본 발명의 이용 내지 기능 범위를 한정하려는 것이 아니다. 컴퓨팅 환경(100)은 예시된 운영 환경(100)에 나타나 있는 요소들 중 임의의 요소 또는 요소들의 조합에 관련한 어떠한 종속성이나 요건을 갖고 있는 것으로 해석되어서는 안 된다.
본 발명은 많은 범용 또는 전용 컴퓨팅 시스템 환경이나 구성으로 운용된다. 본 발명에서 이용하기에 적합한 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 휴대형 또는 랩탑 디바이스, 멀티프로세서 시스 템, 마이크로프로세서 탑재 시스템, 셋톱 박스, 프로그래밍 가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 전화 시스템, 이들 시스템이나 디바이스를 포함하는 분산형 컴퓨팅 환경 등을 들 수 있으나, 이들에 한정되는 것은 아니다.
본 발명은 프로그램 모듈과 같이 컴퓨터로 실행되는 컴퓨터 실행가능 명령어들로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 업무를 수행하거나 특정의 추상 데이터 타입(abstract data type)을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신망을 통해 연결된 원격 처리 장치들에 의해 업무가 수행되는 분산형 컴퓨팅 환경에서 실시될 수 있다. 분산형 컴퓨팅 환경에서는 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 내에 위치할 수 있다.
도 1을 참조로 설명하면, 본 발명을 구현하는 전형적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성 요소로는 중앙 처리 장치(120), 시스템 메모리(130), 그리고 이 시스템 메모리를 포함하는 각종 시스템 구성 요소들을 중앙 처리 장치(120)에 연결하는 시스템 버스(121)가 있으나, 이들에 한정되는 것은 아니다.
시스템 버스(21)는 다양한 버스 아키텍처를 이용하는 메모리 버스나 메모리 컨트롤러, 주변 버스, 및 로컬 버스를 포함하는 몇 가지 버스 구조 중 임의의 구조를 가질 수 있다. 예컨대, 그와 같은 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 메짜닌(Mezzanine) 버스라고도 하는 PCI(Peripheral Component Interconnect) 버스가 있으나 이들에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터가 액세스할 수 있는 매체로서 휘발성 매체, 불휘발성 매체, 분리형 매체, 비분리형 매체 모두를 포함한다. 예컨대, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체와 통신 매체를 포함하지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 방법이나 기술로 구현된 휘발성, 불휘발성, 분리형, 비분리형 매체 모두를 포함한다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래시 메모리 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disk) 또는 기타 광디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 디바이스, 기타 원하는 정보를 저장할 수 있고 컴퓨터(110)가 액세스할 수 있는 매체가 있지만, 이들에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 같이 변조된 데이터 신호나 기타 신호 전달 메카니즘으로 구체화하며, 임의의 정보 전달 매체를 포함한다. 용어 "변조된 데이터 신호"는 한 가지 이상의 신호 특성이 신호 내의 정보를 부호화하도록 설정 또는 변경되어 있는 신호를 의미한다. 예컨대, 통신 매체로는 유선망이나 직접 유선 접속과 같은 유선 매체와 음향, RF, 적외선 같은 무선 매체가 있으나, 이에 한정되는 것은 아니다. 상술한 매체들을 임의 로 조합한 것들도 컴퓨터 판독 가능 매체의 범위 내에 포함된다.
시스템 메모리(130)는 ROM(131)이나 RAM(132)과 같은 휘발성 및/또는 불휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 기동 중에 컴퓨터(110) 내의 구성 요소들 간의 정보 전달을 돕는 기본 루틴을 내장하는 기본 입/출력 시스템(133)(BIOS)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 중앙 처리 장치(120)에 직접 액세스할 수 있고 그리고/또는 중앙 처리 장치(120)에 의해 즉시 실행될 수 있는 데이터 및/또는 프로그램 모듈을 내장한다. 예컨대, 도 1에는 운영 체제(134), 응용 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)가 나타나 있으나, 이에 한정되는 것은 아니다.
컴퓨터(110)는 다른 분리형/비분리형 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수도 있다. 예컨대, 도 1에는 비분리형 불휘발성 자기 매체로부터 읽어 내거나 이 매체에 기록하는 하드 디스크 드라이브(141), 분리형 불휘발성 자기 디스크(152)로부터 읽어 내거나 이 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD ROM이나 기타 다른 광매체와 같은 분리형 불휘발성 광 디스크(156)로부터 읽어 내거나 이 디스크에 기록하는 광 디스크 드라이브(155)가 나타나 있다. 상기 전형적인 운영 환경에서 사용될 수 있는 다른 분리형/비분리형 휘발성/불휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 고체 RAM, 고체 ROM 등이 있으나, 이들에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 연결되어 있으며, 자기 디스크 드라이브(151)와 광 디스크 드라이브(155) 는 통상적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 연결되어 있다.
도 1에 도시된 상술한 드라이브들과 이들에 관련된 컴퓨터 저장 매체는 컴퓨터(110)에 대하여 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 기타 데이터의 저장을 제공한다. 도 1에는, 예컨대, 하드 디스크 드라이브(141)는 운영 체제(144), 응용 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 나타나 있다. 이들 구성요소들은 운영 체제(134), 응용 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 다를 수 있다. 운영 체제(144), 응용 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)는 여기서는 최소한 이들이 서로 다른 카피임을 나타내도록 상이한 참조번호를 부여받는다.
사용자는 키보드(162), 마이크로폰(163), 그리고 마우스, 트랙볼 또는 터치 패드와 같은 포인팅 장치(161)와 같은 입력 장치를 통해 컴퓨터(110)에 명령과 정보를 입력해 넣을 수 있다. 기타 입력 장치(미도시)로는 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 들 수 있다. 이들 및 기타 입력 장치는 대개는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 중앙 처리 장치(120)에 연결되나, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 기타 인터페이스 및 버스 구조에 의해서 연결될 수도 있다. 모니터(191)나 기타 다른 종류의 디스플레이 장치도 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 연결된다. 모니터 외에도, 컴퓨터는 출력 주변 인터페이스(190)를 통해 연결될 수 있 는 스피커(197)와 프린터(196)와 같은 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 이용하여 네트워크화된 환경에서 작동할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 휴대형 장치, 서버, 라우터, 네트워크 PC, 피어(peer) 디바이스 또는 기타 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(110)와 관련하여 전술된 구성 요소들을 많이 또는 전부 포함한다. 도 1에 도시된 논리적 연결은 근거리 통신망(LAN)(171)와 원거리 통신망(WAN)(173)을 포함하나, 기타 다른 통신망을 포함할 수도 있다. 이와 같은 네트워크 환경은 사무실, 기업 규모(enterprise-wide) 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 흔하게 볼 수 있는 것이다.
LAN 네트워킹 환경에서는 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 연결된다. WAN 네트워킹 환경의 경우에는 컴퓨터(110)는 통상적으로 모뎀(172)이나, 기타 인터넷 같은 WAN(173)을 통해 통신을 설정하는 수단을 포함한다. 모뎀(172)은 내장형 또는 외장형일 수 있는데, 사용자 입력 인터페이스(160)이나 기타 다른 적당한 메카니즘을 통해 시스템 버스(121)에 연결될 수 있다. 네트워크화된 환경에서는, 컴퓨터(110)와 관련하여 기술된 프로그램 모듈 또는 이 모듈의 일부는 원격 메모리 저장 장치에 저장될 수 있다. 예컨대, 도 1에는 원격 컴퓨터(180) 상에 상주하는 원격 응용 프로그램(185)이 나타나 있지만, 이에 한정되는 것은 아니다. 도면에 나타낸 네트워크 연결은 예시적인 것이며, 이와 다른 수단을 사용하여 컴퓨터들 간의 통신 링크를 설정할 수 있음은 물론이다.
도 2는 본 발명의 일 양상에 따른 코드 개발 환경(201)을 나타낸 개략 블록 도이다. 이 환경은 설계 프로그램(202)과 관리되는 코드 기반구조(204)를 포함한다. 이 기반 구조(204)는 예컨대 마이크로소프트사(워싱턴 레드몬드시 소재)가 제공하는 기존의 .NET 프레임워크(framework)를 구비하고 있는 환경과 같은 관리되는 코드 실행 환경이지만, 반드시 이 환경이어야 하는 것은 아니며 또 이에 한정되는 것도 아니다.
설계 프로그램(202)은 응용 프로그램을 설계, 구축, 테스트 및 활용하는 툴을 제공하는 관리되는 코드 기반구조(204)와 관련하여 작동하는 개발 툴, 특히 프로그래밍 환경이다. 설계 프로그램(202)은 예컨대 마이크로소프트사가 제공하는 제품들 중 VISUAL STUDIO.NET 계열의 프로그램인데, 반드시 이 프로그램이어야 하는 것은 아니다. 관리되는 코드 기반구조(204)는 예컨대 언어간 컴플라이언트 코드를 지원하도록 구성된 관리되는 코드 실행 환경을 갖고 있다. 일 실시예에 따라서, 기반구조(204)는 마이크로소프트사의 .NET 기반구조의 공통 언어 런타임 컴포넌트를 갖고 있는데, 이 경우에는 설계 프로그램(202)은 적어도 부분적으로는 CLS 컴플라이언트한 코드의 생성 시에 관리되는 코드 기반구조(204)와 협력하도록 구성된다.
본 발명의 일 양상에 따라서, 관리되는 코드 기반구조(204)와 설계 프로그램(202)은 함께 리소스 정보(207)를 관리하는 리소스 관리자(208)를, 관리되는 코드 기반구조(204)가 지원하는 언어에 제공한다. 일 실시예에 따라서, 리소스 정보(207)는 CLS 컴플라이언트 리소스에 속하는 정보를 포함한다. 도 2에는, 리소스 관리자(208)와 정보(207)는 프로그램(202)과 기반구조(204)로부터 떼어낸 점선 박 스로 나타나 있다. 이 구성은 본 발명에서는 정밀한 구현이 중요한 것이 아니라는 사실을 반영하려는 것이다. 리소스 관리자와 정보는 기반구조(204)의 일부분, 프로그램(202)의 일부분, 독립된 구성 요소 등으로서 구현될 수 있다.
리소스 요구는 수용할 수 있는 여러 가지 공지된 메쏘드들 중 한 가지를 통해 리소스 관리자(208)에 전달된다. 일 실시예에 따라서, 리소스는 예컨대 "GetString(스트링 키네임)" 메쏘드를 통해 요구된다. 예컨대, 개발자는 설계 중에 프로그램(202)과 연계하여 리소스 관리자(208)에 대한 호출, 예컨대 리소스 정보(207)의 일부로서 유지되는 CLS 컴플라이언트 컴포넌트 대한 호출을 포함하고 있는 코드를 작성한다. 코드화된 리소스 호출은 예컨대 원하는 리소스에 연관된 스트링과 키네임의 표시(indication)를 포함한다. 이 코드화된 리소스 호출에 기초하여, 프로세스 중 어떤 시점에서 "GetString(스트링 키네임)" 호출을 활용하는 리소스 관리자(208)에게 해당 스트링 리소스가 요구된다. 이 스트링 및/또는 키네임이 설계 시에 올바로 입력되지 않으면(예컨대 키네임의 오자 발생(typo)), 이 오류는 런타임때까지는 쉽게 발견될 수 없다는 것은 보기 드문 일이 아니다. 또한, 본 발명의 범위를 벗어남이 없이 전술한 GetString 메쏘드 이외의 메쏘드도 이용될 수 있다.
본 발명의 일 양상에 따라서, 설계 프로그램(202)은 일반적으로 런타임 전에 리소스의 어드레스 지정 시에 에러를 줄이거나 없애도록 구성된 StringRes 툴(206)을 포함한다. StringRes 툴(206)은 예컨대 스트링 리소스 관리를 더 잘 돕도록 하기 위하여 설계 프로그램(202)을 보충하는 커스텀 툴이다. 일 실시예에 따라서, StringRes 툴(206)은 설계 프로그램(202)의 필수부로서 탑재된다. 다른 실시예에 따라서는 StringRes 툴(206)은 프로그램(202) 내에 통합 또는 설치될 수 있는 업그레이드이다.
설계 프로그램(202)이 StringRes 툴(206)을 포함하고 있다고 가정하면, 일 실시예에 따라서 이 툴은 설계 프로그램(202)을 활용하는 개발자가 착수한 어떤 코딩 프로젝트와 관련하여 자동적으로 구현된다. 그러나, 다른 실시예에 따라서는, 툴이 특정 프로젝트에서 동작되거나 설치되는(즉, 툴이 프로젝트마다 선택적으로 작동되는) 때에만 개발자에게 툴(206) 기능이 제공된다.
도 3은 설계 프로그램(202)과의 인터페이스의 형태의 일례를 나타내는 스크린샷(300)을 나타낸 것이다. 개발자는 예컨대 코딩 영역(302)에 코드를 입력해 넣는다. 스크린샷(300)에서 하이라이트된 탭(304)으로 나타낸 바와 같이 개발자는 "Form1.cs"로 지정된 파일에 관련하여 코드를 만들어 낸다.
파일 선택 영역(305)은 개발자가 서로 다른 파일과 서로 다른 프로젝트 간에 이동할 수 있도록 하기 위해 제공된 것이다. 구성 영역(306)은 개발자가 StringRes 툴(206)과 같은 여러 가지 프로그래밍 툴을 선택적으로 작동시키거나 동작을 중지시킬 수 있도록 하기 위해 제공된 것이다. 스크린샷(300)에서 영역(306) 내에 나타낸 바와 같이 StringRes 툴(206)은 "FORM1.RESX" 파일에 관련하여 작동되었다. 따라서, StringRes 툴의 기능은 개발자가 FORM1.RESX 파일에 코드를 입력할 때에 개발자에게 제공될 것이다. 일 실시예에 따라서, 이 기능은 또한 FORM1.RESX 파일에 대해 소정의 계층적 관계를 갖는 파일로 확장될 것이다. 따라서, 본 발명 의 일 양상에 따라서, StringRes 툴은 원하는 방식대로 작동되는 커스텀 프로그래밍 툴로 구현된다. 본 발명의 설명을 위해서, StringRes 툴(206)은 또한 코딩 영역(302)에서 열려있는 파일인 "FORM1.CS" 파일에 대해 작동된다고 가정할 것이다.
이를 염두에 두고, 본 발명의 일 양상에 따라서, StringRes 툴에 연관된 서브시스템(예컨대, 프로젝트 관리 서브시스템)은 수행되고 있는 어떤 프로젝트에서 사용되는 특정의 CLR 컴플라이언트 언어에 따라서 응답할 수 있다. 새로운 파일이 프로젝트에 부가되거나, (예컨대, CustomTool 특성을 터치함으로써) 기존의 파일이 변형되면, 그 파일의 부모(parent)가 검사된다. 부모는 프로젝트가 C#, C++, VB 등인지 판단한다. 이 판단에 기초하여 그 프로젝트에 대해 적당한 언어에서 코드가 발행된다. 이런 식으로, 하나의 설계 프로그램 솔루션은 다수의 프로젝트를 포함할 수 있으며, StringRes 툴이 수용될 수 있다.
본 발명의 일 양상에 따라서, StringRes 툴(206)은 개발자에게 리소스 어드레스/인덱스 정보에 대한 그리고 선택적으로는 목록에 수록된 리소스에 해당하는 값들에 대한 편리한 설계-시간 접근성(convenient design-time accessibility)을 제공한다. 일 실시예에 따라서, 리소스에 대한 접근은 개발자가 문장(statement) 함수를 완성하는데 도움을 주는 팝 업(pop-up) 창 및/또는 드롭 다운(drop-down) 리스트에 (예컨대, 설계 프로그램 인터페이스 내에 직접적으로) 표시되는 정보 형태로 제공된다. 예컨대, 가용 리소스에 대응하는 식별자 정보(즉, 키네임, 스트링 및/또는 값 정보)는 개발자의 선택과 스테이트먼트 완성을 위해 개발자에게 표시된다.
일 실시예에 따라서, 유효 리소스 정보가 특정 리소스 참조를 위해서 표시된다. 예컨대, 리소스 객체, 명령 또는 함수의 기입에 따라서, 작동기 키는 현재의 명령 또는 함수에 대한 유효값의 드롭 다운 리스트의 표시를 개시한다. 일 실시예에 따라서, 이 작동기 키는 마침표 (.)이다. 다른 실시예들에 따라서는, 이 작동기 키는 스페이스 바, 좌(열림) 괄호, 또는 몇 가지 다른 키 콜(call)이다. 일 실시예에 따라서, 드롭 다운 리스트를 통해 네비게이트(즉, 스크롤링)하거나 타이핑하고, 이용될 수 있는 선택들 중 하나에서 (예컨대 소정 시간 동안) 멈추면, 드롭 다운 메뉴 부근의 팝업 창에 추가 정보가 나타나게 될 것이다.
일 실시예에 따라서, 개발자에게는 설계 프로그램 인터페이스에 대한 옵션이 제공되는데, 이 옵션에 의해서 개발자는 리소스 정보의 자동 전달 상태를 자동, 수동 또는 불능으로 조정할 수 있다. 자동으로 설정되면, 작동기 키가 눌러질 때에 리소스 리스트가 자동으로 나타난다. 수동으로 설정되면, 커서가 정보 이용가능성에 관련된 장소에 위치할 때에 개발자는 (예컨대, 편집 메뉴 명령, 단축 메뉴 선택, 또는 CTRL 키 조합으로) 리소스 정보의 표시를 선택적으로 작동시킬 수 있다. 일 실시예에 따라서, CLS 컴플라이언트 리소스에 특히 관련된 정보는 StringRes 툴(206)의 컴포넌트로서 제공된 전술한 설계 프로그램 인터페이스 업그레이드를 통해 개발자에게 이용될 수 있다.
일반적으로 말하면, StringRes 툴(206)은 리소스 식별자와 이에 대응하는 정보, 특히 CLS 컴플라이언트 리소스에 관련된 식별자와 정보의 선택을 위한 효율적인 상호 참조를 가능하게 한다. 따라서, 본 발명의 일 양상에 따라서, 개발자가 리소스 클래스로 들어가서 작동키를 가지고 그 클래스를 따라가면, 관련된 접근가능한 메쏘드와 특성을 보여주는 리스트(예컨대, 드롭 다운 메뉴)가 자동적으로 제공된다. 일 실시예에 따라서, 그 자동적으로 생성된 리스트는 가용 스트링에 대한 키네임 집합이다. 그러면, 다른 실시예에 따라서, 키네임들 중 하나를 하이라이트시키면 (예컨대, 팝업 박스 내에서) 관련 스트링 값의 제공이 개시된다.
도 4는 설계 프로그램(202)에의 인터페이스의 다른 예를 나타낸 스크린샷(400)을 나타낸 것이다. 도 4의 스크린샷은 도 3의 스크린샷과 거의 유사하며, StringRes 툴(206)이 작동되고 있다는 가정도 유효하게 유지된다. 위치(425)에 있는 코딩 영역 내에서, 개발자는 예컨대 리소스 식별자의 입력에 대한 프리커서(precursor)인 "FORM11"를 입력하였다. 이 프리커서에 이어서, 개발자는 예컨대 드롭 다운 메뉴(430) 형태로 StringRes 툴(206)로부터 응답을 개시하는 작동기 키인 마침표(.)를 입력하였다. 메뉴(430)는 예컨대 대응하는 프리커서 엔트리에 유효한 리소스 정보를 포함한다.
일 실시예에 따라서, 드롭 다운 박스 내의 정보는 계층적 형태로 정리된다. 예컨대, 리소스는 복수의 언어에 기반을 두고 이용될 수 있는데, 여기서 복수의 언어 각각은 더 넓은 소스 요소에 관련된 계층적 요소로서 드롭 다운 박스에 표시된 독립적 요소에 해당한다. 물론, 구성은 언어가 아닌 다른 요소에 기반할 수 있다. 메뉴(430)는 예시된 6가지 선택보다 더 많은 선택(예컨대, 알파벳 순 또는 이와 다르게 배열된 스크롤가능 리스트)을 포함하도록 구성될 수 있다. 메뉴(430)에 리스트된 요소들은 CLS 컴플라이언트 요소와 같은 요소에 해당하는 키네임일 수 있지 만, 반드시 그런 것은 아니다.
상기 예를 계속해서 설명하면, 개발자는 메뉴(430)를 통해 네비게이트하고 "MICHELLELOC" 엔트리에서 멈춘다. 이 엔트리에 잠깐 멈추어 있으면, 메뉴(430)로부터 선택된 요소에 관련된 스트링 및/또는 값 정보를 포함하는 해당 팝업 박스(436)가 출현되기 시작한다. 궁극적으로 개발자는 메뉴(430)로부터 엔트리들 중 하나를 선택할 것이다. 선택하게 되면 리소스 키네임, 스트링 및/또는 값이 적당한 위치에 있는 코드에 자동적으로 삽입될 것이다.
도 5는 본 발명의 일 실시예와 연관된 단계들을 나타낸 플로우 차트이다. 단계(502)에 따라서, 개발자에게 CLS 컴플라이언트 리소스에 대한 접근권이 제공된다. 단계(504)에 따라서, 코드 개발 중에, CLS 컴플라이언트 리소스를 나타내는 리소스 식별자 집합이 개발자에게 제시된다. 그러면, 단계(506)로 나타낸 바와 같이, 개발자는 그 집합으로부터 원하는 CLS 컴플라이언트 리소스를 나타내는 식별자를 선택한다. 마지막으로, 단계(508)에 따라서, 해당되는 정확한 정보가 개발자의 프로젝트에 포함되게 된다.
본 발명의 다른 양상에 따라서, StringRes 툴(206)은 리소스, 특히 CLS 컴플라이언트 리소스의 어드레스 지정에 에러가 있었는지 여부를 판단하는 빌드 타임 체크를 지원한다. 이 체크는 코드 내의 리소스 식별자 값을 유효값 집합(예컨대, 리소스 정보의 전술한 설계-시간 제공을 지원하기 위하여 유지된 리소스 값 집합)과 비교함으로써 실시된다. 저장된 값과 일치하지 않는 리소스 값이 있다면, 예컨대 에러 정정을 위해 개발자에게 에러가 제시될 것이다. 일 실시예에 따라서, 새 로운 또는 다른 리소스 입력을 받아들일 수 있는 시스템을 구성하기 위하여 개발자가 필요에 따라서 유효값 리스트에 정보를 부가할 수 있도록 시스템이 구성된다.
일 실시예에 따라서, 도 3의 스크린샷을 참조하여, 리소스 툴을 새로운 리소스 정보에까지 확장시키기 위하여 개발자는 영역(305) 솔루션 탐색 도구 내의 프로젝트를 선택한다(예컨대, 오른쪽을 클릭한다). 그러면, 개발자는 ".strings" 확장자를 가진 파일의 프로젝트 파일에 대해 추가를 시작할 수 있다. 따라서, 필요에 따라서 새로운 스트링들이 ".strings" 파일에 추가될 것이다.
한 가지 이상의 특정 실시예에 따라서, 새로운 리소스 정보를 추가하기 위하여, 개발자는 먼저 솔루션 영역(305)에서 어떤 프로젝트를 선택하여(즉, 오른쪽을 클릭하여) 기능 옵션 메뉴를 불러낸다. 그 다음, 개발자는 다이얼로그를 불러내기 위하여 "Add New Item" 기능을 선택한다. 그 다음, 개발자는 ".strings" 확장자를 가진 파일을 프로젝트에 추가하기 위하여 "Resources" 카테고리와 "String Resource Tool" 서브카테고리를 선택한다. 솔루션 탐색 도구에서 "Show All Files" 옵션을 선택하면, 예컨대 ".strings" 파일이 2개의 차일드 항목, 즉 ".cs" 파일과 ".resx" 파일을 갖는 것으로 나타나게 될 것이다. 이들 차일드 파일들은 예컨대 이들 파일이 ".strings" 파일로부터 생성될 때는 직접 편집되지는 않는다. 이들 파일은 빌드 타임에서는 생성되지 않고, 대신에 ".strings" 파일, 또는 ".strings" 파일의 커스텀 툴이나 커스텀 툴 네임스페이스(namespace) 특성에 변경이 있을 때마다 생성된다.
리소스 정보를 추가하기 위해서 개발자는 예컨대 포맷 "<keyName> = <value>"을 사용하여 단순히 정보를 ".strings" 파일에 추가하기만 하면 된다. 이 포맷의 일례는 다음과 같다.
SimpleMsg = This is a simple message.
".strings" 파일의 디폴트 파일명은 예컨대 STR.strings이며, 이것은 차일드인 ".cs" 파일에서 "STR1"이라는 이름을 가진 클래스(클래스명들은 파일명에서 유래한다)를 생성한다. 따라서, 예컨대, C# 프로그래밍 환경에서는 다음과 같은 것이 정확한 예가 될 것이다.
STR1.SimpleMsg;//the string returned from this would be "This is a
simple message."
string.format을 이용하는 공통 작업은 예컨대 툴도 책임을 지고 있다. 그 예는 다음과 같다.
FileNotFoundError(filename, description, int reties) = The file {0}
was not found because {1}. The number of retry attempts was {2}.
주어진 변수의 타입을 명시하지 않으면 그 타입의 디폴트값은 예컨대 System.Srtring이 된다. C# 프로그래밍 환경에서 적용가능한 예는 다음과 같다.
STR1.FileNotFoundError("myfile.abc", "the file was deleted", 30) = This
would print: The file myFileabc. was not found because the file was
deleted. The number of retry attempts was 30.
".strings" 파일에서의 코멘트는 예컨대 우물 정자 부호(#)나 세미콜론(;)으로 시작한다. 우물 정자 부호(#)로 표시된 코멘트는 예컨대 외부에서는 볼수 없 고, 세미콜론(;)으로 표시된 코멘트는 일반적으로 이용될 수 있다. 외부에서 볼 수 있는 코멘트는 ".resx" 파일로 출력된다. StringRes 툴은 예컨대 라인의 첫번째 캐릭터가 '#' 또는 ';'인 경우, 및 그러한 경우에 한해서만 유효 코멘트 라인을 인식할 것이다.
".strings" 파일에서 각 메시지는 예컨대 자동 생성 클래스에서 두 개의 액세서(accessor)를 생성한다. 두 개의 액세서 중 하나는 "언어 중립(language neutral)"을 위한 것이고 다른 하나는 "규정 언어(specified language)"를 위한 것이다. 단순 타입의 메시지에 대해서는 액세서는 필드이다. 언어를 변수로서 추가하기 위해서는 함수가 추가되고 이름이 약간 바뀐다(예컨대, 필드명에 "Loc"가 첨부된다). 변수를 택하는 메시지에 대해서는 이름은 바뀌지 않고 변수 리스트만 바뀐다(즉, CultureInfo 변수가 추가된다). 자동 생성된 ".cs" 파일을 한번 숙독하면 그 세부사항을 알게 될 것이다.
".strings" 파일은 프로젝트에 추가되면 예컨대 "StringRes,"로 설정된 커스텀 툴 특성, 널(null)로 설정된 커스템 툴 네임스페이스, 그리고 "논(none)"으로 설정된 빌드 액션(Build Action)을 갖는다. StringRes의 출력을 위한 네임스페이스는 프로젝트로부터 구해지나, 이것은 예컨대 커스텀 툴 네임스페이스를 그 출력을 위해 원하는 네임스페이스로 설정함으로써 무시될 수 있다.
설계 프로그램이 StringRes 툴을 커스텀 툴로 인식하는 방식은 예컨대 StringRes로 설정된 커스텀 툴 특성을 가진 솔루션 탐색 도구 내의 파일에 의하는 것이다. 따라서, 커스텀 툴 특성이 StringRes로 설정되고 파일이 유효 포맷으로 되어 있는 한 ".txt" 또는 ".abc" 파일을 추가하는 것은 무방하다(즉, C# 프로젝트 내에 있는 것이다).
제조 시에 컬쳐 중립(culture-neutral) 리소스를 전개(deployment)한 후에는 예컨대 loc 리소스는 바이너리를 터치하지 않고 또 재구축(rebuild)을 할 필요없이 언제든지 전개될 수 있다. 만일 스트링 리소스가 요구되고 또 이것이 런타임 시에 이용될 수 없는 것이라면, 리소스의 계층이 자세히 검토되며, 계층의 근원(root)은 컬쳐 중립 리소스 세트이다. 그래서, 만일 일본어 스트링이 요구되지만 이를 이용할 수 없는 경우에는, 영문 스트링으로 답하게 될 것이다. 후에 일본어 리소스 세트가 이용가능하게 되면 일본어 스트링으로 답하게 될 것이다.
일례로서, 다음의 시나리오를 생각해 본다.
1) AppX는 AppX 실행파일에 삽입된 스트링 리소스를 이용한다.
2) 6주 후에, 오스트리아에서 AppX에 대해 관심이 갑자기 생겨서 오스트리아
독일어는 Sysem.Localization.CultureInfo 클래스의 "de-At"로 된다.
3) AppX의 실행파일 디렉토리에 표준 독일어를 위한 "de"의 서브디렉토리는 물론 "de-AT"의 서브디렉토리가 생성된다.
4) 오스트리아 독일어를 위한 loc 판매자(vendor)는 지연되지만, 국부화된 리소스는 표준 독일어로 정시에 수신된다.
5) 국부화된 리소스는 "de" 서브디렉토리에 드롭되고(dropped), loc
리소스가 드롭 핫되었기(dropped hot) 때문에(예컨대, 서비스를 재개할 필요가 없었기 때문에) AppX는 계속해서 실행된다.
6) "de-AT" 스트링에 대한 요구가 "de" 스트링으로 리턴된다.
7) 훗날에 "de-AT"에 대한 리소스가 드롭되면, 이 리소스가 대신으로
리턴된다.
일 실시예에 따라서, StringRes 툴은 복수의 스트링을 관리하도록 구성되며, 스트링의 표현은 (예컨대 드롭 다운 리스트박스 내에서) 사용자에게 어떤 형태로 제공된다. 이 툴은 자동 완료 기능을 제공하며, 사용자가 StringRes가 관리하고 있는 엔트리들 중 하나를 선택할 때에(예컨대 드롭 다운 박스에서 선택할 때에) 그 스트링의 값은 (예컨대, 팝업 박스 내에서) 어떤 형태로 사용자에게 제공된다.
예컨대, StringRes 툴이 "myString = This is my string"을 포함하는 STR1.strings를 관리하고 있는 시나리오를 생각해 본다. 만일, 설계 프로그램 인터페이스 내에서, 사용자가 (예컨대, VisualStudio.net IDE 처럼) 적당한 위치에 있는 STR1에 타이핑해 넣는다면, 대응하는 옵션 리스트가 (예컨대, 드롭 다운 리스트 박스 내에) 나타나게 될 것이다. 만일 사용자가 옵션 리스트 myString에서 선택한다면, 툴은 해당값(예컨대, "This is my string")을 보고할 것이다. 일 실시예에 따라서, 이 해당값은 벌룬(balloon) 또는 팝업 박스 내에 보고된다. 따라서, 사용자는 원하는 시간에 어드레스 지정된 스트링의 **값**을 얻을 수 있다.
지금까지 설명된 방법들은 일반적으로 리소스 어드레스 지정 에러를 감소시키거나 제거하므로 응용 프로그램에 에러가 들어오는 것을 방지할 수 있다. 리소스, 특히 CLS 컴플라이언트 리소스의 값을 제공하면, 설계 시에 코드 개발의 생산성과 정확도를 높일 수가 있다.
본 발명에 대한 설명은 스트링을 특히 ".strings" 파일에 추가시키는 방법에 대한 설명을 포함하고 있다. 본 발명의 일 양상에 따라서, StringRes 툴은 표준 파일(예컨대, 표준 ".resx" 파일)을 가지고서도 작동한다. 일 실시예에 따라서, StringRes 툴 기능을 통해 이용가능하게 되는 정의에 스트링 정의가 추가되면, 필요한 것은 단지 이름/값 쌍(예컨대, "myString = This is my string")뿐이다.
지금까지 특정 실시예들을 참조로 본 발명을 설명하였지만, 당업자라면 본 발명의 본질과 범위를 벗어남이 없이 본 발명을 여러가지 형태로 변경할 수 있음을 잘 알 것이다.
본 발명에 따르면, 관리되는 코드 실행 환경에서 런타임 전에 코딩 에러를 감소 또는 제거할 수 있기 때문에, 응용 프로그램에 에러가 들어오는 것을 방지할 수 있고 코드 설계 시에 코드 개발의 생산성과 정확도를 높일 수가 있다.

Claims (25)

  1. 관리되는 코드 실행 환경의 관점에서 런타임(runtime) 전에 코딩 에러를 감소시키기 위한 컴퓨터 구현 방법으로서,
    개발자에게 복수의 관리되는 코드 리소스(resource)에의 접근권을 제공하는 단계; 및
    상기 개발자에 의해 입력된 리소스 식별자(idenfifier)가 상기 복수의 관리되는 코드 리소스 중 어느 하나에 해당하는 것을 검증하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 검증 단계는,
    상기 개발자에게 리소스 식별자 집합을 제공하는 단계; 및
    상기 리소스 식별자 집합에서 선택하는 형태로 상기 개발자로부터 입력된 상기 리소스 식별자를 수신하는 단계
    를 포함하는 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 리소스 식별자 집합 제공 단계는 상기 개발자에 의해 선택된 특정 클래스에 해당하는 리소스 식별자 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  4. 제2항에 있어서, 상기 리소스 식별자 집합 제공 단계는 상기 개발자에 의한 작동 키 입력에 응답하여 리소스 식별자 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  5. 제4항에 있어서, 상기 작동 키 입력에 응답한 리소스 식별자 집합 제공 단계는 리소스 클래스 입력에 이은 작동 키 입력에 응답하여 리소스 식별자 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  6. 제2항에 있어서, 상기 리소스 식별자 집합 제공 단계는 키네임(key name) 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 개발자에게 상기 리소스 키네임 집합 중에서 선택된 어느 한 키네임에 해당하는 리소스 값을 제공하는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제2항에 있어서, 상기 개발자에게 상기 리소스 식별자 집합 중에서 선택된 어느 한 식별자에 해당하는 리소스 값을 제공하는 단계를 더 포함하는 컴퓨터 구현 방법.
  9. 제8항에 있어서, 상기 리소스 값 제공 단계는 팝업(pop-up) 박스 내에 정보 를 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  10. 제2항에 있어서, 상기 리소스 식별자 집합 제공 단계는 드롭 다운(drop-down) 메뉴 내에 정보를 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  11. 제1항에 있어서, 상기 개발자에게 복수의 관리되는 코드 리소스에의 접근권을 제공하는 단계는 상기 개발자에게 공통 언어 명세(Common Language Specification)에 따르는 복수의 리소스에의 접근권을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  12. 제1항에 있어서, 상기 개발자로부터 상기 복수의 관리되는 코드 리소스에의 추가를 수신하는 단계를 더 포함하는 컴퓨터 구현 방법.
  13. 제2항에 있어서, 상기 리소스 식별자 집합 제공 단계는 리소스 정보의 표시 요구에 해당하는 상기 개발자에 의한 입력에 응답하여 리소스 식별자 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  14. 제2항에 있어서, 상기 리소스 정보의 표시 요구에 해당하는 상기 개발자에 의한 입력에 응답하여 리소스 식별자 집합을 제공하는 단계는,
    커서가 정보 이용가능성에 관련된 장소에 위치할 때에 행해진 상기 개발자에 의한 입력에 응답하여 리소스 식별자 집합을 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  15. 제2항에 있어서, 상기 개발자에게 리소스 식별자 집합을 제공하는 단계는 본질적으로 동일한 리소스의 서로 다른 언어 버전을 식별하는 적어도 2개의 식별자를 포함하는 리소스 식별자 집합을 상기 개발자에게 제공하는 단계를 포함하는 컴퓨터 구현 방법.
  16. 소프트웨어 애플리케이션을 개발하기 위한 시스템으로서,
    관리되는 코드 실행 환경을 제공하는 관리되는 코드 기반구조;
    적어도 부분적으로 상기 관리되는 코드 실행 환경을 목표로 하는 코드의 생성 시에 개발자를 지원하는 코드 생성 환경을 제공하는 설계 프로그램; 및
    상기 설계 프로그램을 보충하여, 리소스 식별자가 상기 관리되는 코드 실행 환경이 지원하는 관리되는 코드 리소스에 대응하도록 올바르게 어드레스 지정되는 것을 개발자가 검증할 수 있도록 해주는 스트링 리소스 툴(tool)
    을 포함하는 소프트웨어 애플리케이션 개발 시스템.
  17. 제16항에 있어서, 상기 스트링 리소스 툴은 리소스 식별자가 공통 언어 명세에 따르는 리소스에 대응하도록 올바르게 어드레스 지정되는 것을 개발자가 검증할 수 있도록 더 구성되는 소프트웨어 애플리케이션 개발 시스템.
  18. 제17항에 있어서, 상기 스트링 리소스 툴은,
    상기 설계 프로그램과의 인터페이스를 통해 리소스 식별자 집합을 제공하고,
    상기 리소스 식별자 집합에서 선택하는 형태로 상기 개발자로부터 입력된 리소스 식별자를 수신함으로써
    상기 리소스 식별자가 올바르게 어드레스 지정되는 것을 상기 개발자가 검증할 수 있도록 구성되는 소프트웨어 애플리케이션 개발 시스템.
  19. 제18항에 있어서, 상기 스트링 리소스 툴은 상기 설계 프로그램 인터페이스를 통해 리소스 키네임 정보를 제공하도록 더 구성되는 소프트웨어 애플리케이션 개발 시스템.
  20. 제18항에 있어서, 상기 스트링 리소스 툴은 상기 설계 프로그램 인터페이스를 통해 값 정보를 제공하도록 더 구성되는 소프트웨어 애플리케이션 개발 시스템.
  21. 관리되는 코드 실행 환경의 컨텍스트에서 런타임 전에 코딩 에러를 감소시키기 위한 스트링 리소스 툴로서,
    선택 대상이 되는 식별자들의 폐집합에서 특정 스트링을 나타내는 특정 식별자를 개발자가 선택할 수 있게 하는 스트링 정보를 설계 프로그램 인터페이스를 통해 제공하는 툴 컴포넌트를 포함하는 스트링 리소스 툴.
  22. 제21항에 있어서, 상기 스트링 정보는 선택 대상이 되는 식별자들의 폐집합에서 공통 언어 명세에 따르는 특정 스트링을 나타내는 특정 식별자를 개발자가 선택할 수 있게 하는 스트링 리소스 툴.
  23. 제21항에 있어서, 선택 대상이 되는 식별자들의 상기 폐집합은 상기 개발자가 선택하는 특정 클래스에 대응하는 스트링 리소스 툴.
  24. 제21항에 있어서, 상기 툴 컴포넌트는 상기 개발자에 의한 상기 설계 프로그램 인터페이스 내로의 작동 키 입력에 응답하여 상기 스트링 정보를 제공하도록 구성되는 스트링 리소스 툴.
  25. 제21항에 있어서, 상기 툴 컴포넌트는 선택 대상이 되는 식별자들의 상기 폐집합에서 표현된 적어도 하나의 식별자를 위해 상기 설계 프로그램 인터페이스를 통해 값 정보를 제공하도록 더 구성되는 스트링 리소스 툴.
KR1020050022360A 2004-03-17 2005-03-17 공통 언어 런타임 언어에서의 리소스에 대한 어드레스 지원 KR101114038B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/802,422 2004-03-17
US10/802,422 US7814464B2 (en) 2004-03-17 2004-03-17 Address support for resources in common-language runtime languages

Publications (2)

Publication Number Publication Date
KR20060044361A true KR20060044361A (ko) 2006-05-16
KR101114038B1 KR101114038B1 (ko) 2012-02-21

Family

ID=34838905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050022360A KR101114038B1 (ko) 2004-03-17 2005-03-17 공통 언어 런타임 언어에서의 리소스에 대한 어드레스 지원

Country Status (5)

Country Link
US (1) US7814464B2 (ko)
EP (1) EP1577762A3 (ko)
JP (1) JP4851107B2 (ko)
KR (1) KR101114038B1 (ko)
CN (1) CN1670715B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626437B2 (en) * 2004-06-10 2017-04-18 International Business Machines Corporation Search scheduling and delivery tool for scheduling a search using a search framework profile
US7802228B2 (en) * 2004-08-19 2010-09-21 Microsoft Corporation Systems and methods for varying software build properties using primary and supplemental build files
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
US20110271258A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments
US9760415B2 (en) 2014-05-16 2017-09-12 Microsoft Technology Licensing, Llc Code service for language-independent dispatch
CN113064647A (zh) * 2021-03-26 2021-07-02 山东英信计算机技术有限公司 一种bios中配置项目端口的方法、装置、终端及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281879A (ja) * 1994-04-11 1995-10-27 Hitachi Ltd アプリケーションプログラム編集装置
US5640558A (en) * 1995-05-31 1997-06-17 International Business Machines Corporation Identifying and analyzing multiple level class relationships in an object oriented system by parsing source code without compilation
JPH10254688A (ja) * 1997-03-07 1998-09-25 Toshiba Corp プログラム作成支援装置
JP2001175596A (ja) * 1999-12-14 2001-06-29 Nec Corp コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体
JP2002082804A (ja) * 2000-09-06 2002-03-22 Akifumi Watanabe 動的識別子情報を利用するエディタ
US6799718B2 (en) * 2001-07-10 2004-10-05 Borland Software Corp. Development assistance for mixed-language sources
US6965990B2 (en) * 2001-10-23 2005-11-15 International Business Machines Corporation Method and apparatus for providing programming assistance
US20040015564A1 (en) * 2002-03-07 2004-01-22 Williams Scott Lane Method of developing a web service and marketing products or services used in developing a web service

Also Published As

Publication number Publication date
US20050210449A1 (en) 2005-09-22
CN1670715B (zh) 2011-02-09
JP2005267644A (ja) 2005-09-29
US7814464B2 (en) 2010-10-12
EP1577762A3 (en) 2006-01-18
EP1577762A2 (en) 2005-09-21
KR101114038B1 (ko) 2012-02-21
JP4851107B2 (ja) 2012-01-11
CN1670715A (zh) 2005-09-21

Similar Documents

Publication Publication Date Title
US7127707B1 (en) Intellisense in project upgrade
KR100498529B1 (ko) 소프트웨어 번역용 자기 분석 편집기 시스템, 프로그램 및방법
US7581206B2 (en) Systems and methods for creating and providing templates in a single file
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US20100287525A1 (en) Extension through visual reflection
US7877680B2 (en) Auto-generation and auto-versioning of a multi-sourced dynamic document
US20090064196A1 (en) Model based device driver code generation
Wolfson et al. Android developer tools essentials: Android Studio to Zipalign
US20060161880A1 (en) Systems and methods for creating and providing templates in a single file
US8122433B2 (en) Software documentation manager
KR101114038B1 (ko) 공통 언어 런타임 언어에서의 리소스에 대한 어드레스 지원
Smyth Android Studio 3.2 Development Essentials-Android 9 Edition: Developing Android 9 Apps Using Android Studio 3.2, Java and Android Jetpack
US20160321055A1 (en) Mapping between local and remote for seamless build and design time experience
US11947443B2 (en) Robotic process automation (RPA) debugging systems and methods
US20210200560A1 (en) Enhanced Target Selection for Robotic Process Automation
JP5108773B2 (ja) 宣言的に定義されるコントロールアクション
CN114217789A (zh) 功能组件拓展方法、装置、设备、存储介质及程序产品
Speight Visual Studio Code for Python Programmers
US20090217254A1 (en) Application level smart tags
US8561057B2 (en) Information processing apparatus, processing method, and computer-readable recording medium having processing program recorded thereon
Smyth Android Studio 4.1 Development Essentials-Kotlin Edition
Smyth Android Studio 3.0 Development Essentials-Android 8 Edition
US7917893B2 (en) Using a system of annotations to generate views and adapters
CN114647413A (zh) 一种代码处理方法以及相关设备
CN114691096A (zh) 智能合约开发方法、装置、设备和存储介质

Legal Events

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

Payment date: 20150121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee