KR20080078018A - 사용자가 구성가능한 소프트웨어 라이브러리 - Google Patents

사용자가 구성가능한 소프트웨어 라이브러리 Download PDF

Info

Publication number
KR20080078018A
KR20080078018A KR1020087015636A KR20087015636A KR20080078018A KR 20080078018 A KR20080078018 A KR 20080078018A KR 1020087015636 A KR1020087015636 A KR 1020087015636A KR 20087015636 A KR20087015636 A KR 20087015636A KR 20080078018 A KR20080078018 A KR 20080078018A
Authority
KR
South Korea
Prior art keywords
software library
configurable
library
base
code
Prior art date
Application number
KR1020087015636A
Other languages
English (en)
Other versions
KR100953239B1 (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 KR20080078018A publication Critical patent/KR20080078018A/ko
Application granted granted Critical
Publication of KR100953239B1 publication Critical patent/KR100953239B1/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/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법이 개시된다. 기본 소프트웨어 라이브러리의 적어도 하나의 구성가능한 설정을 위해 타겟 설정을 지정하기 위한 사용자 입력이 수신된다. 기본 소프트웨어 라이브러리는 구성가능하도록 설계된다. 기본 소프트웨어 라이브러리에 추가되거나 기본 소프트웨어 라이브러리로부터 제거되는 적어도 하나의 코드 세그먼트가 타겟 설정을 기초로 하여 식별된다. 수정 소프트웨어 라이브러리는 컴퓨터 프로그램을 활용하여 자동화된 방법으로 기본 소프트웨어 라이브러리를 변경함으로써 생성된다. 상기 방법을 수행하기 위한 시스템들이 또한 개시된다. 기본 및 수정 소프트웨어 라이브러리들은 사람이 판독할 수 있는 또는 컴퓨터 판독가능(2진) 포맷일 수 있다. 개시된 시스템 및 방법들은 예를 들면 프로그래밍 코드에 결합되거나 참조된 소프트웨어 라이브러리를 간소화하는데 활용될 수 있다.
base software library, user input, target setting, configurable setting, modified software library

Description

사용자가 구성가능한 소프트웨어 라이브러리{USER CONFIGURABLE SOFTWARE LIBRARIES}
본 발명은 일반적으로는 컴퓨터 및 컴퓨터 관련 기술에 관한 것이다. 더 구체적으로는 사용자가 구성가능한 소프트웨어 라이브러리에 관한 것이다.
컴퓨터 및 통신 기술은 빠른 속도로 계속해서 진보하고 있다. 실제로, 컴퓨터 및 통신 기술은 다양한 양상의 인간의 일상에 관련되고 있다. 예를 들면, 소비자들에 의해 오늘날 사용되고 있는 많은 장치들은 장치의 내부에 소형 컴퓨터를 가지고 있다. 이러한 소형 컴퓨터들은 크기 및 정교함의 정도를 변화시키고 있다. 이러한 소형 컴퓨터들은 한 개의 마이크로컨트롤러로부터 충분한 기능의 완전한 컴퓨터 시스템에 이르기까지 모든 것을 포함한다. 예를 들면, 이러한 소형 컴퓨터들은 마이크로컨트롤러와 같은 원-칩(one-chip) 컴퓨터, 컨트롤러와 같은 원-보드(one-board)형 컴퓨터, 호환성이 있는 IBM-PC와 같은 전형적인 데스크탑(desktop) 컴퓨터 등일 수 있다.
컴퓨터들은 일반적으로 하나 또는 그 이상의 프로세서를 컴퓨터의 중심부에 지니고 있다. 프로세서는 보통 다른 외부의 입력요소 및 출력요소와 상호 접속되어 있고, 특정 컴퓨터 또는 장치를 관리하도록 작용한다. 예를 들면, 자동 온도 조절 장치에 있는 프로세서는 온도 설정을 선택하기 위해 사용되는 버튼, 온도를 변화시키기 위한 화로 또는 냉난방 장치, 그리고 현재의 온도를 읽고 표시창에 표시하기 위한 온도 센서에 접속될 수 있다.
많은 기구, 장치 등은 하나 또는 그 이상의 소형 컴퓨터를 포함하고 있다. 예를 들면, 자동 온도 조절장치, 화로, 냉난방 시스템, 냉장고, 전화, 타자기, 자동차, 자동 판매기, 그리고 많은 다른 형태의 산업 장비는 현재 일반적으로 그들의 내부에 소형 컴퓨터 또는 프로세서를 가지고 있다. 컴퓨터 소프트웨어는 이러한 컴퓨터들의 프로세서를 운용하고 있으며, 프로세서로 하여금 어떤 작업을 수행하도록 하는 방법을 지시한다. 예를 들면, 자동 온도 조절장치상에서 동작하는 컴퓨터 소프트웨어는 냉난방 장치로 하여금 어떤 특정 온도에 도달되면 가동을 중단하도록 하거나, 필요한 경우 히터가 작동하도록 하게 할 수 있다.
컴퓨터 기술 측면에서 매우 중요한 것 중의 하나로 소프트웨어 라이브러리(software libraries)가 있다. 소프트웨어 라이브러리는 본래 실행 시간(run time)(동적으로 라이브러리를 연결하는)에 또는 프로그램이 기계 판독가능 코드(machine-readable code)(정적으로 라이브러리를 연결하는)로 컴파일될 때에 프로그래머가 컴퓨터 프로그램에 넣을 수 있는 사전에 패키지로 된 프로그래밍 코드(pre-packaged programming code)이다. 소프트웨어 라이브러리는 사용자가 신속한 방법으로 소프트웨어 프로그램을 생성할 수 있다는 점에서 가치가 있다. 프로그래머는 특정 프로그램에 사용되는 단일 알고리즘을 매번 생성할 필요가 없다.
불행하게도, 현재의 소프트웨어 라이브러리에는 많은 문제점이 있다. 예를 들면, 소프트웨어 라이브러리는 블랙 박스(black box) 포맷에 자주 공급되어서 프로그래머는 라이브러리에 있는 알고리즘이 어떻게 일을 수행하는지 곧 알 수는 없다. 그 결과, 프로그래머는 라이브러리에 있는 알고리즘의 제한이나 성능을 충분히 알 수가 없다.
게다가, 라이브러리는 보통 수정될 수가 없다. 그 결과, 프로그래머는 라이브러리에 있는 그대로의 함수를 활용할 수밖에 없다. 프로그래머는 특정한 상황에 적합한 라이브러리를 사용자 주문에 맞출 수가 없다. 이것이 일정한 상황에서는 중대한 문제와 제한을 만들어낼 수 있다. 예를 들면 임베디드(embedded: 내장형) 장치에 대한 프로그래밍을 할 때, 종종 중대한 메모리 및 처리 제한이 생겨서, 프로그래머는 프로그램에 의해 활용되는 특정 함수의 크기에 대해 어느 정도 걱정을 해야 한다. 크기가 중요한, 라이브러리에 있는 함수들은 임베디드 장치에 쉽게 활용될 수 없다. 비록 이 함수들은 태스크(task)를 프로그래밍하는 데에는 불필요한 많은 코드 세그먼트들을 가지고 있지만 말이다. 그러나 프로그래머가 라이브러리에 있는 프로그래밍 코드를 변경할 수도, 채택할 수도, 심지어는 볼 수도 없기 때문에 많은 프로그래밍 태스크(task)에 알고리즘이 사용될 수가 없다.
또, 소프트웨어 라이브러리가 공급되고 편집가능할 때 더 새로운 버전의 라이브러리가 공급된다면 중대한 문제가 발생할 수 있다. 예를 들면, 소프트웨어 라이브러리 버전1이 사용자에 의해 편집될 때, 버전 1에 행해진 변경 또는 적응 사항을 소프트웨어 라이브러리의 버전 2에 반영하는 것은 거의 불가능하거나 적어도 시간이 많이 걸릴 것이다.
전술한 것을 고려하여, 소프트웨어 라이브러리의 사용자 구성가능함을 위한 시스템 및 방법의 개선에 의해 이익이 실현될 수 있다. 소프트웨어 라이브러리를 구성가능하게 하기 위한 몇 개의 모범적인 시스템 및 방법이 여기에 개시된다.
구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법이 개시된다. 코멘트(comment)용 희망 타겟 언어(target language)에 따라서, 기본 소프트웨어 라이브러리(base software library)의 적어도 하나의 구성가능한 설정(configurable setting)을 위한 타겟 설정(target setting)을 지정하기 위해서 사용자 입력(user input)을 수신한다. 상기 기본 소프트웨어 라이브러리는 구성가능하도록, 사람이 판독가능한 프로그래밍 코드(human-readable programming code)를 포함하도록 설계된다. 기본 소프트웨어 라이브러리에 추가 또는 기본 소프트웨어 라이브러리로부터 제거되는 적어도 하나의 코드 세그먼트가 식별된다. 상기 소프트웨어 라이브러리는 타겟 설정 및 코멘트용 희망 타겟 언어를 기초로 한다. 수정 소프트웨어 라이브러리는 기본 소프트웨어 라이브러리를 컴퓨터 프로그램을 활용하여 자동으로 타겟 설정과 일치하도록 변경함으로써 생성된다. 수정 소프트웨어 라이브러리 내의 코멘트는 희망 타겟 언어 안에 있다. 상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함할 수 있다.
기본 소프트웨어 라이브러리의 구성가능한 설정을 결정하는 방법을 더 포함할 수 있다. 또한, 기본 소프트웨어 라이브러리는 제1 소프트웨어 라이브러리로부터 파생될 수 있다. 일 실시예로, 기본 소프트웨어 라이브러리 및 수정 소프트웨어 라이브러리는 임베디드 장치용 프로그래밍 코드를 포함할 수 있다. 타겟 설정은 수정 소프트웨어 라이브러리를 생성하기 위해서 기본 소프트웨어 라이브러리로부터 적어도 하나의 코드 세그먼트를 제거하도록 구성될 수 있다.
타겟 설정은 수정 소프트웨어 라이브러리를 생성하기 위해서 기본 소프트웨어 라이브러리에 적어도 하나의 코드 세그먼트를 추가하도록 구성될 수 있다. 예를 들면, 추가된 코드 세그먼트는 외부 소프트웨어 라이브러리에 대한 콜(call) 또는 수정 소프트웨어 라이브러리 내에서 사용하기 위한 상수를 정의하는 코드 세그먼트를 포함할 수 있다.
또한 전술한 방법들을 수행하는 컴퓨터 시스템이 개시된다. 상기 시스템은 프로세서(processor); 상기 프로세서와 전자적 통신을 하는 메모리; 및 전술한 방법들을 수행하기 위해 상기 메모리에 저장된 명령을 포함한다. 또한 전술한 방법들을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체(computer-readable medium)가 개시된다.
본 발명의 바람직한 실시예들은 첨부된 도면과 관련하여, 다음의 설명 및 첨부된 청구범위로부터 더욱 명백해질 것이다. 이러한 도면들은 단지 바람직한 실시예들을 보여주는 것으로 이해되어야 하고, 따라서, 본 발명의 범위를 한정하는 것으로 생각해서는 아니 되며, 본 발명의 바람직한 실시예들은 첨부된 도면을 이용하여 추가적인 전문성 및 상세함을 가지고 설명될 것이다.
도 1은 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템의 일 실 시예를 보여주는 블록도이다.
도 2는 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템의 다른 실시예를 보여주는 블록도이다.
도 3은 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템에 있어서 수정 소프트웨어 라이브러리를 생성하기 위해 코드 세그먼트들이 기본 소프트웨어 라이브러리로부터 제거되는 블록도이다.
도 4는 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템에 있어서 수정 소프트웨어 라이브러리를 생성하기 위해 특정 언어의 프로그래밍 코멘트가 기본 소프트웨어 라이브러리로부터 제거되는 블록도이다.
도 5는 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템에 있어서 수정 소프트웨어 라이브러리를 생성하기 위해 상수의 정의(constant definition)가 기본 소프트웨어 라이브러리에 삽입되는 블록도이다.
도 6은 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템에 있어서 수정 소프트웨어 라이브러리를 생성하기 위해 외부 라이브러리들을 초기화하기 위한 콜(call)이 기본 소프트웨어 라이브러리에 삽입되는 블록도이다.
도 7은 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법의 일 실시예를 보여주는 흐름도이다.
도 8은 컴퓨터 시스템에서 일반적으로 활용되는 주요 하드웨어 구성요소(component)들을 보여주는 블록도이다.
본 발명의 다양한 실시예들이 도면을 참조하여 설명되며, 여기서 동일한 참조 번호들은 동일한 또는 기능적으로 유사한 요소들을 나타낸다. 여기의 도면들에서 일반적으로 설명되고 도시된 바와 같은, 본 발명의 실시예들은 갖가지의 서로 다른 구성으로 배열 및 설계될 수 있다. 따라서, 도면에 나타내어진 바와 같은, 본 발명의 여러 바람직한 실시예들에 대한 다음의 더욱 상세한 설명은 청구된 바와 같은, 본 발명의 범위를 한정하기 위한 것은 아니며, 단지 본 발명의 실시예들을 나타내는 것에 불과하다.
"exemplary"라는 용어는 여기서는 오로지 "견본, 실례 또는 예증으로 쓰인다는 것"을 의미하기 위해 사용된다. "exemplary"로서 여기에 설명된 어떠한 실시예도 반드시 다른 실시예들 보다도 더 좋은 또는 유리한 것으로 해석되는 것은 아니다. 다양한 형태의 실시예들이 도면에 나타내어지지만, 도면은 특별히 지시되지 않는 한, 반드시 일정한 스케일(scale)로 그려지는 것은 아니다.
여기에 개시된 실시예들의 많은 특징은 컴퓨터 소프트웨어, 전자적인 하드웨어 또는 이 두 가지의 결합으로 실행될 수 있다. 하드웨어와 소프트웨어의 이러한 호환성을 확실하게 설명하기 위하여, 다양한 구성요소들이 통상 그들의 기능에 관한 용어로 설명될 것이다. 그러한 기능이 하드웨어나 소프트웨어로 실행되는지의 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계상의 제약사항들에 의해 좌우된다. 숙련된 기술자들은 설명된 기능을 각 특정 애플리케이션에 대하여 다양한 방식으로 실행할 수 있지만, 그러한 실행 결정이 본 발명의 범위로부터 일탈을 초래하는 것으로 해석되어서는 아니 된다.
설명된 기능이 컴퓨터 소프트웨어로 실행되는 경우에, 그러한 소프트웨어는 기억 장치 내에 배치된 및/또는 시스템 버스나 네트워크에 의해서 전자적인 신호로 전송된 어떤 형태의 컴퓨터 명령 또는 컴퓨터로 실행가능한 코드를 포함할 수 있다. 여기에 설명된 구성요소들과 관련된 기능을 실행하는 소프트웨어는 단일 명령, 또는 다수의 명령을 포함할 수 있고, 여러 개의 서로 다른 코드 세그먼트들로, 서로 다른 프로그램들 사이에, 그리고 여러 개의 기억 장치들에 걸쳐 공급될 수 있다.
여기에서 사용되는 "컴퓨팅 장치(computing device)"라는 용어는 프로세서(processor)를 가지고 있는 어떤 타입의 전자 장치(electronic device)를 말하며, 일반적으로는 수학적 또는 논리적 연산을 수행한다. 상기 컴퓨팅 장치는 메모리를 포함한다.(예: RAM, 플래쉬 메모리, 및/또는 하드 디스크 저장 장치)상기 컴퓨팅 장치는 메모리에 저장된 명령들을 처리한다. 컴퓨팅 장치는 다른 장치들과 통신하기 위한 통신 인터페이스(예: 네트워크 카드, 모뎀),사용자 입력을 받기 위한 입력장치(예: 키보드, 터치패드, 또는 마우스), 사용자에게 정보를 제공하기 위한 출력장치(예: 오디오 출력, 디스플레이 스크린)와 같은 다른 구성요소들을 선택적으로 포함할 수 있다. 게다가, 데스크톱 컴퓨터, 서버, 태블릿 PC, 노트북 컴퓨터, PDA, 휴대폰, 또는 임베디드 장치와 같은 다른 타입의 장치로서 컴퓨팅 장치가 구체화될 수 있음을 알아야한다.
도 1은 사용자가 구성가능한 소프트웨어 라이브러리를 제공하기 위한 시스템(100)의 실시예를 보여주는 블록도이다. 보여지는 실시예에서, 사용자가 구성가 능한 소프트웨어 라이브러리는 "기본 소프트웨어 라이브러리(base software library)"(104)로 나타내어진다. 기본 소프트웨어 라이브러리(104)는 다양한 방식으로 구체화된다. 예를 들면, 기본 소프트웨어 라이브러리(104)는 소스코드(source code) 또는 사람이 판독가능한 코드(human-readable code)를 포함한다. 대안으로, 기본 소프트웨어 라이브러리(104)는 이진 코드 또는 기계 판독가능 코드(machine-readable code)를 포함할 수 있다.
기본 소프트웨어 라이브러리(104)는 구성가능하도록 설계되고, 기본 소프트웨어 라이브러리(104)의 편집 모양(editing aspect)에 대한 설정(setting) 또는 프로그래밍 컨트롤(programming control)을 포함하거나 이에 연결될 수 있다. 새로운 또는 수정 소프트웨어 라이브러리(108)를 생성하기 위해 기본 소프트웨어 라이브러리(104)는 사용자에 의해 변경될 수 있다. 일 실시예로서, 기본 소프트웨어 라이브러리(104)는 그것의 컨텐츠들이 편집되지는 않고 단지 보여질 수 있도록 읽기 전용 포맷(read-only format)으로 공급된다. 그러한 실시예에서는, 라이브러리 사용자는 새로운 수정 소프트웨어 라이브러리(108)를 생성함으로써만 기본 소프트웨어 라이브러리(104)를 수정할 수 있다.
개시된 시스템(100)은 사용자 입력을 받기 위한, 그리고 기본 소프트웨어 라이브러리(104)의 구성을 위해 타겟 설정(target setting)을 만들기 위한 사용자 입력 요소(user input component)(112)를 더 포함한다. 타겟 설정(114)은 기본 소프트웨어 라이브러리(104)를 활용하여 수정 소프트웨어 라이브러리(108)의 생성을 컨트롤한다. 사용자 입력은 사용자 입력 요소(112)에 의해 다양한 방식으로 입력된 다. 예를 들면, 사용자 입력은 기본 소프트웨어 라이브러리(104)의 구성가능한 설정을 컨트롤하기 위해 만들어진 파일(file)을 포함한다. 대안으로, 타겟 설정(114)은 디스플레이 스크린 또는 다른 사용자 인터페이스 장치와의 사용자 상호작용(user interaction)을 고려하여 만들어질 수 있다. 사용자 입력 요소(112)에 의하여 만들어진 타겟 설정(114)은 구성가능한 설정 요소(116)에서 수신된다.
시스템(100)은 또한 구성가능한 설정 요소(116)를 포함한다. 구성가능한 설정 요소(116)는 기본 소프트웨어 라이브러리(104)의 어떤 모양이 구성가능한지를 결정한다.(즉, 식별한다.) 기본 소프트웨어 라이브러리(104)의 구성가능한 모양의 결정은 다양한 다른 방식으로 수행된다. 예를 들면, 데이터 파일 또는 그러한 구성 정보를 포함하는 데이터 컴파일이 접근(access)될 수 있다. 데이터 컴파일은 기본 소프트웨어 라이브러리(104)의 내부 또는 외부에서 이루어질 수 있다. 또 다른 예로, 기본 소프트웨어 라이브러리(104)는 기본 소프트웨어 라이브러리의 어떤 모양이 구성가능한지 식별하는데에 적합한 메타데이터(metadata), 키워드, 또는 스위치를 식별하도록 분석될 수 있다. 또한 구성가능한 설정 요소(116)는 특정 코드 세그먼트의 위치나 기본 소프트웨어 라이브러리(104)의 프로그래밍 코드영역이 예를 들면 라인 번호(line number) 또는 바이트 오프셋(byte offset)에 의해 변경되도록 결정한다.
일 실시예로서, 구성가능한 설정 요소(116)는 예를 들면 디스플레이 장치 같은 것에 의해 어떤 설정이 구성될 수 있는지 사용자에게 지시하기 위해 사용자 입력 요소(112)와 통신한다. 사용자 입력 요소(112) 및 구성가능한 설정 요소(116)는 기본 소프트웨어 라이브러리(104)로 통합될 수 있다. 또는 사용자 입력 요소(112) 및 구성가능한 설정 요소(116)로부터, 기본 소프트웨어 라이브러리(104)로부터 분리된 프로그램일 수 있다.
기본 소프트웨어 라이브러리(104)의 많은 다른 모양들이 사용자가 구성가능할 수 있다. 예로서, 기본 소프트웨어 라이브러리(104)는 두 전자 장치 사이의 통신을 가능하게 하기 위해 함수들의 라이브러리를 포함할 수 있다. 이 경우에 구성가능한 설정은 생성되는 소프트웨어를 위해 허용되는 통신 소켓의 수를 컨트롤할 수 있다.
타겟 설정(114)의 수신(receipt)에 응답하여, 구성가능한 설정 요소(116)는 수정 데이터(118)(modification data)를 생성한다. 수정 데이터(118)는 기본 소프트웨어 라이브러리(104)에 추가되거나 기본 소프트웨어 라이브러리(104)로부터 제거될 수 있는 코드 세그먼트(예: 프로그래밍 코드 또는 코드에 있는 코멘트)를 식별할 수 있다. 수정 데이터(118)는 다양한 방식으로 구체화될 수 있다. 예를 들면, 수정 데이터(118)는 삭제되는 라인 번호의 범위를 식별함으로써 제거되는 코드 세그먼트들을 식별할 수 있다. 대안으로, 수정 데이터(118)는 기본 소프트웨어 라이브러리(104) 내부의 특정 바이트 오프셋에서 삽입되는 특정 코드 세그먼트들을 식별할 수 있다. 게다가, 수정 데이터(118)는 제거를 위한 기본 소프트웨어 라이브러리(104) 내부의 특별한 메타데이터, 태그, 또는 스위치들과 관련된 코드 세그먼트들을 식별할 수 있다. 또한 수정 데이터(118)는 수정 소프트웨어 라이브러리(108) 내에서의 포함을 위해 코드 세그먼트(텍스트형 또는 이진형 중 하나에서)들을 포함 할 수 있다. 추가되는 코드 세그먼트들은 구성가능한 설정 요소(116)에 의해 생성되거나 또는 사용자 입력 요소(112)에 의해 사용자로부터 직접 입력될 수 있다.
생성 요소(120)(creation component)는 수정 데이터(118)와 일치하도록 수정 소프트웨어 라이브러리(108)를 생성하기 위해서 기본 소프트웨어 라이브러리(104)를 활용한다. 수정 소프트웨어 라이브러리(108)는 기본 소프트웨어 라이브러리(104)의 수정 버전이다. 수정 소프트웨어 라이브러리(108)는 명확하게는 프로젝트에 맞게 하기 위해 생성되었다. 수정 소프트웨어 라이브러리(108)는 사람이 판독가능한 프로그래밍 코드 또는 기계 판독가능 프로그래밍 코드를 포함할 수 있다.
수정 소프트웨어 라이브러리(108)를 생성한 후에, 수정 소프트웨어 라이브러리(108)를 참조하는 프로그래밍 코드는 기계 판독가능 코드(134)를 생성하기 위해 컴파일레이션 요소(130)를 이용하여 컴파일된다. 수정 소프트웨어 라이브러리(108)는 동적으로 또는 정적으로 기계 판독가능 코드에 연결된다.
개시된 시스템(100)은 보통의 시스템에 비하여 상당한 이점들을 제공한다. 첫째, 사용자는 코드를 컴파일하는 데 있어서 기본 소프트웨어 라이브러리(104)를 활용하도록 강요받지 않는다. 사용자는 라이브러리(104)를 프로그래밍 태스크(task)의 특정 요구에 적합하게 만들 수 있다. 예를 들면, 프로그래머는 생성된 기계 판독가능 코드(134)를 간소화하기 위해 기본 소프트웨어 라이브러리(104)로부터 불필요한 코드를 제거할 수 있다. 사용자는 기계 판독가능 코드(134)에서 사용되지 않는 광범위한 수의 알고리즘과 함수들을 포함할 필요가 없다. 특히 기계 판독가능 코드(134)가 임베디드 장치에 활용될 때 이것은 매우 중요하다. 왜냐하면 임베디드 장치는 일반적으로 제한된 양의 메모리와 처리 능력(processing power)을 가지기 때문이다.
둘째, 기본 소프트웨어 라이브러리(104)의 본래의 모습은 보존된다. 일 실시예로서, 기본 소프트웨어 라이브러리는 프로그래머에 의해 수정될 수 없고 단지 보여질 수만 있도록 읽기 전용 포맷(read-only format)으로 공급된다. 게다가, 일 실시예로서, 기본 소프트웨어 라이브러리(104)의 창작자(creator)는 수정 소프트웨어 라이브러리(108)를 생성하기 위해 기본 소프트웨어 라이브러리(104)의 어떤 모양이 최종사용자에 의해 수정될 수 있는지를 컨트롤할 수 있다. 그 외에 일 실시예로서, 사용자는 활용되는 과정을 정확하게 이해하기 위해 기본 소프트웨어 라이브러리(104)의 코드를 보는 것이 허락된다. 기본 소프트웨어 라이브러리(104) 내부의 프로그래밍 코드를 볼 수 있는 능력을 통해 라이브러리 사용자는 수행되는 알고리즘을 더 잘 이해할 수 있고, 그것이 프로그래밍 태스크(task)에 적합한지 더 잘 이해할 수 있다.
셋째, 기본 소프트웨어 라이브러리(104)의 수정은 사용자가 구성가능한 설정을 선택함에 의해서 더 빨라질 수 있다. 사용자가 구성가능한 설정을 간단히 조금 변경함으로써 기본 소프트웨어 라이브러리에 막대한 변화가 생길 수 있다. 따라서, 기본 소프트웨어 라이브러리(104)의 코드가 개선되거나 수정된다면 기본 소프트웨어 라이브러리(104)의 트윅(tweak) 또는 조정이 쉽게 반복될 수 있다.
도 2는 사용자가 구성가능한 소프트웨어 라이브러리(204)를 제공하기 위한 시스템(200)의 다른 실시예를 보여주는 블록도이다. 이 시스템(200)은 도 1에 나타 난 시스템(100)과 유사한 방법으로 기능한다. 특히, 타겟 설정(214)은 사용자 입력 요소(212)로부터 구성가능한 설정(216)으로 전송된다. 나온 응답인, 수정 데이터(218)는 수정 소프트웨어 라이브러리(208)의 생성을 컨트롤하기 위해서 구성가능한 설정(216)으로부터 생성 요소(220)로 전송된다.
그러나 도 2에서 보여지는 실시예에서, 제1 소프트웨어 라이브러리(222)는 기본 소프트웨어 라이브러리(204)로 변환(transformation)(224)된다. 이 경우에, 기본 소프트웨어 라이브러리(204)는 예를 들면, 예비 변환 프로세스(preliminary transformation process) 중에 제1 소프트웨어 라이브러리(222)로부터 생성되는 하나 이상의 동적 연결 라이브러리(dynamical link libraries)일 수 있다. 위에 지시된 바와 같이, 기본 소프트웨어 라이브러리(204)는 사람이 판독가능한 코드 또는 기계 판독가능 코드를 포함할 수 있다. 일 실시예로서, 변환 프로세스(224)에 의해 생성되었던 기본 소프트웨어 라이브러리(204)는 기본 소프트웨어 라이브러리(204)를 위한 프로그래밍 코드가 라이브러리 사용자에게 드러나거나 라이브러리 사용자가 바로 볼 수는 없도록 라이브러리 사용자에게 공급될 수 있다. 대안으로, 변환 프로세스(224)에 의해 생성되는 기본 소프트웨어 라이브러리(204)는 사용자에게 더 친근하고 라이브러리 사용자가 더 쉽게 접근할 수 있는 소프트웨어 라이브러리를 제공하도록 체계화될 수 있다.
앞선 실시예에서와 같이, 기본 소프트웨어 라이브러리(204)는 수정 소프트웨어 라이브러리(208)를 생성하기 위해 생성 요소(creation component)(220) 및 수정 데이터(218)로 이용된다. 또, 컴파일레이션 요소(compilation component)(230)는 마찬가지로 수정 소프트웨어 라이브러리(208) 및 수정 소프트웨어 라이브러리를 참조하는 소스코드(source code referencing the modified software library)(226)를 이용하여 기계 판독가능 코드(234)를 컴파일하는데 활용될 수 있다. 기본 소프트웨어 라이브러리(204)가 이진 포맷(binary format)으로 공급될지라도, 코드의 보임(visibility)은 여전히 수정 소프트웨어 라이브러리(208) 내에 존재할 수 있다. 이것은 수정 소프트웨어 라이브러리(208)에 존재하는 라이브러리 소스를 검사할 수 있는 이점이 없어지지 않으면서도 접근이 쉽고 사용자에게 친근한 이점이 있다.
도 3 내지 6은 구성가능한 소프트웨어 라이브러리(304)(404)(504)(604)를 제공하기 위한 시스템(300)(400)(500)(600)의 다른 실시예들을 개시한다. 이 실시예들은 수정되는 방식(type)의 예들 또는 기본 소프트웨어 라이브러리 (304)(404)(504)(604)상에서 실행될 수 있는 변환들(transformations)을 설명한다. 거기에서 개시되는 예들은 그것들로 제한되는 것이 아니라 단지 여기에서 개시되는 시스템 및 방법들을 이용하여 실행되는 수정들의 도시 형태(illustrate type)들을 나타낸 것이다.
도 1 및 도 2 에 나타난 이들 각 시스템(300)(400)(500)(600)들에서 사용자 입력 요소(312)(412)(512)(612)는 구성가능한 설정 요소(316)(416)(516)(616)에 의해 수신되는 타겟 설정(314)(414)(514)(614)을 발생시킨다. 차례로, 구성가능한 설정 요소(316)(416)(516)(616)는 생성 요소(320)(420)(520)(620)에 의해 수신되는 수정 데이터(318)(418)(518)(618)를 생성한다. 그리고나서 수정 데이터(318)(418)(518)(618) 및 기본 소프트웨어 라이브러리(304)(404)(504)(604)에 기 초하여 수정 소프트웨어 라이브러리(318)(418)(518)(618)를 만들어낸다. 도 2에 도시된 바와 같이, 기본 소프트웨어 라이브러리(304)(404)(504)(604)는 제1 소프트웨어 라이브러리(222)로부터 파생될 수 있다. 간단하게 나타내기 위해, 수정 소프트웨어 라이브러리(208)를 참조하는 프로그래밍 코드(226), 컴파일레이션 요소(230), 결과로서 생기는 기계 판독가능 코드(234)는 도 3 내지 6에서 생략되었다.
특별히 도 3을 참조하여, 수정 소프트웨어 라이브러리(308)를 생성하기 위한 시스템(300)이 개시된다. 기본 소프트웨어 라이브러리(304)로부터 어떤 특정 코드 세그먼트들(340b-d)이 제거되었는지를 통해 알 수 있다. 도 3에 나타난 실시예에서, 기본 소프트웨어 라이브러리는 4개의 바람직한(exemplary) 코드 세그먼트들(340a-d): 전송 알고리즘(transmission algorithm) A(340a), 전송 알고리즘(transmission algorithm) B(340b), 전송 알고리즘(transmission algorithm) C(340c), 보안 알고리즘(security algorithm) D(340d)을 포함한다. 도시된 실시예에 있는 구성가능한 설정은 이 코드 세그먼트들 중 각각 하나를 포함하거나 제거하는 기능을 포함한다.
도시된 시스템(300)에서, 타겟 설정(314)은 전송 알고리즘 A(340a)이 수정 소프트웨어 라이브러리(308)에 포함되도록, 하지만 전송 알고리즘 B(340b), 전송 알고리즘 C(340c), 보안 알고리즘 D(340d)은 수정 소프트웨어 라이브러리(308)으로부터 제거되도록 지정한다.
결과로서 생기는 수정 데이터(318)는 기본 소프트웨어 라이브러리(304)에 추가되거나 기본 소프트웨어 라이브러리(304)로부터 제거되는 특정 코드 라인을 식별 한다. 대안적인 실시예로서, 수정 데이터(318)에서 제거된 코드 라인만 식별될 수 있다.
기본 소프트웨어 라이브러리(304)로부터 특정 코드 세그먼트들을 제거하기 위한 시스템(300)이 개시된 실시예를 넘어서 다양한 방식으로 구체화될 수 있다. 도 3에 나타난 실시예는 단지 개시된 시스템 및 방법들을 활용하여 이것을 성취하기 위한 방법의 일례에 불과하다. 예를 들면, 수정 데이터(318)는 특정 코드 세그먼트들을 식별하기 위해 다양한 방식으로 구체화될 수 있다. 코드 세그먼트(code segment)(340)들은, 단지 예들로서, 바이트 오프셋(byte offset)에 의해 또는 메타데이터, 스위치, 태그, 또는 코드 세그먼트들을 식별하는 키워드들에 의해 식별될 수 있다. 또 전송 알고리즘 A(340a)이 나머지 다른 코드 세그먼트들(340b-d)에 대한 참조를 포함할 수 있다는 것이 이해될 것이다. 나머지 다른 코드 세그먼트들을 제거하는 프로세스는 이 참조들을 제거하거나 또는 전송 알고리즘 A(340a)에 대한 다른 수정을 하는 것을 포함할 수 있다.
도 4에 나타난 시스템(400)은 특히 기본 소프트웨어 라이브러리(404)의 현지화(localization)를 보여준다. 기본 소프트웨어 라이브러리(404)는 다양한 언어로 된 프로그래밍 코멘트(programming comment)(440a-c)를 포함한다. 특별히, 영어 코멘트(440a), 일본어 코멘트(440b), 중국어 코멘트(440c)를 포함한다. 기본 소프트웨어 라이브러리(404)는 코멘트(440a-c)와 관련된 프로그래밍 코드(440d)를 더 포함한다.
나타난 바와 같이, 타겟 설정(414)은 영어 코멘트(440a) 및 프로그래밍 코 드(440d)가 수정 소프트웨어 라이브러리(408) 안에 포함되도록 지정한다. 타겟 설정(414)은 일본어 코멘트(440b) 및 중국어 코멘트(440c)가 수정 소프트웨어 라이브러리로부터 제외되도록 더 지정한다.
수정 데이터(418)는 특수한 코드 세그먼트(440)을 식별하는 기본 소프트웨어 라이브러리(404) 내부에 있는 메타태그(metatag)들을 참조한다. 지시된 바와 같이, 코드 세그먼트(440)들은 (포함 또는 제외를 위해) 메타태그, 라인 번호, 바이트 오프셋들을 이용하여 식별될 수 있다.
개시된 시스템(400)은 사용자가 특정 언어의 코멘트를 제거하는 효율적인 방법을 제공한다. 그것은 단지 수정 소프트웨어 라이브러리(408)에 의해 정의된 함수를 이해하는 것을 방해하고 어렵게 만드는 것이기 때문이다. 물론 소프트웨어 코멘트는 기계 판독가능 코드에 반영되지 않기 때문에 기본 소프트웨어 라이브러리(404) 및 수정 소프트웨어 라이브러리(408)는 도시된 실시예에서는 사람이 판독가능한 포맷이 될 것이다.
도 4에 개시된 시스템은 단지 개시된 시스템 및 방법을 활용하여 기본 소프트웨어 라이브러리(404)를 현지화(localization)시키는 방법 중의 하나를 예시한 것이다. 예시한 방법에 의해, 기본 소프트웨어 라이브러리(404)는 하나 이상의 언어들이 수정 소프트웨어 라이브러리(408)에 포함되는 것으로부터 많은 다른 타입의 언어 및 코멘트를 포함할 수 있다. 게다가, 예를 들면 영어 코멘트(440a)와 같은 제공된 언어의 코멘트들은 Google of Mountain View, California에 의해 제공되는 번역 서비스와 같은 접근가능한 번역 서비스를 이용하여 새로운 언어로 번역될 수 있고 수정 소프트웨어 라이브러리에 반영될 수 있다. 또, 프로그래밍 코드(440d)는 잠재적으로 새로운 언어를 추가해서 번역될 수 있다. 또는 기본 소프트웨어 라이브러리(404) 내부에 포함되어 있는 다중 언어 옵션(multiple language options)을 가질 수도 있다. 물론 이 번역은 코멘트에만 제한되는 것은 아니라 잠재적으로 라이브러리 부분이 되고, 소프트웨어 라이브러리의 완전히, 자동적으로 현지화를 효율적으로 가능하게 하는 프로그래밍 언어 식별기(programming language identifiers) 및 문자열(character strings)을 번역할 수도 있다.
도 5에 나타난 시스템(500)에서, 구성가능한 설정 요소(516)는 수정 데이터(518)를 생성한다. 상수(constant)(502)를 정의하는 (상수 값의 "변수") 타겟 설정(514)을 수신한다. 이 경우에 정의된 상수는 "파이(pi)" 와 "자연상수(e)"이다.
상수(502)는 기본 소프트웨어 라이브러리(504) 내부의 특정된 파일의 인식된 시작부분으로부터 특정 바이트 오프셋(506a-b)에 삽입될 수 있다. 따라서, 기본 소프트웨어 라이브러리(504)는 2진 형식(binary form)이 될 수 있다. 만약 기본 소프트웨어 라이브러리가 2진 형식이라면 삽입된 상수(502)는 수정 소프트웨어 라이브러리(508)에 삽입되기 전에 구성가능한 설정 요소(516)에 의해 2진 형식으로 변환될 것이다. 바이트 오프셋(506)은 사용자 입력 또는 구성가능한 설정 요소(516)에 의해 결정될 수 있다.
수정 소프트웨어 라이브러리는 그러므로 기본 소프트웨어 라이브러리(504)에서 발견되는 프로그래밍 코드(540a)를 포함한다. 그리고 또한 사용자 입력(512)에 기초하여 생성된 상수의 정의(540b)를 포함한다.
한번 더 말하지만, 도 5에 나타난 실시예는 단지 개시된 시스템 및 방법들을 활용하는 수정 소프트웨어 라이브러리(508)에 삽입된 예시적인 명령에 불과하다. 예를 들어, 많은 다른 타입의 상수가 정의될 수 있다. 즉, 지역변수(local variable), 광역변수(global variable), 다른 프로그래밍 명령, 함수들을 생성하기 위한 구성가능한 코드가 수정 소프트웨어 라이브러리(508) 안에 삽입될 수 있다.
도 6은 본래 없었던 라이브러리에 새로운 코드를 효과적으로 추가하기 위해 수정 소프트웨어 라이브러리(608)에 새로운 코드가 추가되는 시나리오를 보여준다. 새로운 코드는 기본 소프트웨어 라이브러리(604)의 내부이지만 프로그래밍 코드(640a) 부분은 아닌 곳에 있다. 예를 들면, 제작자(producer)가 기본 소프트웨어 라이브러리(604)를 쓰면 제작자는 다른 라이브러리가 최종 사용자 개발자(end-user developer)에게 이용가능한지에 대해 알지 못했다. 그러나 최종 사용자 개발자가 기본 소프트웨어 라이브러리(604)를 얻으면, 그 또는 그녀는 최종 사용자 시스템 또는 타겟 상에서 이용할 수 있는 특정 라이브러리(650a-b)에 대해 알게 될 것이다. 본 발명의 시스템 및 방법을 가지고, 최종 사용자 개발자는 그리고나서 특정 라이브러리(650a-b)와 상호작용하는 새로운 코드를 기본 소프트웨어 라이브러리(604)에 추가할 수 있다. 예를 들면, 그 또는 그녀는 특정 라이브러리(650a-b)를 초기화하는 새로운 코드를 추가할 수 있다. 또는 선택적으로, 생성 프로세스가 생성 요소(620)에 의해 초기화될 때 다른 적절한 모듈이 시스템(600)에 의해 감지될 수 있다. 그러한 경우에 시스템(600)은 그 모듈들을 초기화하고 새로 생성된 코드를 수정 소프트웨어 라이브러리(608)에 포함시키기 위해서 새로운 코드를 생성할 수 있다.
더 명확하게는, 도 6에 나타난 시스템(600) 내에서, 구성가능한 설정 요소(616)에서 타겟 설정(614)의 수신은 수정 소프트웨어 라이브러리(608)로부터 외부 소프트웨어 라이브러리, 즉 라이브러리 A(650a)를 초기화하기 위한 프로그래밍 코드의 생성을 일으킨다. 통상, 라이브러리는 사용할 라이브러리를 초기화시킬 특정 루틴(routine)을 포함한다. 이 루틴들은 라이브러리 A(650a)를 생성하는 기본 소프트웨어 라이브러리(604)의 부분으로서 식별될 수 있다. 구성가능한 설정 모듈(616)이 라이브러리 A(650a)의 초기화를 포함하는 요청(request)을 수신하면, 기본 소프트웨어 라이브러리(604)에 라이브러리 A(650a)를 생성하고 초기화 루틴의 명칭(name)을 요청하는 조회(query)를 할 수 있다. 그리고나서 이 루틴 명칭은 수정 데이터(618)에 포함된다. 또는 선택적으로, 라이브러리 A(650a)를 위한 기본 소트웨어(604)는 응용될 수 있는 다른 수정 데이터(618)의 목록을 포함할 수 있다.
이 새로운 코드의 생성은 시스템(600)에 의해서 초기화될 수 있다. 또는 사용자 입력에 응답하여 초기화될 수 있다. 예를 들면, 사용자 입력은 초기화되는 특정 타입의 라이브러리들, 초기화되는 특정 라이브러리들, 또는 초기화되는 특정 저장 장치상에서 또는 특정 서브디렉토리 안에서 발견되는 라이브러리들을 지정할 수 있다.
도시된 시나리오에서, 두 개의 외부 라이브러리들, 라이브러리 A(650a) 및 라이브러리 B(650b)는 접근이 용이하다. 그러므로 외부 라이브러리(650)는 시스템으로서(600) 동일한 저장 장치상에 존재할 수 있다. 또는 네트워크나 다른 전자 통 신 채널(electronic communication channel)에 의해 접근이 용이할 수 있다.
그 후, 구성가능한 설정 요소(616)는 외부 라이브러리 A(650a)를 초기화하기 위한 프로그래밍 코드를 생성한다. 이 프로그래밍 코드는 수정 데이터(618)로 병합된다. 수정 데이터(618)는 라인 번호(line number)의 형태로 삽입점(insertion point)을 더 포함한다. 삽입점은 사용자에 의해 특정되었거나 또는 구성가능한 설정 요소(616)에 의해 결정되거나 식별될 수 있었다.
개시된 실시예에서, 구성가능한 설정 요소(616)는 그러므로 기본 소프트웨어 라이브러리(604)에 존재하지 않았거나 또는 사용자에 의해 명확히 제공되지 않았던 전체적으로 새로운 코드(640b)를 생성한다.
도 6에 나타난 실시예는 단지 새롭게 생성된 프로그래밍 코드를 수정 소프트웨어 라이브러리(608)에 제공하기 위한 예시적인 방법 중의 하나에 불과하다. 구성가능한 설정 요소(616)는 기본 소프트웨어 라이브러리(604)의 구성에 기초한 다양한 타입의 프로그래밍 코드 또는 다양한 타입의 접근이 용이한 라이브러리 또는 다양한 타입의 다른 요인들을 생성하기 위해 많은 다양한 방식으로 구체화될 수 있다. 예를 들면, 수정 소프트웨어 라이브러리(608)에 코드 세그먼트(640) 또는 다른 라이브러리들을 추가하는 것은 다른 코드 세그먼트(340) 또는 라이브러리들의 수정을 유발할 수 있다. 예를 들면, 디버깅 지원(debugging support)을 위한 라이브러리를 포함하는 것은 다른 라이브러리들이나 코드 세그먼트(640)가 디버깅 지원을 포함하기 위하여 그들 자신들을 수정하도록 유발할 수 있다. 마찬가지로, 디버깅 지원 모듈이 제거되면, 디버깅 지원은 자동으로 다른 라이브러리들이나 코드 세그 먼트(640)로부터 제거될 것이다.
위에서 지시된 바와 같이, 도 3 내지 6에서 나타난 다양한 시스템들의 예시는 개시된 발명을 제한하는 것이 아니다. 대신에, 그것들은 개시된 시스템 및 방법들의 융통성과 특별한 능력의 예시를 제공하도록 의도된 것이다. 새 프로그래밍 라이브러리 또는 수정 프로그래밍 라이브러리에 대한 많은 다양한 타입의 기본 프로그래밍 라이브러리의 수정이나 변환이 개시된 시스템 및 방법들의 범위 안에 있다. 수정 프로그래밍 라이브러리가 특수한 프로그래밍 시나리오로 커스터마이즈(customize) 할 수 있도록 많은 다른 타입의 변환이 활용될 수 있다는 것이 본 발명의 주요한 특징 중의 하나이다.
도 7은 구성가능한 소프트웨어 라이브러리(604)를 제공하기 위한 방법(700)의 일 실시예를 보여주는 흐름도이다. 기본 소프트웨어 라이브러리(604)를 위한 구성가능한 설정이 먼저 결정된다(702). 설정은 다양한 방식으로 결정된다(702). 예를 들면, 기본 소프트웨어 라이브러리에 외부적이든 내부적이든, 데이터베이스 또는 다른 데이터 컴파일레이션(compilation)은 그러한 설정들을 포함할 수 있고, 그러한 결정(702)을 하기 위해 검색(retrieve)될 수 있다. 또는 선택적으로, 구성가능한 설정은 예를 들면 기본 소프트웨어 라이브러리 내부의 메타데이터, 태그, 스위치, 또는 키보드들을 분석함으로써 결정될 수 있다(702).
위에서 설명된 바와 같이, 기본 소프트웨어 라이브러리(604)는 사람이 판독가능한 프로그래밍 코드 또는 기계 판독가능 프로그래밍 코드를 포함할 수 있다. 기본 소프트웨어 라이브러리는 제1 소프트웨어 라이브러리(222)(도 2에 나타난)로 부터 파생될 수 있고, 예를 들면 동적 연결 라이브러리(danymic link library)로서 구체화될 수 있다.
그리고나서 기본 소프트웨어 라이브러리의 구성가능한 설정을 위한 타겟 설정(614)을 지정하기 위해서 사용자 입력이 수신된다(704). 사용자 입력은 사용자 입력 시스템의 하나 이상의 호스트(host)를 이용하여 수신될 수 있다.. 예를 들면, 구성가능한 설정은 스크린 상에 표시되고, 사용자 입력은 키보드, 트랙볼(trackball), 터치 스크린, 또는 마우스에 의해 수신될 수 있다. 추가적인 예로, 사용자 입력을 생성하기 위해 음성 인식 명령어를 활용할 수도 있다.
기본 소프트웨어 라이브러리에 추가되거나 기본 소프트웨어 라이브러리로부터 제거되는 적어도 하나의 코드 세그먼트들이 식별된다(706). 도 5 및 6과 관련하여 도시된 바와 같이, 추가되는 코드 세그먼트는 구성가능한 설정 요소를 이용하여 생성되거나, 사용자에게 제공받을 수 있다. 도 3 및 4와 관련하여 도시된 바와 같이, 코드 세그먼트는 삭제될 수 있다. 물론, 사용자 입력은 일정한 코드 세그먼트들의 추가 및 다른 코드 세그먼트들의 삭제 둘 다 지정할 수 있다. 여기에서 사용된 바와 같이, "code segments"라는 용어는 프로그래밍 코드에 제한된 것이 아니라 기본 소프트웨어 라이브러리 내부에 있는 코멘트 또는 다른 텍스트단위(textual material)도 포함할 수 있다.
그 후, 수정 소프트웨어 라이브러리는 타겟 설정에 따라서 기본 소프트웨어 라이브러리를 변경함으로써 생성된다(708). 수정 소프트웨어 라이브러리(608)는 컴퓨터프로그램에 의해 자동화된 방법으로 생성된다. 즉, 사용자 입력의 수 신(receipt)후에 더 이상의 사용자 개입은 수정 소프트웨어 라이브러리(608)를 생성하는데 필요하지 않다.
도 1 및 2와 관련하여 설명된 바와 같이, 기계 판독가능 코드(234)는 수정 소프트웨어 라이브러리를 참조하는 프로그래밍 코드(즉, 소스 코드)를 이용하여 컴파일될 수 있다.
도 8은 컴퓨터 시스템(1201)으로 통상 사용되는 주요한 하드웨어 요소(hardware component)들을 나타내는 블록도이다. 도시된 요소는 동일 물리적 구조(physical structure) 또는 개별적인 하우징이나 구조물내에 배치될 수 있다.
컴퓨터 시스템(801)은 프로세서(803)와 메모리(805)를 포함한다. 프로세서(803)는 컴퓨터 시스템(801)의 동작을 제어하고, 해당 기술 분야에서 알려진 마이크로 프로세서, 마이크로 컨트롤러, 디지털 신호 처리장치(digital signal processor; DSP) 또는 그 밖의 장치로서 구체화될 수 있다. 프로세서(803)은 통상 메모리(805)내에 저장된 프로그램 명령(program instructions)에 근거한 논리 및 산술 연산(arithmetic operation)을 실행한다.
본 명세서에 사용된 바와 같이, 용어 메모리(memory)(805)는 전자적 정보를 저장할 수 있는 어떤 전자적 요소로서 넓게 정의되고, ROM(read only memory), RAM(random access memory), 자기 디스크 기억 매체(magnetic disk storage media), 광 기억 매체(optical storage media), RAM의 플레시 메모리 디바이스(flash memory device), 프로세서(803)에 포함되는 온 보드 메모리(on-board memory), EPROM 메모리, EEPROM 메모리, 레지스터 등으로 구체화될 수 있다. 메모 리(805)는 프로그램 명령과 다른 타입의 데이터를 통상 저장한다. 프로그램 명령은 본 명세서에 개시된 방법의 일부 또는 전부를 실시하기 위해 프로세서(803)에 의해 실행될 수 있다.
또한, 컴퓨터 시스템(801)은 다른 전자 장치와 통신하기 위한 하나 이상의 통신 인터페이스(communication interface)(1207)도 통상 포함한다. 통신 인터페이스(807)는 유선 통신기술, 무선 통신기술 또는 양쪽에 근거할 수 있다. 통신 인터페이스(807)의 다른 타입의 예는 시리얼 포트(serial port), 병렬 포트(parallel port), USB(universal serial bus), 이더넷 어댑터(Ethernet adapter), IEEE 1394 버스 인터페이스, SCSI(small computer system interface) 버스 인터페이스, 적외선 통신 포트(infrared communication port), 블루투스 무선 통신 어댑터 등을 포함한다.
또한, 컴퓨터 시스템(801)은 하나 이상의 입력 장치(809)와 하나 이상의 출력장치(811)도 통상 포함한다. 다른 종류의 입력장치(809)의 예는 키보드, 마우스, 마이크로폰, 리모트 컨트롤 장치, 버튼, 조이스틱, 트랙볼(trackball), 터치패드, 라이트펜 등을 포함한다. 다른 종류의 출력장치(811)의 예는, 스피커, 프린터 등을 포함한다. 컴퓨터 시스템에 통상 포함된 하나의 특정 타입의 출력장치는 디스플레이 장치(813)이다. 본 명세서에 개시된 실시예와 함께 사용되는 디스플레이 장치(813)는 CRT(cathode ray tube), LCD(liquid crystal display), LED(light-emitting diode), 가스 플라즈마, 전계발광(electroluminescence) 등과 같이, 어떤 적합한 이미지 프로젝션 기술도 이용할 수 있다. 그 밖에 디스플레이 컨트롤 러(815)는 메모리(805)에 저장된 데이터를 디스플레이 장치(813) 상에 표시된 텍스트, 도형(graphic), 및/또는 동화상(moving images)(적절하게)으로 변환하도록 제공될 수 있다.
물론, 도 8은 컴퓨터 시스템(1201)의 하나의 가능한 구조만을 나타낸다. 여러가지의 다른 구조와 요소들이 이용될 수 있다.
컴퓨터 시스템(801)은 개인 컴퓨터(PC), 랩탑 컴퓨터(laptop computer), 서버, 태블릿 PC, 또는 임베디드 장치와 같은 다양한 방식으로 구체화될 수 있다. 소트프웨어 또는 임베디드 프로그래밍과 결합하여 작동하는 컴퓨터 시스템(801)은 여기에서 개시된 시스템 및 방법들을 실행하는데 이용될 수 있다.
정보 및 신호는 다양한 다른 기술과 기법의 어느 것을 사용해서도 표현될 수 있다. 예를 들면, 위에서 설명된 내내 언급되었던 데이터, 지시, 명령, 정보, 신호, 비트, 심볼(symbol), 칩(chip) 등은 전압, 전류, 전자기파, 자기장 또는 입자, 옵티컬 필드(optical field) 또는 입자, 그것들의 조합으로 표현될 수 있다.
여기에서 개시된 실시 예들과 관련하여 설명된, 다양한 예시적인 논리 블록, 모듈, 회로 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어 또는 그 둘의 결합으로 수행될 수 있다. 하드웨어 및 소프트웨어 간의 이러한 호환성을 명확하게 설명하기 위해서, 다양한 예시적인 구성 요소, 블록, 모듈, 회로, 단계들이 위에서 그들의 기능에 의해 설명되었다. 그러한 기능이 하드웨어로 수행되느냐 소프트웨어로 수행되느냐 하는 것은 전체 시스템에 부여된 특별한 애플리케이션 및 디자인 제한 여부에 따라 달라진다. 숙련된 기술자는 각각의 특별한 애플리케이션에 따라 여 러 방식으로 상기 설명된 기능들을 수행할 수 있다. 그러나 그러한 수행 결정은 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
여기에서 개시된 실시 예들과 관련하여 설명된, 다양한 예시적인 논리 블록, 모듈, 회로들은 범용 프로세서(GPP), 디지털 신호 프로세서(DSP), 주문용 반도체(ASIC), 현장 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 논리 장치, 공급 게이트(discrete gate), 트랜지스터 로직(transistor logic), 공급 하드웨어 컴퍼넌트(discrete hardware components) 또는 여기에서 설명된 기능을 수행하기 위해 디자인된 그것들의 조합을 가지고 수행 또는 실행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있다. 선택적으로, 프로세서는 보통의 프로세서,컨트롤러, 마이크로 컨트롤러 또는 상태 기계(state machine)일 수 있다. 또한 프로세서는 컴퓨팅 장치(computing device)들의 조합으로 수행될 수도 있다. 예를 들면 DSP 및 마이크로프로세서, 복수의 마이크로프로세서, DSP 코어(core) 결합하는 하나 이상의 마이크로프로세서, 또는 그러한 다른 구성들의 조합으로 실시될 수 있다.
여기에서 개시된 실시 예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈, 또는 그 둘의 조합에 의해 구현될 수 있다. 소프트웨어 모듈은 램(RAM) 메모리, 플래쉬 메모리, 롬(ROM) 메모리, EPROM 메모리, EEPROM 메모리, 레지스터(register), 하드 디스크, 착탈식 디스크(removable disk), CD-ROM, 또는 당해 기술분야에서 알려진 다른 저장 매체 안에 존재할 수 있다. 바람직한 저장 매체는 프로세서가 상기 저장 매체로부터 정 보를 읽고, 저장 매체에 정보를 기록할 수 있도록 프로세서와 결합된다. 또는 선택적으로, 저장 매체는 프로세서의 구성요소로 될 수 있다. 프로세서 및 저장 매체는 ASIC 안에 존재할 수 있다. ASIC는 사용자 단말기(user terminal)안에 존재할 수 있다. 아니면, 상기 프로세서 및 저장 매체는 사용자 단말기 안에 개별 구성요소로 존재할 수 있다.
여기에서 개시된 방법들은 설명된 방법을 달성하기 위해서 하나 이상의 단계나 실행을 포함한다. 상기 방법 단계 및/또는 실행은 본 발명의 범위를 벗어나지 않는 범위에서 서로 호환 가능하다. 다시 말하면, 실시 예의 올바른 동작을 위해 단계 또는 실행에 특별한 순서가 요구되지 않는 한, 특정 단계 및/또는 실행의 순서 및/또는 사용은 본 발명의 범위를 벗어나지 않는 범위에서 변경될 수 있다.
본 발명의 구체적인 실시 예 및 애플리케이션에 대하여 설명 및 예시되었지만, 본 발명은 여기에서 개시된 정확한 구성 및 구성 요소에 한정되지 않는다는 것이 이해될 것이다. 본 발명의 내용 및 범위를 벗어나지 않는다면, 당업자에게 자명한 다양한 수정, 변경, 및 변동이 여기에서 개시된 본 발명의 배열, 작동, 세부 방법, 시스템에 있어서 만들어질 수 있다.

Claims (20)

  1. 구성가능한 소프트웨어 라이브러리(configurable software library)를 제공하기 위한 방법으로서,
    코멘트(comments)용 희망 타겟 언어에 따라서 기본 소프트웨어 라이브러리의 적어도 하나의 구성가능한 설정(configurable setting)을 위한 타겟 설정(target setting)을 지정하기 위해서 사용자 입력을 수신하는 단계;
    상기 기본 소프트웨어 라이브러리는 구성가능하도록 설계되고, 사람이 판독가능한 프로그래밍 코드를 포함하며,
    상기 코멘트용 희망 타겟 언어 및 상기 타겟 설정에 기초하여 상기 기본 소프트웨어 라이브러리에 추가 또는 제거되는 적어도 하나의 코드 세그먼트를 식별하는 단계;및
    컴퓨터 프로그램을 활용하여 자동화된 방법으로 상기 타겟 설정에 따라서 상기 기본 소프트웨어 라이브러리를 변경함으로써 수정 소프트웨어 라이브러리를 생성하는 단계를 포함하고,
    상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함하고, 상기 코멘트 및/또는 상기 수정 소프트웨어 라이브러리 안에 있는 상기 프로그래밍 코드는 상기 희망 타겟 언어 안에 있는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  2. 제1항에 있어서,
    상기 기본 소프트웨어 라이브러리의 상기 구성가능한 설정을 결정하는 단계를 더 포함하는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  3. 제1항에 있어서,
    상기 기본 소프트웨어 라이브러리는 제1 소프트웨어 라이브러리로부터 파생되는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  4. 제1항에 있어서,
    상기 기본 소프트웨어 라이브러리 및 상기 수정 소프트웨어 라이브러리는 임베디드(embedded) 장치용 프로그래밍 코드를 포함하는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  5. 제1항에 있어서,
    상기 타겟 설정은 상기 수정 소프트웨어 라이브러리를 생성하기 위해서 상기 기본 소프트웨어 라이브러리로부터 적어도 하나의 코드 세그먼트를 제거하도록 구성되는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  6. 제1항에 있어서,
    상기 타겟 설정은 상기 수정 소프트웨어 라이브러리를 생성하기 위해서 상기 기본 소프트웨어 라이브러리에 적어도 하나의 코드 세그먼트를 추가하도록 구성되는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  7. 제6항에 있어서,
    상기 추가된 코드 세그먼트는 외부 소프트웨어 라이브러리에 대한 호출(call)을 포함하는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  8. 제6항에 있어서,
    상기 추가된 코드 세그먼트는 수정 소프트웨어 라이브러리 내에서의 사용을 위한 상수를 정의하는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법.
  9. 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 수행하도록 구성된 컴퓨터 시스템으로서, 상기 컴퓨터 시스템은
    프로세서;
    상기 프로세서와 전자적 통신을 하는 메모리;
    상기 메모리에 저장된 명령을 포함하고,
    상기 명령은 하나의 방법을 수행하도록 실행될 수 있으며,
    상기 방법은,
    코멘트(comments)용 희망 타겟 언어에 따라서 기본 소프트웨어 라이브러리의 적어도 하나의 구성가능한 설정(configurable setting)을 위한 타겟 설정(target setting)을 지정하기 위해서 사용자 입력을 수신하는 단계;
    상기 기본 소프트웨어 라이브러리는 구성가능하도록 설계되고, 사람이 판독가능한 프로그래밍 코드를 포함하며,
    상기 코멘트용 희망 타겟 언어 및 상기 타겟 설정에 기초하여 상기 기본 소프트웨어 라이브러리에 추가 또는 제거되는 적어도 하나의 코드 세그먼트를 식별하는 단계;및
    컴퓨터 프로그램을 활용하여 자동화된 방법으로 상기 타겟 설정에 따라서 상기 기본 소프트웨어 라이브러리를 변경함으로써 수정 소프트웨어 라이브러리를 생성하는 단계를 포함하고,
    상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함하고, 상기 코멘트 및/또는 상기 수정 소프트웨어 라이브러리 안에 있는 상기 프로그래밍 코드는 상기 희망 타겟 언어 안에 있는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제9항에 있어서,
    상기 기본 소프트웨어 라이브러리는 제1 소프트웨어 라이브러리로부터 파생되는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제9항에 있어서,
    상기 기본 소프트웨어 라이브러리 및 상기 수정 소프트웨어 라이브러리는 임베디드 장치용 프로그래밍 코드를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  12. 제9항에 있어서,
    상기 타겟 설정은 상기 수정 소프트웨어 라이브러리를 생성하기 위해서 상기 기본 소프트웨어 라이브러리로부터 적어도 하나의 코드 세그먼트를 제거하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  13. 제9항에 있어서,
    상기 타겟 설정은 상기 수정 소프트웨어 라이브러리를 생성하기 위해서 상기 기본 소프트웨어 라이브러리에 적어도 하나의 코드 세그먼트를 추가하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  14. 제13항에 있어서,
    상기 추가된 코드 세그먼트는 외부 소프트웨어 라이브러리에 대한 호출(call)을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제9항에 있어서,
    상기 기본 소프트웨어 라이브러리 및 상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  16. 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체로서, 상기 방법은
    코멘트(comments)용 희망 타겟 언어에 따라서 기본 소프트웨어 라이브러리의 적어도 하나의 구성가능한 설정(configurable setting)을 위한 타겟 설정(target setting)을 지정하기 위해서 사용자 입력을 수신하는 단계;
    상기 기본 소프트웨어 라이브러리는 구성가능하도록 설계되고 사람이 판독가능한 프로그래밍 코드를 포함하며,
    상기 코멘트용 희망 타겟 언어 및 상기 타겟 설정에 기초하여 상기 기본 소프트웨어 라이브러리에 추가 또는 상기 기본 소프트웨어 라이브러리로부터 제거되는 적어도 하나의 코드 세그먼트를 식별하는 단계;및
    컴퓨터 프로그램을 활용하여 자동화된 방법으로 상기 타겟 설정에 따라서 상기 기본 소프트웨어 라이브러리를 변경함으로써 수정 소프트웨어 라이브러리를 생성하는 단계를 포함하고,
    상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함하고, 상기 코멘트 및/또는 상기 수정 소프트웨어 라이브러리 안에 있는 상기 프로그래밍 코드는 상기 희망 타겟 언어 안에 있는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체.
  17. 제16항에 있어서,
    상기 기본 소프트웨어 라이브러리는 제1 소프트웨어 라이브러리로부터 파생되는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체.
  18. 제16항에 있어서,
    상기 기본 소프트웨어 라이브러리 및 상기 수정 소프트웨어 라이브러리는 임베디드 장치용 프로그래밍 코드를 포함하는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체.
  19. 제16항에 있어서,
    상기 기본 소프트웨어 라이브러리 및 상기 수정 소프트웨어 라이브러리는 사람이 판독가능한 프로그래밍 코드를 포함하는 것을 특징으로 하는 구성가능한 소프 트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체.
  20. 제16항에 있어서,
    상기 타겟 설정은 상기 수정 소프트웨어 라이브러리를 생성하기 위해서 상기 기본 소프트웨어 라이브러리에 적어도 하나의 코드 세그먼트를 추가하도록 구성되는 것을 특징으로 하는 구성가능한 소프트웨어 라이브러리를 제공하기 위한 방법을 실시하기 위한 실행가능한 명령을 포함하는 프로그램을 기록한 컴퓨터 판독가능 매체.
KR1020087015636A 2005-12-29 2006-02-03 사용자가 구성가능한 소프트웨어 라이브러리 KR100953239B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/321,712 2005-12-29
US11/321,712 US8789016B2 (en) 2005-12-29 2005-12-29 Systems and methods for providing user configurable software libraries

Publications (2)

Publication Number Publication Date
KR20080078018A true KR20080078018A (ko) 2008-08-26
KR100953239B1 KR100953239B1 (ko) 2010-04-16

Family

ID=36944678

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087015636A KR100953239B1 (ko) 2005-12-29 2006-02-03 사용자가 구성가능한 소프트웨어 라이브러리

Country Status (7)

Country Link
US (1) US8789016B2 (ko)
EP (1) EP1966685A1 (ko)
JP (1) JP5002454B2 (ko)
KR (1) KR100953239B1 (ko)
CN (1) CN101120312A (ko)
RU (1) RU2395836C2 (ko)
WO (1) WO2007074536A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006015255A1 (de) * 2006-04-01 2007-10-04 National Rejectors, Inc. Gmbh Bezahlsystem für einen Verkaufsautomaten
US20090249492A1 (en) * 2006-09-21 2009-10-01 Hans Martin Boesgaard Sorensen Fabrication of computer executable program files from source code
KR101470319B1 (ko) * 2008-02-15 2014-12-08 삼성전자주식회사 컴포넌트 모델 기반의 가상 소프트웨어 플랫폼을 생성하는방법, 이를 이용하여 소프트웨어 플랫폼 아키텍처를검증하는 방법 및 그 장치
JP5011221B2 (ja) * 2008-06-30 2012-08-29 株式会社日立製作所 コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
JP5500968B2 (ja) * 2009-12-16 2014-05-21 シャープ株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
EP2556451A4 (en) * 2010-04-06 2016-09-07 Webtrends Inc METHOD AND SYSTEM FOR DEFINING AND LOADING SEGMENTS
CN101853165A (zh) * 2010-06-01 2010-10-06 杭州和利时自动化有限公司 一种用于组态软件中库的管理方法及***
US9613112B2 (en) 2013-03-15 2017-04-04 Miosoft Corporation Structuring data
US9665403B2 (en) 2013-03-15 2017-05-30 Miosoft Corporation Executing algorithms in parallel
JP6176020B2 (ja) 2013-09-17 2017-08-09 株式会社リコー 機器、情報処理システム、情報処理方法、情報処理プログラム、および情報処理プログラムが記憶された記憶媒体
US9304766B2 (en) * 2014-02-21 2016-04-05 Red Hat Israel, Ltd. Determining character sequence digest
US9703551B2 (en) * 2014-04-28 2017-07-11 Ca, Inc. Modifying mobile application binaries to call external libraries
CN107526742B (zh) * 2016-06-21 2021-10-08 伊姆西Ip控股有限责任公司 用于处理多语言文本的方法和设备
CN106412080A (zh) * 2016-10-21 2017-02-15 李丽亚 一种基于网络服务实现软件本地化和国际化的方法
US20180275957A1 (en) * 2017-03-27 2018-09-27 Ca, Inc. Assistive technology for code generation using voice and virtual reality
CN109710230A (zh) * 2018-12-12 2019-05-03 平安科技(深圳)有限公司 一种利用静态库实现目标程序生成方法及装置
US20210318865A1 (en) 2020-04-09 2021-10-14 Capital One Services, Llc Methods and arrangements to process comments
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
US6401114B1 (en) 1997-05-01 2002-06-04 Stratum Technologies Corporation Method and apparatus for dynamic programming across a computer network
JP2000020525A (ja) * 1998-07-07 2000-01-21 Toshiba Corp プログラム注釈機械翻訳装置とこの装置を動作させるプログラムを記録した記録媒体
US6202205B1 (en) 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US7143067B1 (en) * 1999-02-09 2006-11-28 Lenovo (Singapore) Pte. Ltd. System and method for installing personal computer software
JP2001142600A (ja) * 1999-11-15 2001-05-25 Canon Inc 多国語表示切替装置およびその切替方法
US6385722B1 (en) 2000-01-27 2002-05-07 Sun Microsystems, Inc. Method, system, and article of manufacture for limiting access to program files in a shared library file
US20020184615A1 (en) * 2001-04-25 2002-12-05 Sumner William Earl System and method for selectively and automatically modifying the source code of a computer program
US20030009750A1 (en) * 2001-07-09 2003-01-09 Robert Hundt Optimizing an executable computer program having linkage functions
US20030101432A1 (en) * 2001-10-12 2003-05-29 Allison David S. Method and apparatus for unifying the semantics of functions and classes in a programming language
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
US7484205B2 (en) * 2002-12-12 2009-01-27 Microsoft Corporation Preprocessor-based source code instrumentation
US7516442B2 (en) * 2003-10-23 2009-04-07 Microsoft Corporation Resource manifest
US20050120340A1 (en) * 2003-12-01 2005-06-02 Skazinski Joseph G. Apparatus, system, and method for automated generation of embedded systems software
JP2005284742A (ja) * 2004-03-30 2005-10-13 Advanced Telecommunication Research Institute International メッセージ出力装置及びコンピュータプログラム
US20060020928A1 (en) * 2004-07-22 2006-01-26 International Business Machines Corporation Translation of comments in code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리

Also Published As

Publication number Publication date
RU2008126233A (ru) 2010-01-10
US8789016B2 (en) 2014-07-22
EP1966685A1 (en) 2008-09-10
WO2007074536A1 (en) 2007-07-05
JP2008522249A (ja) 2008-06-26
RU2395836C2 (ru) 2010-07-27
US20070157171A1 (en) 2007-07-05
KR100953239B1 (ko) 2010-04-16
JP5002454B2 (ja) 2012-08-15
CN101120312A (zh) 2008-02-06

Similar Documents

Publication Publication Date Title
KR100953239B1 (ko) 사용자가 구성가능한 소프트웨어 라이브러리
EP3338179B1 (en) Graphical representation of data in a program code editor
KR100513093B1 (ko) 씨.엠.엘.투를 기반으로한 리눅스 커널, 응용 소프트웨어패키지의 통합 설정과 파일목록 생성방법
KR101597599B1 (ko) 소스 위치가 결여된 코드 세그먼트들을 가지는 소스 코드를 모델링하기 위한 방법
JP2019523942A (ja) Cpu利用およびコードリファクタリングのためのクエリオプティマイザー
WO2023016481A1 (zh) 一种数据处理方法及相关装置
KR20220113372A (ko) 통합된 참조물 및 2차 객체 표시
US10289219B2 (en) Communicating with an unsupported input device
CN107077365B (zh) 有选择地加载预编译的头部和/或其部分
KR100755697B1 (ko) 소프트웨어 설치 방법, 장치, 및 시스템
CN112181429B (zh) 信息处理方法、装置以及电子设备
JP7410269B2 (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
CN113568608A (zh) 一种组件信息的展示方法、装置、设备及存储介质
CN112100018A (zh) 一种日志信息生成的方法及相关装置
KR20100045637A (ko) 다국어 지원 어플리케이션 실행 장치 및 그 제어방법
JP2023057721A (ja) 検証プログラム、検証方法、および情報処理装置
Johnston C++ Programming Today with Cdrom
CN112860279A (zh) 生成应用安装包的方法、装置、设备和介质
Beebe IEEE 754 floating-point test software
Page et al. A Historical and Functional Perspective
Feldmann Borland's Turbo C compiler is flexible, fast and friendly.
MÉNDEZ PORTABILITY IN COMPUTER VISION APPLICATIONS
Navia lcc-win32 An Integrated Development Environment

Legal Events

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

Payment date: 20130318

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140320

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee