KR930008769B1 - 소프트웨어 프로그램 발생용 장치 및 방법 - Google Patents

소프트웨어 프로그램 발생용 장치 및 방법 Download PDF

Info

Publication number
KR930008769B1
KR930008769B1 KR1019860008440A KR860008440A KR930008769B1 KR 930008769 B1 KR930008769 B1 KR 930008769B1 KR 1019860008440 A KR1019860008440 A KR 1019860008440A KR 860008440 A KR860008440 A KR 860008440A KR 930008769 B1 KR930008769 B1 KR 930008769B1
Authority
KR
South Korea
Prior art keywords
statement
language
statements
request
indirect
Prior art date
Application number
KR1019860008440A
Other languages
English (en)
Other versions
KR870004383A (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 KR870004383A publication Critical patent/KR870004383A/ko
Application granted granted Critical
Publication of KR930008769B1 publication Critical patent/KR930008769B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • 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

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 Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

내용 없음.

Description

소프트웨어 프로그램 발생용 장치 및 방법
제 1 도는 본 발명에 따른 컴퓨터 시스템을 도시한 블럭도.
제 2 도 내지 16 도는 범용 구성요소(GPC) 포맷을 도시한 도면.
제 17 도 내지 21 도는 전형적인 GPC 사용의 포맷을 도시한 도면.
제 22 도는 시스템의 출력(발생된 프로그램)을 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
10 : 범용 컴퓨터 101 : GPC명세
103 : 분리 데이타 베이스 104 : 기억 영역
105 : 소오스 프로그램 106,206 : 인스턴티에이터
107 : 확장된 프로그램 108 : 컴파일러
109 : 컴파일된 프로그램
[발명의 배경]
본 발명은 소프트웨어 생성 시스템, 특히 소프트웨어의 임의 부분들이 여러번 발생될 필요가 있는 그러한 시스템에 관한 것이다.
소프트웨어 시스템은 각각 특성의 타스크를 수행하는 여러 구성요소 또는 모듈들로 구성된다. 상기 구성요소들은 통상 하나 이상의 기능을 실현하고 그리고/또는 소프트웨어 시스템 전체로서 그의 전반적인 타스크(task)를 수행하기 위해 유지, 갱신 및 검색되어야만 하는 임의의 구조화된 정보에 대해 책임이 있다.
소프트웨어 시스템에는 두개의 모듈 카테고리가 있다 : 즉, 1) 시스템이 수행하도록 설계된 타스크에 특히 필요한 동작을 수행하는 동작 모듈과, 2) 제1카테고리의 소프트웨어 모듈을 지원하는데 필요한 일반적인 데이타 조작 오퍼레이션을 수행하기 위한 지원 모듈이 있다. 전형적인 시스템에 있어서, 대다수의 모듈은 제2의 카테고리, 또는 지원 카테고리에 속한다.
서로 다른 소프트웨어 시스템의 지원 모듈 사이에는 유사성이 상당히 많다. 예를들면, 모든 오퍼레이팅 시스템은 일부 방식에서, 스택, 대기행력(quenues)및 하목의 테이블을 유지 및 조작해야만 한다. 항목(item)의 테이블을 조작하는데 필요한 오퍼레이션들은 테이블에 기억된 항목들에 관계없이 동일하다. 그러나 단일 오퍼레이팅 시스템은 서로 다른 형태의 항목을 각각 포함하고 있는 여러개의 독립 테이블을 다루기 위해 필요하다. 또한, 서로다른 오퍼레이팅 시스템은 서로다른 형태의 항목을 조작함으로써 이 항목에 대한 서로 다른 테이블을 필요로 하게 된다.
현재의 소프트웨어 개발 기술에 있어서, 소프트웨어 시스템 모듈들을 모두 스크래치(scratch)에서 개발되어 왔다. 이것은 대부분의 모듈이 종래에 다른 유사한 소프트웨어 시스템에 앞서 여러번 개발되어왔다는 사실에도 불구하고 사실이다. 앞서 개발된 소프트웨어 구성요소를 재사용하는 것은 기존의 소프트웨어 개발툴(tool)들이 총칭 모듈(generic module)의 명세(specification) 및 생성을 허용치 않으므로 현재로는 가능치 않다. 현재의 기술 상태에 있어서 모듈은 고정된 포맷으로 구성된 고정형태의 특정 항목상에서 특정의 고정된 포맷으로 구성된 고정형태의 특정 항목상에서 특정의 고정된 동작(fixed action))을 수행하도록 개발될 수 있다. 따라서, 예를들어 한 형태의 항목 테이블을 지원하는 소프트웨어 모듈은 다른 형태의 항목 테이블을 지원하는 데에는 이용될 수 없다. 혹은, 다른 예로써, 테이블의 항목을 찾기 위해 특정의 검색 전략(search strategy)을 채용하는 모듈은 만일 다른 검색전략이 필요한 경우 이용될 수 없다. 따라서, 소프트웨어 개발자에 의해 지정된 요구사항에 따라 소프트웨어의 부분을 자동적으로 생성할 수 있는 시스템이 요구된다.
[발명의 요약]
본 출원인은 공통 이용되는 소프트웨어 구성요소가 오직 한번에 설계, 개발되며, 그리고 다른 콘텍스트(context)들 및 요구사항을 갖는 다른 시스템에서 여러번 재사용되는 시스템을 설계, 개발했다. 이는 설계자로 하여금 상기 구성요소가 이용될 특정 콘테스트에 일반적으로 독립적인 소프트웨어 구성요소를 지정할 수 있게함으로써 달성된다. 모듈이 시스템 자체의 특정 요구사항에 따른 새로운 시스템내로 통합될 시에, 본 시스템은 자동적으로 새로운 시스템의 요구에 적합한 구체적인 버젼(version)을 발생한다.
소프트웨어 재사용을 위한 시스템은 아래와 같은 외부적 가시 구성요소로 구성된다 :
1. 총칭적 모듈의 명세를 허용하는 형식 명세 언어(formal specification language).
2. 항목 1의 명세 언어로 기록된 명세를 프로세스하기 위한 컴파일러(compiler).
3. 총칭적 모듈에서 소정의 특정 콘텍스트로 그 콘텍스트의 요구사항에 의거 작용하는 복수의 구체적 소프트웨어 모듈을 자동적으로 발생시키기 위한 인스턴티에이터(instantiator).
시스템에 의해 조작되는 논리 실제(logical entity)는 범용구성요소(General Purpose Component : GPC)라 불리워진다. 한 GPC는 총칭 프로그래밍 서비스이 집합을 제공한다. 에를들면, GPC는 특정 소프트웨어 테이블을 유지 및 프로세스하여 어떤 특정형의 항목을 기억시키는데 필요한 모든 오퍼레이션 및 데이타 정의를 제공한다. 상기 GPC가 제공하는 오퍼레이션 및 정의(집합적으로 "서비스"라 부름)는 "테이블"의 동작 및 정의의 본질만을 파악하고 그리고, 특히 특정형의 항목이나 특정 조작 방법과 구체적으로 연결되지 않는다는 의미에서 총칭적이다. 그러므로, 그들의 원래 형태에 있어서, 이들 서비스는 어느 프로그램에서 이용될 수 없다.
그러나, 상기 총칭적 서비스(generic service)는 의도된 환경의 콘텍스트 및 요구사항이 공지될 시에 시스템에 의해 구체적인 프로그래밍 서비스로 된다. 예를들면, 프로그래머가 테이블에 기억될 항목 형태를 결정하여, 이 정보를 시스템에 통과시킬 때, 인스턴티에이터를 이용하므로써 GPC의 구체적 또는 번역된 버젼이 자동적으로 생성된다. 이와 같이 생성된 소프트웨어 코드의 버젼 프로그래머에 의한 스크래치로 기록되었던 것같이 보인다. 총칭적 버젼으로부터 구체적 버젼을 생성시키는 상기와 같은 프로세스를 인스턴티에이션 프로세스라 부른다.
동일의 GPC를 이용하여 서로 다른 소프트웨어 시스템에 대해 서로 다른 구체적버젼을 인스턴티에이트할 수 있다. 따라서, 본 발명의 시스템은 일단 소프트웨어 구성요소를 만들어 자동저긍로 그리고 필요에 따라 여러번 서로다른 소프트웨어 시스템에 적합하도록 소프트웨어에 맞추어진다.
이하, 첨부된 도면을 참조로 하여 본원을 더욱 상세히 설명하기로 한다.
[상세한 설명]
전술된 바와같이, 제 1 도에 도시된 실시예는 VAX 11/780과 같은 범용 컴퓨터(10)에 접속하여 이용된다. 주지사항으로써, 본 시스템은 AT&T PC 6300과 같은 퍼스널 컴퓨터를 포함하는 어느 컴퓨터에서도 이용될 수 있음을 알아야 할것이다.
내부적으로, 시스템은 4개의 상호 관련 구성요소, 즉, 유져가 범용 구성요소(GPC)의 명세(101)를 생성시키는 것을 가능케 하는 명세 언어, 이 명세 언어 프로세스용 GPC 컴파일러(102), 컴파일러 GPC 명세용 기억 영역(104) 및 인스턴티에이트(106)로 구성된다.
반드시 필요하지 않지만, 유져는 GPC 명세에서 GPC의 영문 명세를 추출하는 것이 편리하며, 다른 유져들이 이전에 기록된 GPC 명세를 찾아 이용할 수 있도록 장래 검색을 위해 개별 데이타 베이스(103)에 영문 명세를 기억하는 것이 편리함을 알 수 있을 것이다.
GPC의 설계자는 명세 언어를 이용하여 GPC를 총칭적 콘텍스트-인센시티브 형식(a generic, context-insensitive fashion)으로 지정한다. 그리고 나서, 설계자는 컴퓨터내의 화일(101)에 상기 GPC 명세를 기억 시키고 GPC 컴파일러(102)를 호출하여 화일을 프로세스하도록 한다. 이와같은 프로세스로, 기억 영역(104)에 컴파일러된 GPC 명세가 기억된다.
GPC의 유져는 그에 의해 개발되는 소오스 프로그램(source program)(105)내에 적당한 호출 명령문(invocation statement)을 삽입한다. 이 호출 명령문은 하기에 설명하는 바와같이 시스템으로 하여금 먼저 적절한 프로그램 세그멘트(program segment)를 발생시키도록 하고 그리고 나서 이 발생된 프로그램 세그멘트를 유져의 프로그램에 삽입 및/또는 보정하여 확장된 프로그램(107)이 생성되도록 한단. 확장된 프로그램은 공지된 방식으로 컴파일러(108)에 의해 컴파일되어 결과적으로 컴파일된 프로그램(109)이 되어 차례로 컴퓨터를 동작시킨다.
[명세 언어]
본 발명은 어느 컴퓨터 언어로도 이용될 수 있지만은 설명을 위해서 공지된 C언어를 채택하기로 한다. 이 C언어는 미합중국 뉴저지주 잉글리우드 클리프에 소재하는 프렌티스-헤일(Prentice-Hale)사가 1978년 출발한 B.W.Kernighan과 D.M.Rithie저작의 "C 프로그래밍 언어"에서 잘 설명되어 있다. 두줄친 활자는 언어 키워드를 나타내며, 이탤릭체는 유져가 공급하는 문자열을 나타내며, "}" 및 "{"은 선택 기입을 나타내며, 수직 바 ""는 대체(alternatives)를 분리하는데 사용되며, 그리고 % {및 %}는 인용문에 이용되는 키워드이다.
이것의 명세언어는 GPC 명세를 기록하기 위해 사용된다. 각 명세는 세개의 주요부분, 즉 기술부분(descriptionb part), 선언부분(declaration part) 및 정의부분(definition part)으로 구성된다. 따라서, GPC 명세의 일반적인 형태는 제 2 도에서 도시되어 있다.
최초의 %%를 선행하는 (우선동작)하는 것이 기술 부분으로 불리며 컴파일링 프로세서에 의해 무시(ignore)된다. 그러나, 본 시스템의 유져는 기술부분이 기계적으로 프로세스되고 그리고 카탈로그(103)에 기억될 수 있도록 탬플릿(template) 및 스탠다드(standard)를 개발할 수 있다. 선언 부분(203)은 1 또는 그 이상의 선언들의 리스트이다. 선언은 "parameter(파라미터)""service(서비스)" 또는 "hidden(히든)"을 선언한다. 파라미터 선언에 대한 구문은 제 3 도에 도시되고, 서비스 선언에 대한 구분은 제 4 도에 도시되며, 그리고 히든 선언에 대한 구문은 제 5 도에 도시된다.
파라미터는 GPC 유져가 명세화한 어떤 것이며, 서비스는 GPC가 사용자에게 제공하는 어떤 것이다. 파라미터는 type, value(오브젝트(objects)의 싸이즈 또는 에러 리턴 코드를 저의하는 상수), option(예를들어, 서로다른 알고리즘들을 선택하는데 이용됨), operation(예를들어, 해슁 기능(hashing function)에러 조정 루틴) 또는 prose(임의의 텍스트)이다. 서비스는 type, value, operation 또는 prose이다. Hidden에 관해서는 하기에 설명하기로 한다.
식별가(identifier)는 한 문자로부터 시작하는 일련의 문자와 숫자이다. 아래가 밑줄쳐진(이하 "하선"이라 한다)""는 한 문자로서 카우트한다. 대문자 및 소문자는 구별된다. 비록 보다 많은 문자가 이용될 수 있지만은 처음 12개 문자 정도가 유효하다.
type은 일반적인 형태로 이용될 수 있는 임의의 C언어이다.
type Variable Name ; Type의 예로써 "int*" ; "float", "struct{int varl; long var 2; }" 및 "My Type"이 있으며, 여기서 My Type는 예를들어 아래와 같이 사전에 정의된다 :
typedef char* My Type() ;
Value은 "25", "'033'" 및 "1.9E-6"와 같은 C언어 상수이다.
Option은 이 옵션에 대해 유효한 사전에 정의 되는 문자열(string)중 하나에 대응하는 문자의 임의의 시퀀스이다.
Operation은 구문적으로 C언어 기능의 명칭(name)에 상응하는 명치이다.
prose는 텍스트 세그멘트의 명칭이다.
hidden은 유져에 의해 억세스 가능한 것이 아니라 유져가 억세스할 수 있는 서비스들중 하나 또는 그 이상의 서비스에 필요로한 서비스이다.
선언에 대한 실시예는 제 6 도에 도시된다.
GPC 명세의 구현부분(205)은 각각 선언된 service 또는 hidden에 대한 1개의 프로그램으로 구성된다. 이 프로그램은 인스턴티에이트(106)에게 대응 서비스에 대한 호출이 유져 프로그래머의 코드내에서 발견될 때 행해야하는 일을 인스턴티에이트(16)에게 명령한다. 예를들면, 제 13 도에 도시한 매우 간단한 프로그램은 서비스 "node"로의 호출이 검출되는 상황에서 인스턴티에이터(106)의 동작을 정의한다. 상기 프로그램은 인스턴티에이트(106)에 C언어 타입을 정의하도록 함과 아울러 서비스 "node"로 명세된 사용자를 지칭하는 것은 어느것이나 그것을 지칭하도록 명령한다. 상기 타입에 대한 정확한 정의는 유져에 의해 선택되는 연결법(싱글 또는 더블)에 따라 다르다.
문구(phrase) "requires Always"는 node가 인스턴티에이트될때 마다 인스턴티에이트(106)가 처음에 "Always"라 일컬어지는 다른 서비스가 이미 인스턴티에이트되었음을 확신해야 함을 기술한다.
선택적 문구 "requires 식별자"는 식별자에 대하여 서로다른 값으로 한번 이상 반복될 수 있다. 여기서, 식별자는 히든 또는 다른 서비스의 명칭일 수 있다.
3개의 명령, 즉 replace, header 및 append가 있으며, 하나의 흐름 제어는 if-then-els-endif를 구성한다.
물론 명령들이 if-then-else-endif 구조들로 구룹화될때를 제외하곤, 상기 명령들이 기록되는 동일한 시퀀스로 실행된다.
replace 명령은 제 8 도에 도시된 일반적인 형태를 갖는다. replace 명령이 실행될 시에 인스턴티에이트(106)는 호출의 텍스트를 임의의 C언어 세그멘트로 호출의 텍스트를 치환한다. 한 오퍼레이션에 대한 호출의 텍스트는 개시 달러 신호, 서비스의 명칭, 종료 달러 부호 및 좌, 우 괄호 및 괄호간의 중앙으로 구성된다. 다른 서비스에 있어, 호출의 텍스트는 서비스의 명칭과 달러 기호의 쌍으로 구성된다. 분명한 이유때문에, 상기 명령은 hidden에 대해서는 허용되지 않는다.
대체 프로세스동안에, C언어 세그멘트내의 모든 문자는 아래와 같은 경우를 제외하면 변하지 않고 출력으로 전달된다 :
--형태 $Name$의 시퀀스는 $Name$로 변환된다(이것은 GPCs를 다른 GPCs로 지정하는 것을 허용한다).
--형태 $Name$의 시퀀스는 총칭명 "Name"을 갖는 서비스에서 참조(서비스 호출이 아님)로 받아들여지며, 그 서비스에 대한 유져 정의 명칭으로 간단히 변환된다.
--형태 $O$의 시퀀스는 프로그램이 지정된 서비스의 유져 공지명칭으로 변환된다.
--타임 operation의 오퍼레이션 서비스에 대하여, n이 1 및 20 사이의 수인 형태 $n$의 시퀀스는 서비스 호출의 n번 인수(argument)의(확장된)텍스트에 참조되며, 상기 시퀀스는 대응 문자열로 변환된다. 주지 사항으로, 서비스 호출의 인수는 자체 서비스 호출이 된다.
append 명령은 제 9 도에 도시된 일반적인 형태로써, 상기 명령이 실행될 시에, 인스턴티에이트(106)는 소정의 C언어 세그멘트를 유져 소오스 화일(현행) 종료(end)에 첨부시킨다. $n$ 및 $Name$ 문자열은 또한 C언어 세그멘트 상에서 수행된다. 수직자(qualifier) multiple이 제시될 경우, C언어 세그멘트는 서비스 호출이 프로세스될 때마다 부가되며, once가 존재하거나, 수식자가 전형 존재하지 않을 경우, C언어 세그멘트는 기껏해야 한번 부가된다.
header 명령은 제 10 도에 도시된 일반적인 형태를 갖는다. 상기 명령이 실행될 시에, 인스턴티에이터(106)는 대응 GPC 요구 라인의 위치에서(또는 동일한 GPC의 다른 header 명령의 최후에 삽입된 C언어 세그멘트의 후에) 유져 소오스 화일내에 소정의 C언어 세그멘트를 삽입한다. C언어 세그멘트는 전술된 바와같이 프로세스된다.
if-then-else-endif 제어 흐름 구조는 제 11 도에 도시한 일반적인 형태를 갖는다. 형태(1101)에서, "instructions"는 "condition"이 참(true)일 경우에만 실행된다. 형태(1102)에서, 키워드 then과 else 사이의 명령은 "condition"이 참일 경우에만 실행되며, 키워드 else 및 endif 사이의 명령은 "condition"이 거짓일 경우에만 실행된다. if-then-else-endif구조는 구문론적으로 1개의 명령과 동일하므로, 다른 if-then-else-endif 구조의 if-또는 else-block 내에서 나타날 수 있다. endif 모호성(ambiguity)은 최종 조우된 if와 endif를 연결하므로써 해결될 수 있다.
"conition"은 제 12도 에 도시된 일반적인 형태를 갖는다. "identifier"는 서비스 또는 파라미터의 총칭명이다. 형태(1201 및 1202)는 유져가 소정의 파라미터 또는 서비스 디폴트 값(default value)을 지정하는 지의 여부를 테스트 하는바, 유져가 디폴프 값과 다른 값을 지정하는 경우 제1조건은 참(제2조건은 거짓)이 되고, 그렇지 않은 경우 제1조건은 거짓(제2조건은 참)이 된다.
형태(1203) 및 (1204)는 소정의 문자열에 대하여 소정의 파라미터 서비스의 값을 테스트하며, "=="는 균등성을 나타내고, "!-"는 비균등성을 나타낸다.
제 13 도의 실시예에서, 라인(1302)은 인스턴티에이터(106)에 그 서비스의 유져에게 알려진 명칭을 %{및 %}쌍에 포함된 세그멘트의 내용으로 치환하도록 명령한다. 이 경우에 있어서, 치환 텍스트는 단지($O$로 표시된)유져에게 알려진 명칭이다. 즉, 상기 명령은 실제로 "에코(echo)"명령이다.
명령(1303)은 if-then-else-endif 구조를 이용하여, 제어 흐름을 유져에 의해 option(옵션) SINGLY가 요청되는 지의 여부에 대응하는 2개의 경로로 분할시킨다. 상이한 점은 총칭명 "노드"를 지닌 타입이 어떻게 정의되는가에 있다. 양 경우에서, 인스턴티에이터(106)에 의해 실행되는 단지 한 명령, header 명령이 존재한다. header 명령을 수행하므로써, GPC가 요청된 라인에서의 소정의 세그멘트가 유져 화일내에 삽입된다. $Data$ 및 $node$는 각각 파라미터 "데이타" 및 서비스 "노드"에 대한 유져 명칭을 지칭한다. 수식자 once는 서비스 "노드"가 아무리 많이 호출된다하더라도 세그멘트의 삽입이 단지 한번만 행해져야함을 나타낸다. once는 디폴트 값(default value)으로써, 이것은 수식자 multiple로 대체(override)될 수 있다.
GPC의 선언부내에는 또다른 클래스의 오브젝트가 존재하는데, 이는 hidden으로서 선언된다. hidden은 유져 프로그래머에게는 인식되지 않지만은 하나 또는 그 이상의 다른 서비스들 또는 히든(hidden)들을 구현하는데 이용되는 서비스이다. 히든의 인스턴티에이션은 항상 requiers 메카니즘을 통해 호출된다. 실시예에서, 라인(606)에서 선언된 히든 "Always"에 대한 프로그램이 제 14 도에 도시되어 있다.
GPC 명세 언어의 흥미있는 특징은 타입 operation의 서비스가 어떻게 활용될 수 있는가에 있다. GPC 설계자는 C언어 세그멘트를 그 파라미터들중 하나로 취입하는 한개의 operaton을 지정할 수 있다. 예를들면, 설계자는 리스트, 그 리스트의 각 요소내의 데이터를 표시하는 명칭 및 코드의 세그멘트를 그 파라미터로 취해 리스트에 있는 모든 요소들에 대한 세그멘트를 처음부터 마지막까지 실행하는 operation(동작)"forall"을 지정할 수 있다. 이와같은 동작의 사양이 제 16 도에 나타나있다.
[컴파일러]
GPC 컴파일러(102)는 GPC 명세를 인스턴티에이터(106)에 적합한 포맷으로 번역하는 역할을 한다. 그것은 GPC 명세를 판독하여 구문론적으로 정상인지를 확인하기 위해 체크한다. GPC 컴파일러에 의해 수행되는 체크는 다음과 같은 것을 포함한다.
--명세내의 모든 명령문은 구문론적으로 정확한가.
--모든 선언된 서비스 및 히든이 적절히 정의 되었는가.
--종속 루프(dependency loop)는 없는가. 서비스 또는 히든이 다른 서비스 또는 히든의 인스턴티에이션을 요구(requires)할 경우, 후자의 서비스 또는 히든은 requires 명령의 체인을 통해 전자의 서비스 또는 히든의 인스턴티에이션을 직접 또는 간접으로 요구(requires)하지 않는다.
GPC 컴파일러가 어떤 이상함을 검출할 경우, GPC 컴파일러는 에러 메시지를 프린트함으로써 이를 GPC 설계자에게 알린다. 상기 이상함이 검출되지 않는 경우, 상기 컴파일러는 다른 컴파일러와 유사한 공지된 방식으로 심볼 테이블 및 파스(parse)트리를 구성하여, 컴파일된 GPC(104)의 기억 영역내에 기억시킨다. 이러한 정보는 후에 인스턴티에이터(106)에 의해 확정된 프로그램(107)을 생성하는데 이용될 수 있다.
GPC 컴파일러는 통상의 컴파일러에서와 같이 기계 코드를 발생시키지 못함에 주의하자, 대신에, GPC 컴파일러의 출력은 명세의(2진)부호화 표시로써 후에 기술되는 바와같이, 인스턴티에이터에 의해 프로그램 세그멘트를 발생시키는데 이용된다.
[GPC의 이용]
새로운 소프트웨어 프로그램의 구현을 시작하는데 있어 유져 프로그래머는 개발될 프로그램에 이용될 수 있는 GPC(들)를 찾는 GPC 카탈로그(103)를 검색한다. GPC를 발견하면 유져 프로그래머는 프로그램내에 필요로 되는 GPC(들)의 명칭을 지정하여, 각각의 GPC 동작하는 콘텍스트에 관한 정보를 제공하는 "request line(요청 라인)"을 삽입한다. 상기 요청 라인은 컴파일러(108)로 패스될 수 없기 때문에 "indirect(간접)"명령문(들)으로 여겨질 수 있으며, 이에 반해 변함없이 컴파일러(108)로 패스되는 명령문(들)은 "direct(직접)"명령문(들)으로 여겨질 수 있다.
전형적인 GPC 요청 라인에서, 유져는 파라미터 값 뿐만아니라 서비스의 명칭을 지정한다. GPC 요청라인은 제17도에 보인 일반적인 형태를 지니고 있다.
Args는 GPC의 서비스 및 파라미터에 대응하는 "argument-name=argument-value(이수-명칭=인수-값)"쌍의 콤마 분리된 리스트이다.
GPC가 "listhndlr"이라 불린다고 가정하면, 제 18 도 및 19 도는 2개의 GPC 요청라인을 도시한다.
첫번째 경우(제 18 도)에 있어서, "My Element Type"는 C언어의 typedef 구조에 의하여 앞서 유져에 의해 정의된 타입의 명칭으로 가정된다. GPC는, 다른 서비스들중에서, "MyListType"라 부르는 타입과, "ADD"라 부르는 동작의 정의를 제공한다. 두번째 경우(제 19 도)에 있어서, 데이타의 정의는 소정 구조의 정의로 취해지며, GPC에 의해 제공된 서비스들은 그들의 디폴트 명칭으로 일컬어진다.
유져는 Listhndlr에 의해 제공된 서비스가 적당히 정의되어, GPC 요청 라인후에 컴파일 모듈의 어느 곳에서든 이용에 유용함을 가정할 수 있다. 유져는 상기 서비스들은 "service calls(서비스 호출)"로 이용할 수 있다. 서비스는 한쌍의 달러 기호($)로 봉입된 유져에게 알려진 명칭을 언급함으로써 호출된다. 예를들면, (제 18도 의 GPC 요청 라인에 대응하는)제 20 도는 서비스 "list" 및 "addafter"를 호출한다.
예로써, 유져가 프로그램내의 1개의 입력 라인에 대하여 1개 명칭을 판독하는 listhndlr GPC를 이용하여, 입력 스트림내의 명칭 및 이들의 상대 위치를 역순으로(즉, 기입된 최초의 명칭이 마지막으로 프린트되게)프린트하고저 한다고 가정해보다. 그러면, 이것의 유져 소오스 프로그램은 제 20 도에 프로그램과 같이 보인다. 주의사항으로, 라인 2109 내지 2166은 GPC 요청 라인을 구성하며, 라인 2199,2125,2129,2132,2134,2135 및 2136 각각은 GPC 서비스 호출을 포함한다.
[인스턴티에이터]
인스턴티에이터(106)는(컴파일된) GPC 명세 및 GPC 요청 라인의 요구사항 양자에 따라, 테일러 메이드(tailer-made) 프로그램 또는 프로그램 세그멘트를 발생시키는 역할을 한다. 인스턴티에이터(106)는 먼저 유져 소오스 프로그램(105)을 주사하여 임의의 GPC 요청 라인을 검색한다. 만일 이 라인이 발견되는 경우, 인스턴티에이터는 GPC의 명칭을 추출하여, 컴파일러된 GPC 기억 영역(104)에 대응(컴파일된)명세를 위치시킨다. 이어서, 인스턴티에이터(106)는 유져에 의해 정의된 값을 GPC 설계자에 의해 선언된 총칭 파라미터에 연결시킴으로써, 모든 총칭 파라미터가 그와 관련된 구체적인 값을 갖는 GPC 명세의 구체적 버젼이 얻어지게 된다.
상기 프로세스는 동일한 GPC에 대해 복수의 요청이 존재하는 경우에도 각각의 요청된 GPC에 대해 한번만 수행된다(주의 사항으로, 유져는 매회 총칭 파라미터에 대해 상이한 세트값을 이용하여, 동일한 GPC를 여러번 요청한다).
인스턴티에이터(106)는 또한 유져 소오스 프로그램을 주사하여 임의의 서비스 호출들을 검색한다. 호출이 검출되면, 인스턴티에이터(106)는 그것의 내부 테이블을 이용하여 GPC 서비스의 정의를 갖는지를 결정한다. 그리고나서, 상기 인스턴티에이터는 총칭 파리미터의 대응값 및 (일반적으로 총칭 파라미터에 있는)정의를 위치 설정시켜 이 정의를 명령문별로 실행한다. 이결과, 유져 프로그램부분의 변경, 유져 프로그램부분의 프로그램 세그멘트로의 대체 및 유져 프로그램의 서로 다른 부분내에 프로그램세그멘트의 삽입 또는 완전한 새로운 프로그램의 생성 및 상기 프로그램의 유져 프로그램으로의 부가가 이루어진다. 이러한 구체적인 동작은, 물론 GPC 명세내의 서비스의 대응 정의에 의해 결정된다.
마지막으로, 인스턴티에이터(106)는 확장된 화일(107)을 생성시켜, 생성된 소오스 프로그램(107)을 상기 화일내에 기억시킨다.
제 21 도의 프로그램에 대응하는 인스턴티에이터(106)의 출력(제 1 도의 신장된 프로그램(107)은 제 22 도에 도시된다. 주의 사항으로, 인스턴티에이터(106)는 다양한 방법으로 소오스 화일을 변화시켰다. 그것은 두개의 typedef 문구를 어셈블시켜, GPC가 요청되는 라인에 상기 문구를 삽입시켰다. "Include〈메모리.h〉"를 포함한 라인이 부가되었다(라인)2209)). 유져 소오스 화일내의 모든 서비스 호출은 대체되었다. 특히, 주지 사항으로, 동작 "PUSH" 및 "POP"에 대해 완전한 프로그램이 생성되어, 유져 코드(제각기 라인(2243 내지 2262) 및 라인(2263 내지 2274)에 부가된 반면에, 동작 "GET", "TOP", "isempty" 및 "howmany"는 간단히 프로그램 프로세스(라인(2229),(2233),(2236),(2238),(2239) 및 (2240))으로 대체된다.
확장된 프로그램(제 22 도)은 유져가 스크래치로부터 완전한 소오스 프로그램을 설계하고 기록하는 데는 시간 및 노력이 소요된다. 그러나, GPC의 필요성은 소정의 모듈 집단에 대해 한번만 설계되므로, 설계자는 잘 설계된 모듈을 생성할 수 있는 시간을 취하므로써, 매우 유효한 소오스 코드를 얻을 수 있음을 알 수 있다. 재사용가능한 GPC모듈의 다른 특징은 이후의 사용을 위한 디버깅(debugging) 시간의 단축, 코드 수정시간의 단축 및 코드 기입 시간의 단축과 같은 전반적인 소프트웨어 생산 비용을 절감시키는 것이다.
[시스템의 다른 응용]
여기에 기술된 시스템은 또한 훨씬 전에 기술된 소프트웨어 재사용과는 다른 응용에서도 사용될 수 있다. 사실, 총칭 요소를 수정하여 특정 요건에 적합하도록 해야하는 그 어느 응용도 본 발명을 통해 모두 실현될 수 있다.
본 발명의 시스템을 그와같은 응용에 활용하기 위해, GPC 명세 언어를 이용하여 범용 요소를 설계하고 그리고나서 인스턴티에이터를 이용하여 상기 요소에 대한 복수의 특정 버젼을 발생시킨다.
일예로써, 은행이 고객들에게 그들의 신용 상태에 관한 편지를 보내는 경우를 고려해보자. 그러한 상황에서, GPC 설계자는 고객이 개인이든 회사이든간에 관계없이 고객의 명칭, 고객의 은행과 거래한 시간, 고객의 현재 및 과거 신용도, 은행의 현행 방침을 반영한 변수와 같은 그러한 총칭 파라미터에 따라 "범용 레터(general purpose letter)"를 작성할 수 있다.
개별의 고객 레터들은 인스턴티에이터에 의해 개별의 고객에 대해 지정된 총칭 파리미터의 값의 조합에 기초하여 합성될 수 있다.
예를들면, 과거의 신용 상태는 양호하지만 현재의 신용상태가 좋지 않은 신용도를 갖는 고객과 과거 및 현재의 신용 상태가 모두 양호한 고객에 대해 각기 다른 레터가 구성될 수 있다.
가능성은 무한하며, 대응하는 GPC가 얼마나 복잡하게 지정된가에 의해, 전체적으로 동일한 범용 레터를 이용하므로써 수개의 표준 포맷으로부터 매우 다양한 실제 개인 구성을 행할 수 있다.

Claims (13)

  1. 공급되는 총칭 명세(generic specification)에서 구체적 소프트웨어 프로그램들을 발생하기 위한 시스템에 있어서, 상기 시스템은 각각 언어 명령문들(language statements)의 집합(collection)에 의해 지정되는 하나 또는 그 이상의 유져 요청 가능 프로그래밍 서비스들에 각각 대응하는 총칭 소프트웨어 구성요소들을 지정하는 언어 명령문들을 컴파일링하는 컴파일러와, 상기 펌파일러에 응답하여, 상기 총칭 소프트웨어 구성요소들은 지정하는 컴파일링된 언어 명령문들을 기억하는 수단과, 특별 소프트웨어 응용(particular software application)을 지정하는 언어 명령문들을 수신하는 입력을 갖는 수단을 구비하며, 상기 언어 명령문들은 적어도 하나의 간접 명령문(indirect statement) 및 적어도 하나의 요청 명령문(request statement)을 포함하는 상기 특별 소프트웨어를 지정하고, 각각의 간접 명령문은 상기 지정된 총칭 소프트웨어 구성요소들중 임의 하나를 지정하고 그리고 각각의 요청 명령문은 하나의 지정된 총칭 소프트웨어 구성요소에 있는 하나의 유져 요청가능 프로그래밍 서비스를 지정하며, 상기 수신 수단이 각각의 간접 명령문에 응답하여, 상기 간접 명령문으로 지정된 하나의 총칭 소프트웨어를 지정하는 기억된 언어 명령문들의 위치를 검출하는 제1수단과, 각각의 요청 명령문에 응답하여, 상기 제1수단에 의해 위치 검출된 기억된 언어 명령문에 있는 상기 요청 명령문에서 지정된 유져 요청가능 프로그래밍 서비스를 지정하는 언어 명령문의 집합의 위치를 검출하는 제2수단과, 상기 제2수단에 의해 위치 검출된 언어 명령문들의 집합에 응답하여, 상기 특별 소프트웨어 응용의 구체적 버젼-이 구체적 버젼은 간접 및 요청 명령문을 포함하지 않는다-을 생성하는 수단을 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  2. 제 1 항에 있어서, 상기 지정된 총칭 소프트웨어 구성요소들의 일부분에 있는 각각의 총칭 소프트웨어 구성요소가 적어도 하나의 관련 파라미터를 가지며, 상기 특별 소프트웨어 응용의 요청 명령문들이 각각 적어도 하나의 제2간접 명령문 및 적어도 하나의 제2요청 명령문을 포함하며, 각각의 제2간접 명령문은 상기 부분에 있는 임의 하나의 총칭 소프트웨어 구성요소를 지정해서 각각의 관련 파라미터의 값을 지정하며, 각각의 제2요청 명령문은 상기 부분에 있는 하나의 지정된 총칭 소프트웨어 구성요소에서 하나의 유져 요청가능 서비스를 지정하며, 상기 수신 단계가 각각의 제2간접 명령문에 응답하여, 상기 제2간접 명령문에서 지정된 총칭 소프트웨어 구성요소를 지정하는 상기 제1수단에 의해 위치 검출된 상기 기억된 언어 명령문과 각각의 관련 파라미터의 값을 서로 상관시키는 제3수단을 추가로 포함하며, 상기 생성 수단이상기 상관된 언어 명령문에 응답하여 상기 특별 소프트웨어 응용의 상기 구체적 버젼을 생성하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  3. 제 2 항에 있어서, 상기 특별 소프트웨어 응용이 각각 상기 부분에 있는 동일한 총칭 소프트웨어 구성요소를 참조하며, 동일한 관련 파라미터의 상이한 값들을 지정하는 다수의 간접 명령문들을 포함하며, 상기 수신 수단은 상기 다수의 간접 명령문들로 인용되는 상기 동일한 총칭 소프트웨어 구성요소의 다수의 상이한 경우를 설정하는 수단과 상기 동일한 총칭 소프트웨어 구성요소의 각각의 경우에 의해 제공되는 동일한 유져 요청 가능 서비스에 대해 각기 다른 명칭들을 설정하는 수단을 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  4. 제 1 항에 있어서, 상기 특별 소프트웨어 응용을 지정하는 언어 명령문의 상기 집합이 간접 명령문 및 동일한 총칭 소프트웨어 구성요소 또는 상이한 총칭 소프트웨어 구성요소를 참조하는 요청 명령문을 삽입하는 명령을 포함하며, 상기 수신 수단이 간접 명령문 및 요청 명령문 삽입 명령에 대해 상기 제2수단에 의해 위치 검출된 언어 명령문을 감시하여 상기 제2수단에 의해 위치 검출된 상기 언어 명령문을 상기 수신 수단의 상기 입력에 재인가하는 수단을 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  5. 언어 명령문-언어 명령문 구성을 갖는 변형 언어(transformation language)로 기입된 한 세트의 명령의 제어하에서 언어 명령문의 집합을 확장시키며, 각각 변형 언어 명령문의 집합에 의해 지정되는 하나 또는 그 이상의 유져 요청가능 변형에 대응하는 범용 요소를 기억시키는 수단을 갖는 시스템에 있어서, 적어도 하나의 콘텍스트 지정 명령문(context specifier statement)과 적어도 하나의 요청 명령문을 포함하는 유져 언어 명령문의 집합을 수신하는 수단을 포함하며, 여기서 상기 콘텍스트 지정 명령문은 상기 기억된 범용 구성요소들중 적어도 하나를 지정하고 상기 요청 구성요소 각각의 하나의 지정된 범용 구성요소에서 하나의 유져 요청 변형을 지정하며, 상기 수신 수단은 각각의 콘텍스트 지정 명령문에 응답하여 상기 기억된 범용 구성요소들중 상기 콘텍스트 지정 명령문에서 지정된 범용 구성요소들의 위치를 검출하는 수단과, 각각의 요청 명령문의 수신에 응답하여, 상기 제1수단에 의해 위치 검출된 임의의 범용 구성요소의 상기 요청 명령문에서 지정된 유져 요청 가능 변형의 위치를 검출하는 수단과, 각각의 위치 검출된 변형에 의해 제어되며 상기 유져 공급 언어 명령문의 확장 버젼을 생성하는 수단을 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  6. 제 5 항에 잇어서, 상기 기억된 총칭 소프트웨어 구성요소의 일부에 있는 각각의 총칭 소프트웨어 구성요소가 적어도 하나의 관련 파라미터를 갖고 그리고 상기 콘텍스트 지정 및 요청 명령문이 각각 적어도 하나의 제2콘텍스트 지정 명령문과 적어도 하나의 제2요청 명령문을 포함하며 각각의 제2콘텍스트 지정 명령문은 상기 부분에 있는 임의 하나의 총칭 소프트웨어를 지정함과 아울러 각각의 관련 파라미터에 대한 값을 지정하고 그리고 각각의 제2요청 명령문은 상기 부분에 있는 하나의 지정된 총칭 소프트웨어 구성요소에서 하나의 변형을 지정하며, 상기 수신 수단은 각각의 제2콘텍스트 지정 명령문에 응답하여 상기 제2콘텍스트 지정 명령문에서 지정된 각각의 기억된 총칭 소프트웨어 구성요소와 각각의 관련 파라미터의 값을 서로 상관시키는 수단을 추가로 포함하며, 상기 생성 수단이 각각의 상관 총칭 소프트웨어 구성요소(correlated generic software component)에 응답하여 상기 유져 공급 언어 명령문의 상기 확장 버젼을 생성하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  7. 제 6 항에 있어서, 상기 유져 공급 입력 명령문이 각각 동일한 총칭 소프트웨어 구성요소를 인용하며 상이한 파라미터 값을 지정하는 다수의 콘텍스트 지정 명령문을 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 시스템.
  8. 소오스 코드 언어 명령문을 포함하는 프로그램이 변환 프로세스를 통해 상기 프로그램의 기계 언어 버젼을 발생시키게 되는 컴퓨터 시스템용 오퍼레이팅 장치에 있어서, 상기 동작 장치가 메모리와, 상기 메모리에 범용 소프트웨어 구성요소를 기억시키는 수단과, 여기서 상기 범용 구성요소는 하나 또는 그 이상의 유져 요청가능 변형에 대응하고, 각각의 변형은 상기 범용 구성요소들중 하나가 유져 공급 입력 언어의 다른 언어 명령문으로의 확장을 제어할 수 있도록 언어 명령문의 집합으로 지정되며, 그리고 소오스 코드 프로그램을 수신하기 위한 입력을 갖는 인스턴티에이터 수단을 포함하여, 여기서 상기 프로그램은 적어도 하나의 콘텍스트 지정 명령문 및 적어도 하나의 요청 명령문을 포함하고, 각각의 콘텍스트 지정 명령문은 상기 범용 구성요소들중 특정한 구성요소를 지정하고 그리고 각각의 요청 명령문은 상기 지정된 하나의 범용 구성요소에서 특별한 변형을 지정하며, 상기 인스턴티에이터 수단이 각각의 콘텍스트 지정 명령문에 응답하여 상기 콘텍스트 지정 명령문에서 지정된 기억된 범용 구성요소를 상기 메모리에 위치시키는 제1수단과, 각각의 요청 명령문에 응답하여, 상기 제1수단에 의해 위치된 하나의 범용 구성요소에서 상기 요청 명령문에서 지정된 변형을 지정하는 변형 언어 명령문들의 집합의 위치를 검출하는 제2수단과, 상기 제2수단에 의해 위치가 검출된 변형 언어 명령문의 집합에 응답하여 상기 소오스 코드 프로그램의 구체적 버젼을 생성시키는 수단과, 그리고 상기 소오스 코드 프로그램의 상기 구체적 버젼을 상기 소오스 코드 프로그램의 기계 코드로 변환시키는 컴파일러 수단을 포함하는 것에 특징이 있는 컴퓨터 시스템용 동작 장치.
  9. 제 8 항에 있어서, 상기 기억된 범용 구성요소들 일부분에 있는 각각의 범용 구성요소는 적어도 하나의 관련 파라미터를 가지며, 상기 인스턴티에이터 수단에 의해 수신된 콘텍스트 지정 명령문과 요청 명령문은 각각 적어도 하나의 제2콘텍스트 지정 명령문과 적어도 하나의 제2요청 명령문을 포함하며, 각각의 제2콘텍스트 지정 명령문은 상기 부분에 있는 하나의 범용 구성요소를 지정함과 아울러 상기 부분에 있는 하나의 지정된 범용 구성요소에서 하나의 변형을 지정하고 그리고 상기 인스턴티에이터 수단은 각각의 제2콘텍스트 지정 명령문에 응답하여, 상기 제2콘텍스트 지정 명령문에서 지정되고 그리고 상기 제1수단에 의해 위치 검출된 범용 구성요소와 각각의 관련 파라미터의 값을 서로 상관시키는 제3수단을 추가로 포함하고 상기 생성수단은 또한 각각의 상관된 범용 구성요소에 응답하여 상기 구체적 버젼을 생성시키는 것에 특징이 있는 컴퓨터 시스템용 동작 장치.
  10. 공급되는 총칭 명세로부터 소프트웨어 프로그램을 발생하기 위한 방법에 있어서, 각각 언어 명령문들의 집합에 의해 지정되는 하나 또는 그 이상의 유져 요청가능 프로그래밍 서비스들에 각각 대응하는 총칭 소프트웨어 요소들을 지정하는 수신되는 언어 명령문들을 컴파일링하는 단계와, 상기 지정된 총칭 소프트웨어 요소들의 컴파일링된 언어 명령문들을 기억하는 단계와, 특별한 소프트웨어 응용을 지정하는 언어 명령문들을 수신하는 단계와, 여기서 상기 언어 명령문들은 적어도 하나의 간접 명령문 및 적어도 하나의 요청 명령문을 포함하고, 각각의 간접 명령문은 상기 지정된 총칭 소프트웨어 요소들중 임의 하나를 지정하고 그리고 각각의 요청 명령문은 하나의 지정된 총칭 소프트웨어 요소에 있는 하나의 유져 요청가능 프로그래밍 서비스를 지정하며, 상기 수신단계가, 각각의 간접 명령문에 응답하여, 상기 간접 명령문에서 지정된 총칭 소프트웨어를 지정하는 기억된 언어 명령문들의 위치를 검출하는 단계와, 각각의 요청 명령문에 응답하여, 이전에 각각의 간접 명령문에 응답해서 위치 검출된 기억된 언어 명령문에 있는 요청 명령문에 지정된 유져 요청가능 프로그래밍 서비스를 지정하는 언어 명령문들의 집합의 위치를 검출하는 단계와, 각각의 요청 명령문에서 지정된 유져 요청 가능 프로그래밍 서비스를 지정하는 위치 검출된 언어 명령문에 응답하여, 상기 특별 소프트웨어 응용의 구체적 버젼-이 구체적 버젼은 간접 및 요청 명령문을 포함하지 않는다-을 생성하는 단계를 구비하는 것에 특징이 있는 소프트웨어 프로그램 발생방법.
  11. 제 10 항에 있어서, 상기 지정된 총칭 소프트웨어 구성요소들의 일부분에 있는 각각의 총칭 소프트웨어 구성요소가 적어도 하나의 관련 파라미터를 가지며, 상기 특별 소프트웨어 응용의 요청 명령문들이 각각 적어도 하나의 제2간접 명령문 및 적어도 하나의 제2요청 명령문을 포함하며, 각각의 제2간접 명령문은 상기 부분에 있는 임의 하나의 총칭 소프트웨어 구성요소를 지정해서 각각의 관련 파라미터의 값을 지정하며, 각각의 제2요청 명령문은 상기 부분에 있는 하나의 지정된 총칭 소프트웨어 구성요소에서 하나의 유져 요청가능 서비스를 지정하며, 상기 수신 단계가 각각의 제2간접 명령문에 응답하여, 상기 제2간접 명령문에서 지정된 총칭 소프트웨어 구성요소를 지정하는 상기 제1수단에 의해 위치 검출된 상기 기억된 언어 명령문과 각각의 관련 파라미터의 값을 서로 상관시키는 제3단계를 추가로 포함하며, 상기 생성 단계가 상기 상관된 언어 명령문에 응답하여 상기 특별 소프트웨어 응용의 상기 구체적 버젼을 생성하는 것에 특징이 있는 소프트웨어 프로그램 발생 방법.
  12. 제 11 항에 있어서, 상기 특별 소프트웨어 응용이 각각 상기 부분에 있는 동일한 총칭 소프트웨어 구성요소를 참조하며, 동일한 관련 파라미터의 상이한 값들을 지정하는 다수의 간접 명령문들을 포함하는 것을 특징이 있는 소프트웨어 프로그램 발생 방법.
  13. 제 11 항에 있어서, 상기 언어 명령문의 상기 집합이 간접 명령문 및 동일한 총칭 소프트웨어 구성요소 또는 상이한 총칭 소프트웨어 구성요소를 참조하는 요청 명령문을 삽입하는 명령을 포함하며, 상기 수신 단계가 간접 및 요청 명령문을 삽입함과 아울러 이 명령을 상기 수신 단계를 통해 재인가하기 위한 명령에 대해 상기 특별 소프트웨어 응용을 지정하는 상기 언어 명령문들을 감시하는 단계를 포함하는 것에 특징이 있는 소프트웨어 프로그램 발생 방법.
KR1019860008440A 1985-10-08 1986-10-08 소프트웨어 프로그램 발생용 장치 및 방법 KR930008769B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US06/785,787 US4734854A (en) 1985-10-08 1985-10-08 System for generating software source code components
US785787 1985-10-08
US785,787 1985-10-08

Publications (2)

Publication Number Publication Date
KR870004383A KR870004383A (ko) 1987-05-09
KR930008769B1 true KR930008769B1 (ko) 1993-09-15

Family

ID=25136617

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019860008440A KR930008769B1 (ko) 1985-10-08 1986-10-08 소프트웨어 프로그램 발생용 장치 및 방법

Country Status (5)

Country Link
US (1) US4734854A (ko)
EP (1) EP0219993A3 (ko)
JP (1) JP2609093B2 (ko)
KR (1) KR930008769B1 (ko)
CA (1) CA1273708A (ko)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE467229B (sv) * 1983-08-19 1992-06-15 Kurt Katzeff Anordning foer bildande av en information och/eller instruktion avsedd att inmatas i en datamaskins programminne
US5202996A (en) * 1985-10-11 1993-04-13 Hitachi, Ltd. Software structuring system and method by data table translation
US4860203A (en) * 1986-09-17 1989-08-22 International Business Machines Corporation Apparatus and method for extracting documentation text from a source code program
US5123103A (en) * 1986-10-17 1992-06-16 Hitachi, Ltd. Method and system of retrieving program specification and linking the specification by concept to retrieval request for reusing program parts
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
US5191646A (en) * 1986-11-20 1993-03-02 Hitachi, Ltd. Display method in software development support system
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
NZ224848A (en) * 1987-07-15 1995-07-26 Computer Associates Internatio Application software created from defined modules of code
JPS6437621A (en) * 1987-07-20 1989-02-08 Ibm Updating of program
US5067072A (en) * 1987-11-06 1991-11-19 Visystems, Inc. Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies
US4961133A (en) * 1987-11-06 1990-10-02 Visystems, Inc. Method for providing a virtual execution environment on a target computer using a virtual software machine
US5099413A (en) * 1987-12-12 1992-03-24 Sadashiro Sakai System which reads type and position of task element marks on a matrix of program tasks for automatically generating programs
JP2624753B2 (ja) * 1988-03-18 1997-06-25 株式会社日立製作所 上位仕様書作成方法
US5117496A (en) * 1988-05-23 1992-05-26 Hewlett-Packard Company Method for recording and replaying mouse commands by recording the commands and the identities of elements affected by the commands
JPH022419A (ja) * 1988-06-10 1990-01-08 Hitachi Ltd プログラム情報管理方式
US5051893A (en) * 1988-07-11 1991-09-24 Digital Equipment Corporation System for processing data to facilitate the creation of executable images
AU4504689A (en) * 1988-10-12 1990-05-01 Expressway, Inc. Software manufacturing system
US5230049A (en) * 1988-11-29 1993-07-20 International Business Machines Corporation Program source code translator
CA2002201C (en) * 1988-12-06 1999-04-27 John Charles Goettelmann Translation technique
US5161216A (en) * 1989-03-08 1992-11-03 Wisconsin Alumni Research Foundation Interprocedural slicing of computer programs using dependence graphs
US5193191A (en) * 1989-06-30 1993-03-09 Digital Equipment Corporation Incremental linking in source-code development system
US5325531A (en) * 1989-06-30 1994-06-28 Digital Equipment Corporation Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
DE69032418T2 (de) * 1989-09-08 1999-02-25 Digital Equipment Corp., Maynard, Mass. Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
CA2025170A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
EP0429252B1 (en) * 1989-11-17 1998-01-14 Digital Equipment Corporation System and method for storing firmware in relocatable format
JPH05504858A (ja) * 1989-11-30 1993-07-22 シーア テクノロジーズ,インコーポレイティド 計算機支援ソフトウェア工学ファシリティ
US5495610A (en) * 1989-11-30 1996-02-27 Seer Technologies, Inc. Software distribution system to build and distribute a software release
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5204960A (en) * 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler
US5175856A (en) * 1990-06-11 1992-12-29 Supercomputer Systems Limited Partnership Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution
US5699310A (en) * 1990-06-29 1997-12-16 Dynasty Technologies, Inc. Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications
US5161222A (en) * 1990-08-20 1992-11-03 Human Microprocessing, Inc. Software engine having an adaptable driver for interpreting variables produced by a plurality of sensors
JP2720904B2 (ja) * 1990-08-31 1998-03-04 富士通株式会社 自己記述によるデータベース管理システムの構成方法および開発/変更方法
US5175432A (en) * 1990-10-31 1992-12-29 Gruman Aerospace Corporation Infrared detector module test system
EP0501613A3 (en) * 1991-02-28 1993-09-01 Hewlett-Packard Company Heterogeneous software configuration management apparatus
JPH04280320A (ja) * 1991-03-08 1992-10-06 Nec Corp プログラム自動生成装置
JP2811990B2 (ja) * 1991-04-19 1998-10-15 三菱電機株式会社 プログラム処理装置及びプログラム処理方法
US5333298A (en) * 1991-08-08 1994-07-26 Honeywell Inc. System for making data available to an outside software package by utilizing a data file which contains source and destination information
US5632022A (en) * 1991-11-13 1997-05-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encyclopedia of software components
CA2077273C (en) * 1991-12-12 1996-12-03 Mike H. Conner Language neutral objects
US5485615A (en) * 1992-06-10 1996-01-16 Telefonaktiebolaget L M Ericsson System and method of interactively developing desired computer programs by using plurality of tools within a process described in graphical language
US5671415A (en) * 1992-12-07 1997-09-23 The Dow Chemical Company System and method for facilitating software development
US5740405A (en) * 1992-12-17 1998-04-14 Microsoft Corporation Method and system for providing data compatibility between different versions of a software program
JPH06332680A (ja) * 1993-05-21 1994-12-02 Tadao Shogetsu プログラム自動生成装置
US6178547B1 (en) 1993-06-17 2001-01-23 Metaware Incorporated Method and apparatus for generating non-redundant symbolic debug information in computer programs
US6425124B1 (en) * 1993-11-08 2002-07-23 Matsushita Electric Industrial Co. Ltd. Resource allocation device for reducing the size and run time of a machine language program
TW295761B (ko) * 1994-06-14 1997-01-11 Ericsson Telefon Ab L M
US5546574A (en) * 1994-06-30 1996-08-13 At&T Corporation Peer-to-peer data concurrence processes and apparatus
US5579318A (en) * 1994-06-30 1996-11-26 Bellsouth Corporation Processes and apparatus for maintaining data concurrence between databases in telecommunications networks
US5748973A (en) * 1994-07-15 1998-05-05 George Mason University Advanced integrated requirements engineering system for CE-based requirements assessment
KR100221374B1 (ko) 1995-01-19 1999-09-15 포만 제프리 엘 이벤트를 효율적으로 처리하는 데이타 처리 시스템 및 그의 방법과 저장장치
US5724556A (en) * 1995-04-14 1998-03-03 Oracle Corporation Method and apparatus for defining and configuring modules of data objects and programs in a distributed computer system
US5806074A (en) * 1996-03-19 1998-09-08 Oracle Corporation Configurable conflict resolution in a computer implemented distributed database
US5987247A (en) * 1997-05-09 1999-11-16 International Business Machines Corporation Systems, methods and computer program products for building frameworks in an object oriented environment
US6041332A (en) * 1997-12-31 2000-03-21 Alcatel Usa Sourcing, L.P. Product-independent performance monitoring tool kit
EP1073954A2 (de) * 1998-04-17 2001-02-07 Siemens Aktiengesellschaft System und verfahren zur flexiblen zuordnung von oberflächenkomponenten und verarbeitungsobjekten
IL142587A0 (en) * 1998-10-13 2002-03-10 Codagen Technologies Corp Component-based source code generator
US6742175B1 (en) * 1998-10-13 2004-05-25 Codagen Technologies Corp. Component-based source code generator
DE19907328C2 (de) * 1999-02-20 2002-10-24 Johannes Reichardt Verfahren und System zur visuellen Programmierung
AUPP949599A0 (en) * 1999-03-30 1999-04-22 Griffith University Visual architecture software language
WO2000063773A1 (en) * 1999-04-16 2000-10-26 Woosh! Inc. Adaptable component architecture
US7334216B2 (en) * 2000-04-04 2008-02-19 Sosy, Inc. Method and apparatus for automatic generation of information system user interfaces
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US6505342B1 (en) * 2000-05-31 2003-01-07 Siemens Corporate Research, Inc. System and method for functional testing of distributed, component-based software
US6986148B2 (en) * 2001-07-17 2006-01-10 Appforge, Inc. Methods and systems for providing platform-independent shared software components for mobile devices
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7120898B2 (en) * 2003-06-26 2006-10-10 Microsoft Corporation Intermediate representation for multiple exception handling models
US7685581B2 (en) * 2003-06-27 2010-03-23 Microsoft Corporation Type system for representing and checking consistency of heterogeneous program components during the process of compilation
US7305666B2 (en) * 2003-07-23 2007-12-04 Microsoft Corporation Description language for an extensible compiler and tools infrastructure
US7559050B2 (en) * 2003-06-30 2009-07-07 Microsoft Corporation Generating software development tools via target architecture specification
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7707566B2 (en) 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7788652B2 (en) * 2003-06-27 2010-08-31 Microsoft Corporation Representing type information in a compiler and programming tools framework
US20060059459A1 (en) * 2004-09-13 2006-03-16 Microsoft Corporation Generating solution-based software documentation
US7802227B1 (en) * 2006-02-23 2010-09-21 Intervoice Limited Partnership Customized control building
US8091069B2 (en) * 2006-04-11 2012-01-03 Rojer Alan S Module specification language and meta-module
US7934193B2 (en) * 2006-04-11 2011-04-26 Rojer Alan S Processing a module specification to produce a module definition
US7962888B2 (en) * 2006-04-11 2011-06-14 Rojer Alan S Producing unitary class definitions from module specifications
US8589869B2 (en) * 2006-09-07 2013-11-19 Wolfram Alpha Llc Methods and systems for determining a formula
EP1918812A1 (en) * 2006-11-01 2008-05-07 Hewlett-Packard Development Company, L.P. A software development system
US8490068B1 (en) * 2007-01-26 2013-07-16 Intuit Inc. Method and system for feature migration
US8788524B1 (en) 2009-05-15 2014-07-22 Wolfram Alpha Llc Method and system for responding to queries in an imprecise syntax
US8601015B1 (en) 2009-05-15 2013-12-03 Wolfram Alpha Llc Dynamic example generation for queries
US8484015B1 (en) 2010-05-14 2013-07-09 Wolfram Alpha Llc Entity pages
US8812298B1 (en) 2010-07-28 2014-08-19 Wolfram Alpha Llc Macro replacement of natural language input
US9053099B2 (en) 2010-08-10 2015-06-09 International Business Machines Corporation Method for validating equivalent data structures
US9064134B1 (en) * 2010-12-06 2015-06-23 Adobe Systems Incorporated Method and apparatus for mitigating software vulnerabilities
US9069814B2 (en) 2011-07-27 2015-06-30 Wolfram Alpha Llc Method and system for using natural language to generate widgets
US9734252B2 (en) 2011-09-08 2017-08-15 Wolfram Alpha Llc Method and system for analyzing data using a query answering system
US9851950B2 (en) 2011-11-15 2017-12-26 Wolfram Alpha Llc Programming in a precise syntax using natural language
DE102012207668A1 (de) 2012-05-09 2013-11-14 Robert Bosch Gmbh Computerimplementiertes Verfahren zum Generieren von Software, Batterie und Kraftfahrzeug
US9405424B2 (en) 2012-08-29 2016-08-02 Wolfram Alpha, Llc Method and system for distributing and displaying graphical items

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463423A (en) * 1982-07-14 1984-07-31 Burroughs Corporation Method of transforming high level language statements into multiple lower level language instruction sets

Also Published As

Publication number Publication date
EP0219993A2 (en) 1987-04-29
KR870004383A (ko) 1987-05-09
JPS6288033A (ja) 1987-04-22
CA1273708A (en) 1990-09-04
US4734854A (en) 1988-03-29
JP2609093B2 (ja) 1997-05-14
EP0219993A3 (en) 1990-03-14

Similar Documents

Publication Publication Date Title
KR930008769B1 (ko) 소프트웨어 프로그램 발생용 장치 및 방법
US6877155B1 (en) System and method for generating target language code utilizing an object oriented code generator
US5276880A (en) Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
US5680622A (en) System and methods for quickly detecting shareability of symbol and type information in header files
US7694272B2 (en) Method, a language and a system for the definition and implementation of software solutions by using a visualizable computer executable modeling language
US20080007779A1 (en) Method and system for generating executable code for formatting and printing complex data structures
US6961931B2 (en) Dependency specification using target patterns
KR960035260A (ko) 소프트웨어 매크로 호출내에 검출된 에러의 위치를 표시하기 위한 방법 및 장치
JP2007511834A (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
Atkinson et al. Aspects of implementing CLU
Engberts et al. Concept recognition-based program transformation
JP2002116917A (ja) オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ
Koskimies et al. The design of a language processor generator
GB2420638A (en) Method of substituting code fragments in Internal Representation
JP2002132502A (ja) 言語機能解釈による分散オブジェクト自動生成システム及び方法
Hamid Design of an arabic programming language (ARABLAN)
Madhavji et al. Software construction using typed fragments
Wielemaker SWI-Prolog 2.9. 6
Self A ex {An Ada Lexical Analyzer Generator
Sekimoto et al. A detection of ill-formed patterns about programming style
Gamble et al. Explicit Parallel Programming: System Description
Behlau et al. GPSS* a GPSS implementation with hierarchical modeling features
AL-A’ALI et al. DESIGN OF AN ARABIC PROGRAMMING LANGUAGE (ARABLAN) zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLK
Dempsey Using an APL macroprocessor to implement generalized software systems
Bulyonkov et al. Exploring Dataflow in Legacy Systems.

Legal Events

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

Payment date: 20021008

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee