KR20060121880A - 소프트웨어 생성방법 - Google Patents

소프트웨어 생성방법 Download PDF

Info

Publication number
KR20060121880A
KR20060121880A KR1020067005479A KR20067005479A KR20060121880A KR 20060121880 A KR20060121880 A KR 20060121880A KR 1020067005479 A KR1020067005479 A KR 1020067005479A KR 20067005479 A KR20067005479 A KR 20067005479A KR 20060121880 A KR20060121880 A KR 20060121880A
Authority
KR
South Korea
Prior art keywords
lyee
software
value
word
program
Prior art date
Application number
KR1020067005479A
Other languages
English (en)
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 KR20060121880A publication Critical patent/KR20060121880A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • G06F8/311Functional or applicative languages; Rewrite languages

Landscapes

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

Abstract

프로세스 대수를 이용하고, 소프트웨어의 자동생성 프로세스 및 Lyee에 의해 생성한 소프트웨어의 의미론을 형식화한다. 본 발명은, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성에 의해서 선언(규정)하는 제1 스텝과, 단어단위의 선언으로부터, Lyee 계산법에 의한 입출력채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)를 작성하는 제2 스텝과, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합으로 집합화하는 제3 스텝과, 상기 집합마다, 1개의 제어함수모듈 φ을 배치하는 제 4 스텝과, 상기 프로그램에 1개의 제어함수모듈 ψ을 배치하는 제 5 스텝을 구비한다.

Description

소프트웨어 생성방법{SOFTWARE GENERATION METHOD}
본 발명은, 소프트웨어 생성방법에 관한 것으로, 특히, Lyee 방법론에 있어서의 프로세스 대수에 의한 형식화를 이용한 소프트웨어 생성방법에 관한 것이다.
최근 수년동안, 소프트웨어의 개발 라이프 싸이클(life cycle)에 관련되는 1개 또는 많은 국면을 개선하기 위해서 여러 가지의 방법론 및 기술이 고안되고 제안되어 왔다. 그러나, 이 연구분야에 있어서의 열심인 노력에도 불구하고, 명쾌하게 이해할 수 있고 수정 가능한 시스템의 제조는, 아직까지도 야심적 목표이며 달성하기에는 꽤 멀다. 그 이유의 하나는, 소프트웨어 자신이 복잡한 것으로, 잡기 어려운 것이기 때문이고, 또 하나의 이유는, 현재의 방법론에 한계가 있기 때문이다. 최근, Lyee(상표)라 불리는 새롭고, 매우 유망한 방법론이 제안되었다. 다른 분야에 관련된 넓은 범위의 소프트웨어의 문제를 효율적으로 처리하는 것을 목적으로 하는 Lyee에 의해, 그 요건을 정의하는 것만으로 소프트웨어를 개발할 수 있게 되었다.
그러나, Lyee에 의해 생성된 소프트웨어의 의미론도, 요건으로부터의 소프트 웨어 자동 생성 프로세스도 형식적이지 않은 언어로 설명되므로, 이 방법론을 이해하여 연구하려고 하면 어렵고 혼란이 생길 우려가 있다.
[비특허문헌 1] : 제이ㆍ에이ㆍ베르그스트라, 제이ㆍ더블류ㆍ크롭(J.A. Bergstra 및 J.W.Klop)저, '추상화를 이용한 커뮤니케이션ㆍ프로세스의 대수', 1985년, 이론 컴퓨터 과학, 37(1), p.77-121
[비특허문헌 2] : 지ㆍ베리, 지ㆍ바우돌(G. Berry 및 G. Boudol)저, '화학추상기계', 1992년, 이론 컴퓨터 과학, 96(1), p.217-248
[비특허문헌 3] : 시ㆍ에이ㆍ알ㆍ호아(C.A.R.Hoare)저, '커뮤니케이팅 순차 프로세스, 프렌티스ㆍ홀 컴퓨터 과학 국제 시리즈, 프렌티스ㆍ홀 출판, 1985년
[비특허문헌 4] : 엠ㆍ메지리, 비ㆍ크타리, 엠ㆍ아히오위(M.Mejri, B.Ktari, 및 M. Erhioui)저, 'Lyee 지향소프트웨어에 대한 정적분석', 파리에 있어서의 Lyee 방법론에 관한 제1 회 국제 워크샵 예고집, 하미도ㆍ후지타, 폴ㆍ죠나네센 편저 '소프트웨어 방법론, 툴(tool) 및 기술에 있어서의 신조류, p.375-394, 아이오에스 출판, 2002년
[비특허문헌 5] : 알ㆍ밀너(R.Milner)저, '커뮤니케이션ㆍ시스템의 계산법', 컴퓨터 과학 92 강의록, 베를린, 1980년, 스프링거ㆍ페어라크 출판
[비특허문헌 6] : 근래문생(根來文生)저, 'Lyee 소프트웨어의 원리', 21세기의 정보과학에 대한 국제회의2000(IS2000), p.121-189, 2000년 11월
[비특허문헌 7] 근래문생(根來文生)저, 'Lyee 입문', 소프트웨어 생산기술 연구소, 도쿄, 일본, 2001년
[비특허문헌 8] : 근래문생(根來文生), 아이ㆍ하미드(I. Hamid)저, '의사공학의 제안', 데이터베이스와 정보시스템에 관한 제5회동유럽회의 연구(ADBIS' 2001), 2000년 9월
[비특허문헌 9] : 근래문생(根來文生), 아이ㆍ하미드(I.Hamid)저, '의사공학의 제안', 인터넷상의 전자상거래, 과학 및 교육의 기반에 있어서의 진보에 관한 국제회의(SSGRR 2001), 2001년
본 발명의 주된 목적은, 첫 번째로, 프로세스 대수를 이용하여, Lyee에 의해 생성한 소프트웨어의 의미론과 소프트웨어의 자동생성 프로세스를 형식화하는 것이다. 실제, 프로세스 대수는, 본질적으로 Lyee 방법론의 많은 개념을 뒷받침하기 때문에, 따라서 Lyee 방법론을 간결하고 교묘하게 형식화한다. 그리고, 제2 목적은, 프로세스 대수는 폰ㆍ노이만의 것보다 보다 적합한 추상기계를 Lyee 방법론에 제공하는 것이다. 실제, 이 새로운 추상기계는, 프로그램을 화학용액이라고 간주하고, 그것에서는, 분자(Lyee 방법론의 다른 벡터)가 공통의 목적을 달성하기 위해서 상호작용하고 있다.
이러한 과제를 해결하기 위해서 본 발명은, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체(論理體)마다, 상기 논리체상의 단어마다, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어값의 속성에 의해서 선언(규정)하는 제1 스텝과, 단어 단위의 선언으로부터, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)를 작성하는 제2 스텝과, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합으로 집합화하는 제3 스텝과, 상기 집합마다, 1개의 제어함수모듈 φ을 배치하는 제 4 스텝과, 상기 프로그램에 1개의 제어함수모듈 ψ을 배치하는 제 5 스텝을 구비한다.
본 발명의 다른 실시체로서의 '개발대상의 소프트웨어'를 생산하기 위한 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 소프트웨어 개발관리장치는, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를 삽입하는, 선언정보 삽입수단과, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 φ을, 상기 단위를 제어하도록 관련짓는, 제어함수 φ 배치수단과, 1개의 제어함수모듈 ψ을, 상기 제어함수 φ을 제어하도록 상기 제어함수 φ에 관련짓는, 제어함수ψ배치수단을 구비하도록 구성할 수도 있다.
본 발명은 또한, 상술의 '개발대상의 소프트웨어를 생산하는 방법'에 의해서 생산된 소프트웨어, 및 해당 소프트웨어가 탑재된 기록매체 혹은 해당 소프트웨어가 탑재된 장치(하드웨어)로 해도 실현되지만, 이 경우의 본 발명은, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를, Lyee 계산법에 의한 입출력채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및 작용요소(I2, O4, S4)의 모형의 미정의(未定義) 부분에 삽입한 모듈군과, 상기 모듈군을 동일화면으로부터의 커맨드로, 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 φ로 제어하도록 관련짓고 있는 1개 또는 복수의 제어함수모듈 φ과, 상기 제어함수 φ를, 1개의 제어함수모듈 Ψ을 제어하도록 관련짓고 있는 제어함수모듈 Ψ로 구성될 수도 있다.
또한 본 발명은, 상술의 '개발대상의 소프트웨어를 생산하는 방법'에 의해서 소프트웨어를 생산하기 위해서 이용되는 소프트웨어 코드의 모형으로서의 소프트웨어, 및 해당 소프트웨어가 탑재된 기록매체 혹은 해당 소프트웨어가 탑재된 장치(하드웨어)로서도 실현되지만, 이 경우의 본 발명은, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를, 채워 넣어야 할 미정의 부분을 가진, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형과, 상기 선언의 정보를 미정의 부분에 삽입한 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로, 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 φ로 제어하기 위한 기능을 가진 제어함수모듈 φ의 모형과, 상기 제어함수 φ를 1개의 제어함수모듈 ψ로 제어하기 위한 기능을 가진 제어함수모듈 ψ의 모형을 구비하는 소프트웨어로서 코드화 가능한 모형으로서 실현해도 좋다.
또한, 본 발명은, 상술의 '개발대상의 소프트웨어를 생산하는 방법'에 의한, 요건으로부터 추출한 정보{문서(종이, 데이터)}의 추출방법으로서, 또한 이러한 추출방법에 의해서 추출된 정보{문서(종이, 데이터)}로서, 나아가서는 해당 추출된 정보의 사용방법으로서 혹은, 이러한 정보가 탑재된 정보기록매체로서, 또는 정보의 추출방법/사용방법이 코드화 된 소프트웨어, 해당 소프트웨어가 탑재된 기록매체/장치(하드웨어)로서 모두 실현될 수 있지만, 이 경우의 본 발명은, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에 삽입해야 할, 1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보와, 상기 선언의 정보를 미정의 부분에 삽입한 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로, 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 φ로 제어하도록 관련짓기 위한 정보와, 상기 제어함수 φ를 1개의 제어함수모듈 ψ로 제어하도록 관련짓는 정보를 구비하는 소프트웨어 개발요건으로부터 추출한 정보로서 실현되어도 좋다.
한편, 논리체에 대해서는, 동일 출원인에 의한 일본특허출원 제2004- 272400호를 참조하여, 이것을 인용하고, 명시된 일부로 한다.
다른 분야에 관련하는 광범위의 소프트웨어의 문제를 효율적으로 처리하여, 종래의 방법론과 비교한 경우에는, Lyee를 사용하면 개발시간, 보수시간 및 문서량은 상당히 적어진다(70∼80% 정도).
도 1은 본 발명의 일실시형태와 관련된 셀의 개념을 설명하기 위한 개념도이다.
도 2는 본 발명의 일실시형태와 관련된 서로 작용하는 프로세스의 예를 나타내는 도면이다.
도 3은 본 발명의 일실시형태와 관련된 요건의 실행의 개념을 설명하기 위한 개념도이다.
도 4는 본 발명의 일실시형태와 관련된 Lyee 팔레트의 개념을 설명하기 위한 개념도이다.
도 5는 본 발명의 일실시형태와 관련된 기본구조의 개념을 설명하기 위한 개념도이다.
도 6은 본 발명의 일실시형태와 관련된 술어 벡터의 개념을 설명하기 위한 개념도이다.
도 7은 본 발명의 일실시형태와 관련된 L4_a 및 L4_b의 술어 벡터의 개념을 설명하기 위한 개념도이다.
도 8은 본 발명의 일실시형태와 관련된 L3_a 및 L3_b의 술어 벡터의 개념을 설명하기 위한 개념도이다.
도 9는 본 발명의 일실시형태와 관련된 화면 상호작용의 개념을 설명하기 위한 개념도이다.
도 10은 본 발명의 일실시형태와 관련된 처리 경로도를 설명하기 위한 개념도이다.
도 11은 본 발명의 일실시형태와 관련된 화면이 하나의 경우를 나타내는 개념도이다(실시예 1).
도 12는 본 발명의 일실시형태와 관련된 Lyee 계산법에 의한 프로그램P(S1)의 프로세스와 최종 사용자의 프로세스를 나타내기 위한 설명도이다.
도 13은 본 발명의 일실시형태와 관련된 프로세스간의 상호작용을 설명하기 위한 개념도이다.
도 14는 본 발명의 일실시형태와 관련된 화면이 두개의 경우를 나타내는 개념도이다(실시예 2).
도 15는 본 발명의 일실시형태와 관련된 Lyee 계산법에 의한 프로그램 P(S1)의 프로세스와 최종 사용자의 프로세스를 나타내기 위한 설명도이다.
도 16은 본 발명이 다른 일실시 형태로서 '개발 대상의 소프트웨어'를 생산 하기 위한 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어개발지원장치, 혹은 소프트웨어 개발관리장치의 어느 하나로서 본 발명을 실시하는 경우에 기능으로서 구비하는 구성을 나타낸 기능블록도이다.
도 17은 본 발명의 일실시형태와 관련된 상기의 구성을 구비하는 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 혹은 소프트웨어 개발관리장치의 어느 하나로서 실시되는 본 발명의 동작을 나타낸 플로우차트이다.
[부호의 설명]
W04 : W04 팔레트 W02 : W02 팔레트
W03 : W03 팔레트 1601 : 전체 제어부
1602 : 선언정보 삽입부 1603 : 제어함수 Φ 배치부
1604 : 제어함수 ψ 배치부 1605 : 정보 기억부
Lyee 방법론 : 프로세스 대수에 의한 형식화
개요 : 최근 수년동안에, 소프트웨어의 개발 라이프 사이클에 관련되는 1개 또는 많은 국면을 개선하기 위해서 여러 가지의 방법론 및 기술이 고안되고 제안되어 왔다. 그러나, 이 연구분야에 있어서의 열심인 노력에도 불구하고, 명쾌하게 이해할 수 있고, 수정 가능한 시스템의 제조는, 아직까지도 야심적 목표이며 달성하기에는 꽤 멀다. 그 이유의 하나는, 소프트웨어 자신이 복잡한 것으로, 잡기 어려운 것이기 때문이고, 또 하나의 이유는, 현재의 방법론에 한계가 있기 때문이다. 최근, Lyee라 불리는 새롭고, 매우 유망한 방법론이 제안되었다. 다른 분야에 관련되는 넓은 범위의 소프트웨어의 문제를 효율적으로 처리하는 것을 목적으로 한 Lyee에 의해, 그 요건을 정의하는 것만으로 소프트웨어를 개발할 수 있게 되었다.
그러나, Lyee에 의해 생성된 소프트웨어의 의미론도, 요건으로부터의 소프트웨어 자동생성 프로세스도, 형식적이지 않은 언어로 설명되므로, 이 방법론을 이해하여 연구하려고 하면 어렵고, 혼란이 생길 우려가 있다.
본 발명의 주된 목적은, 제1 목적으로 프로세스 대수를 이용하여, Lyee에 의해 생성한 소프트웨어의 의미론과 소프트웨어의 자동생성 프로세스를 형식화하는 것이다. 실제, 프로세스 대수는, 본질적으로 Lyee 방법론의 많은 개념을 증명하므로, 따라서 Lyee 방법론을 간결하고 교묘하게 형식화한다. 그리고, 제2 목적은, 프로세스 대수는, 폰ㆍ노이만의 것보다, 보다 적합한 추상기계를 Lyee 방법론에 제공하는 것이다. 실제, 이 새로운 추상기계는, 프로그램을 화학용액이라고 간주하고, 여기에서, 분자(Lyee 방법론의 다른 벡터)가 공통의 목적을 달성하기 위해서 상호 서로 작용하고 있다.
1. 서론
높은 품질을 갖는 소프트웨어를 용이하게 신속히 제조하는 것은, 소프트웨어 개발연구분야의 기본적인 관심사이다. 최근 수년에 걸쳐서, 소프트웨어의 개발 라이프 사이클에 관련하는 1개 또는 많은 국면을 개선하기 위해서, 여러 가지의 방법론 및 기술이 고안되고 제안되어 왔다. 그러나, 이 연구분야에 있어서의 열심인 노력에도 불구하고, 명쾌하게 이해할 수 있고, 수정 가능한 시스템의 제조는, 아직까지도 야심적 목표이며 달성하기에는 꽤 멀다. 그 이유의 하나는, 소프트웨어 자신이 복잡한 것으로, 잡기 어려운 것이기 때문이고, 또 하나의 이유는, 현재의 방법론에 한계가 있기 때문이다. 실제, 제안된 거의 모든 방법론은, 명쾌하게 이해할 수 있고, 수정 가능한 시스템의 제조에 실패하고 있고, 그 사용은, 아직까지도 매우 광범위한 능력, 기술 및 지식을 갖는 전문가만이 가능한 일이라고 간주되고 있다. 그 때문에, 인건비나 유지비가 높은 것이 되어, 소프트웨어에 대해서 광범위한 체크가 필요하게 된다. 이러한 이유로, 기업은, 소프트웨어 개발사이클에 있어서 실증 가능한 개선을 약속하는 모든 새로운 방법론을 환영하는 경향에 있다.
최근, Lyee('리'라고 읽는다. 'governementaL methodologY for softwarE providencE'의 어미 문자어) (비특허문헌 6, 7, 8, 9 참조)라 불리는 새롭고, 매우 유망한 방법론이 제안되었다. 다른 분야에 관련하는 광범위의 소프트웨어의 문제를 효율적으로 처리하는 것을 목적으로 한 Lyee에 의해, 그 요건을 정의하는 것만으로 소프트웨어를 개발할 수 있다. 더 정확하게 말하면, 개발자는 단어, 계산식, 계산조건(전제조건) 및 화면과 장부의 레이아웃을 부여하기만 하면, 다음은, 컴퓨터가, 이후의 모든 번거로운 프로그래밍ㆍ프로세스(예를 들면, 제어논리에 관한 국면 등)를 모두 실시하여 준다. 그 새로움에도 불구하고, Lyee의 사용결과는, Lyee 에는 상당히 많은 잠재적 가능성이 있는 것을 나타내고 있다. 실제, 종래의 방법론과 비교했을 경우에는, Lyee를 사용하면 개발시간, 보수시간 및 문서량은 상당히 적어진다(70∼80% 정도)(비특허문헌 7 참조). 비특허문헌 4에 있어서, 이 방법론의 많은, 특히 Lyee 요건의, 국면을 개선하기 위해서, 우리는, 몇 개의 고전적 정적 분석기술을 제안하였다.
그러나, Lyee에 의해 생성한 소프트웨어의 의미론도, 요건으로부터의 소프트웨어 자동생성 프로세스도, 형식적이지 않은 언어로 설명되고 있으므로, 이 방법론을 이해하여 연구하려고 하면, 어렵고, 혼란이 생길 우려가 있다. 또한, 이 방법론의 배후에 있는 아이디어는, 이러한 아이디어를 지지하는데 적당하지 않은, 순차 처리언어(sequential language)에 의해서 기술되고 있다. 실제, Lyee에 의해 생성한 소프트웨어는, 기본적으로는, 작은 컴퍼넌트(component)(Lyee 용어로 벡터(vector)라 불린다)군으로부터 되어 있다. 여기에서는, 각 컴퍼넌트는 각각의 아토믹ㆍ골(atomic goal :요소의 목적)을 갖고 상호작용에 의해서 서로 협력하여, 요구되는 결과{글로벌ㆍ골(global goal : 전체의 목적)}를 생성한다. 한편, 평행성(concurrency : 복수의 계산 주체가 서로 정보의 교환을 실시하면서 동작하는 것) 및 통신(communication)을 지지하는 프로세스 대수는, 공동으로 서로 작용하는(concurrent) 컴퍼넌트를 기술하는데 본질적으로 적합한 언어인 것은 잘 알려져 있다. 그러므로, 프로세스 대수는, Lyee 방법론의 개념을 지지하기 위한, 형식적이고 가치 있는 기초를 제공한다. Lyee 방법론에 프로세스 대수를 사용하는 것에 의한 수많은 이점 중에는, Lyee의 현실의 버젼에 있어서의 많은 컴퍼넌트(벡터 전체 또는 벡터의 일부)는, 이미 필요하지 않게 된다고 하는 경우가 있다. 이러한 컴퍼넌트는, 순서를 따라 처리언어에 의해서 기술되고 있기 때문에, 어떤 처리의 정리의 실행순서를 제어하기 위해서 아무래도 필요했지만, 이러한 역할은, 프로세스의 평행처리와 통신을 지지하는 프로세스 대수에 의해, 필연적으로 지지되기 때문이다. 실제, 경로 작용요소(routing vector)는, 이미 필요하지 않게 된다. 보다 작고, 처리시간이 보다 짧고, 필요 메모리가 보다 적은 프로그램을 생성하는, 심플한 Lyee의 형식적 기술을 손에 넣을 수 있다. 게다가, 이 형식적 기술은, 이 방법론의 여러 가지 국면의 많은 흥미 있는 분석에 불가결한 시작점이 된다. 예를 들면, Lyee로 생성한 소프트웨어, 또는 소프트웨어 생성프로세스를 최적화하기 위해서, 최적화된 프로그램이 원래의 버전과 같은 것이라고 하는 형식적 증거를 필요로 한다. 프로세스 대수를 사용하면, 형식적으로 같은 것인 것을 체크, 또는 더 일반적으로 모델ㆍ체크를 잘 실시할 수 있다.
본고에 있어서는, 최초로, Lyee 방법론의 기본적인 개념을 용이하고 또한 본질적(naturally)으로 지지하는, Lyee 계산법(Lyee-Calculus)이라고 부르는 형식적 프로세스 대수(formal process algebra)를 정의한다. 실제로, 이 계산법은, 폰ㆍ노이만형(순차처리형)의 계산기보다, Lyee 방법론의 개념을 지지하는 데 보다 적합한 추상기계(abstract machine : 계산기의 개념을 추상화한 것)라고 볼 수 있다. 이 기계는, 프로그램을, 최종결과를 생성하기 위해서 함께 상호작용을 실시하는 분자의 집합이라고 본다. 2번째로, 이 계산법이, 어떻게 하여, Lyee 컴퍼넌트(Lyee에서는 벡터라고 부른다)와 Lyee 방법론의 모든 소프트웨어 생성 프로세스의 양쪽 모두를 형식화해서, 간단하게 할 수 있는지를 나타낸다. 실제로, Lyee 소프트웨어 생성의 자동 생성 전체 프로세스를 형식화하였다.
본고의 나머지의 부분은, 아래와 같은 구성이 되어 있다. 섹션 2에 있어서, Lyee 계산법의 구문론(syntax) 및 의미론(semantics)을 정의한다. 섹션 3에 있어서는, Lyee 방법론의 기술적 소개를 실시하고, Lyee 계산법에 의한 그 형식화의 전체상을 소개한다. 섹션 4에 있어서는, Lyee 계산법에 의한 Lyee 방법론의 상세하고 완전한 형식화를 제안한다. 섹션 5에 있어서는, 생성한 프로그램의, 실행단계마다의 기술과 함께, 어떻게 하여 간단한 요건으로부터 프로그램이 자동적으로 생성되는 것인지의 양쪽 모두를 구체적으로 나타내는 1개의 사례연구에 대해서 설명한다. 마지막으로, 섹션 6에 있어서는, 이 연구의 결론을 서술하여, 장래의 연구의 몇가지에 대해 설명한다.
2. Lyee 계산법
프로세스 대수는, 복잡한 컴퓨터ㆍ시스템, 특히, 통신하여, 평행하게 실행하는 컴퍼넌트를 포함한 컴퓨터ㆍ시스템을 위한 형식적으로 기술(記述)한 기술(技術)이다(비특허문헌 1,3,5 참조). 프로세스 대수는, 통상, 문헌에서 계산법(calculus)으로 불린다. 왜냐하면, 프로세스 대수는, 프로세스 대수의 분야를 넘어, 여러 가지의 수학적 및 논리적 개념(평행성 이론(concurrency theory), 동작 의미론(operational semantics), 복잡성 이론(complexity theory), 논리 등)을 포함하고 있기 때문이다.
이 섹션에 있어서는, Lyee 방법론을 형식화하기 위해서 특히 정의한 Lyee 계산법이라고 부르는 새로운 계산법의 구문법 및 의미론에 대해 설명한다.
2. 1 구문법(Syntax)
Lyee 계산법 프로그램은, 지정된 채널상에서 핸드쉐이크 기술(hand- shake technique : 2개의 프로세스의 한 쪽을 수신가능상태로, 다른 쪽을 송신가능상태로 두는 것에 의해서 통신시키는 기술)에 의해 통신(communicate)하는 독립한 병행 프로세스로 이루어지는 시스템이다. 채널은, 그 위에서는 특정의 프로세스만이 통신할 수 있도록 제한할 수 있다. 어떤 프로세스는, 작용[?!e]을 실시하는 것에 의해, 채널 ?을 통하여 값 ?을 보낼 수 있다{?는, 식 e의 계산결과(valuation)}. 마찬가지로, 어떤 프로세스는, 작용[??e]를 실시하는 것에 의해, 채널 ?로부터 식 e에의 값 ?을 수신할 수 있다(?는 식 e의 계산에 사용하는 값).
어떤 프로세스는, 또한, 부작용 작용(silent action)τ을 실시할 수도 있다. 이 특별한 작용은, 프로세스 사이의 동기(synchronization : 프로세스간 통신에 있어서, 어떤 프로세스가 값 등을 송신한 동시에, 다른 프로세스가 그것을 수신하는 것)와 같은, 시스템 내부의 행동(internal behavior)을 나타내는 것을 의도하고 있다. 또한, 프로세스의 진전에 있어서의 예견불능성(豫見不能性)(indeterminism), 즉, 복수의 프로세스의 선택사항이 있어 어느 프로세스가 실행시켜지는가를 예측할 수 없는 경우(후술의 프로세스 구문법 정의 1의 '선택'의 설명을 참조)를 파악하기 위해서 유익하다.
프로세스의 구문법(syntax)을 이하에 정의한다.
<정의<구문법 1>
[수식 1]
Figure 112006019020282-PCT00001
<정의<구문법 2>
K, K1, K ::= {κ}|K1 ∪ K2
<정의<구문법 3>
[수식 2]
Figure 112006019020282-PCT00002
<정의<구문법 4>
κ::= ??!e|??e|τ|
상기의 정의 구문법에 사용되는 기호의 의미와 그 직감적 구문법의 의미는 다음과 같다.
<정의<구문법 1>
[표 1]
Figure 112006019020282-PCT00003
정의 구문법 1의 직감적 의미는 다음과 같다. 즉, 프로세스 P와 Q가 있었을 때, 그 관계나 내용은, 이하의 어느 하나로 정의된다. 즉, 시퀀스([K].P), 병행 구성(P|Q), 선택(P+Q), 조건부 선택(p > Q), 제한(P/L), 정의, 무프로세스(nil) 중의 하나이다. 여기서, '정의'란,
[수식 3]
스캔
Figure 112006019020282-PCT00004
으로, 기호의 좌변은, 우변에 의해서 정의된다.
각 구문의 해석에 대해서는 후술한다.
<정의<구문법 2>
[표 2]
기호 의미
K, K1, K2 작용의 집합(Set of actions)
κ 작용(Action)
{κ} 1개의 작용(Single action)을 요소로 하는 집합
K1 U K2 작용의 집합의 결합 집합(Set union)
정의 구문법 2의 직감적 의미는 다음과 같다. 즉, 작용의 집합 K, K1, K2 가 있을 때, 그 작용의 집합은, 1개의 작용을 요소로 하는 집합({κ}), 작용집합이 결합한 집합(K1 ∪ K2) 중의 하나이다.
<정의<구문법 3>
[표 3]
기호 의미
L, L1, L2 채널의 집합(Set of channels)
0 공집합(Empty set)
ι 채널(Channel)
{ι} 1개의 채널(Single channel)을 요소로 하는 집합
L1 ∪L2 채널의 집합의 결합(Set union)
정의 구문법 3의 직감적 의미는, 다음과 같다. 즉, 채널의 집합 L, L1, L2가 있을 때, 그 채널의 집합은, 요소를 갖지 않는 공집합(0), 1개의 채널만을 요소로 하는 집합({?}), 채널의 집합이 결합한 집합(L1 ∪ L2) 중의 하나이다.
<정의<구문법 4>
[표 4]
Figure 112006019020282-PCT00005
정의 구문법 4의 직감적 의미는, 다음과 같다. 즉, 작용 k가 있을 때, 그 작용은, 채널상에서 식 e의 계산결과의 값을 송신하는 송신 작용(?!e), 채널(?)상에서 식 e의 값을 수신하는 수신작용(??e), 부작용 작용(τ) 중의 하나이다.
정의 구문법 1에 정의한, 구문법의 의미를 자세하게 설명한다.
1) [K].P : 시퀀스 (Sequence)
프로세스[K].P는, 작용의 집합인 K에 속하는 모든 작용(action), 즉{κ1, ..., κn}를 실행한 후에 P로서 행동하는 프로세스이다. K에 속하는 작용을 실행하는 순서는 중요하지 않다. 여기에서는, 설명을 간단하게 하기 위해서,[{κ1, ..., κn}]라고 쓰는 대신에[κ1, ..., κn]라고 쓴다.
2) P|Q : 병행구성(Parallel composition)
프로세스 P|Q는, 병행으로 실행되는 프로세스 P 및 Q로서 행동한다. 각 프로세스는, 양쪽 모두가 알고 있는 채널상에서 서로 상호작용할 수 있고, 또는 각 프로세스가 다른 쪽으로부터 독립하여 외부세계(시스템의 환경 또는 최종 사용자)와 상호작용(interact)할 수도 있다. 같은 채널상에서 2개의 프로세스가 동기(synchronize : 프로세스간 통신에 있어서, 어떤 프로세스가 값 등을 송신한 동시에, 다른 프로세스가 그것을 수신한다)하면, 프로세스 전체는, 작용 τ(부작용 작용)을 실행하여, 그 후, 나머지의 프로세스로서 행동한다. 구체적으로, 아래와 같은 프로세스의 예로 생각해 본다.
P = P1|P2
P1 및 P2를 아래와 같이 정의한다.
[수식 4]
Figure 112006019020282-PCT00006
상기 식의 직감적 의미는,
P1은, 값 4를 채널상에 송신하고, 그 후에는, 프로세스 P1'로서 행동하는 프로세스이다. P2는, 채널상에 식 x의 값이 부여되는 것을 기다려서, 값이 부여되면 수신하고, 그 후에는, 프로세스 P2'로서 행동하는 프로세스이다.
따라서, 프로세스 P는, 프로세스 P1과 P2가 동기했을 때(그것은 실제로는 P1로부터의 값 4의 송신과 동시에 P2에 의한 수신을 하는 것에 의한다), 부작용 작용 τ을 실행하고, 그 후에는, 나머지의 프로세스 P1'|P2'로서 행동한다. 의미론상, 이 천이를 아래와 같이 표시한다.
[수식 5]
Figure 112006019020282-PCT00007
이 식의 직감적 의미는, 프로세스 P에 있어서의 상호작용의 결과, 부작용 작용 τ이 실행되어, 프로세스 전체가, 병행 프로세스 P1'|P2'로 이행한다, 라고 하는 것이다.
관계
[수식 6]
Figure 112006019020282-PCT00008
의 형식적 정의는 이 섹션 후의 방법으로 나타낸다.
3) P+Q : 선택(Choice)
프로세스 P+Q는, 프로세스 P 또는 Q로서 행동하는 프로세스이다. P 및 Q 중의 어느 쪽이, 시작이 부작용 작용인 경우를 제외하고, 어느 쪽의 프로세스가 실행될 것인지의 선택은, 환경에 의해서 결정론적으로 정해진다. 한편, 양쪽 모두의 프로세스가 부작용 작용으로 시작하는 경우에는, 선택은 결정되지 않는다.
4) P>Q : 조건부 선택(Guarded choice) :
프로세스 P>Q는, 프로세스 Q가 활성화(activated)될 때까지, P로서 행동하는 프로세스이다. 후자 Q가 활성화되었을 때는 언제라도, P는 정지하고, 메모리로부터 클리어(clear)된다.
5) P/L : 제한(Restriction)
프로세스 P/L은, 채널의 집합 L에 부여된 채널만을 사용하여 환경과 통신할 수 있는 프로세스 P로서 행동하는 프로세스이다.
6) 수식 3의 기호 : 정의(Definition)
예를 들면, 수식 3의 기호에 의해서, 하기 식과 같은 정의를 할 수 있다.
[수식 7]
Figure 112006019020282-PCT00009
수식 7의 식에 있어서, A는 프로세스의 식별명,
[수식 8]
Figure 112006019020282-PCT00010
는 프로세스 A의 변수(파라미터)로, 좌변의 프로세스는, 우변의 프로세스 P와 같다고 정의되고 있다. 프로세스 P는 재기적(再起的)으로 A를 포함할 수 있다.
7) nil : 무프로세스(nil process) :
어떤 작용도 실행할 수 없는 프로세스, 바꿔 말하면 종료하고 있는 프로세스(dead process)이다. 어느 프로세스가 종료하면, 통상 nil 프로세스가 된다. 종료해서 nil 프로세스가 되었을 때, 그 프로세스는 이미 기동하지(activated) 않기 때문에, 작용을 실행하는 조건이 갖추어졌다고 해도, 어떤 작용도 실행할 수 없다.
2. 2 예(例)의 값을 유지하는 프로세스의 모델화
이 섹션에 있어서는, 메모리라고 하는, 값을 유지하는 셀(cell)을, 그 통신 채널을 통하여, 그 환경과 상호작용을 실시하는 프로세스로서 모델화하는 방법에 대해 설명한다. 도 1에 나타내는 바와 같이, 메모리ㆍ셀은 통신을 위한 2개의 포트(채널)in 및 out을 갖는 것으로 본다. 이 메모리ㆍ셀의 기본적인 태스크는, 채널in 상에서 값을 무제한으로 기다리는 것이고, 채널 out상에서 그 값을 이용 가능하게 하는 것이다. 메모리ㆍ셀은, 새로운 값이 채널 in에 입력될 때까지, 같은 값을 필요한 회수만큼 채널 out에 출력할 수 있다. 채널 자체는 값을 유지하지 않는다.
메모리ㆍ셀 x가 값 ?을 유지하고 있는 프로세스ㆍ셀 Cx(?)는, 아래와 같이 나타낸다.
[수식 9]
Figure 112006019020282-PCT00011
이 형식적 기술의 직감적 의미는, 값을 유지하고 있는 프로세스 Cx(?)는, 채널 inx상에서 식 y의 값을 수신했을 때는, 프로세스 Cx(y)로서 행동(즉, 유지하는 값이 ?로부터 식 y의 값으로 변경된다), 유지하고 있는 값을 채널 outx상에 송신했을 때에는, 송신작용 후에도 값을 유지한 채로 프로세스 Cx(?)로서 행동하는 프로세스이다.
값을 유지하는 메모리ㆍ셀을 프로세스로서 파악하는 것에 의해, 메모리ㆍ셀에 더욱 지능을 부가할 수 있다. 예를 들면, 초기화되기(초기값을 수신한다)까지 그 내용에 액세스시키지 않는 셀을 기입할 수 있다. 정보처리 능력이 있는 이 스마트ㆍ셀(smart cell)은, 아래와 같이 정의할 수 있다.
[수식 10]
Figure 112006019020282-PCT00012
프로세스 Cell(x)은, 채널 inx상에서 식 y의 값을 수신한 후, 식 y의 값을 유지하는 프로세스 Cx(y)로서 행동하는 프로세스이다(식 y에 값을 수신하고, 식 y의 값을 유지하는 프로세스로, 송신은 실시하지 않는다).
여기서, 아래와 같이 정의한 2개의 프로세스에 대해서 생각해 본다.
[수식 11]
Figure 112006019020282-PCT00013
프로세스 P1은, 채널 inx상에 값 5를 송신하여, nil이 되는(종료하는) 프로세스이다(값 5를 송신하는 프로세스). 프로세스 P2는, 채널 outx상에서 식 y의 값을 수신한 후에 nil가 되는(종료하는) 프로세스이다(수식 y에 값을 수신하는 프로세스).
이러한 2개의 프로세스가, 셀 x(Cx)를 통해 통신하는 프로그램을 기입하는 것을 용이하게 할 수 있다.
P1|Cell(x)|P2
이 프로그램은, 프로세스 P1, 프로세스 Cell(x), 프로세스 P2가 병행으로 실행되는 프로그램이다.
도 2는, 상기에 포함되는 모든 프로세스 사이의 상호작용을 나타낸 것이다.
이 프로그램의 실행에 있어서의, 개개의 스텝의 자세한 것은 이하와 같이 이루어진다.
[수식 12]
Figure 112006019020282-PCT00014
상기의 식의 의미를 직감적으로 표시하면, 프로세스 P1|Cell(x)|P2는, 이하의 제1 스텝과 제2 스텝을 거쳐 실행된다.(등호 기호로 기재되는 우변이 1개의 스텝이다) 밑줄은 상호작용(동기)을 일으키는 송수신 작용을 나타내고 있다.
<제1 스텝>
(1)[inx!5].nil(채널 inx에 값 5 송신), (2)[inx!5].Cx(y)(채널 inx에서 식 y에 부여하는 값을 수신하고, 수신 후는 셀 x에 식 y의 값을 유지), (3) [outx ?y].nil(채널 outx에서 식 y의 값을 수신), 의 3개의 프로세스가 병행으로 행해진 결과,
(1)이 채널 inx에 값 5를 송신완료하고, 동시에 (2)가 채널 inx에서 값 5를 수신한다고 하는 프로세스간의 상호작용(동기)이 일어나고,
부작용 작용 τ가 실행되어,
(4) Cx(5)(셀 x에 값 5를 유지)와, (3)[outx?y].nil(채널 outx에서 식 y의 값을 수신) 의 2 개의 프로세스의 병행 프로세스로 이행한다.
<제2 스텝>
상술한 수식 1-19의 정의로부터, (4)Cx(5)는 선택 프로세스(4)-1([inx?y].Cx(y)+[outx??].Cx(?))로 치환할 수 있다.
즉, 프로세스(4)-1과, (3)이 병행으로 실시된 결과,
(4)-1의[outx??].Cx)(채널 outx에 값 5를 송신)와 동시에 (3)의(채널 outx에서 식 y의 값 5를 수신)가 일어난다고 하는 상호작용(동기)이 일어나고, 부작용 작용 τ가 실행되어, 그 결과, 나머지의 프로세스는 Cx(5)(셀 x에 값 5를 유지)로서 행동된다.
2. 3 의미론
이하에, Lyee 계산법의 형식적 의미론에 대해 설명한다. 이 의미론은, 상호작용 관계
[수식 13]
Figure 112006019020282-PCT00015
에 의해 정의된다. 이때, 연산자 →는 '관계(relation)를 나타내고, κ는 작용을 나타낸다. '관계'는 복수의 '관계'의 집합이고, 그 집합요소인 1개 1개의 '관계'는 다음의 3개의 요소로 구성되어 있다. 제1 요소는 '변화 전의 프로세스', 제2 요소는 '변화 후의 프로세스', 제3 요소는 '변화 동안에 실행된 작용'이다.
[수식 14]
Figure 112006019020282-PCT00016
이라고 쓸 때, 관계→의 3 요소는(P, Q, K)이다.
상기와 같이 정의할 때, 수식 14의 의미는, 서브 프로세스 P 중의 상호작용(reaction)에 의해서, 전체 프로세스가 아토믹ㆍ액션(atomic action; 끼어들기를 허용하지 않는 일련의 불가분인 작용으로, 다음의 다른 작용을 시작시키기 위해서, 반드시 완료되지 않으면 안 된다)κ를 실행하여 서브 프로세스Q가 되는 것을 의미한다. 상호작용관계(interaction relation)라고 하는 착상은, 베리(Berry) 및 바우돌(Baudol)(비특허문헌2 참조)의 화학추상기계(Chemical Abstract Machine)에 의해서 촉발된 것이다. 이 모델에서 프로세스는 상호작용을 일으키는 것을 기다리고 있는 분자의 화학용액이라고 간주하고 있다.
수식 13의 관계를 형식적으로 나타내기 위해서, 아래와 같은 개념을 정의할 필요가 있다.
[수식 15]
Figure 112006019020282-PCT00017
는, 프로세스를 간단하게 하기 위해서 이용하는 기호로, 좌변이, 간소화된 프로세스인 우변과 동일한 것을 나타낸다. 하기에 나타내는 바와 같이 무프로세스를 제거하는 것에 의해 프로세스를 간단하게 할 수 있다.
[수식 16]
Figure 112006019020282-PCT00018
식 e의 계산결과인 값의 집합을
[수식 17]
[e]
로 나타낸다. e가 변수인 경우에는, 그 계산결과의 값의 변역(變域)도, 그 변수의 변역(domain)(정수, 실수 등)과 같다. 설명을 간단하게 하기 위해서, 모든 변수는 실수의 집합에 속하는 것이라고 간주한다.
[수식 18]
Figure 112006019020282-PCT00019
는, 작용 κ가 사용하는 채널의 이름이다. 예를 들면,
[수식 19]
Figure 112006019020282-PCT00020
의 의미는 다음과 같이:
부작용 작용 τ가 사용하는 채널은 존재하지 않기 때문에, 공집합(0)이다. 송신작용(?!e)과 수신작용(??e)이 사용하는 채널은, ?이다.
'관계'의 집합(→)은, 요소로서 표 5에 나타내는 15개의 규칙을 만족시키는 '관계'를 최소수 갖는 '관계'이다.
괄호 안에 나타낸 각종의 R 기호는, 규칙명을 나타내는 기호이다. 규칙은, 전제조건과 결과로 이루어지고 있고, 각 규칙은, 횡선의 상단에 나타나는 조건일 때, 하단에 나타낸 결과가 되는 규칙이다.
[표 5]
Figure 112006019020282-PCT00021
예를 들면, 제2 번째의 규칙(R!)의 의미는 다음과 같다.
값 ?이 식 e의 값의 집합에 속할 때(상단의 전제조건이 성립할 때), 채널 ?상에 식 e의 값을 송신 후, 프로세스 P가 된다[?!e]. P는, 채널 ?상에의 값 ?송신작용이 일어난 후, 프로세스 P로 이행한다(하단의 결과).
3. Lyee 요건의 비형식적 형식화
이 섹션에 있어서는, Lyee 방법론이, 어떻게 하여 기본적인 사용자 요건으로 부터 소프트웨어를 생성하는지, 그 전체상에 대해 설명한다. 덧붙여, 이 전체상으로부터, Lyce 계산법에 따라 이 방법론을 어떻게 하여 간단하고 효율적으로 형식화할 수 있는지를 순서를 따라 소개한다. Lyee 방법론의 소프트웨어 생성 프로세스의 완전한 형식화에 있어서는, 다음의 섹션으로 설명한다.
3. 1 Lyee 요건
Lyee 방법론에 있어서, 요건은, 선언적인 방법으로 단어명, 그 정의식, 그 계산조건, 및 그 속성(입출력, 타입(type), 세큐리티 타입(security type) 등)이라고 하는 요소를 포함한 선언의 집합으로서 부여된다. 표 6은, Lyee 요건의 일례이다.
'Word'는 단어명, 'Definition'은 단어의 값을 생성하기 위한 정의식, Condition은 정의식을 실행하는 계산조건, 'IO'는 단어의 값의 입출력의 속성을 나타낸다. OF는 파일에의 출력, OS는 화면에의 출력, IS는 화면으로부터의 입력, IF는 파일로부터의 입력(표에는 없다)을 나타낸다. 'Type'은, 값의 속성이고, int는 정수(integer), float는 부동 소수점수를 나타낸다. 'Security'는, 값의 세큐러티에 관한 속성을 나타낸다. secret 는 비공개, public은 공개를 나타낸다.
[표 6]
Figure 112006019020282-PCT00022
표 6의 요건은, 감각적으로 파악하면, 종래의 프로그램 언어의 표 7의 코드에 대응한다. Sa는, 단어 a의 선언을 의미한다.
[표 7]
선언 코드
sa if b*e >2 then a:=b+c; output(a); endif
sc input(c);
sb if c>0 then b:= 2*c+5; output(b); endif
se input(e);
예를 들면, 단어 a의 선언 Sa의 코드는, '만약 b*e>2가 참이면, 단어 a에 b+c의 계산결과를 대입하여, 단어 a의 값을 출력'을 의미하고 있다.
선언 Sc의 코드는, '단어 c에 값을 입력'을 의미하고 있다.
Lyee 방법론에 있어서는, 사용자는, 이러한 정의가 실행되는 순서(제어논리)를 지정할 필요는 없다. 표 7에 나타내는 바와 같이, 단어 a의 정의는, 단어 b를 사용하고 있는 것에도 불구하고, 선언 Sb는, 선언 Sa의 뒤에 위치하고 있다. 이하에 설명하는 바와 같이, 이러한 요건으로부터, 또한, 선언의 순서와는 관계없이 Lyee는 모든 정의한 단어를 계산하는 코드를 생성할 수 있다. 이 심플한 아이디어는, 비특허문헌 6, 7, 8, 9에 나타내는 바와 같이, 소프트웨어 개발 상의 다른 스텝에 있어서, 수많은 유리한 결과를 낳는다. 실제, 이 아이디어를 사용하는 것에 의해, 요건이 불완전해도 소프트웨어의 개발을 시작할 수 있다. 또한, 사용자는, 더 고전적인 방법론의 경우와 같이, 단어의 실행순서의 제어논리의 문제를 취급할 필요가 없다. 소프트웨어의 제어논리부분은, Lyee 방법론에 있어서는, 자동적으로 생성되겨, 그 결과, 프로그래밍ㆍ에러가 저감하여, 프로그래밍 시간이 단축된다. 유연성도, Lyee 방법론의 주요한 이점이다. 왜냐하면, 보수 업무를, 요건의 간단한 수정(단어의 정의의 추가, 삭제 및/ 또는 수정) 작업으로 경감할 수 있기 때문이다.
따라서, Lyee 시스템은, 요구되는 결과를 생성하기 위해서 모두 상호작용을 실시하는 독립한 컴퍼넌트(선언)의 집합체라고 간주할 수 있다. 본론의 프로세스 대수의 개념은, 이 견해와 매우 잘 일치한다. 왜냐하면, Lyee 계산법은, 프로그램을, 최종목적에 도달하기 위해서, 모두 서로 상호작용하는 분자(프로세스)의 화학용액이라고 간주하기 때문이다. 그러므로, 일견하여, 선언의 집합{s1, ..., sn}으로 이루어지는 Lyee요건 LR을, Lyee 계산법의 병행프로세스(concurrent process)로서 볼 수 있다. 즉, 다음에 나타내는 바와 같다.
LR = s1|...|sn
직감적 설명에 의하면, 요건 LR은, 프로세스 s1, ... , sn가 병행으로 실행 되는 프로세스이다.
3. 2 팔레트(Pallet) 및 기본구조(Scenario Function)
표 6의 요건으로부터, a 및 b의 값을 계산하여, 그것들을 출력하는 프로그램을, 자동적으로 생성할 수 있다. 이 프로그램은, 부동점(fixed point)에 이를 때까지, 즉, 도 3에 나타내는 바와 같이, 반복처리가 어떠한 단어의 값도 바꾸지 않게 될 때까지, 이러한 명령의 실행을 단순하게 반복한다.
프로세스 대수의 관점으로부터 말하면, '부동점에 이른다'라고 하는 개념은, 당연히 의미규칙에 조합된다. 실제로, 프로세스(분자)는, 어떠한 진전도 가능하지 않게 되는 상태(부동점)에 이를 때까지, 모두 상호작용 한다.
요건으로부터 Lyee에 의해 자동적으로 생성되는 프로그램의 구조 및 내용에 대해 더 정확하게 설명한다. Lyee 방법론에 있어서는, 표 6에 나타내는 선언의 집합의 실행은 특정의 방법에 의해 실시된다. 실제는, Lyee는, 도 4에 나타내는 바와 같이, Lyee 용어로, 팔레트(W02, W03 및 W04)로 불리는 3개의 영역상에 선언에 관련하는 코드를 분배한다.
팔레트 W02 :입력단어를 처리한다.
팔레트 W03 : 단어의 계산조건을 계산하여, 결과를 불리언 형(boolean object)(참거짓값을 값으로서 갖는다)의 변수로 보존한다. 예를 들면, 단어 a의 정의 중에 사용되고 있는 계산조건 'b*e>2'는 W03으로 계산되고, 참/거짓 결과는, 다른 변수 'a_cond'에 보존된다.
팔레트 W04 : 요건에 포함되는 그 정의식에 의해서 단어의 계산을 실시한다. 팔레트 W04는 또한 계산한 단어의 값을 출력한다.
Lyee 프로그램은, 팔레트 W04로부터 시작하여, 부동점에 이를 때까지, 모든 정의한 단어의 값을 계산하고자 한다. 단어의 값의 계산과 관계되는 W04내에 진전을 볼 수 없게 되면, 경로 작용요소 R4에 의해 팔레트 W02에 제어가 부여된다. 이번은, 이 제2 팔레트가, 단어의 값의 입력을 반복하여, 부동점에 이르렀을(그 밖에 새로운 입력대상이 없어졌다) 때, 다음으로, 경로 작용요소R2가 제어를 팔레트 W03에 건네준다. 마지막으로, 그리고 팔레트 W04와 같이, 팔레트 W03이, 부동점에 이를 때까지, 요건에 따라서 단어의 계산조건을 계산하고자 한다. 도 5에 나타내는 바와 같이, 이 전체 프로세스(W04→W02→W03)는, 전체가 안정 상태에 이를 때까지 반복되어, 연결되어 있는 3개의 팔레트는 기본구조(Scenario Function)로 불린다.
Lyee요건을 조합하여 넣기 위해서 순차처리언어를 사용하는 것에 의해서, Lyee 방법론의 작자(作者)는, 팔레트가 실행되는 순서, 같은 팔레트 내의 벡터(모듈)가 실행되어야 할 순서 및 어떤 벡터로부터 다른 벡터로 제어를 건네는 방법을 명확하게 지정하지 않을 수 없었다. 따라서, 바꿔 말하면, 이 순차처리언어가, Lyee 방법론의 기본개념에 속하지 않고, 또한 이 방법론을 상당히 복잡해져서 몇 개의 국면이 초래되게 되었다. 즉, 각 팔레트내의 벡터가 실행되는 반복의 제어, 팔레트로부터 다른 팔레트로 실행을 옮기는(다른 기본구조 사이를 포함) 방법 및 시기 등을 지정한다고 할 필요가 있었다. 이 때문에, 팔레트 함수(팔레트 내의 실행제어), 경로 작용요소(다음에 실행하는 팔레트의 결정), 팔레트 연쇄함수(팔레트간의 실행 제어)가 설치되어 있었다.
그러나, Lyee계산법을 사용하는 것에 의해, 팔레트가 실행되는 순서, 각 팔레트의 벡터가 실행되는 순서, 팔레트로부터 다른 팔레트에 제어를 건네는 방법 및 시기 등을 지정할 필요가 이미 없어진다. 이러한 자세한 것은, 당연히 본론의 추상기계 Lyee계산법에 의해 본질적으로 관리된다. 그러므로, 기본구조는, 하기 식과 같이 형식화할 수 있다.
SF = W04|W03|W02
즉, 기본구조 SF의 프로세스는, W04, W03, W02의 3개의 팔레트의 프로세스의 병행 프로세스이다.
W04, W03 및 W02를 실행하는 순서는 이미 중요한 것은 없어지고, 이러한 팔레트를 접속하고 있는 경로 작용요소도 제거되고 있는 것에 유의하기 바란다.
Lyee는, 고정구조를 갖는 간결한 프로그램(Lyee용어로 술어 벡터(predicate vector)로 불린다)을 확립하였다. 이 구조에 의해, 생성된 코드의 구조는 불변이나 요건의 내용에 의존하지 않는 것으로 되어있다. 벡터의 실행을 제어하는 총괄 프로그램(global program)인, 팔레트 함수의 역할은, 단순히 술어 벡터를 불러내는 것 뿐이다. 도 6은, 술어 벡터의 구조를 나타낸다.
술어 벡터의 목적은, 각 팔레트에 의해 다르다.
<팔레트 W04>
팔레트 W04의 제1 목적은, 정의식에 의해 단어에 값을 부여하는 것이다. 이 역할을 실시하는 술어 벡터를 L4라고 부른다. 도 4의 예에 있어서의 단어 a 및 단어 b의 L4는, 도 7에 나타내는 바와 같다.
단어의 계산에 진전이 없어지고, 또한, 단어의 값이 모두 성립하면, Lyee의 생성코드는, 다음의 목적이 되는 단어의 출력을 실행하려고 한다. 값을 출력한다고 하는 목적을 갖는 술어 벡터는, 출력 작용요소(Output Vector: O4라고 부른다)라 불린다. 그 밖에, 영역의 클리어를 실시하는 구조 작용요소(S4라고 부른다)가 있다.
<팔레트 W02>
값을 입력단어에 관련짓는다고 하는 목적을 갖는 2개의 술어 벡터가 있다. 메인 메모리 상(Lyee프로그램영역의 밖)에의 입력을 실시하는 입력작용요소(Input Vector : I2라고 부른다)와, 속성체크와 Lyee 프로그램 영역 내에의 입력을 실시하는 L2이다.
<팔레트 W03>
팔레트 W03의 술어 벡터 L3의 목적은, 도 8에 나타내는 바와 같이, 요건 내에 지정되어 있는, 단어의 정의식(즉 L4)을 실행하기 위한 조건을 판정하는 것이다.
마지막으로, 표 8은, 표 6의 요건을 실장한 Lyee 프로그램을 나타낸다.
각 팔레트에 1개 놓여진 팔레트 함수가, 팔레트 내의 술어 벡터를 콜(call, 기동) 한다. 팔레트 함수는, 프로그램에 1개 놓여진 팔레트 연쇄함수에 의해서 콜 된다. 팔레트 연쇄함수는, 각 팔레트의 R4, R2, R3의 지정에 따라서, 해당하는 팔레트 함수를 콜 한다. 그 외의 프로그램의 의미는, 표 8의 코멘트와 같다.
술어 벡터 L4, L2, L3(총칭하여 논리요소라고 부른다)의 처리대상은 단어 단위이며, 입출력 작용요소(I2 및 O4), 구조 작용요소(S4)의 처리대상은 단어의 집합이다.
[표 8]
팔레트 프로그램 코멘트
W04 Call S4 Do Call L4a Call L4b while a fixed point is not reached Call O4 Call R4 영역의 클리어 단어 a의 정의식을 계산 단어 b의 정의식을 계산 부동점에 이를 때까지 반복실행 결과를 출력 다음 경로로서 W02를 지정
W02 Call I2 Do Call L2e Call L2c while a fixed point is not reached Call R2 입력(메모리상에) 단어 e를 입력 단어 c를 입력 부동점에 이를 때까지 반복실행 다음 경로로서 W03을 지정
W03 Do Call L3a Call L3b while a fixed point is not reached Call R3 단어 a의 실행조건 a_cond를 계산 단어 b의 실행조건 b_cond를 계산 부동점에 이를 때까지 반복실행 다음 경로로서 W04를 지정
여기서, Lyee 계산법을 사용하면, W04, W03, 및 W02의 프로세스는, 각각 아래 와 같이 정의할 수 있다.
[수식 20]
Figure 112006019020282-PCT00023
W04 프로세스는, S4, L4_a, L4_b, O4의 각 프로세스의 병행 프로세스이다.
W03 프로세스는, L3_a, L3_b의 각 프로세스의 병행 프로세스이다.
W02 프로세스는, L2_e, L2_c, I2의 각 프로세스의 병행 프로세스이다.
다른 술어 벡터(L2, L3, L4, I2, O4, S4)의 형식적 정의에 있어서는, 다음의 섹션으로 설명한다.
3. 3 처리경로도(Process Route Diagram)
앞의 섹션에서 나타낸 기본구조는, 임의의 요건이 간단한 케이스의 프로그램 전체라고 간주해도 좋다. 특히, 모든 입력단어 및 출력단어가 같은 화면에 속하고 있고, 데이터베이스가 전혀 사용되어 있지 않은 경우의 프로그램이다. 입력단어 및 출력단어가, 몇 개의 데이터베이스 또는 서로 접속된 다른 화면에 속하는 경우에는, 상황은 더 복잡하게 된다. 설명을 간단하게 하기 위해서, 이하의 설명에 있어서는, 화면의 수가 다수 있을 뿐인 경우에 대해서 설명한다. 도 9에 나타내는 바와 같이, 서로 접속하고 있는 화면이 3개 있고, 사용자는 화면으로부터 다른 화면으로 이동할 수 있는 경우에 대해서 생각한다. 각 화면에 있어서, 사용자는 단 어의 입력, 계산 또는 출력을 할 수 있다. 따라서, 사양서에서는, 사용자는, 이러한 화면이 어떻게 상호 접속하고 있는지를 지정해야 한다.
더 말하자면, 1개의 기본구조만을 정의하고, 따라서 전체화면 내의 정의된 단어 모두를 계산하는 것은 사정이 좋지 않다. 왜냐하면, 실제, 프로그램의 임의의 실행에 있어서, 어떤 화면은 방문되지 않을지도 모르고, 그 경우, 방문되지 않았던 화면의 단어의 값의 계산이 쓸모가 없어지기 때문이다. 그 때문에, Lyee는, 각 화면에, 그 화면이 방문되었을 경우만 실행되는 담당 기본구조를 관련짓는다. 화면과 관계된 기본구조는, 1개의 화면으로부터 다른 화면에의 이동을 나타내는 바와 같이, 접속되고 있다. Lyee 용어에 있어서, 복수의 기본구조가 접속된 것이, 도 10에 나타내는, 처리경로도(Process Route Diagram)이다.
Lyee 계산법을 사용하여, 어떤 화면 sK를, 프로세스 SF(sk)의 실행을 제어하는 프로세스 φ(sk)로서 하기 식과 같이 형식화할 수 있다.
[수식 21]
Figure 112006019020282-PCT00024
즉, 프로세스 φ(sk)는, 프로세스 SF(sk)(화면 sk에 관한 처리의 기본구조의 프로세스)로서 행동하고, 채널 ?sk상에서 참값을 수신했을 때, SF(sk)를 정지하고 프로세스φ(sk)로서 행동한다. 실제의 움직임으로서는, 제어 프로세스φ(sk)는, 프 로세스 SF(sk)를 활성화하여, 화면 sk에 관한 채널 ?sk상에서 신호를 수신했을 때(즉 화면 sk가 재활성화 되었을 때), φ(sk) 자신이 재활성화된다. 따라서, 제어 프로세스φ(sk)가 재활성화 되는 것에 의해서, SF(sk)는 한 번 종료하고 재활성화되어, 초기상태(fresh instance)로 되돌아온다.
함수 φ(sk)가 어떻게 기능하는지를 나타내는 구체적인 예는, 본 명세서의 뒤에 기록한다.
3. 4 Lyee 프로그램
정리하면, Lyee 방법론에 의한 Lyee 프로그램의 구조는 다음과 같다. Lyee 프로그램은 몇 개의 처리경로도(PRD)로 구성된다. 각 PRD는, 서로 접속된 기본구조(SF)의 집합이다. 각 기본구조는, 3개의 상호 접속된 팔레트 W02, W03 및 W04로 구성된다. 마지막으로, 팔레트는, 술어 벡터에 의해서 구성된다. 술어 벡터에는, Lyee 프로그램의 최소단위의 모듈이므로, 아토믹ㆍ벡터(atomic vector) 라고도 부른다. 술어 벡터에는, 논리요소(signification vector: L2, L3, L4의 총칭) 및 작용요소(action vector: I2, O4, S4, R2, R3, R4의 총칭)가 있다. 이러한 술어 벡터의 실행을 제어하는 제어 모듈로서, 팔레트마다 팔레트 함수가 놓여지고, 그 팔레트 함수의 실행을 제어하는 모듈로서 프로그램에 1개의 팔레트 연쇄 함수가 놓여진다.
Lyee 계산법을 사용하는 것에 의해, 화면 s1, ... , sk를 포함하는 Lyee 프로그램 P는, 하기 식과 같이 형식화된다.
[수식 22]
Figure 112006019020282-PCT00025
여기서, L(s1, ... , sk)은, 입력채널 및 출력채널의 집합이다. 이 식은, ψ(s1, ... , sk)이, L(s1, ... , sk)에 속하는 채널만을 통하여 환경과 통신(communicate)하도록 제한한다.
함수 ψ는, 하기 식과 같이 정의된다.
[수식 23]
Figure 112006019020282-PCT00026
이 함수 ψ은, 화면 s(s는 화면 s1, ... , sk 중의 어느 하나)에 대응하는 채널?s상에서 진정한 값을 수신할 때마다, 화면 s에 대응하는 SF(s)를 기동하기 위해서, 프로세스 φ(s)를 기동한다. 상기 채널 ?s는, 대응하는 화면을 기동하기 위해서 사용자가 사용하는 버튼이나 메뉴를 형식화한 것이다. 또한, 이 함수 ψ은, 채널 ?sO상에서 진정한 값을 수신했을 때에, 모든 다른 프로세스를 종료시키고, 함수 ψ 자신도 종료(nil이 된다.)한다. 채널 ?sO는 종료버튼(또는, 대응하는 메뉴 항목)을 형식화한 것이다.
따라서, Lyee 시스템은, 요구하는 출력단어를 계산하기 위해서 서로 커뮤니케이트하는, 독립한 병행 프로세스(concurrent process)의 집합체라고 간주할 수 있다. Lyee 방법론의 종래의 순차처리적(sequential) 견해와는 대조적으로, 모든 경로 작용요소는 필요 없고, 제어 기능의 역할은 대폭 간이화되어 작업 메모리영역(working memory) 등도 필요 없다. ψ(s1, ... , sk)에 대해서는, 구체적인 예와 함께 이하에 더 상세하게 설명한다.
다음의 섹션에 있어서는, Lyee 방법론의 보다 상세하고 완전한 형식화에 대해 설명한다.
4. Lyee 방법론의 형식화
Lyee 계산법을 사용하여, 간단한 사용자 요건으로부터 어떻게 하여 소프트웨어를 자동적으로 생성할 것인지를 본다.
사용자 요건은, k개의 화면{s1, ... , sk}를 포함하고 있는 것으로 한다. 또한, 각 화면은 선언의 집합을 포함하고 있는 것으로 한다. 이 경우, 각 선언은, 다음의 형식, 즉, (w, e, c, InOut, type)을 갖는다. 여기서, w는 단어명, e는 그 정의식, c는 정의식의 실행조건, InOut는 단어가 입력인지 출력인지, 혹은 양쪽 모두인지, 또는 입력도 출력도 아닌 것 인지의 지정(값 i는 입력단어에, 값 o는 출력단어에, io는 입력 및 출력 양쪽 모두인 경우에, 빈 필드는 입력도 출력도 아닌 경우에 사용된다), type은 값의 속성(타입)을 나타낸다(예를 들면 타입 B는, 버튼을 나타내는 기호로서 할당할 수 있다).
이 요건에 관한 프로그램 P(s1, ..., sk)를 정의하기 위해서, 아래와 같은 표에 나타낸 바와 같이 논리요소 및 작용요소의 벡터(프로세스)를 형식화한다.
우선, 형식화에 이용되고 있는 미정의식 정의의 기호를 설명한다.
Use(e)는, 식 e로 사용하는 단어의 집합을 나타내는 것으로 한다. 예를 들면, Use(a*b+1)={a, b}이다.
또한, F(S)는, 변수 S로서 입력값의 집합을 취하고, 그 입력을 실시하는 수신작용의 집합을 되돌리는 함수이다.
[수식 24]
Figure 112006019020282-PCT00027
상기의 의미는 다음과 같이 된다.
입력값이 없을 때(F(0)), 수신작용은 없다(0은 공집합).
입력값 x와 입력값 A의 수신작용(F({x} ∪ A))은, 채널
[수식 25]
Figure 112006019020282-PCT00028
위에서, x의 값을 수신하는 수신작용과 입력 A의 수신작용 F(A)의 합집합이다.
논리요소(Signification Vectors)는 표 9에 나타낸다.
[표 9]
Figure 112006019020282-PCT00029
작용요소(Action Vector)는 표 10에 나타낸다.
[표 10]
Figure 112006019020282-PCT00030
벡터 중, S4는, 2. 2에서 서술한 값을 유지하는 메모리ㆍ셀이고, 또한, 「초기화될 때(초기값을 수신한다)까지 그 내용에 액세스시키지 않는」 능력을 가진 스마트ㆍ셀이다.
경로 작용요소는, Lyee 계산법에 있어서는 본질적으로는 불필요한 프로세스 이지만, Lyee 계산법으로 어떻게 형식화할 수 있는지를 나타내기 위해서 기재하고 있다.
팔레트 :
임의의 화면 s의 3개의 팔레트 W02, W03 및 W04는, 하기 식과 같이 형식화된다.
[수식 26]
Figure 112006019020282-PCT00031
여기서,
[수식 27]
Figure 112006019020282-PCT00032
는, B(버튼을 나타낸다)를 제외하는 임의의 타입(B의 여집합)을 나타내고, *는 무엇이라도 좋은 것을 나타낸다.
기본구조 :
화면 s의 기본구조 SF(s)는, 하기 식과 같이 형식화된다.
[수식 28]
SF(s) = W04(s)|W03(s)|W02(s)
제어기능 :
화면 s에 부수하는 제어기능은, 하기 식과 같이 형식화된다.
[수식 29]
Figure 112006019020282-PCT00033
화면의 집합에 부수하는 제어기능은, 하기 식과 같이 형식화된다.
[수식 30]
Figure 112006019020282-PCT00034
s0는, 프로그램을 종료했을 때의 화면(프로그램 자신의 화면군에는 속하지 않는 종료화면)이라고 한다.
여기서 제어기능의 역할에 대해 정리하면, 다음과 같이 된다.
[표 11]
제어기능 역할
ψ 프로그램에 1개 설치한다 ·자신은 최종사용자에 의해서 기동되어, 종료 버튼누름에 의한 참의 값을 수신했을 때 종료 한다. ·사용자에 의한 버튼누름 등을 지시에 의한 진의 값을 수신했을 때, 대응하는 φ를 기동한다. ·종료버튼의 참의 값을 수신했을 때, 자신을 종료 하기 전에, 모든 φ를 종료시킨다.
φ SF마다 1개 ·자신은 ψ에 의해서, 기동 및 종료된다. ·지정채널로, 사용자에 의한 버튼누름 등의 지시 에 의한 진의 신호를 수신했을 때에 담당하는 SF를 기동한다.
본론에서는, Lyee 계산법의 실현 방법의 하나로서, SF는 화면에 대해서 1개설치하고, 1개의 SF가, 대응하는 화면과 관계되는 입출력 및 계산의 모든 프로세스를 포함하도록 형식화하였다. 따라서 SF의 제어함수 φ도, 화면에 1개이다. 그러나, 화면에 대해서 복수의 SF 및 제어함수 φ를 설치하도록 형식화하는 것도 선택으로서 가능하다. 실장방법은, 프로그램으로서의 효율성에 의해서 결정하면 좋다.
Lyee 프로그램:
마지막으로, 화면 s1, ... sk를 포함하는 요건에 관한 Lyee 프로그램 P(s1, ... sk)는 하기 식으로 표시된다.
[수식 31]
Figure 112006019020282-PCT00035
여기서, L(s1, ... sk)의 집합은, 환경과의 사이의 모든 입력채널 및 출력채널을 포함하여, 하기 식에 의해 정의된다.
[수식 32]
Figure 112006019020282-PCT00036
i/o의 의미는, 이 항목은 값 i,o 또는 io를 포함하지 않으면 안되는 것을 가리킨다. 또한, s1은, 사용자가 이 프로그램을 실행했을 경우에 최초로 나타나는 화면이다.
(실시예 1)
5. 사례연구
이 섹션에 있어서는, Lyee 계산법으로 단어를 계산하기 위해서, Lyee 프로그램이 어떻게 진행될지를, 구체적인 예를 들어 단계적으로 설명한다.
여기에 나타내는 예는, 화면을 1개 밖에 갖지 않는다(2개의 화면을 갖는 다른 예는 부록에 기재하였다). 표 12의 요건에 나타내는 바와 같이, 사용자는, 단어 a를 입력하고, 단어 b의 값을 기다리고, 다음에, 버튼 B를 눌러 화면을 종료한 다. 도 11은 이러한 화면을 나타낸다.
[표 12]
Figure 112006019020282-PCT00037
이 화면 s1는 3개의 선언으로 이루어진다.
[수식 33]
Figure 112006019020282-PCT00038
앞의 섹션에서 설명한 일반적인 Lyee 프로그램의 정의에 의하면, 표 12의 요건에 관한 Lyee 프로그램은, 하기 식에 의해 표시된다.
[수식 34]
Figure 112006019020282-PCT00039
여기서, W02(s1), W03(s1) 및 W04(s1)는, 다음과 같다. 상술한 바와 같이, R3의 프로세스는 Lyee 계산법에서는 필수는 아니기 때문에, 생략하는 것도 가능하다.
[표 13]
Figure 112006019020282-PCT00040
여기서, 이 프로그램 P(S1)의 최종 사용자(환경)가, 하기의 일련의 행동을 실시하고 싶다고 생각하고 있다고 가정해보자. 프로그램을 실행하여(화면 s1을 기동하여), 단어 a에 값 「7」을 부여하고, 단어 b의 값을 얻는 것을 기다려, 버튼 B0을 눌러 프로그램을 종료한다. 이 최종사용자의 행동은, 아래와 같은 프로세스 ε에 의해 파악할 수 있다.
[표 14]
프로세스 코멘트
ε = [ιS1!1].ε1 ε1 = [da!7].ε2 ε2 = [db?x].ε3 ε3 = [dB0!click].nil 프로그램(화면 s)을 기동. 단어 a에 값 '7'을 부여한다. 단어 b의 값을 얻는다. 종료하기 위해 버튼 B0을 클릭.
상기에 나타낸, Lyee 계산법에 의한 프로그램 P(S1)의 프로세스와 최종사용 자의 프로세스를 도 12에 나타내었다.
다음에, 요구되는 목적에 도달하기 위해서, 프로그램 P(S1)가 이 환경과 어떻게 상호작용을 실시할 것인지를 본다. 바꿔 말하면, 최종사용자의 행동을 집어넣는 프로그램 ε와 병행으로 실행되는 프로그램 P(S1)의 진행 프로세스를 쫓는 것이다. 이것은, 즉, P(S1)|ε의 행동을 찾는 것이다. 이 프로세스의 스텝은 하기와 같다. 정의식에는, 등호 기호의 좌변이 우변으로 치환되는 근거가 되는 정의를 코멘트로서 붙였다. 또한, 프로세스간의 상호작용에 의해서, 동기(synchronization)(동일채널상에서, 값의 송신과 수신이 동시에 성립하였다)가 일어난 부분에도 코멘트를 붙였다. 밑줄친 부분이 동기한 송신 및 수신작용이다.
[표 15]
Figure 112006019020282-PCT00041
[표 16]
Figure 112006019020282-PCT00042
정리하면, 프로그램의 진행의 주요한 스텝은 아래와 같이 이다.
최종사용자가 프로그램 기동의 커맨드를 보내는 것에 의해서, 제어함수 ψ(s1)가 기동되고, 제어함수 ψ(s1)가 제어함수 φ(s1)를 기동하고, 제어함수(s1)가 초기화면 s1와 SF(s1)를 기동하는 것에 의해서, 프로그램이 기동한다.
[수식 35]
Figure 112006019020282-PCT00043
최종 사용자가 단어 a에 값 '7'을 부여하면(송신하면), SF(s1) 중의 I2(a)가 값 7을 수신한다.
[수식 36]
Figure 112006019020282-PCT00044
I2(a)는, a의 값 7을 L2(a)에 송신한다.
[수식 37]
Figure 112006019020282-PCT00045
L2(a)가 송신한 a의 값 7이, 메모리, 즉, S4(a)에 기억되는{S4(a)에 초기값이 기억되는 것에 의해서 초기화되었다}.
[수식 38]
Figure 112006019020282-PCT00046
b의 계산조건을 계산하기 위해서, a의 값 7이, 초기화된 a의 메모리 S4로부터 L3(b, a>0)에 보내진다.
[수식 39]
Figure 112006019020282-PCT00047
b의 계산조건이 판정되고(a>0은 진(1)이라 판정, L(b, 2*a)에 값(1)이 보내진다.
[수식 40]
Figure 112006019020282-PCT00048
a의 값 7이, 값 7을 유지하고 있는 a의 메모리 S4로부터 L(b, 2*a)에 보내진다.
[수식 41]
Figure 112006019020282-PCT00049
b의 정의식 '2*a'가 계산되고, b의 값 14가, 메모리, 즉, S4(b)에 기억된다{S4(b)가 초기화되었다}.
[수식 42]
Figure 112006019020282-PCT00050
b의 값 14가, b의 메모리 S4로부터, 출력 프로세스 O4(b)에 보내진다.
[수식 43]
Figure 112006019020282-PCT00051
10. O4에 의해서 b의 값이 환경에 보내지고, 최종사용자는 b의 값을 수신한다. 이 시점에서 기동중의 SF(s1)에 속하는 프로세스는, 값을 유지하고 있는 a 및 b의 S4와 R3(B0, click. s0)이다.
[수식 44]
Figure 112006019020282-PCT00052
11. 최종사용자가, 프로그램 종료를 위해서 버튼 B0을 누르고, R3(B0, click, s0)은 값 click을 수신, 자신의 계산조건을 판정하여 참의 값 1을 제어함수 ψ(s1)에 송신한다. 참의 값 1을 수신한 ψ(s1)은, 자신이 종료하기 전에 φ(s1)를 종료시키고, φ(s1)는 자신이 종료하기 전에 SF(s1)를 종료시킨다.
[수식 45]
Figure 112006019020282-PCT00053
도 13은, 이러한 각 스텝을 나타낸다.
괄호가 붙은 번호는, 상기의 스텝의 설명에 대응한다. 괄호가 없는 숫자는, 송수신되는 값을 나타내고 있다.
또한, 각 프로세스의 천이는 증명에 의해서 확인할 수 있다. 예를 들면, 하기의 프로세스의 천이가 있는(상기 스텝 1에 대응). P(s1)와 ε의 사이에 동기가 일어나(프로그램 기동 커맨드의 송수신), P1(s1)과 ε1의 병행 프로세스로 이행하는 프로세스 천이를 나타내고 있다.
[수식 46]
Figure 112006019020282-PCT00054
일 때,
[수식 47]
Figure 112006019020282-PCT00055
이다.
상기는, 표 5의 규칙을 이용하여, 다음의 증명으로 올바른 것을 확인할 수 있다.
[수식 48]
Figure 112006019020282-PCT00056
6. 결론
본고는, 최초로, Lyee 방법론의 기본개념을 용이하고 본질적으로 지지하는 Lyee 계산법이라고 부르는 형식적 프로세스 대수를 정의하였다. 실제로, 이 계산법은, 폰ㆍ노이만의 것보다, Lyee 방법론의 개념을 지지하는데 보다 적합한 추상기계라고 간주할 수 있다. 이 기계는, 프로그램을 최종결과를 생성하기 위해서 모두 서로 상호작용하는 분자의 집합이라고 간주한다. 두 번째로, 이 계산법이 어떻게 하여, 전체 소프트웨어 생성 프로세스와 Lyee 벡터의 양쪽 모두를 형식화하고, 간 이화할 수 있는지를 나타내었다. 실제, 경로 작용요소(routing vector), 는 이미 필요로 하지 않는다. 또한, 팔레트 함수도 불필요해져, 제어기능의 역할은 대폭으로 간이화된다. Lyee 소프트웨어 생성의 자동생성의 전체 프로세스를 형식화하였다. 이 형식화에 의해서, 이 방법론의 의미론을, 이 방법론의 배후에 있는 개념을 명쾌하게 이해할 수 있도록 형식화할 수 있다. 게다가, 이 형식적 기술은, 여러 가지 국면에 있어서의 이 방법론의 많은 흥미 있는 분석을 시작하기 위해서는 불가피이다. 예를 들면, Lyee로 생성한 소프트웨어 또는 소프트웨어 생성 프로세스를 최적화하기 위해서는, 최적화된 프로그램이 그 원래의 버전과 같은 것이라고 하는 형식적 증명을 필요로 한다. 프로세스 대수를 사용하면, 형식적으로 같은 것의 체크, 또는 더 일반적으로 모델·체크를 잘 실시할 수 있다.
장래의 연구로서, 우리들은, Lyee 방법론의 의미론을 더 연구하고, Lyee 방법론을 보다 간소화하여, 요건으로부터 보다 신뢰성이 높은 최적화된 코드의 생성을 실시할 수 있도록 하고 싶다. 최적화하기 위해서, Lyee 계산법의 프로세스간의 적합(congruence)관계를 정의하여, 그것에 의해 모두 그곳으로부터 귀결하는 최적화가 올바른 것을 증명하고 싶다고 생각하고 있다.
실시예 2
<부록>
사례연구 2- 화면이 2개인 경우
복수 화면간의 상호작용을 나타내기 위해서, 2개의 화면으로 이루어지는 프로그램의 케이스에 대해 서술한다. 도 14가 그 프로그램의 화면을 나타낸 도면이 다. 이 프로그램을 기동하면 화면 S1가 표시된다. 화면 S1에서, 사용자는, 단어 a를 입력하고, 단어 b의 값이 출력되는 것을 기다린다. 버튼 B2를 누르면, 화면 S2가 표시되어, 단어 b의 값이 출력되는 것을 기다린다. 화면 S2로 버튼 B0을 누르면, 프로그램을 종료한다.
도 14의 프로그램의 요건의 선언을 정리하면, 화면 S1의 요건은 표 17, 화면 S2의 요건은 표 18과 같이 된다.
[표 17]
Figure 112006019020282-PCT00057
[표 18]
Figure 112006019020282-PCT00058
앞의 섹션에서 설명한 일반적인 Lyee 프로그램의 정의에 의하면, 표 17 및 표 18의 요건에 관한 Lyee 프로그램은, 하기 식에 의해 표시된다.
[수식 49]
SF(s1) = W04(s1)|W03(s1)|W02(s1)
SF(s2) = W04(s1)|W03(s1)
화면 s2에 대한 W02가 존재하지 않는 점을 유의하기 바란다. 왜냐하면, W02는, 버튼 이외의 입력단어를 포함하지 않기 때문이다.
[수식 50]
Figure 112006019020282-PCT00059
여기에 있어서는, W02(s1), W03(s1), W04(s1) 및, W03(s2), W04(s2)는, 이하와 같이 정의된다. 사례연구 1과 마찬가지로, R3의 프로세스는 Lyee 계산법에서는 필수는 아니기 때문에, 생략하는 것도 가능하다.
[표 19]
Figure 112006019020282-PCT00060
[표 20]
Figure 112006019020282-PCT00061
[표 21]
Figure 112006019020282-PCT00062
여기서, 이 프로그램의 최종 사용자(환경)가, 하기의 일련의 행동을 실시하고 싶다고 생각하고 있는 것으로 한다. 프로그램을 실행하여(화면 s1을 기동하여), 단어 a에 값 「7」을 부여하여, 단어 b의 값을 얻기 위해서 대기하고, 화면 s2로 가기 위해서 버튼 B2를 누르고, 값 e를 얻기 위해서 대기하여, 버튼 B0을 누름으로써 프로그램을 종료한다. 이 행동은, 아래와 같은 프로세스 ε에 의해 파악할 수 있다.
[표 22]
Figure 112006019020282-PCT00063
상기에 나타낸, Lyee 계산법에 의한 프로그램 P(S1)의 프로세스와 최종 사용자의 프로세스를 도 15에 나타냈다.
프로그램의 진행의 주요한 스텝은 하기와 같다.
최종 사용자가, 프로그램 기동의 커맨드를 보내는 것에 의해서, 제어함수 Ψ(s1, s2)가 기동되어, 제어함수 Ψ(s1, s2)가 제어함수 Φ(s1)을 기동하고, 제어함수(s1)가 초기화면 s1과 SF(s1)을 기동함으로써, 프로그램이 기동한다.
P(s1, s2)와 ε의 사이에 동기가 일어나(프로그램 기동 커맨드의 송수신), P1(s1, s2)와 ε1의 병행 프로세스로 이행.
[수식 51]
Figure 112006019020282-PCT00064
여기서,
[수식 52]
Figure 112006019020282-PCT00065
최종 사용자가 단어 a에 값 「7」을 부여하면(송신하면), SF(s1) 중의 I2(a)가 값 7을 수신한다.
P1(s1, s2)와 ε1의 사이에 동기가 일어나(단어 a의 값의 송수신), P2(s1, s2)와 ε2의 병행 프로세스로 이행.
[수식 53]
Figure 112006019020282-PCT00066
여기서,
[수식 54]
Figure 112006019020282-PCT00067
a의 값 7이 메모리 S4(a)에 기억된다. 이 기억은, 2개의 스텝에 의해 실시할 수 있다. 제1 스텝에 있어서, a의 값 7이 L2(a)에 보내진다. 제2 스텝에 있어서, L2(a)는, 이 값을 메모리 S4(a)에 보낸다.
제1 스텝은 아래와 같다. P2(s1, s2) 중에서 동기가 일어나(I2(a)와 L2(a) 간의 단어 a의 값 7의 송수신), P3(s1, s2)와 ε2의 병행 프로세스로 이행.:
[수식 55]
Figure 112006019020282-PCT00068
여기서,
[수 56]
Figure 112006019020282-PCT00069
제2 스텝에 있어서, a의 값 7은 W04의 메모리 S4(a)에 기억된다(S4(a)에 초기 값이 기억되는 것에 의해서 초기화되었다). P3(s1, s2) 중에서 동기가 일어나(L2(a)와 S4(a) 사이의 단어 a의 값 7의 송수신), P4(s1, s2)와 ε2의 병행 프로세스로 이행.:
[수식 57]
Figure 112006019020282-PCT00070
여기서,
[수식 58]
Figure 112006019020282-PCT00071
b의 계산조건을 계산하기 위해서, a의 값 7이, 초기화된 a의 메모리 S4로부터 L3(b, a>0)에 보내진다. P4(s1, s2) 중에서 동기가 일어나(S4(a)와 L3(b, a>0)의 사이의 송수신), P5(s1, s2)와 ε2의 병행 프로세스로 이행.:
[수식 59]
Figure 112006019020282-PCT00072
여기서,
[수식 60]
Figure 112006019020282-PCT00073
b의 계산조건이 판정되고(a>0은 참(1)으로 판정), L4(b, 2*a)에 값 1이 보내진다. P5(s1, s2) 중에서 동기가 일어나(L3(b, a>0)과 L4(b, 2*a)의 사이의 참거짓값 1의 송수신), P6(s1, s2)와 ε2의 병행 프로세스로 이행.:
[수식 61]
Figure 112006019020282-PCT00074
여기서,
[수식 62]
Figure 112006019020282-PCT00075
a의 값 7이 a의 메모리 S4로부터 L4(b, 2*a)로 보내지고, b의 정의식 「2*a」가 계산되어, b의 값 14가, 메모리 S4(b)에 기억된다(S4(b)가 초기화되었다). P6(s1, s2) 중에서 동기가 일어나(a의 메모리 S4와 L4(b, 2*a)와의 사이, L4(b, 2*a)와 b의 메모리 S4의 사이의 송수신), P7(s1, s2)와 ε2의 병행 프로세스로 이행.:
[수식 63]
Figure 112006019020282-PCT00076
여기서,
[수 64]
Figure 112006019020282-PCT00077
b의 값 14가, b의 메모리 S4로부터, 출력 프로세스 O4(b)로 보내진다. O4(b)에 의해서 b의 값이 환경에 보내져, 최종 사용자는 b의 값을 수신한다. P7(s1, s2) 중의 동기(L4(b,2*a)와 O4(b)의 사이의 송수신)와 P7(s1, s2)와 ε2사이의 동기(단어 b의 값의 송수신)가 일어나, P8(s1, s2)와 ε3의 병행 프로세스로 이행.
이 시점에서 기동중의 SF(s1)에 속하는 프로세스는, 값을 유지하고 있는 a 및 b의 S4, R3(B0, click, s0)이다.:
[수식 65]
Figure 112006019020282-PCT00078
여기서,
[수식 66]
Figure 112006019020282-PCT00079
화면 2로 가기 위해서, 최종 사용자는 화면 s1상의 버튼 B2를 누른다. ε3로부터 송신된 버튼 B2의 Click값을 R3(B2, click, s2)이 수신, R3(B2, click, s2)는 자신의 계산조건을 판정하여 참의 값 1을 제어함수 Ψ(s1, s2)에 송신한다. 값 1을 수신한 제어함수 Ψ(s1, s2)는 제어함수 Φ(s2)를 기동한다. 값 1을 수신한 제어함수 Φ(s2)를 기동하여, 화면 s2를 기동한다.
P8(s1, s2)와 ε3의 사이의 동기(버튼 B2의 click값의 송수신과), P8(s1, s2) 중의 동기(R3(B2, click, s2)와, Ψ(s1, s2) 및 제어함수Φ(s2) 사이의 송수신)가 일어나, P9(s1, s2)와 ε4의 병행 프로세스로 이행.:
[수식 67]
Figure 112006019020282-PCT00080
여기서,
[수식 68]
Figure 112006019020282-PCT00081
e의 조건을 계산하기 위해서, b의 메모리 S4로부터 값 14를 L3(e, b>0)>에 송신한다. P9(s1, s2) 중에서 동기가 일어나(a의 메모리 S4와 L3(e, b>0)과의 사이의 송수신), P10(s1, s2)와 ε4의 병행 프로세스로 이행.:
[수식 69]
Figure 112006019020282-PCT00082
여기서,
[수식 70]
Figure 112006019020282-PCT00083
e의 계산조건 b>0이 참(1)으로 판정되어 L3(e, b>0)으로부터 참의 값 1이 L4(e, 1+b)로 송신되어, e의 값이 계산된다. P10(s1, s2) 중에서 동기가 일어나(L3(e, b>0)과 L4(e, 1+b)의 사이의 송수신), P11(s1, s2)과 ε4의 병행 프로세스로 이행.:
[수식 71]
Figure 112006019020282-PCT00084
여기서,
[수식 72]
Figure 112006019020282-PCT00085
e의 값을, L4(e, 1+b)로부터, e의 메모리 S4(b)에 기억한다(S4(b)가 초기화되었다). P11(s1, s2) 중에서 동기가 일어나(L4(e)와 e의 메모리 S4의 사이의 송수신), P11(s1, s2)와 ε4의 병행 프로세스로 이행.:
[수식 73]
Figure 112006019020282-PCT00086
여기서,
[수식 74]
Figure 112006019020282-PCT00087
e의 메모리 S4(b)로부터 e의 값 15를, O4(e)에 송신, O4(e)로부터 최종 사용자 ε4에 e의 값을 출력한다. P11(s1, s2)와 ε4와의 사이에서 동기가 일어나(단어 e의 값 14의 송수신), P12(s1, s2)와 ε5의 병행 프로세스로 이행.:
[수식 75]
Figure 112006019020282-PCT00088
여기서,
[수식 76]
Figure 112006019020282-PCT00089
최종 사용자가, 프로그램을 종료하기 위해서 버튼 B0을 누른다. R3(B0, click. s0)는, 최종 사용자 ε5로부터 버튼 B0의 값 click을 수신하여, 제어함수 Ψ(s1, s2)에 송신한다. Ψ(s1, s2)는, 자신이 종료하기 전에 Φ(s1) 및 Φ(s2)를 종료시키고, Φ(s1) 및 Φ(s2)는 자신이 종료하기 전에, 각각 SF(s1) 및 SF(s2)를 종료시킨다. P12(s1, s2)와 ε5의 사이에서 동기가 일어나(CClick치의 송수신), 다음에 P12(s1, s2) 중에서 동기(R3(B0, click, s0)과, Ψ(s1, s2), 제어함수 Φ(s1) 및 Φ(s2) 사이의 송수신)가 일어나, 모든 프로세스가 nil로 이행한다.:
[수식 77]
Figure 112006019020282-PCT00090
한편, 본 발명은, 상술한 실시형태 및 실시예에는 한정되지 않고, 본 발명의 기술사상의 범위내에서 여러가지로 변형이 가능하다. 예를 들어, 비즈니스 방법, 소프트웨어 개발 장치, 소프트웨어 개발지원장치, 소프트웨어 개발관리장치, 혹은 이들 기능을 컴퓨터로 실현하기 위한 소프트웨어 및 상기 소프트웨어를 탑재한 기록매체ㆍ전용기 등으로서도 각각 실현하는 것이 가능하다. 또한, 상기에서 설명한 바와 같이 본 발명은, 방법으로서도, 혹은 이러한 기능을 구비한 소프트웨어로서도, 상기 소프트웨어가 탑재된 장치ㆍ툴(소프트웨어 자체의 경우도 포함한다)로서도, 또는 시스템으로서도, 실현될 수 있는 것은 물론이다.
예를 들면 도 16은, 본 발명이 다른 일실시형태로서 「개발 대상의 소프트웨어」를 생산하기 위한 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 혹은 소프트웨어 개발관리장치의 어느 하나로서 본 발명을 실시하는 경우에 기능으로서 구비하는 구성을 나타낸 기능 블록도이다. 동 도면에 나타내는 바와 같이, 본 발명과 관련되는 프로그램(소프트웨어), 프로그램 생 성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 혹은 소프트웨어 개발관리장치는, 전체 제어부(1601), 선언 정보 삽입부(1602), 제어함수 Φ 배치부(1603), 제어함수 ψ 배치부(1604) 및 정보 기억부(1605)를 구비하여 구성된다.
전체 제어부(1601)는, 본 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 혹은 소프트웨어 개발관리장치의 전체의 동작 제어, 타이밍 제어, 입출력 제어 등을 실시하는 기능을 가지고 있으며, 상기 기능을 가진 전용 팁, 전용 회로, 또는 상기 기능을 컴퓨터에 완수하게 하기 위한 소프트웨어(툴로서의 소프트웨어도 포함한다), 혹은 상기 소프트웨어를 기록한 기록매체, 상기 기록매체를 탑재한 처리장치ㆍ관리장치ㆍ툴로서 실현된다.
선언 정보 삽입부(1602)는, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를 삽입하기 위한 기능을 가지고 있으며, 상기 기능을 가진 전용 팁, 전용 회로, 또는 상기 기능을 컴퓨터에 완수하게 하기 위한 소프트웨어(툴로서의 소프트웨어도 포함한다), 혹은 상기 소프트웨어를 기록한 기록매체, 상기 기록매체를 탑재한 처리장치·관리장치·툴로서 실현된다.
제어함수 Φ 배치부(1603)는, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 Φ가, 제어하도록 관련짓기 위한 기능을 가지고 있으며, 상기 기능을 가진 전용 팁, 전용 회로, 또는 상기 기능을 컴퓨터에 완수하게 하기 위한 소프트웨어(툴로서의 소프트웨어도 포함한다), 혹은 상기 소프트웨어를 기록한 기록매체, 상기 기록매체를 탑재한 처리장치ㆍ관리장치ㆍ툴로서 실현된다.
제어함수 ψ 배치부(1604)는, 1개의 제어함수모듈 ψ을, 상기 제어함수Φ를 제어하도록 상기 제어함수 Φ에 관련짓기 위한 기능을 가지고 있으며, 상기 기능을 가진 전용 팁, 전용 회로, 또는 상기 기능을 컴퓨터에 완수하게 하기 위한 소프트웨어(툴로서의 소프트웨어도 포함한다), 혹은 상기 소프트웨어를 기록한 기록매체, 상기 기록매체를 탑재한 처리장치ㆍ관리장치ㆍ툴로서 실현된다.
정보 기억부(1605)는, 프로그램 정보 외에, 각종 제어 정보 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 상기 모형, 상기 제어함수모듈 Φ 의 모형, 상기 제어함수모듈 ψ의 모형, 목적 프로그램 등의 격납 외에, 일시 기억을 위한 메모로서도 이용된다.
도 17은, 상기의 구성을 구비하는 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 혹은 소프트웨어 개발관리장치의 어 느 하나로서 실시되는 본 발명의 동작을 나타낸 플로우챠트이다.
동 도면에 나타내는 바와 같이, 먼저, 선언정보삽입부(1602)는, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를 삽입한다.(스텝 1701).
그렇게 하면, 제어함수 Φ 배치부(1603)는, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로, 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 Φ이, 제어하도록 관련짓는다.(스텝 1702).
다음에, 제어함수 ψ 배치부(1604)는, 1개의 제어함수모듈 ψ를, 상기 제어함수 Φ를 제어하도록 상기 제어함수 Φ에 관련짓는다.(스텝 1703).
따라서, 상기와 같은 구성을 구비하는 본 발명에 의하면, 본 발명의 독자적인 체계에 근거하여 요구 정의를 파악하고, 그것을 본 발명의 독자적인 구조를 구비하는 프로세스·셀로서 모듈화되어 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에 대입하므로, 소망한 소프트웨어를, 속인성 없이 얻을 수 있다.
본 발명이 다른 실시체로서의 「개발 대상의 소프트웨어」를 생산하기 위한 프로그램(소프트웨어), 프로그램 생성장치, 프로그램 처리장치, 툴(장치로서 혹은 소프트웨어로서의 쌍방을 포함한다), 소프트웨어 개발장치, 소프트웨어 개발지원장치, 소프트웨어 개발관리장치는, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를 삽입하는, 선언정보 삽입수단과, 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 Φ를, 상기 단위를 제어하도록 1개 관련짓는, 제어함수 Φ 배치수단과, 1개의 제어함수모듈 ψ을, 상기 제어함수 Φ를 제어하도록 상기 제어함수 Φ에 관련짓는, 제어함수 ψ 배치수단을 구비하도록 구성할 수도 있다.
본 발명은 또한, 상술의 「개발 대상의 소프트웨어를 생산하는 방법」에 의해서 생산된 소프트웨어, 및 상기 소프트웨어가 탑재된 기록매체 혹은 상기 소프트웨어가 탑재된 장치(하드웨어)로서도 실현되지만, 이 경우의 본 발명은, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에 삽입한 모듈군과, 상기 모듈군을, 동일화면으로부터의 커맨드로 상 호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈Φ로 제어하도록 관련짓고 있는 1개 또는 복수의 제어함수모듈 Φ과, 상기 제어함수Φ를, 1개의 제어함수모듈 ψ로 제어하도록 관련짓고 있는 제어함수모듈 ψ로 구성될 수도 있다.
그리고 또한 본 발명은, 상술의 「개발 대상의 소프트웨어를 생산하는 방법 」에 의해서 소프트웨어를 생산하기 위해서 이용되는 소프트웨어 코드의 모형으로서의 소프트웨어, 및 상기 소프트웨어가 탑재된 기록매체 혹은 상기 소프트웨어가 탑재된 장치(하드웨어)로서도 실현되지만, 이 경우의 본 발명은, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어지는 선언으로서 정보화한 정보를, 채워 넣어야 할 미정의 부분을 가진, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및 작용요소(I2, O4, S4)의 모형과, 상기 선언의 정보를 미정의 부분에 삽입한 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 Φ로 제어하기 위한 기능을 가진 제어함수모듈 Φ의 모형과, 상기 제어함수 Φ를 1개의 제어함수모듈 ψ로 제어하기 위한 기능을 가진 제어함수모듈 ψ의 모형을 구비하는 소프트웨어로서 코드화 가능한 모형으로서 실현하여도 좋다.
또한, 본 발명은, 상술의 「개발 대상의 소프트웨어를 생산하는 방법」에 의 한, 요건으로부터 추출한 정보(문서(종이, 데이터))의 추출방법으로서, 또한 이러한 추출방법에 따라 추출된 정보(문서(종이, 데이터))로서, 또는 상기 추출된 정보의 사용방법으로서 혹은, 이러한 정보가 탑재된 정보기록매체로서 또는 정보의 추출방법/사용방법이 코드화된 소프트웨어, 상기 소프트웨어가 탑재된 기록매체/장치(하드웨어)로서 모두 실현될 수 있지만, 이 경우의 본 발명은, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스·셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)의 모형의 미정의 부분에 삽입해야 할, 1개의 프로그램으로서 장착하는 사용자 요건을, 논리체마다에, 상기 논리체상의 단어마다의, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성으로 이루어진 선언으로서 정보화한 정보와, 상기 선언의 정보를 미정의 부분에 삽입한 상기 논리요소와 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합단위에, 1개의 제어함수모듈 Φ로 제어하도록 관련짓기 위한 정보와, 상기 제어함수 Φ를 1개의 제어함수모듈 ψ로 제어하도록 관련짓는 정보를 구비하는 소프트웨어 개발 요건으로부터 추출한 정보로서 실현하여도 좋다.
또한, 본원발명은, 그 기술 사상의 동일 및 등가에 이르는 범위에 있어서 여러 가지 변형, 추가, 치환, 확대, 축소 등을 허용하는 것이다. 또한, 본원발명을 이용하여 생산되는 장치, 방법, 소프트웨어, 시스템이, 그 2차적 생산품에 게재되어 상품화되었을 경우라 하더라도, 본원 발명의 가치는 하등 줄어드는 것은 아니다.
다른 분야에 관련된 광범위한 소프트웨어의 문제를 효율적으로 처리하고, 종래의 방법론과 비교했을 경우에는, Lyee를 사용하면 개발 시간, 보수 시간 및 문서량은 매우 적어진다(70∼80% 정도).

Claims (1)

1개의 프로그램으로서 실장하는 사용자 요건을, 논리체마다, 상기 논리체상의 단어마다, 단어명, 정의식, 상기 정의식의 실행조건, 입출력 속성, 단어의 값의 속성에 의해서 선언(규정)하는 제1 스텝과,
단어 단위의 상기 선언으로부터, Lyee 계산법에 의한 입출력 채널을 구비한 프로세스ㆍ셀로서 모듈화된 논리요소(L2, L3, L4) 및, 작용요소(I2, O4, S4)를 작성하는 제2 스텝과,
상기 논리요소와 상기 작용요소를, 동일화면으로부터의 커맨드로 상호작용을 일으키는 것을 집합조건으로 하는 집합으로 집합화하는 제3 스텝과,
상기 집합마다, 1개의 제어함수모듈 Φ를 배치하는 제 4 스텝과,
상기 프로그램에 1개의 제어함수모듈 ψ를 배치하는 제 5 스텝을 구비하는 것을 특징으로 하는, 소프트웨어 생성방법.
KR1020067005479A 2003-09-22 2004-09-22 소프트웨어 생성방법 KR20060121880A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003330772 2003-09-22
JPJP-P-2003-00330772 2003-09-22

Publications (1)

Publication Number Publication Date
KR20060121880A true KR20060121880A (ko) 2006-11-29

Family

ID=34373029

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067005479A KR20060121880A (ko) 2003-09-22 2004-09-22 소프트웨어 생성방법

Country Status (7)

Country Link
US (1) US20070250806A1 (ko)
EP (1) EP1693745A4 (ko)
JP (1) JPWO2005029323A1 (ko)
KR (1) KR20060121880A (ko)
CN (1) CN1856769A (ko)
CA (1) CA2539794A1 (ko)
WO (1) WO2005029323A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008171023A (ja) * 2005-04-21 2008-07-24 Catena Corp ソフトウェア生成方法
WO2007018295A1 (ja) * 2005-08-05 2007-02-15 Catena Corporation プログラム実行順序決定装置および方法
US7975257B2 (en) * 2006-06-13 2011-07-05 Microsoft Corporation Iterative static and dynamic software analysis
US8407728B2 (en) * 2008-06-02 2013-03-26 Microsoft Corporation Data flow network
CN102736921B (zh) * 2012-06-18 2014-10-29 阿坝师范高等专科学校 一种面向云的软件自动生成方法
CN111930350B (zh) * 2020-08-05 2024-04-09 深轻(上海)科技有限公司 一种基于计算模板的精算模型建立方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532586B1 (en) * 1995-10-30 2003-03-11 Information System Development Institute Software producing method, processor, processing method and recording medium
WO1997016784A1 (fr) * 1995-10-30 1997-05-09 Fumio Negoro Procede de production de logiciels, processeur et support d'enregistrement
US6792594B1 (en) * 1998-03-20 2004-09-14 Information System Development Institute Apparatus for producing software and method for producing software
US6292938B1 (en) * 1998-12-02 2001-09-18 International Business Machines Corporation Retargeting optimized code by matching tree patterns in directed acyclic graphs
JP2001005651A (ja) * 1999-06-21 2001-01-12 Institute Of Computer Based Software Methodology & Technology ソフトウェアの決定方法、ソフトウェアの使用方法、記録媒体、処理装置、ソフトウェアの保守方法、ソフトウェアの移植方法、ソフトウェアの管理方法、処理経路図の作成方法、パレット関数の作成方法、パレットの領域の決定方法、パレット連鎖関数の作成方法、位相要素の作成方法、論理要素の作成方法、作用要素の作成方法、ソフトウェアの実装方法、ソフトウェア開発方法、データ構造の置換方法、データ値の置換方法、従来型プログラムの分析方法、ソフトウェア開発管理方法、ソフトウェアの運用管理方法、並列コンピュータ及び判断補助装置
NZ512711A (en) * 1999-11-11 2003-01-31 Inf System Development Inst Program reproducing method and device, and medium on which a program for program reproduction recording
US7100164B1 (en) * 2000-01-06 2006-08-29 Synopsys, Inc. Method and apparatus for converting a concurrent control flow graph into a sequential control flow graph
JP2002312167A (ja) * 2001-04-13 2002-10-25 Fujitsu Ltd 変数の値をコンピュータに算出させるためのプログラム、コンパイルプログラム、変数値確定方法およびプログラム生成方法
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
JPWO2004068342A1 (ja) * 2003-01-28 2006-05-25 カテナ株式会社 ソフトウェア開発前処理方法、ソフトウェア制御方法、ソフトウェア開発方法並びにソフトウェア開発装置
AU2003272890A1 (en) * 2003-03-10 2004-09-30 Catena Corporation Static analysis method for lyee-oriented software

Also Published As

Publication number Publication date
CA2539794A1 (en) 2005-03-31
JPWO2005029323A1 (ja) 2007-11-15
EP1693745A1 (en) 2006-08-23
CN1856769A (zh) 2006-11-01
US20070250806A1 (en) 2007-10-25
WO2005029323A1 (ja) 2005-03-31
EP1693745A4 (en) 2007-03-07

Similar Documents

Publication Publication Date Title
Wu React Native vs Flutter, Cross-platforms mobile application frameworks
US4860204A (en) Computer based workstation for development of graphic representation of computer programs
Proença Synchronous coordination of distributed components
CN100517222C (zh) 支持转换引擎与映射规则相分离的模型转换装置及其方法
Biermann et al. Lifting parallel graph transformation concepts to model transformation based on the eclipse modeling framework
Ferdowsifard et al. LooPy: interactive program synthesis with control structures
KR20060121880A (ko) 소프트웨어 생성방법
Mendler et al. A logical view of concurrent constraint programming
Koga et al. Programming language MaTX for scientific and engineering computation
Evangelist et al. Using Raddle to design distributed systems
Johnstone et al. The grammar tool box: a case study comparing GLR parsing algorithms
Lehmann et al. VyZX: Formal Verification of a Graphical Quantum Language
Cuong et al. Model transformation in web engineering and automated model driven development
Koehler et al. Guided Equality Saturation
Korb The design and implementation of a goal-directed programming language.
Arora et al. Tools and techniques for non-invasive explicit parallelization
Bjørner et al. Formal, model-oriented software development methods: from VDM to ProCoS & from RAISE to LaCoS
Zaytsev Understanding Metalanguage Integration by Renarrating a Technical Space Megamodel.
Selonen et al. Generating structured implementation schemes from UML sequence diagrams
Cerioli et al. Algebraic system specification and development: survey and annotated bibliography
Brachthäuser et al. Effect Handlers and General Purpose Languages
Buchs et al. Deriving parallel programs using SANDS tools
Rath et al. Declarative specification of domain specific visual languages
Chebanyuk et al. An Approach of Behavioral Software Models Comparison by Means of Their Formal Representation Analysis
Tate Programmer Passport: Elixir

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid